diff --git a/btcjson/dagsvrresults.go b/btcjson/dagsvrresults.go index 8827c3c3f..3e13706ce 100644 --- a/btcjson/dagsvrresults.go +++ b/btcjson/dagsvrresults.go @@ -143,6 +143,7 @@ type GetBlockTemplateResult struct { SizeLimit int64 `json:"sizeLimit,omitempty"` Transactions []GetBlockTemplateResultTx `json:"transactions"` AcceptedIDMerkleRoot string `json:"acceptedIdMerkleRoot"` + UTXOCommitment string `json:"utxoCommitment"` Version int32 `json:"version"` CoinbaseAux *GetBlockTemplateResultAux `json:"coinbaseAux,omitempty"` CoinbaseTxn *GetBlockTemplateResultTx `json:"coinbaseTxn,omitempty"` diff --git a/mining/simulator/mineloop.go b/mining/simulator/mineloop.go index 843bedbc4..da50c1e85 100644 --- a/mining/simulator/mineloop.go +++ b/mining/simulator/mineloop.go @@ -41,10 +41,14 @@ func parseBlock(template *btcjson.GetBlockTemplateResult) (*util.Block, error) { if err != nil { return nil, fmt.Errorf("Error parsing acceptedIDMerkleRoot: %s", err) } + utxoCommitment, err := daghash.NewHashFromStr(template.UTXOCommitment) + if err != nil { + return nil, fmt.Errorf("Error parsing utxoCommitment: %s", err) + } // parse rest of block msgBlock := wire.NewMsgBlock( wire.NewBlockHeader(template.Version, parentHashes, &daghash.Hash{}, - acceptedIDMerkleRoot, &daghash.Hash{}, uint32(bits), 0)) + acceptedIDMerkleRoot, utxoCommitment, uint32(bits), 0)) for i, txResult := range append([]btcjson.GetBlockTemplateResultTx{*template.CoinbaseTxn}, template.Transactions...) { reader := hex.NewDecoder(strings.NewReader(txResult.Data)) diff --git a/server/rpc/rpcserver.go b/server/rpc/rpcserver.go index 19ccb21cb..73a65a1e9 100644 --- a/server/rpc/rpcserver.go +++ b/server/rpc/rpcserver.go @@ -1807,6 +1807,7 @@ func (state *gbtWorkState) blockTemplateResult(useCoinbaseValue bool, submitOld SizeLimit: wire.MaxBlockPayload, Transactions: transactions, AcceptedIDMerkleRoot: header.AcceptedIDMerkleRoot.String(), + UTXOCommitment: header.UTXOCommitment.String(), Version: header.Version, LongPollID: longPollID, SubmitOld: submitOld, diff --git a/server/rpc/rpcserverhelp.go b/server/rpc/rpcserverhelp.go index fcf2e88c5..602e2c4d3 100644 --- a/server/rpc/rpcserverhelp.go +++ b/server/rpc/rpcserverhelp.go @@ -317,6 +317,7 @@ var helpDescsEnUS = map[string]string{ "getBlockTemplateResult-sizeLimit": "Number of bytes allowed in blocks", "getBlockTemplateResult-transactions": "Array of transactions as JSON objects", "getBlockTemplateResult-acceptedIdMerkleRoot": "The root of the merkle tree of transaction IDs accepted by this block", + "getBlockTemplateResult-utxoCommitment": "An ECMH UTXO commitment of this block", "getBlockTemplateResult-version": "The block version", "getBlockTemplateResult-coinbaseAux": "Data that should be included in the coinbase signature script", "getBlockTemplateResult-coinbaseTxn": "Information about the coinbase transaction",