Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Annex introducing definition for Proxy #102

Open
plebhash opened this issue Oct 25, 2024 · 0 comments · May be fixed by #103
Open

Annex introducing definition for Proxy #102

plebhash opened this issue Oct 25, 2024 · 0 comments · May be fixed by #103

Comments

@plebhash
Copy link
Contributor

plebhash commented Oct 25, 2024

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.
@plebhash plebhash linked a pull request Oct 25, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant