Merge pull request #1916 from ffranr/add_gettxfee

btcutil/psbt: add method Packet.GetTxFee
This commit is contained in:
Oliver Gugger 2022-11-07 17:58:00 +01:00 committed by GitHub
commit 63835cbe0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -11,9 +11,9 @@ import (
"bytes"
"encoding/base64"
"errors"
"io"
"github.com/btcsuite/btcd/btcutil"
"github.com/btcsuite/btcd/wire"
)
@ -30,7 +30,7 @@ var (
// MaxPsbtValueLength is the size of the largest transaction serialization
// that could be passed in a NonWitnessUtxo field. This is definitely
//less than 4M.
// less than 4M.
const MaxPsbtValueLength = 4000000
// MaxPsbtKeyLength is the length of the largest key that we'll successfully
@ -395,3 +395,20 @@ func (p *Packet) SanityCheck() error {
return nil
}
// GetTxFee returns the transaction fee. An error is returned if a transaction
// input does not contain any UTXO information.
func (p *Packet) GetTxFee() (btcutil.Amount, error) {
sumInputs, err := SumUtxoInputValues(p)
if err != nil {
return 0, err
}
var sumOutputs int64
for _, txOut := range p.UnsignedTx.TxOut {
sumOutputs += txOut.Value
}
fee := sumInputs - sumOutputs
return btcutil.Amount(fee), nil
}