Skip to content

BIP40: Stratum wire protocol #1557

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

Open
wants to merge 60 commits into
base: master
Choose a base branch
from
Open

Conversation

ben221199
Copy link

The Stratum wire protocol has a long history since @slush0 introduced it. However, the protocol never got standardized in a formal way, so many implementations have been based on incomplete documents or on other implementations. With this document I finally want to give Stratum its place between the other BIPs, so that developers can just read this document and don't have to search through years of code or dead pages that need to be revived with Wayback Machine.

@ben221199 ben221199 marked this pull request as draft March 7, 2024 15:46
@ben221199
Copy link
Author

Yesterday, I sent two registration requests to IANA to get some information officially egistered. The registries are:

Today, I got a response that for both registrations some things have to be done first, before IANA can add these records to their registry. In case of the Media Types, this is process is a little bit more difficult. For the WebSocket Subprotocol Name Registry it is just letting them know when this pull request is merged and I have a permalink to the specification.

Also, it is possible that I will send more registration requests for other IANA registries too. For example, the Service Name and Transport Protocol Port Number Registry (https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml) is a possible candidate. In that case, I will post new comments about that too.

Copy link
Member

@jonatack jonatack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some editorial feedback.

@jonatack
Copy link
Member

jonatack commented May 6, 2024

This BIP refers to BIP41, The Stratum mining protocol, for which a BIP number was assigned and an entry exists in the README, but there doesn't seem to be pull request to add the BIP draft -- any update on that?

@ben221199
Copy link
Author

Hi @jonatack, thank you for feedback. I will take a look at it. I didn't have time to work on BIP 40 lately. Yes, both BIP 40 and BIP 41 are already assigned by the README and BIP 41 is also mentioned in this BIP 40. The goal is to finish BIP 40 (Stratum wire protocol) first and then start working on BIP 41 (Stratum mining protocol), referring back to BIP 40, because the mining protocol is based on the wire protocol.

Signed-off-by: Ben van Hartingsveldt <[email protected]>
@ben221199
Copy link
Author

The media type application/stratum has been registered by IANA at Media Types (https://www.iana.org/assignments/media-types/media-types.xhtml).

@ben221199
Copy link
Author

Okay, I think I'm done.

@ben221199 ben221199 marked this pull request as ready for review July 27, 2025 19:50
@ben221199
Copy link
Author

I want to ask people to take a look at this PR and come with as much feedback as possible, so that I can add it in before it gets merged.

@murchandamus murchandamus removed the PR Author action required Needs updates, has unaddressed review comments, or is otherwise waiting for PR author label Jul 28, 2025
Copy link
Contributor

@murchandamus murchandamus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, thanks for working on this. I see that there is quite a bit more here now. I’m not particularly familiar with the Stratum protocol, so in the first pass I read for editorial minutiae. Generally, it is expected that every BIP contains some specific sections. This document is missing the following sections:

  • Copyright — The BIP must be explicitly licensed under acceptable copyright terms (see BIP 2).
  • Rationale — The rationale fleshes out the specification by describing what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work. The rationale should provide evidence of consensus within the community and discuss important objections or concerns raised during discussion.
  • Backwards compatibility — All BIPs that introduce backwards incompatibilities must include a section describing these incompatibilities and their severity. The BIP must explain how the author proposes to deal with these incompatibilities.

I would guess that the Rationale section will gather a few items from discussion on the mailing list and here. The Backwards Compatibility section may benefit from more explanation on the extensions you added to round out the prior existing documentation. Regarding the Copyright section and licensing terms, perhaps @slush0 could chime in, if you two would be open to using difference terms than PD, because PD is not an acceptable license for BIPs anymore.

@ben221199
Copy link
Author

Thanks for the feedback. I will try to add most things in, but I hope @slush0 can indeed tell more about the licensing.

@ben221199
Copy link
Author

I added those sections, @murchandamus. I also tagged @slush0 on Twitter/X in the hope he can give us some thoughts about copyright and licensing. If he won't respond, can you give me some advice about which license is the best fit? Thanks.

@murchandamus
Copy link
Contributor

Thanks @ben221199, I’ll aim to take a more thorough look soon.

The CC0 1.0 Universal license tries to come as close as possible to a release into Public Domain, so maybe that would be a good fit.

@slush0
Copy link
Contributor

slush0 commented Aug 2, 2025

What license is acceptable for BIP? I really don't care, anything what is open enough is fine for me. I want it to be public and open for anyone.

@slush0
Copy link
Contributor

slush0 commented Aug 2, 2025

As I'm reading it on the go now, I see it is all about implementation for Electrum like nodes; Historically there's quite big discrepancy in between protocol as it was implemented in Electrum and in mining software, to the level I believe they are not compatible and should not be named in the same way to avoid confusion.

Honestly, the Electrum flavour was more designed by ThomasV than by me, while I was more focused on mining application. As there was no documentation since beginning (what was my huge mistake), the implementation differs in such way they share only the basic idea of "a line based JSON RPC" 🤔.

While I didn't investigated much, i believe these two protocols cannot be practically standardized in one BIP and for that reason I propose to mention it in BIP name to avoid confusion.

@ben221199
Copy link
Author

Hi @slush0, thank you for your input.

This BIP, BIP 40 is about the Stratum protocol and about Electrum, for which it was initially invented. The mining protocol will be documented in BIP 41. I will start working on that one as soon as this PR is merged. That BIP will have all information to differentiate it from the normal Stratum protocol. The BIP40 name is "Stratum wire protocol". The BIP41 name is "Stratum mining protocol".

When it comes to licensing, I guess CC0 1.0 Universal will be it then.

@slush0
Copy link
Contributor

slush0 commented Aug 2, 2025

My previous comment still stands. The protocols in Electrum and in mining differs greatly to the point they are not the same protocol. My opinion is that the BIP for Electrum and for mining should be separate BIPs.

That said, I'm sorry for such mess.

@ben221199
Copy link
Author

They will be in seperate BIPs and I will make it clear they are not the same. As far as I know, the mining protocol only implements the mining service.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants