Replies: 7 comments 10 replies
-
I think this is aligned with the vision of the original Sv2 spec draft. However, HOM is currently limited to 280 TH/s. There are efforts to expand the number of rollable version bits (as currently established by BIP320):
That will allow HOM to be used on devices above 280 TH/s (not sure what the hard ceiling will be, but I think it's safe to assume it will be orders of magnitude bigger). But it's hard to say if/when that will happen, and I assume Mujina could be used to drive Mining Devices above 280 TH/s in the near future (before rollable version bits are expanded). Therefore, I wouldn't necessarily restrict Sv2 support in Mujina to Standard Channels only, and keep Extended Channels a viable implementation path.
Given that Standard/HOM will require deeper changes on Mujina, perhaps it might make sense to start with Extended Channels instead? |
Beta Was this translation helpful? Give feedback.
-
|
please note that while not sure if this was already clear to @jayrmotta, but since it's not explicitly shown in the diagram above I feel it might be worth pointing out |
Beta Was this translation helpful? Give feedback.
-
|
Yes, @jayrmotta. You've got the right idea. SV2 should naturally fit alongside SV1 as yet another type of |
Beta Was this translation helpful? Give feedback.
-
|
Hey, @jayrmotta. I believe you did find a subtle bug here in the current implementation, though I'm not sure this is the right fix. |
Beta Was this translation helpful? Give feedback.
-
|
One last comment, on a general principle. It would be good to get into the habit of chunking changes of this size into a series of small atomic commits. See the guideline in CONTRIBUTING.md, "Atomic Commits". This would make it easier to review, among other things. For example, the single commit on this branch could be turned into a series like:
See the commits of PR #24 for another, real-life example. I understand that the commit you linked is just a prototype, and you didn't intend it to be a real PR. However, I wanted to bring this to your attention, especially while you're working on the real PR. |
Beta Was this translation helpful? Give feedback.
-
|
tip: while it is possible to integrate low-level crates such as this module was written to provide high-level abstractions to establish encrypted connections between two Sv2 nodes |
Beta Was this translation helpful? Give feedback.
-
|
Jayr's third SV2 implementation attempt is up for review: #65 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I've been playing and testing SV2 for a while now so naturally #11 caught my attention, but it seems abandoned. So I decided to build a new implementation as an experiment and to drive my learning of SV2's protocol.
The branch linked above is not something I would currently propose as it was mostly designed and implemented by my AI agents. However, I have iterated on it quite a bit, enough to have it working stable pointing to the SRI pool.
Architecture
The entry point would be through URL parsing
stratum2+tcpin our daemon.A new source would be introduced to
job_sourceand also a new modulestratum_v2, these would be the foundation to handle connectivity, cryptography, marshalling, message exchange/routing, and fit naturally along other sources likejob_source/stratum_v1and the analogousstratum_v1module.At lower levels we will need to introduce support for fixed merkle root as we currently only support computed merkle root, that is needed for SV2's HOM (header-only mining) which is the usual behavior for end devices. For extranonce search space slicing SV2's spec describes separate architectural components (i.e. mining proxy).
Request for comments
I'm looking for comments on what should Mujina's SV2 support look like. My idea now that I feel a little more comfortable with the protocol to refactor the whole solution into simpler modules, structs, functions, with better placed/named symbols.
Soon as I get more confident with the design I will open a draft PR for reviews, for now I would just like to gather some guidance from the community, especially from @plebhash and @rkuester on pitfalls to avoid, general principles, and so on.
Beta Was this translation helpful? Give feedback.
All reactions