primecoin-generate block from getblocktemplate

this is a part of mining app. study record.

处理步骤

  1. create coinbase tx,Coinbasevalue, Height, pay2address(这里使用 public key 例如下面的: 030990d68d8b7eb4da4092c168b95d73207d91066747867844c8e21718b1d649d4)
    如果是 p2pk 则 scriptsig 是 <Public Key> OP_CHECKSIG
    如果是 p2pkh 则 scriptsig 是 OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
  2. create merkle root
  3. create block header

use pay to public key:

ScriptPubKey=<Public Key> OP_CHECKSIG
ScriptSig= <Signature>

This transaction is a very simple use of the OP_CHECKSIG operator and validates the signature as being generated by the required private key and therefore having permission to unlock the specific transaction.

pay to public key hash:

<ScriptPubKey=OP_DUP OP_HASH160<Public KeyHash> OP_EQUALVERIFY OP_CHECKSIG
ScriptSig= <Signature><Public Key>

Pay-to-Script-Hash

scriptPubKey: OP_HASH160 <scriptHash> OP_EQUAL
scriptSig: ..signatures... <serialized script>

m-of-n multi-signature transaction:

scriptSig: 0 <sig1> ... <script>
script: OP_m <pubKey1> ... OP_n OP_CHECKMULTISIG
2dc740f3.png

coinbase tx json example

01000000 version
01 txIn count
0000000000000000000000000000000000000000000000000000000000000000 preTxHash
ffffffff pre Txout index
0f script length
0394292c02900100062f503253482 script
fffffffff sequence no
01 txOut count
00811b2c00000000 value
23 script length
21 length
030990d68d8b7eb4da4092c168b95d73207d91066747867844c8e21718b1d649d4
ac OP_CHECKSIG
00000000 lockTime

{
"hex": "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0f0394292c02900100062f503253482fffffffff0100811b2c000000002321030990d68d8b7eb4da4092c168b95d73207d91066747867844c8e21718b1d649d4ac00000000",
"txid": "58014cbcbfea738de577ec8301914b076e52594b525bbd2053ea1472fb6002ed",
"version": 1,
"locktime": 0,
"vin": [
{
"coinbase": "0394292c02900100062f503253482f",
"sequence": 4294967295
}
],
"vout": [
{
"value": 7.4,
"n": 0,
"scriptPubKey": {
"asm": "030990d68d8b7eb4da4092c168b95d73207d91066747867844c8e21718b1d649d4 OP_CHECKSIG",
"hex": "21030990d68d8b7eb4da4092c168b95d73207d91066747867844c8e21718b1d649d4ac",
"reqSigs": 1,
"type": "pubkey",
"addresses": [
"AGpNqVQRiFqK4jQDjr1TswfFbqE1AvaMPz"
]
}
}
],
"blockhash": "221f0f9e95266294285a9d39d3d3e6c103ef83736670e0aac60be652ec3af4fa",
"confirmations": 2,
"time": 1540343895,
"blocktime": 1540343895
}

getblocktemplate

tyler@ubuntu16:~/Documents/primecoin-core-desktop-src$ ./src/primecoin-cli -rpcuser=user -rpcpassword=password getblocktemplate ‘{“capabilities”:[“coinbasetxn”, “coinbasevalue”,”coinbase/append”]}’

{
"capabilities": [
"proposal"
],
"version": 536870912,
"rules": [
],
"vbavailable": {
},
"vbrequired": 0,
"previousblockhash": "7849cb665dfe0929aa83c3da9b33b4d545aea12b5ce1dc0b4350d3919a8a27d6",
"transactions": [
{
"data": "010000000254e86ceed35e1c2f984a4da0adb2298d8d82a4d8a84beb942663dfc87a5bd3bb010000006b483045022100c985d26170754a8b82d9b384a4b4f03dbc533ec5793a12fffca21d2c0d73d7f80220369da46a525710c2dae6909eb71ec535245ea4daa41028dc3ed484d31524bbfb012102b4f11aa8673944b5daf386eed2cb0af4149c319f938817c753410db246598d9cffffffffa15d5991ac373ffc6aa48334acc629c3b7c6632c285662bdee58de23a3b4be35010000006a473044022025115ae3186a13ca01b9726c59c14d3ddb3a7fe0105377dd30def5bbea93fdad02201fbf3afae06f06159fe3c750345cf5d941e4a9d9ffa797a46c9e49c7ad338ceb012103a7a1d1140b966528560e8aaf6d939e270154f355f7ae5154030179c6034f21f3ffffffff020084d717000000001976a91474089bf897dbd9b22026443d066a02dd1b84f1f088ac804f470c000000001976a9145f3c6fd8dd548107c90fda910a20354a2e01d09288ac00000000",
"txid": "d0e8ded3bdb951aca1d0deeabc20921638f16cddfb2c1977b231cfbbae733c7a",
"hash": "d0e8ded3bdb951aca1d0deeabc20921638f16cddfb2c1977b231cfbbae733c7a",
"depends": [
],
"fee": 1000000,
"sigops": 2,
"weight": 1492
},
{
"data": "01000000090e79cb41d0bbf3173aa1372d79927b5d7c3dde3a870cedd9222c1ba897a775a5000000006b4830450221009f764b7169aa8dadcd3f463064ce700be29e7c1bb69742aa468e4bf0b5f7217a022014793f10f222c5347b994ae17c73931fbcec7ab04a0e0cb89891e56afa551bcd012103d3a236ef3c4b34211ffdfbe417504c75a1d13ced727a4a1488799124bfc1afa1feffffff28fc011b7cfce716dcd2a808af85febb156c246da6765ce4c9440cfea41e5b01000000006b4830450221009fd8894d839d097ed88a9a01f33ff5721d55c19812477c7bd2deda06e1f8bd08022062c270e5173509f46843db88a9468b086aa3c581224cf075583dc82661daadbb012103d3a236ef3c4b34211ffdfbe417504c75a1d13ced727a4a1488799124bfc1afa1feffffff5a94e45b57fa3a340ded40b874457574a96b96be38d5957ccf1ea9b23bda2d8e000000006b483045022100a3e5d4d3fe138cf40b0f3878a2d8dc63718d081dc6e0524faadb5a02ba4f8f9f022001f3d24b8121471f0605f1049658bca7526908e705b1d2d68063c2478f6fc8d0012103d3a236ef3c4b34211ffdfbe417504c75a1d13ced727a4a1488799124bfc1afa1feffffff63e4985fa84f1228f56599623e3cc7c25a2f3cc30413b168d5460745d50290fb010000006b483045022100b64f3af584e1cddbd03cd0ae732c20c1e84aec9e1c30c5fc4917fe34d414fd3a02205df5d903e7e145ae0363c43eb3e9069f899ed5b5f2d9d5df38a3d06954568358012103d3a236ef3c4b34211ffdfbe417504c75a1d13ced727a4a1488799124bfc1afa1feffffff67311486da5366fe153156f0a3ab577d1e202697e1ddcd525076ab5504467fee010000006a47304402204d8a68db91eff5c5ee35d35d77a35c58c5e1a1cceadb67b3689a0f08b700692402206438f65c8a85a670668a6bcfcddf81ca8b47a9ec58a900f6b57a42e09ff7966b012103d3a236ef3c4b34211ffdfbe417504c75a1d13ced727a4a1488799124bfc1afa1feffffff770e7ac729c7f97c9adadaa8434213a46fc11bd30ec68b313994024eef2342b7000000006b483045022100f86680684cd4720183b73f68c8c09b61108ab9f39c108279ad2029c2b36b83cb02205bebfde2cdd6bed6c0cf09092cea834919a38196034c746d6bdfb97bdcc8c92c012103d3a236ef3c4b34211ffdfbe417504c75a1d13ced727a4a1488799124bfc1afa1feffffff9b3acc08d993b5cf2c821b7941ecb5c01445cb9672d2d4e5c17f5b4908ce2b21010000006b4830450221009bd6924626d76a124a9a24b3856cf2cd735269f75460bdd18454aeb8bb9af6780220289c5acfc7683a585b80682863544743d2e7d96507eeebfa4491649f46b8a5a8012103d3a236ef3c4b34211ffdfbe417504c75a1d13ced727a4a1488799124bfc1afa1feffffffaa30bb68e048592386f554ddb0a6d51257a96d05840e6f76af9cc787449bf9d7000000006b483045022100922f70c0e6f2721280b643487fb770fab25a87c10a94cc88a9facf726ffc52f70220311c136bb3ef0f6bd54aea29a318531b12502c44caef027f2b02f84a01bbfa52012103d3a236ef3c4b34211ffdfbe417504c75a1d13ced727a4a1488799124bfc1afa1feffffffb43ce43aee9a602c56f858e334a97cd46004c52c74e7d75661a4d561d5ec21dd010000006a473044022075bd85b5124133e05ff823dfea23cbfcd74e0f623b5b5020091798f35a11fa68022019b6afafd1eb4af432abb9ce2d3e75284f6cbce7fcf600616f47afcc3214b1a3012103d3a236ef3c4b34211ffdfbe417504c75a1d13ced727a4a1488799124bfc1afa1feffffff01a18fb335000000001976a914a3db07235ffbdd18029a3bbadd47859109b7187f88ac00000000",
"txid": "f9e6a8a7621a2ff0ee62a1fc49b6d97e85e9c7f52a1b1e6cbbbc49a81c20b95c",
"hash": "f9e6a8a7621a2ff0ee62a1fc49b6d97e85e9c7f52a1b1e6cbbbc49a81c20b95c",
"depends": [
],
"fee": 2000000,
"sigops": 1,
"weight": 5496
}
],
"coinbaseaux": {
"flags": ""
},
"coinbasevalue": 741000000,
"longpollid": "7849cb665dfe0929aa83c3da9b33b4d545aea12b5ce1dc0b4350d3919a8a27d61412",
"target": "000000000000000000000000000000000000000000208cbb0000000000000000",
"mintime": 1539688199,
"mutable": [
"time",
"transactions",
"prevblock"
],
"noncerange": "00000000ffffffff",
"sigoplimit": 20000,
"sizelimit": 1000000,
"curtime": 1539689133,
"bits": "0ba08cbb",
"height": 2883478
}
tyler@ubuntu16:~/Documents/primecoin-core-desktop-src$