-
Notifications
You must be signed in to change notification settings - Fork 106
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
Epic: Support for RPC calls used by mining pools #5234
Comments
@mpguerra you can see the full list of required RPCs and Zebra bug fixes here: This is a draft list, it won't be final until we've found some open-source mining pool coordination software to test against. |
So is the planning done for this already or do we need to do some more? I'm keen to try to do this asynchronously using github discussions. I've started one for this purpose here: #5267 If it is not needed because all of the planning is done we can just close it... |
Planning is incomplete, I've added some missing tasks to this ticket and the discussion. |
@mpguerra I added a list of optional tasks that will increase miner profits (but I didn't create tickets yet). |
I checked Current scope:
Other mining RPCs:
Might be optional:
Not required:
We should also check what RPCs other mining pools use. |
For an MVP, I would stick to the RPCs that are actually in the list of mining RPCs in the rpc docs, so:
This does not seem like it's strictly mining related
This does not seem like it's strictly mining related
This does not seem like it's strictly mining related
Again, none of these seem to be strictly mining related
These are in the list in the docs so how do we know that they are not required? Are they not used by s-nomp? If so I'm happy to exclude from the MVP. |
How can we be sure that the RPC docs are accurate for Zcash mining? As far as I can see, they contain a lot of legacy RPCs that aren't used for Zcash, or aren't required when using If we don't implement the RPCs it expects, the mining pool software will fail to run. Can we set the scope based on the mining pool software code or discussions with engineers, rather than outdated documentation?
prioritisetransaction, getlocalsolps, getnetworkhashps, and getnetworksolps are not used by |
All done here 👏 🎉 |
Motivation
We would like mining pools to be able to use zebrad to:
Our use case assumption is that the miner will use Zebra to generate the block template, mine the block outside of Zebra, then use Zebra to broadcast the block to the Zcash network.
Miners should be able to use Zebra as a drop-in replacement for zcashd (i.e. the interface with Zebra should be compatible with zcashd’s).
Prerequisites
We did an initial scope and design in Zebra Mining RPC scope.pdf.
We also want to do this analysis and design work:
Scope
To begin with we would like to build an MVP (minimum viable product) that will allow mining pools to start using zebra. We believe that this will require us to support the following RPC calls:
getblocktemplate
RPC method #5451Blocktemplate
responses with fixed values data #5452BlockTemplate
fields using a new state request #5455BlockTemplate
#5453BlockTemplate
#5454jsonrequestobject
argument to thegetblocktemplate
RPC #5495getblocktemplate
transactions according to ZIP-317 #5473getblocktemplate
for Sapling addresses #5472 (Optional)getblocktemplate
for Orchard Unified addresses #5929 (Optional)getblocktemplate
RPC creates valid blocks #5803zcashd
mempools are similar #5935submitblock
RPC call #5236submitblock
RPC #5487 (optional for now)getblockhash
RPC call #5268 (feat(rpc): add getblockhash rpc method #4967)getblockcount
RPC call #5303getblocksubsidy
RPC call #5302Implement ZIP 317:
getblocktemplate
transactions according to ZIP-317 #5473Fix the following bugs:
And test the RPCs (See #5937)
We also want to disable these RPCs in production
zebrad
builds, until they have been tested:getblocktemplate-rpcs
feature tozebra-rpc
#5305Once we have an MVP we would ideally engage with some mining pools to test it out and provide feedback.
Optional Tasks
These RPCs might be needed by some mining pools, but we're not sure yet:
getmininginfo
RPC call #5468These changes increase miner profits, but they are not required:
Speed up verification of new blocks, to decrease orphaned blocks and lost subsidies:
zcashd
, currently they are 10-100x slowerConsider caching expensive signature and proof verification results #1968Speed up RPC responses:
Cache Sprout interstitial treestates in memory, so they can be re-used for mempool and block verification #5673Allow transactions that spend UTXOs created in the same block, to increase fees:
Out of Scope
main
or tag a releaseThe text was updated successfully, but these errors were encountered: