Skip to content

Commit 12ddc3c

Browse files
author
yangyile
committed
简单优化代码
1 parent d69ca70 commit 12ddc3c

18 files changed

+347
-169
lines changed

create_wallet.go

+39-27
Original file line numberDiff line numberDiff line change
@@ -9,51 +9,63 @@ import (
99
"github.com/pkg/errors"
1010
)
1111

12-
// CreateWalletP2PKH 随机创建个比特币钱包
13-
// 你需要知道的是目前比特币的地址格式有5种,而这5种分别代表5个版本的,他们的签名逻辑各不相同
14-
// 随着系统的升级以后可能还会有更多的版本出现
15-
// 这里只是选择 P2PKH 这一种
16-
// 其次是比特币分为正式网络和测试网络,他们的地址也不是互通的
17-
// 需要在概念上区分清楚
18-
func CreateWalletP2PKH(netParams *chaincfg.Params) (address string, private string, err error) {
19-
// 随机生成一个新的比特币私钥
12+
// CreateWalletP2PKH generates a Bitcoin wallet using the P2PKH format.
13+
// This function returns the wallet address and private key hex-string.
14+
// CreateWalletP2PKH 使用 P2PKH 格式生成比特币钱包。
15+
// 该函数返回钱包地址和私钥的十六进制格式。
16+
func CreateWalletP2PKH(netParams *chaincfg.Params) (addressString string, privateKeyHex string, err error) {
17+
// Generate a new Bitcoin private key // 创建新的比特币私钥
2018
privateKey, err := btcec.NewPrivateKey()
2119
if err != nil {
22-
return "", "", errors.WithMessage(err, "随机私钥出错")
20+
return "", "", errors.WithMessage(err, "wrong to generate random private key")
2321
}
24-
// 通过私钥生成比特币地址的公钥
22+
23+
// Generate the public key hash (SHA256 -> RIPEMD160) from the private key // 从私钥生成公钥哈希(SHA256 -> RIPEMD160)
2524
pubKeyHash := btcutil.Hash160(privateKey.PubKey().SerializeCompressed())
26-
// 通过公钥得到地址
25+
26+
// Create a Bitcoin address using the public key hash // 使用公钥哈希生成比特币地址
2727
addressPubKeyHash, err := btcutil.NewAddressPubKeyHash(pubKeyHash, netParams)
2828
if err != nil {
29-
return "", "", errors.WithMessage(err, "创建地址出错")
29+
return "", "", errors.WithMessage(err, "wrong to create address from public key hash")
3030
}
31-
address = addressPubKeyHash.EncodeAddress() // 转换为浏览器里常用的字符串的结果
32-
private = hex.EncodeToString(privateKey.Serialize())
33-
return address, private, nil
31+
32+
// Return the generated address and private key (hex-encoded) // 返回生成的地址和私钥(十六进制编码)
33+
addressString = addressPubKeyHash.EncodeAddress()
34+
privateKeyHex = hex.EncodeToString(privateKey.Serialize())
35+
return addressString, privateKeyHex, nil
3436
}
3537

36-
func CreateWalletP2WPKH(netParams *chaincfg.Params) (address string, private string, err error) {
37-
// 创建一个新的随机私钥
38+
// CreateWalletP2WPKH generates a Bitcoin wallet using the P2WPKH format.
39+
// This function returns the wallet address and private key hex-string.
40+
// CreateWalletP2WPKH 使用 P2WPKH 格式生成比特币钱包。
41+
// 该函数返回钱包地址和私钥的十六进制格式。
42+
func CreateWalletP2WPKH(netParams *chaincfg.Params) (addressString string, privateKeyHex string, err error) {
43+
// Generate a new Bitcoin private key // 创建新的比特币私钥
3844
privateKey, err := btcec.NewPrivateKey()
3945
if err != nil {
40-
return "", "", errors.WithMessage(err, "随机私钥出错")
46+
return "", "", errors.WithMessage(err, "wrong to generate random private key")
4147
}
42-
// WIF(Wallet Import Format)私钥编码格式的类型
48+
49+
// Encode the private key using Wallet Import Format (WIF) // 使用 WIF 格式编码私钥
4350
privateWif, err := btcutil.NewWIF(privateKey, netParams, true)
4451
if err != nil {
45-
return "", "", errors.WithMessage(err, "创建钱包引用格式出错")
52+
return "", "", errors.WithMessage(err, "wrong to create Wallet Import Format (WIF) for private key")
4653
}
47-
// 直接从私钥生成公钥
54+
55+
// Get the public key // 获取公钥
4856
pubKey := privateWif.PrivKey.PubKey()
49-
// 计算公钥哈希(P2WPKH使用的公钥哈希是公钥的SHA256和RIPEMD160哈希值)
57+
58+
// Compute the public key hash (SHA256 -> RIPEMD160) // 计算公钥哈希(SHA256 -> RIPEMD160)
5059
pubKeyHash := btcutil.Hash160(pubKey.SerializeCompressed())
51-
// 创建P2WPKH地址
60+
61+
// Create a P2WPKH address using the public key hash // 使用公钥哈希生成 P2WPKH 地址
5262
witnessPubKeyHash, err := btcutil.NewAddressWitnessPubKeyHash(pubKeyHash, netParams)
5363
if err != nil {
54-
return "", "", errors.WithMessage(err, "创建P2WPKH地址出错")
64+
return "", "", errors.WithMessage(err, "wrong to create P2WPKH address")
5565
}
56-
address = witnessPubKeyHash.EncodeAddress()
57-
private = hex.EncodeToString(privateKey.Serialize())
58-
return address, private, nil
66+
67+
// Return the generated address and private key (hex-encoded) // 返回生成的地址和私钥(十六进制编码)
68+
addressString = witnessPubKeyHash.EncodeAddress()
69+
privateKeyHex = hex.EncodeToString(privateKey.Serialize())
70+
return addressString, privateKeyHex, nil
5971
}

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ require (
2727
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
2828
github.com/rogpeppe/go-internal v1.13.1 // indirect
2929
github.com/stretchr/objx v0.5.2 // indirect
30-
golang.org/x/crypto v0.29.0 // indirect
31-
golang.org/x/sys v0.27.0 // indirect
30+
golang.org/x/crypto v0.31.0 // indirect
31+
golang.org/x/sys v0.28.0 // indirect
3232
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
3333
gopkg.in/yaml.v3 v3.0.1 // indirect
3434
)

go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45
114114
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
115115
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
116116
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
117-
golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ=
118-
golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg=
117+
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
118+
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
119119
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
120120
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
121121
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -131,8 +131,8 @@ golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7w
131131
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
132132
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
133133
golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
134-
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
135-
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
134+
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
135+
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
136136
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
137137
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
138138
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=

internal/demos/signbtc/main/main.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ func main() {
1414

1515
netParams := chaincfg.TestNet3Params
1616

17-
param := gobtcsign.CustomParam{
17+
param := gobtcsign.BitcoinTxParams{
1818
VinList: []gobtcsign.VinType{
1919
{
2020
OutPoint: *gobtcsign.MustNewOutPoint("e1f05d4ef10d6d4245839364c637cc37f429784883761668978645c67e723919", 2),
@@ -44,7 +44,7 @@ func main() {
4444
fmt.Println("estimate-tx-size:", size) //这是预估值 略微 >= 实际值
4545

4646
//得到待签名的交易
47-
signParam, err := param.GetSignParam(&netParams)
47+
signParam, err := param.CreateTxSignParams(&netParams)
4848
utils.MustDone(err)
4949

5050
fmt.Println("utxo inputs:", len(signParam.InputOuts))

internal/demos/signdoge/main/main.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ func main() {
1414

1515
netParams := dogecoin.TestNetParams
1616

17-
param := gobtcsign.CustomParam{
17+
param := gobtcsign.BitcoinTxParams{
1818
VinList: []gobtcsign.VinType{
1919
{
2020
OutPoint: *gobtcsign.MustNewOutPoint(
@@ -47,7 +47,7 @@ func main() {
4747
fmt.Println("estimate-tx-size:", size) //这是预估值 略微 >= 实际值
4848

4949
//得到待签名的交易
50-
signParam, err := param.GetSignParam(&netParams)
50+
signParam, err := param.CreateTxSignParams(&netParams)
5151
utils.MustDone(err)
5252

5353
//签名

param.go

+17-91
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ package gobtcsign
33
import (
44
"github.com/btcsuite/btcd/btcutil"
55
"github.com/btcsuite/btcd/chaincfg"
6-
"github.com/btcsuite/btcd/chaincfg/chainhash"
76
"github.com/btcsuite/btcd/wire"
87
"github.com/pkg/errors"
98
)
109

11-
// CustomParam 这是客户自定义的参数类型,表示要转入和转出的信息
12-
type CustomParam struct {
10+
// BitcoinTxParams 这是客户自定义的参数类型,表示要转入和转出的信息
11+
type BitcoinTxParams struct {
1312
VinList []VinType //要转入进BTC节点的
1413
OutList []OutType //要从BTC节点转出的-这里面通常包含1个目标(转账)和1个自己(找零)
1514
RBFInfo RBFConfig //详见RBF机制,通常是需要启用RBF以免交易长期被卡的
@@ -22,81 +21,13 @@ type VinType struct {
2221
RBFInfo RBFConfig //还是RBF机制,前面的是控制整个交易的,这里控制单个UTXO的
2322
}
2423

25-
func MustNewOutPoint(srcTxHash string, utxoIndex uint32) *wire.OutPoint {
26-
//which tx the utxo from.
27-
utxoHash, err := chainhash.NewHashFromStr(srcTxHash)
28-
if err != nil {
29-
panic(errors.WithMessagef(err, "wrong param utxo-from-tx-hash=%s", srcTxHash))
30-
}
31-
return wire.NewOutPoint(
32-
utxoHash, //这个是收到 utxo 的交易哈希,即 utxo 是从哪里来的,配合位置索引序号构成唯一索引,就能确定是花的哪个utxo
33-
utxoIndex, //这个是收到 utxo 的输出位置,比如一个交易中有多个输出,这里要选择输出的位置
34-
)
35-
}
36-
3724
type OutType struct {
3825
Target AddressTuple //接收者信息,钱包地址和公钥文本,二选一填写即可
3926
Amount int64 //聪的数量
4027
}
4128

42-
type AddressTuple struct {
43-
Address string //钱包地址 和 公钥脚本 二选一填写即可
44-
PkScript []byte //公钥脚本 和 钱包地址 二选一填写即可 PkScript(Public Key Script)在拼装交易和签名时使用
45-
}
46-
47-
func NewAddressTuple(address string) *AddressTuple {
48-
return &AddressTuple{
49-
Address: address,
50-
PkScript: nil, //这里 address 和 pk-script 是二选一的,因此不设,在后续的逻辑里会根据地址获得 pk-script 信息
51-
}
52-
}
53-
54-
// GetPkScript 获得公钥文本,当公钥文本存在时就用已有的,否则就根据地址计算
55-
func (one *AddressTuple) GetPkScript(netParams *chaincfg.Params) ([]byte, error) {
56-
if len(one.PkScript) > 0 {
57-
return one.PkScript, nil //假如有就直接返回,否则就根据地址计算
58-
}
59-
if one.Address == "" {
60-
return nil, errors.New("no-pk-script-no-address")
61-
}
62-
return GetAddressPkScript(one.Address, netParams) //这里不用做缓存避免增加复杂度
63-
}
64-
65-
type RBFConfig struct {
66-
AllowRBF bool //当需要RBF时需要设置,推荐启用RBF发交易,否则,当手续费过低时交易会卡在节点的内存池里
67-
Sequence uint32 //这是后来出的功能,RBF,使用更高手续费重发交易用的,当BTC交易发出到系统以后假如没人打包(手续费过低时),就可以增加手续费覆盖旧的交易
68-
}
69-
70-
func NewRBFActive() *RBFConfig {
71-
return &RBFConfig{
72-
AllowRBF: true,
73-
Sequence: wire.MaxTxInSequenceNum - 2, // recommended sequence BTC推荐的默认启用RBF的就是这个数 // 选择 wire.MaxTxInSequenceNum - 2 而不是 wire.MaxTxInSequenceNum - 1 是出于一种谨慎性和规范性的考虑。虽然在技术上 wire.MaxTxInSequenceNum - 1 也可以支持 RBF,但 -2 更为常用
74-
}
75-
}
76-
77-
func NewRBFNotUse() *RBFConfig {
78-
return &RBFConfig{
79-
AllowRBF: false, //当两个元素都为零值时表示不启用RBF机制
80-
Sequence: wire.MaxTxInSequenceNum, //当两个元素都为零值时表示不启用RBF机制,当然这里设置为 wire.MaxTxInSequenceNum 也行,逻辑已经做过判定
81-
}
82-
}
83-
84-
func NewRBFSeqNum(sequence uint32) *RBFConfig {
85-
return &RBFConfig{
86-
AllowRBF: sequence != wire.MaxTxInSequenceNum, //避免设置为0被误认为是不使用RBF的
87-
Sequence: sequence,
88-
}
89-
}
90-
91-
func (cfg *RBFConfig) GetSequence() uint32 {
92-
if cfg.AllowRBF || cfg.Sequence > 0 { //启用RBF机制,精确的RBF逻辑
93-
return cfg.Sequence
94-
}
95-
return wire.MaxTxInSequenceNum //当两个元素都为零值时表示不启用RBF机制-因此这里使用默认的最大值表示不启用
96-
}
97-
98-
// GetSignParam 根据用户的输入信息拼接交易
99-
func (param *CustomParam) GetSignParam(netParams *chaincfg.Params) (*SignParam, error) {
29+
// CreateTxSignParams 根据用户的输入信息拼接交易
30+
func (param *BitcoinTxParams) CreateTxSignParams(netParams *chaincfg.Params) (*SignParam, error) {
10031
var msgTx = wire.NewMsgTx(wire.TxVersion)
10132

10233
//这是发送者和发送数量的列表,很明显,这是需要签名的关键信息,现在只把待签名信息收集起来
@@ -117,7 +48,7 @@ func (param *CustomParam) GetSignParam(netParams *chaincfg.Params) (*SignParam,
11748
return nil, errors.Errorf("wrong tx_in.sequence default value: %v", txIn.Sequence)
11849
}
11950
// 查看是否需要启用 RBF 机制
120-
if seqNo := param.GetTxInSequenceNum(input); seqNo != wire.MaxTxInSequenceNum {
51+
if seqNo := param.GetTxInputSequence(input); seqNo != wire.MaxTxInSequenceNum {
12152
txIn.Sequence = seqNo
12253
}
12354
msgTx.AddTxIn(txIn)
@@ -138,7 +69,7 @@ func (param *CustomParam) GetSignParam(netParams *chaincfg.Params) (*SignParam,
13869
}, nil
13970
}
14071

141-
func (param *CustomParam) GetOutputs(netParams *chaincfg.Params) ([]*wire.TxOut, error) {
72+
func (param *BitcoinTxParams) GetOutputs(netParams *chaincfg.Params) ([]*wire.TxOut, error) {
14273
outputs := make([]*wire.TxOut, 0, len(param.OutList))
14374
for _, output := range param.OutList {
14475
pkScript, err := output.Target.GetPkScript(netParams)
@@ -150,7 +81,7 @@ func (param *CustomParam) GetOutputs(netParams *chaincfg.Params) ([]*wire.TxOut,
15081
return outputs, nil
15182
}
15283

153-
func (param *CustomParam) GetTxInSequenceNum(input VinType) uint32 {
84+
func (param *BitcoinTxParams) GetTxInputSequence(input VinType) uint32 {
15485
// 当你确实是需要对每个交易单独设置RBF时,就可以在这里设置,单独设置到这个 vin 里面
15586
if seqNo := input.RBFInfo.GetSequence(); seqNo != wire.MaxTxInSequenceNum { //启用RBF机制,精确的RBF逻辑
15687
return seqNo
@@ -171,7 +102,7 @@ func (param *CustomParam) GetTxInSequenceNum(input VinType) uint32 {
171102
}
172103

173104
// GetInputList 把拼交易的参数转换为验签的参数
174-
func (param *CustomParam) GetInputList() []*VerifyTxInputParam {
105+
func (param *BitcoinTxParams) GetInputList() []*VerifyTxInputParam {
175106
var inputList = make([]*VerifyTxInputParam, 0, len(param.VinList))
176107
for _, x := range param.VinList {
177108
inputList = append(inputList, &VerifyTxInputParam{
@@ -186,7 +117,7 @@ func (param *CustomParam) GetInputList() []*VerifyTxInputParam {
186117
}
187118

188119
// GetFee 全部输入和全部输出的差额,即交易的费用
189-
func (param *CustomParam) GetFee() btcutil.Amount {
120+
func (param *BitcoinTxParams) GetFee() btcutil.Amount {
190121
var sum int64
191122
for _, v := range param.VinList {
192123
sum += v.Amount
@@ -198,23 +129,18 @@ func (param *CustomParam) GetFee() btcutil.Amount {
198129
}
199130

200131
// GetChangeAmountWithFee 根据交易费用计算出找零数量
201-
func (param *CustomParam) GetChangeAmountWithFee(fee btcutil.Amount) btcutil.Amount {
132+
func (param *BitcoinTxParams) GetChangeAmountWithFee(fee btcutil.Amount) btcutil.Amount {
202133
return param.GetFee() - fee
203134
}
204135

205-
func (param *CustomParam) EstimateTxSize(netParams *chaincfg.Params, change *ChangeTo) (int, error) {
136+
func (param *BitcoinTxParams) EstimateTxSize(netParams *chaincfg.Params, change *ChangeTo) (int, error) {
206137
return EstimateTxSize(param, netParams, change)
207138
}
208139

209-
func (param *CustomParam) EstimateTxFee(netParams *chaincfg.Params, change *ChangeTo, feeRatePerKb btcutil.Amount, dustFee DustFee) (btcutil.Amount, error) {
140+
func (param *BitcoinTxParams) EstimateTxFee(netParams *chaincfg.Params, change *ChangeTo, feeRatePerKb btcutil.Amount, dustFee DustFee) (btcutil.Amount, error) {
210141
return EstimateTxFee(param, netParams, change, feeRatePerKb, dustFee)
211142
}
212143

213-
// CheckMsgTxParam 当签完名以后最好是再用这个函数检查检查,避免签名逻辑在有BUG时修改输入或输出的内容
214-
func (param *CustomParam) CheckMsgTxParam(msgTx *wire.MsgTx, netParams *chaincfg.Params) error {
215-
return CheckMsgTxSameWithParam(msgTx, *param, netParams)
216-
}
217-
218144
// NewCustomParamFromMsgTx 这里提供简易的逻辑把交易的原始参数再拼回来
219145
// 以校验参数和校验签名等信息
220146
// 因此该函数的主要作用是校验
@@ -223,7 +149,7 @@ func (param *CustomParam) CheckMsgTxParam(msgTx *wire.MsgTx, netParams *chaincfg
223149
// 第二个参数是设置如何获取前置输出的
224150
// 通常是使用 客户端 请求获取前置输出,但也可以使用map把前置输出存起来,因此使用 interface 获取前置输出,提供两种实现方案
225151
// 在项目中推荐使用 rpc 获取,这样就很方便,而在单元测试中则只需要通过 map 预先配置就行,避免网络请求也避免暴露节点配置
226-
func NewCustomParamFromMsgTx(msgTx *wire.MsgTx, preImp GetUtxoFromInterface) (*CustomParam, error) {
152+
func NewCustomParamFromMsgTx(msgTx *wire.MsgTx, preImp GetUtxoFromInterface) (*BitcoinTxParams, error) {
227153
var vinList = make([]VinType, 0, len(msgTx.TxIn))
228154
for _, vin := range msgTx.TxIn {
229155
costUtxo := vin.PreviousOutPoint
@@ -237,7 +163,7 @@ func NewCustomParamFromMsgTx(msgTx *wire.MsgTx, preImp GetUtxoFromInterface) (*C
237163
OutPoint: *wire.NewOutPoint(&costUtxo.Hash, costUtxo.Index),
238164
Sender: *utxoFrom.sender,
239165
Amount: utxoFrom.amount,
240-
RBFInfo: *NewRBFSeqNum(vin.Sequence),
166+
RBFInfo: *NewRBFConfig(vin.Sequence),
241167
})
242168
}
243169

@@ -249,7 +175,7 @@ func NewCustomParamFromMsgTx(msgTx *wire.MsgTx, preImp GetUtxoFromInterface) (*C
249175
})
250176
}
251177

252-
param := &CustomParam{
178+
param := &BitcoinTxParams{
253179
VinList: vinList,
254180
OutList: outList,
255181
RBFInfo: *NewRBFNotUse(), //这里是不需要的,因为各个输入里将会有RBF的全部信息
@@ -258,7 +184,7 @@ func NewCustomParamFromMsgTx(msgTx *wire.MsgTx, preImp GetUtxoFromInterface) (*C
258184
}
259185

260186
// VerifyMsgTxSign 使用这个检查签名是否正确
261-
func (param *CustomParam) VerifyMsgTxSign(msgTx *wire.MsgTx, netParams *chaincfg.Params) error {
187+
func (param *BitcoinTxParams) VerifyMsgTxSign(msgTx *wire.MsgTx, netParams *chaincfg.Params) error {
262188
inputsItem, err := param.GetVerifyTxInputsItem(netParams)
263189
if err != nil {
264190
return errors.WithMessage(err, "wrong get-inputs")
@@ -269,7 +195,7 @@ func (param *CustomParam) VerifyMsgTxSign(msgTx *wire.MsgTx, netParams *chaincfg
269195
return nil
270196
}
271197

272-
func (param *CustomParam) GetVerifyTxInputsItem(netParams *chaincfg.Params) (*VerifyTxInputsType, error) {
198+
func (param *BitcoinTxParams) GetVerifyTxInputsItem(netParams *chaincfg.Params) (*VerifyTxInputsType, error) {
273199
var res = &VerifyTxInputsType{
274200
PkScripts: make([][]byte, 0, len(param.VinList)),
275201
InAmounts: make([]btcutil.Amount, 0, len(param.VinList)),

0 commit comments

Comments
 (0)