Export the IsCoinbase function.
This commit is contained in:
parent
4eb135618a
commit
6695cd15bb
1 changed files with 7 additions and 7 deletions
14
validate.go
14
validate.go
|
@ -89,12 +89,12 @@ func isNullOutpoint(outpoint *btcwire.OutPoint) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// isCoinBase determines whether or not a transaction is a coinbase. A coinbase
|
// IsCoinBase determines whether or not a transaction is a coinbase. A coinbase
|
||||||
// is a special transaction created by miners that has no inputs. This is
|
// is a special transaction created by miners that has no inputs. This is
|
||||||
// represented in the block chain by a transaction with a single input that has
|
// represented in the block chain by a transaction with a single input that has
|
||||||
// a previous output transaction index set to the maximum value along with a
|
// a previous output transaction index set to the maximum value along with a
|
||||||
// zero hash.
|
// zero hash.
|
||||||
func isCoinBase(msgTx *btcwire.MsgTx) bool {
|
func IsCoinBase(msgTx *btcwire.MsgTx) bool {
|
||||||
// A coin base must only have one transaction input.
|
// A coin base must only have one transaction input.
|
||||||
if len(msgTx.TxIn) != 1 {
|
if len(msgTx.TxIn) != 1 {
|
||||||
return false
|
return false
|
||||||
|
@ -241,7 +241,7 @@ func checkTransactionSanity(tx *btcwire.MsgTx) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Coinbase script length must be between min and max length.
|
// Coinbase script length must be between min and max length.
|
||||||
if isCoinBase(tx) {
|
if IsCoinBase(tx) {
|
||||||
slen := len(tx.TxIn[0].SignatureScript)
|
slen := len(tx.TxIn[0].SignatureScript)
|
||||||
if slen < minCoinbaseScriptLen || slen > maxCoinbaseScriptLen {
|
if slen < minCoinbaseScriptLen || slen > maxCoinbaseScriptLen {
|
||||||
str := fmt.Sprintf("coinbase transaction script length "+
|
str := fmt.Sprintf("coinbase transaction script length "+
|
||||||
|
@ -421,13 +421,13 @@ func (b *BlockChain) checkBlockSanity(block *btcutil.Block) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// The first transaction in a block must be a coinbase.
|
// The first transaction in a block must be a coinbase.
|
||||||
if !isCoinBase(transactions[0]) {
|
if !IsCoinBase(transactions[0]) {
|
||||||
return RuleError("first transaction in block is not a coinbase")
|
return RuleError("first transaction in block is not a coinbase")
|
||||||
}
|
}
|
||||||
|
|
||||||
// A block must not have more than one coinbase.
|
// A block must not have more than one coinbase.
|
||||||
for i, tx := range transactions[1:] {
|
for i, tx := range transactions[1:] {
|
||||||
if isCoinBase(tx) {
|
if IsCoinBase(tx) {
|
||||||
str := fmt.Sprintf("block contains second coinbase at "+
|
str := fmt.Sprintf("block contains second coinbase at "+
|
||||||
"index %d", i)
|
"index %d", i)
|
||||||
return RuleError(str)
|
return RuleError(str)
|
||||||
|
@ -589,7 +589,7 @@ func (b *BlockChain) checkBIP0030(node *blockNode, block *btcutil.Block) error {
|
||||||
// it also calculates the total fees for the transaction and returns that value.
|
// it also calculates the total fees for the transaction and returns that value.
|
||||||
func checkTransactionInputs(tx *btcwire.MsgTx, txHeight int64, txStore TxStore) (int64, error) {
|
func checkTransactionInputs(tx *btcwire.MsgTx, txHeight int64, txStore TxStore) (int64, error) {
|
||||||
// Coinbase transactions have no inputs.
|
// Coinbase transactions have no inputs.
|
||||||
if isCoinBase(tx) {
|
if IsCoinBase(tx) {
|
||||||
return 0, nil
|
return 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -612,7 +612,7 @@ func checkTransactionInputs(tx *btcwire.MsgTx, txHeight int64, txStore TxStore)
|
||||||
|
|
||||||
// Ensure the transaction is not spending coins which have not
|
// Ensure the transaction is not spending coins which have not
|
||||||
// yet reached the required coinbase maturity.
|
// yet reached the required coinbase maturity.
|
||||||
if isCoinBase(originTx.Tx) {
|
if IsCoinBase(originTx.Tx) {
|
||||||
originHeight := originTx.BlockHeight
|
originHeight := originTx.BlockHeight
|
||||||
blocksSincePrev := txHeight - originHeight
|
blocksSincePrev := txHeight - originHeight
|
||||||
if blocksSincePrev < coinbaseMaturity {
|
if blocksSincePrev < coinbaseMaturity {
|
||||||
|
|
Loading…
Add table
Reference in a new issue