-
Notifications
You must be signed in to change notification settings - Fork 117
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
Manually test that each mining RPC works correctly #5686
Comments
@mpguerra I opened this ticket for specific tests for the getblocktemplate RPC, because it has a lot of fields and tricky consensus rules. |
Let's figure out what the tests look like manually first before we try to automate anything |
Thanks, I've updated the ticket to make this clearer |
Hey team! Please add your planning poker estimate with Zenhub @arya2 @conradoplg @dconnolly @oxarbitrage @teor2345 @upbqdn |
We might want to split "test with mining software" out of this ticket, because it needs more Zebra RPCs before we can do it |
I added the list of new RPCs we've implemented to the ticket description, as of 15 December 2022. |
Sharing some getblockcount
getmininginfo Difference are expected as we don’t display all fields. For the ones we do, output is the same
getnetworksolps
getnetworkhashps
getblockhash
|
Output for getblocktemplate + getblocktemplate with long polling, getblockcount, and getblockhash on their own look good (just might be missing "longpoll" in ➜ curl 127.0.0.1:3000 -X POST -d '{"jsonrpc": "2.0", "method": "getblocktemplate", "id":123}' -H 'Content-Type: application/json'
{
"jsonrpc": "2.0",
"result": {
"capabilities": ["proposal"],
"version": 4,
"previousblockhash": "00000000012de0b3907e7d10f6a3db6f90a62e48bdc4b6b97a57001246f9981a",
"blockcommitmentshash": "04c29cb8e1bbe01b6da257e9c8b609e2c976e29089a04af299bc2b709c9bf328",
"lightclientroothash": "04c29cb8e1bbe01b6da257e9c8b609e2c976e29089a04af299bc2b709c9bf328",
"finalsaplingroothash": "04c29cb8e1bbe01b6da257e9c8b609e2c976e29089a04af299bc2b709c9bf328",
"defaultroots": {
"merkleroot": "fc1cf8622293838096b7a45c5877798c6312fc4497ae16aa7d4a882b713b214a",
"chainhistoryroot": "eacdd8bccccd08230d4dd73c89a994370822a5432422da7313713e31c5bbc6cf",
"authdataroot": "d4ac15b68ab2a886d18bb2e155bb5e2f8135201ca391a3ea03c61eb833c14fff",
"blockcommitmentshash": "04c29cb8e1bbe01b6da257e9c8b609e2c976e29089a04af299bc2b709c9bf328"
},
"transactions": [
{
"data": "0400008085202f8902fbf3af5fa0e57ffcfe127fc7b6cec45ee64e02e9519a4bd5f2c3b1093f235537070000006b483045022100f38df35a2ae57276cb40d62629ca594e1b5c856e56aafea8ab73e932b8ab4e5a02200c2e843f56e2c119ecdf33058e473885f875519aea100376702ed7d7f230a68d012102ad710bc073aa7f86e70ab91b8dd04eb3badf99ca8ab60544c180a7e2c09abe47fffffffffbf3af5fa0e57ffcfe127fc7b6cec45ee64e02e9519a4bd5f2c3b1093f235537190000006a473044022030f8984b80a791423832a99b3756ba97026b0f634a504ba18b7bd9031b89492202206a672a920552251dad3df658bdfaf34fca19e910a56cee562ee54115e47ec02f012103496530ebed38333155db19eeed1d44322d01dab861431e3facdbc33da95a213cffffffff01e02e0000000000001976a9143f7b36091b40004ad23ba459f56be8d361a2d0a988ac00000000c3541d000000000000000000000000",
"hash": "7363caac943193bf3e1a82df992b59516d7721d46b370db56ec5ced252c5cd56",
"authdigest": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"depends": [],
"fee": 110,
"sigops": 1,
"required": false
},
{
"data": "0400008085202f8902fbf3af5fa0e57ffcfe127fc7b6cec45ee64e02e9519a4bd5f2c3b1093f235537070000006b483045022100f38df35a2ae57276cb40d62629ca594e1b5c856e56aafea8ab73e932b8ab4e5a02200c2e843f56e2c119ecdf33058e473885f875519aea100376702ed7d7f230a68d012102ad710bc073aa7f86e70ab91b8dd04eb3badf99ca8ab60544c180a7e2c09abe47fffffffffbf3af5fa0e57ffcfe127fc7b6cec45ee64e02e9519a4bd5f2c3b1093f235537190000006a473044022030f8984b80a791423832a99b3756ba97026b0f634a504ba18b7bd9031b89492202206a672a920552251dad3df658bdfaf34fca19e910a56cee562ee54115e47ec02f012103496530ebed38333155db19eeed1d44322d01dab861431e3facdbc33da95a213cffffffff01e02e0000000000001976a9143f7b36091b40004ad23ba459f56be8d361a2d0a988ac00000000c3541d000000000000000000000000",
"hash": "7363caac943193bf3e1a82df992b59516d7721d46b370db56ec5ced252c5cd56",
"authdigest": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"depends": [],
"fee": 110,
"sigops": 1,
"required": false
}
],
"coinbasetxn": {
"data": "0400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff05039e541d00ffffffff0438c94d010000000017a9142e1fff58b8ec78077b50b7ffa2144267512b32bf875cb3e60e0000000017a9147d46a730d31f97b1930d3368a967c309bd4d136a8740787d010000000017a914931fec54c1fea86e574462cc32013f5400b8912987286bee000000000017a914d45cb1adffb5215a42720532a076f02c7c778c9087000000009e541d000000000000000000000000",
"hash": "521c5f0323503ea2eeb69369402dccad12c48840f0a523e4be2b94220c12118b",
"authdigest": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"depends": [],
"fee": -220,
"sigops": 0,
"required": true
},
"longpollid": "0001922205763c4635167174479500000000179dd8205e",
"target": "00000000019ba600000000000000000000000000000000000000000000000000",
"mintime": 1671739396,
"mutable": ["time", "transactions", "prevblock"],
"noncerange": "00000000ffffffff",
"sigoplimit": 20000,
"sizelimit": 2000000,
"curtime": 1671739614,
"bits": "1c019ba6",
"height": 1922206,
"maxtime": 1671744795
},
"id": 123
}
➜ time curl 127.0.0.1:3000 -X POST -d '{"jsonrpc": "2.0", "method": "getblocktemplate", "params": [{"longpollid": "00019222146d1a345416717453760000000036a32ea535"}], "id":123}' -H 'Content-Type: application/json'
{
"jsonrpc": "2.0",
"result": {
"capabilities": ["proposal"],
"version": 4,
"previousblockhash": "000000000138d40f3f66615246eafb22796c54772b418f31a7d2df20e0517e4d",
"blockcommitmentshash": "f51558f71a377632b7c20bf91f3d23c95d59afd235d47d86b1a875ffca24f4c8",
"lightclientroothash": "f51558f71a377632b7c20bf91f3d23c95d59afd235d47d86b1a875ffca24f4c8",
"finalsaplingroothash": "f51558f71a377632b7c20bf91f3d23c95d59afd235d47d86b1a875ffca24f4c8",
"defaultroots": {
"merkleroot": "9bf94df50d0ed9477ca036eb690c1aba8a7aef34ee1071339815f23e5da0f314",
"chainhistoryroot": "0e7eb98fb0166a2f3a454feed40f2495a26a7eb588c7c0e8f16fbe40efcaca93",
"authdataroot": "1b8a778cfdbc3d65dca4227b0539e054c833562d658dee8d615e87dbf84add20",
"blockcommitmentshash": "f51558f71a377632b7c20bf91f3d23c95d59afd235d47d86b1a875ffca24f4c8"
},
"transactions": [
{
"data": "0400008085202f89010b6eb3144ec8ebdb160adfcb3f953f0220619d18e03e21d7a81b5bddd94f24df000000006b483045022100e3065ea96d9be27184f62e46cabb36f453f774d359620149bad9b9e5251e8d1902204c2729ee498a68d00d4106fa10833d245781d1ca4751096478e131d08d3b5fe201210294e95e927508f6a6cde79a068358b90b10a1c6bf9d3a61f0e711c945efa3bd59ffffffff0200d9841f000000001976a9145b79ddd32f3c8d00c1f7ff7d957e5df9197dc8b488aca963651a000000001976a9143baf2c65ae0c9171d40b988df1459ebee092224b88ac00000000000000000000000000000000000000",
"hash": "6dcfe7c331f44ed3b44a6b8905dfa20c5cf2bdf0b7e69d06a2a3d5aec8b800b5",
"authdigest": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"depends": [],
"fee": 226,
"sigops": 2,
"required": false
},
{
"data": "0400008085202f89015a5a1aea1d6e6490ff3707c830d04836d2531c271f6041d324badd286df745f4010000006b4830450221009cd7990398dea1f730bc9fde7d5fd0c2b21764f178529a1a19cd925a18308b720220631c7639b8c89e675fb2ab2f8f78b9eb1503bc080d32c1ce30ff2597d0f06c0c012102145a74d9f334b8994ee42c5752386ee63df9f6dcd00af0d2fd488563027a8133feffffff0295c293f1030000001976a914eef114147dae3ca784c4cf69e4f676a51d48016888ac36f4c70d000000001976a91413b1b5f5a9f5b7bb88024810147d47f3eef5d1c888ac00000000000000000000000000000000000000",
"hash": "7c4f07e35ee814631fc88efad4f43d4a5e9c2f55e9b3bb305e36b2218f78a966",
"authdigest": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"depends": [],
"fee": 2260,
"sigops": 2,
"required": false
},
{
"data": "0400008085202f8901c58df7e5dd853a2561aafc67ef5a763338b21a9b951cd8257c9a4506ee77a5e2010000006a47304402206a3a93d98f9e6371864a1c72f14ba12df1f67742d05bb1fc2fe9ba149bbea562022038cf9ef14a7f0c7080c86bfe05cd498239de628e3efb5110794d5b7bee4a512501210294e95e927508f6a6cde79a068358b90b10a1c6bf9d3a61f0e711c945efa3bd59ffffffff02d7948100000000001976a9141a1f3e6a7d1e8431ae5a9d281e1b7494d91bb86688ac816f0100000000001976a9143baf2c65ae0c9171d40b988df1459ebee092224b88ac00000000000000000000000000000000000000",
"hash": "0a616b527168bd2e6c381c11f58449ef47d9f54a939ab8c82b9c0860f5bad4a0",
"authdigest": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"depends": [],
"fee": 226,
"sigops": 2,
"required": false
},
{
"data": "0400008085202f8901fbf3af5fa0e57ffcfe127fc7b6cec45ee64e02e9519a4bd5f2c3b1093f2355371b0000006b483045022100d7a7699d50a7a0c8d597f5f4078217d17ffb2e3cc203119d884a577b2e7adf4402207220418e8f9bce6933ce60497735deb95815a011319498c4da437aa886a065800121025f2edd01374440cf7e8bcf1a866f8d0a8f6bcc20fa8c63f4d2f4973b5c8da5e9ffffffff0157120000000000001976a9149f68dd83709ae1bc8bc91d7068f1d4d6418470b688ac00000000000000000000000000000000000000",
"hash": "6dd6792fdb163a7c2ec9f9760464afebfd15f602a735f3a2379daf182f611444",
"authdigest": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"depends": [],
"fee": 185,
"sigops": 1,
"required": false
},
{
"data": "0400008085202f8902d3fb12f0617e82c91de1d45f273dd43fcafe0afdfa33d4cfeff740c40f0d5f01000000006a47304402206fd4f2b8de1ed2c9aac5a249d40ef65d2309029c93157b6127a16bce41c1ee05022030c53d031d3e5149976fe7ae7fe686e53377a52b7db4200b10fbb36276a8fbc9012103671860884b77064b9e23ba7787460699ff63af4dbc03deec8e773440ca6a1fb1000000002ffed9ff3b9f67fe5bb22c7c6a6704c41a9934b20927af9b988e0d6462c13b54000000006a473044022001870b52060ceaa6881e481d863d1be83a30bf8ac3ef4bef7c263b1dba13b31d02206c81dde6c77926166141bf37c83be1982a9551c34019528e966ed676b175482a012103671860884b77064b9e23ba7787460699ff63af4dbc03deec8e773440ca6a1fb100000000010c287d35000000001976a9147949ced1d158d5d6411384f5478a3e5bb2a8b67688ac00000000000000000000000000000000000000",
"hash": "5a224d11eb6c14b83424a6a684985364792b3ac54d8530d2731004c2bfa3a83f",
"authdigest": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"depends": [],
"fee": 6800,
"sigops": 1,
"required": false
},
{
"data": "050000800a27a726b4d0d6c200000000f7541d00011ee03545904339d1af7bde96b8eae6b7ceb4794798c35769cfeebf3474ef8093000000006a473044022051b16465b91e763d102f8b04848dfcf5d344cc00933274d911d82652dc9280a202205b324666ce0908b6756ea9e4fc72b4d4dbe6410e5e8c57447da07b511a652577012103db5e6b4aff28cba300b1a21d90196cf2e0b98958d6070dbb62c98e9bd49b0169ffffffff02502ff552000000001976a9141df4a8508283c8be9647517375918871b5d95ccd88ace8ffb82d000000001976a91442f11c42b5707af5553466ee9951089f12799a8488ac000000",
"hash": "bb71c81e112a65bdfcadac2a78888b4ff4549e7cfe828eecbadad87693612fb8",
"authdigest": "2f35dd657b7a39fad60cebca803e68be14b34c7e7c7a08f69c0696dfb35708c0",
"depends": [],
"fee": 1000,
"sigops": 2,
"required": false
}
],
"coinbasetxn": {
"data": "0400008085202f89010000000000000000000000000000000000000000000000000000000000000000ffffffff0503a7541d00ffffffff0438c94d010000000017a9142e1fff58b8ec78077b50b7ffa2144267512b32bf8749dce60e0000000017a9147d46a730d31f97b1930d3368a967c309bd4d136a8740787d010000000017a914931fec54c1fea86e574462cc32013f5400b8912987286bee000000000017a914d45cb1adffb5215a42720532a076f02c7c778c908700000000a7541d000000000000000000000000",
"hash": "718f1ea7d8a33d5f74c9fd7681279752a594b1cd1a8aec7f56d2a22ecdee1a5a",
"authdigest": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"depends": [],
"fee": -10697,
"sigops": 0,
"required": true
},
"longpollid": "00019222146d1a3454167174537600000000374bfeb7f5",
"target": "000000000192b000000000000000000000000000000000000000000000000000",
"mintime": 1671739977,
"mutable": ["time", "transactions", "prevblock"],
"noncerange": "00000000ffffffff",
"sigoplimit": 20000,
"sizelimit": 2000000,
"curtime": 1671740223,
"bits": "1c0192b0",
"height": 1922215,
"maxtime": 1671745376,
"submitold": true
},
"id": 123
}
curl 127.0.0.1:3000 -X POST -d -H 'Content-Type: application/json' 0.01s user 0.00s system 0% cpu 15.014 total
➜ curl 127.0.0.1:3000 -X POST -d '{"jsonrpc": "2.0", "method": "getblockcount", "id":123}' -H 'Content-Type: application/json'
{
"jsonrpc":"2.0",
"result":1922207,
"id":123
}
➜ curl 127.0.0.1:3000 -X POST -d '{"jsonrpc": "2.0", "method": "getblockhash", "params":[1922207], "id":123}' -H 'Content-Type: application/json'
{
"jsonrpc":"2.0",
"result":"0000000001229f36c9cdc0a080fe024192ab89aa9659c55e765bdcfddc06d9f2",
"id":123
} |
We might want to follow |
I see that some of you have been testing this out, do we need to document the manual tests further? do we need to discuss any findings and next steps? |
I think we're just missing the I've opened more detailed tickets for the rest. |
We should close this one once we're happy |
Almost there! I currently have an error in submitblock due to a lack of NU5 support in s-nomp, but that's a s-nomp issue. |
PR #6091 uses long polling in CI, and we've manually tested that |
Motivation
The fields in the getblocktemplate RPC are used by miners to create new blocks. We might have missed some fields, or made some mistakes.
So we need to test that the RPC implements the consensus rules correctly. These are manual tests.
Test Ideas
zcash-cli
once Zebra has synced to the tip, and inspect the outputzcash_rpc_diff
on zcashd and Zebra, ideally with the same mempool transactionszcash_rpc_diff
)Testing Hints
zcashd
usually generates a new address for each template, but you can callzcash-cli listaddresses
and then pin one of them inzcash.conf
usingmineraddress=X
. This address must be a P2PKH address.If there were any differences between the coinbase transactions, I used
zcash-cli decoderawtransaction (hex data)
to compare their parsed forms. We might want to makezcash-rpc-diff
do this automatically.Final Testing
BlockTemplate
fields using a new state request #5455jsonrequestobject
argument to thegetblocktemplate
RPC #5495Related Work
We could automate this testing using #5304
getblocktemplate
RPC creates valid blocks #5803zcashd
mempools are similar #5935The text was updated successfully, but these errors were encountered: