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
1d9815573a
commit
f780a6086f
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