Skip to content

Annex introducing definition for Proxy #102

@plebhash

Description

@plebhash

Originally on #98 I added a section to the Mining Protocol specs introducing a formal definition of Proxy.

I felt that was necessary, since there's multiple mentions to the term Proxy on the Mining Protocol specs, without a proper definition, which feels like a chicken-and-egg kind of problem.

However, @jakubtrnka feedback was that this kind of definition deserves a separate annex, given that this is a kind of application of the protocol.

#98 (comment)


Below are some different proxy definitions suggested by @jakubtrnka :

Multiplexing proxy

  • minimalistic design, minimum or even zero configuration options
  • simple passthrough-proxy for extended channels.
  • multiplexes standard channels through a single upstream connection via group channels
  • no difficulty/target management - everything managed via upstream server
  • only manages group, channels, ids, exranonce-prefixes. Merges and dispatches messages coming from downstream or upstream respectively. Uses channel_id based logic.

Demultiplexing proxy

  • generic application - mainly for demonstration purposes
  • simple pass-through for extended channels
  • groups downstream multiplexed standard channels into groups based on a specific criteria - either username, device-type etc... and splits them into separate upstream connections
  • this app would typically be used together with multiplexing proxy
    organizes different groups using SetGroupChannel

Aggregation proxy

  • logically separates down- and upstream sides
  • maintains only extended upstream channels - main purpose is to reduce number of mining sessions by aggregation
  • splits hashing space of the upstream job and assigns multiple smaller extended channels or standard channels to a given mining job.
  • does difficulty/target management
  • handles user identities

Translator proxy

V2 to V1 down-to-up translation

  • zero configuration trivial translation layer for sv2-native miners and legacy sv1 pools

V1 to V2 down-to-up translation

  • trivial translation layer for legacy sv1 miners and sv2 pool
  • there is a single configuration option: whether a standard or an extended channel should be opened.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions