rpctest: add witness commitment when calling CreateBlock
If we tried to include transactions having witnesses, the block would be invalid since the witness commitment was not added.
This commit is contained in:
parent
f0f4784c1c
commit
37a6e8485b
1 changed files with 16 additions and 0 deletions
|
@ -14,6 +14,7 @@ import (
|
|||
"github.com/btcsuite/btcd/blockchain"
|
||||
"github.com/btcsuite/btcd/chaincfg"
|
||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||
"github.com/btcsuite/btcd/mining"
|
||||
"github.com/btcsuite/btcd/txscript"
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
"github.com/btcsuite/btcutil"
|
||||
|
@ -181,6 +182,21 @@ func CreateBlock(prevBlock *btcutil.Block, inclusionTxs []*btcutil.Tx,
|
|||
if inclusionTxs != nil {
|
||||
blockTxns = append(blockTxns, inclusionTxs...)
|
||||
}
|
||||
|
||||
// We must add the witness commitment to the coinbase if any
|
||||
// transactions are segwit.
|
||||
witnessIncluded := false
|
||||
for i := 1; i < len(blockTxns); i++ {
|
||||
if blockTxns[i].MsgTx().HasWitness() {
|
||||
witnessIncluded = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if witnessIncluded {
|
||||
_ = mining.AddWitnessCommitment(coinbaseTx, blockTxns)
|
||||
}
|
||||
|
||||
merkles := blockchain.BuildMerkleTreeStore(blockTxns, false)
|
||||
var block wire.MsgBlock
|
||||
block.Header = wire.BlockHeader{
|
||||
|
|
Loading…
Reference in a new issue