We have a new stratum server implementation in Rust over at P2Poolv2. Here's why:
1. CKPool is great, but it's complicated and it's written in C.. It is very hard to extend or change. I tried as part of hydrapool effort for 256 Foundation telehash. We ran into issues at load with our changes. Enough to tell me, we need something easier to maintain and extend.
2. C doesn't make it easy to use async programming model where a core is freed while a thread waits for IO. You can do it, but the code gets complicated quick. We wanted to use modern tools like Rust's async/await so we can maintain and extend the server in future.
3. DATUM is again in C. On top of that it's tied to Ocean's model of block template protocols that we don't need in hydrapool or P2Poolv2. Messing with C or to forking the project wasn't a road we wanted to go down on.
4. SV2. This was the closest to our plans and we first tried to use the SV1 components for our user case. However, the code base was more complicated than we expected. There's good reasons for it, SV2 is opinionated to serve the SV2 model and it kind of created issues for us as we wanted to just use the SV1 parts of it.
@plebhash and @gitgabe helped a lot, but in the end I took the opportunity to just dive in and write our own.
## So where are we now?
We have the server working. It replicates the CKPool behaviour as closely as possible. We have tested with cpuminer and bitaxes.
## Next steps:
We are running some load tests to compare our implementation to CKPool. Results coming soon.
We need to test our implementation with variety of firmware.
## How can you help?
You can help us test by pointing a machine for 5 minutes. That's all we need. We'll log the interaction and if there's any failures we can fix it using the logs. We will set something up soon and invite testers.
BTW, initial load tests are showing we are competitive with CKPool. Rust can be fast! ππ
The repo is here:

GitHub
GitHub - p2poolv2/p2poolv2: P2Poolv2 - Rebooting P2Pool for Bitcoin
P2Poolv2 - Rebooting P2Pool for Bitcoin. Contribute to p2poolv2/p2poolv2 development by creating an account on GitHub.
Stratum server is under the startum crate.
Just want to add that building stratum server has directly informed how we want to disseminate block templates and shares on P2Poolv2. That's another post though.