Merged mining specification: Difference between revisions
Jump to navigation
Jump to search
Created page with "== Aux proof-of-work == {|class="wikitable" ! Field Size !! Description !! Data type !! Comments |- | ? || txns || txn || Coinbase transaction l..." |
More notes. |
||
Line 1: | Line 1: | ||
== Aux proof-of-work == | == Aux proof-of-work == | ||
This is used to prove work on the aux chain. In vinced's original implementation it's generated by calling the getworkaux RPC method on the parent bitcoind and then the work is then submitted by passing it to the aux-chain namecoind as the second parameter to getauxblock. | |||
{|class="wikitable" | {|class="wikitable" | ||
Line 30: | Line 31: | ||
| 4 || index || int32_t || Index of this transaction in the merkle tree | | 4 || index || int32_t || Index of this transaction in the merkle tree | ||
|} | |} | ||
== Merged mining coinbase == | |||
Insert exactly one of these headers into the scriptSig of the coinbase on the parent chain. vinced's code always inserts an OP_2 in front of it, but you don't have to. | |||
{|class="wikitable" | |||
! Field Size !! Description !! Data type !! Comments | |||
|- | |||
| 4 || mm_header || char[4] || Magic bytes: 0xfa, 0xbe, 'm', 'm' | |||
|- | |||
| 32 || block_hash || char[32] || Hash of the aux work merkle tree | |||
|- | |||
| 4 || merkle_size || int32_t || Number of entries in aux work merkle tree | |||
|- | |||
| 4 || merkle_nonce || int32_t || Nonce used to calculate indexes into aux work merkle tree | |||
|} | |||
==Aux work merkle tree== | |||
If you're just mining a single auxiliary chain, you don't have to worry about this - just set the merkle tree hash in the coinbase to the aux chain block's hash, the merkle size to 1, and the merkle nonce to 0. TODO: full documentation. |
Revision as of 19:51, 11 October 2011
Aux proof-of-work
This is used to prove work on the aux chain. In vinced's original implementation it's generated by calling the getworkaux RPC method on the parent bitcoind and then the work is then submitted by passing it to the aux-chain namecoind as the second parameter to getauxblock.
Field Size | Description | Data type | Comments |
---|---|---|---|
? | txns | txn | Coinbase transaction linking the aux to its parent block |
? | merkle_link | mrkllink | The merkle path linking the coinbase (above) to its block |
? | aux_branch_count | var_int | Number of merkle branches linking this aux chains to the aux root |
32* | aux_branch[] | char[32] | Linking aux merkle branches |
4 | index | int32_t | Index of "this" block chain in the aux chain list |
80 | parent_block | block header | Parent block header |
Merkle link
Field Size | Description | Data type | Comments |
---|---|---|---|
32 | block_hash | char[32] | Hash of the block header |
? | branch_count | var_int | The number of links to bring the transaction to the block's merkle root |
32* | branch[] | char[32] | Linking merkle branches |
4 | index | int32_t | Index of this transaction in the merkle tree |
Merged mining coinbase
Insert exactly one of these headers into the scriptSig of the coinbase on the parent chain. vinced's code always inserts an OP_2 in front of it, but you don't have to.
Field Size | Description | Data type | Comments |
---|---|---|---|
4 | mm_header | char[4] | Magic bytes: 0xfa, 0xbe, 'm', 'm' |
32 | block_hash | char[32] | Hash of the aux work merkle tree |
4 | merkle_size | int32_t | Number of entries in aux work merkle tree |
4 | merkle_nonce | int32_t | Nonce used to calculate indexes into aux work merkle tree |
Aux work merkle tree
If you're just mining a single auxiliary chain, you don't have to worry about this - just set the merkle tree hash in the coinbase to the aux chain block's hash, the merkle size to 1, and the merkle nonce to 0. TODO: full documentation.