Skip to content

Commit 1ce9291

Browse files
committed
Dep Replacement: libsv for go-bt
Moving from libsv over to go-bt for all transaction related bitcoin stuff
1 parent 158f8d6 commit 1ce9291

File tree

7 files changed

+75
-31
lines changed

7 files changed

+75
-31
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ View the generated [documentation](https://pkg.go.dev/github.com/bitcoinschema/g
9292
- [bitcoinsv/bsvd](https://github.com/bitcoinsv/bsvd)
9393
- [bitcoinsv/bsvutil](https://github.com/bitcoinsv/bsvutil)
9494
- [itchyny/base58-go](https://github.com/itchyny/base58-go)
95-
- [libsv/libsv](https://github.com/libsv/libsv)
95+
- [libsv/go-bt](https://github.com/libsv/go-bt)
9696
- [piotrnar/gocoin](https://github.com/piotrnar/gocoin)
9797
</details>
9898

examples/create_tx/create_tx.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"log"
55

66
"github.com/bitcoinschema/go-bitcoin"
7-
"github.com/libsv/libsv/transaction"
7+
"github.com/libsv/go-bt"
88
)
99

1010
func main() {
@@ -35,7 +35,7 @@ func main() {
3535
}
3636

3737
// Generate the TX
38-
var rawTx *transaction.Transaction
38+
var rawTx *bt.Tx
3939
rawTx, err = bitcoin.CreateTx(
4040
[]*bitcoin.Utxo{utxo},
4141
[]*bitcoin.PayToAddress{payTo},

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ require (
66
github.com/bitcoinsv/bsvd v0.0.0-20190609155523-4c29707f7173
77
github.com/bitcoinsv/bsvlog v0.0.0-20181216181007-cb81b076bf2e // indirect
88
github.com/bitcoinsv/bsvutil v0.0.0-20181216182056-1d77cf353ea9
9-
github.com/libsv/libsv v0.0.11
9+
github.com/libsv/go-bt v0.0.1
1010
github.com/piotrnar/gocoin v0.0.0-20201027184336-0c389d7eb2c0
11-
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 // indirect
11+
golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 // indirect
1212
)

go.sum

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,67 @@
1+
bitbucket.org/simon_ordish/cryptolib v1.0.39/go.mod h1:7tkcAeq4Wg7wwJ/uN4kaGRPE6yBJA6mUyOTZnqSjsLc=
2+
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
3+
github.com/bitcoin-sv/merchantapi-reference v1.1.0 h1:H8vUBMjzdm6eAJI+1bk7CA2DXwTlAkyJjFdy8i5gZXU=
4+
github.com/bitcoin-sv/merchantapi-reference v1.1.0/go.mod h1:unZHsjGH7ChT0p5b5BSEBfZeo4E+eU+plMul2zYInJU=
15
github.com/bitcoinsv/bsvd v0.0.0-20190609155523-4c29707f7173 h1:2yTIV9u7H0BhRDGXH5xrAwAz7XibWJtX2dNezMeNsUo=
26
github.com/bitcoinsv/bsvd v0.0.0-20190609155523-4c29707f7173/go.mod h1:BZ1UcC9+tmcDEcdVXgpt13hMczwJxWzpAn68wNs7zRA=
37
github.com/bitcoinsv/bsvlog v0.0.0-20181216181007-cb81b076bf2e h1:6f+gRvaPE/4h0g39dqTNPr9/P4mikw0aB+dhiExaWN8=
48
github.com/bitcoinsv/bsvlog v0.0.0-20181216181007-cb81b076bf2e/go.mod h1:WPrWor6cSeuGQZ15qPe+jqFmblJEFrJHYfr5cD7cmyk=
59
github.com/bitcoinsv/bsvutil v0.0.0-20181216182056-1d77cf353ea9 h1:hFI8rT84FCA0FFy3cFrkW5Nz4FyNKlIdCvEvvTNySKg=
610
github.com/bitcoinsv/bsvutil v0.0.0-20181216182056-1d77cf353ea9/go.mod h1:p44KuNKUH5BC8uX4ONEODaHUR4+ibC8todEAOGQEJAM=
11+
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
12+
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
13+
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
14+
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
15+
github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=
16+
github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
17+
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
18+
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
19+
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
720
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
821
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
22+
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
23+
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
24+
github.com/go-zeromq/goczmq/v4 v4.2.2/go.mod h1:Sm/lxrfxP/Oxqs0tnHD6WAhwkWrx+S+1MRrKzcxoaYE=
25+
github.com/go-zeromq/zmq4 v0.9.0/go.mod h1:hCJ0OxYnL3Y3erSLQ025VLGi/W63zJjvr9i17oU2P24=
26+
github.com/go-zeromq/zmq4 v0.10.0/go.mod h1:hCJ0OxYnL3Y3erSLQ025VLGi/W63zJjvr9i17oU2P24=
27+
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
28+
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
29+
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
30+
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
31+
github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
32+
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
33+
github.com/libsv/go-bt v0.0.1 h1:kMRGGzHNvb70TrSgoLbkMlRBuGuW3xXeqE4BaepPlTw=
34+
github.com/libsv/go-bt v0.0.1/go.mod h1:yo8F8kZaQnZ4GN7txXNs1ANGKLGjTyrHoNVu6ig3acA=
935
github.com/libsv/libsv v0.0.11 h1:tb2w/RFpsZLEfPNDGl4tlwk3haMSXYXKspta16+nyv4=
1036
github.com/libsv/libsv v0.0.11/go.mod h1:jhXD2sLtYUNMWoD9mWmsQN0hoGZUK1wCvindT1Odijo=
37+
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
38+
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
39+
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
40+
github.com/ordishs/go-bitcoin v1.0.33/go.mod h1:BMi/TpK6TKxA7K5ON3nrtGB0wuKsub3htiahSs3fJHA=
41+
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
1142
github.com/piotrnar/gocoin v0.0.0-20201027184336-0c389d7eb2c0 h1:PuqJFsnjEnbgSk7b629KC4jyuWqr5tM09k80ZpyptHY=
1243
github.com/piotrnar/gocoin v0.0.0-20201027184336-0c389d7eb2c0/go.mod h1:sW6i99ojgdRHcz53PCjyEeoTEDFh9dfP5iiEIiNfcaM=
44+
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
1345
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
46+
golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
1447
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
1548
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
16-
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 h1:pLI5jrR7OSLijeIDcmRxNmw2api+jEfxLoykJVice/E=
49+
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
1750
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
51+
golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 h1:umElSU9WZirRdgu2yFHY0ayQkEnKiOC1TtM3fWXFnoU=
52+
golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
53+
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
1854
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
55+
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
56+
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
57+
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
58+
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
1959
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
2060
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2161
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
62+
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
63+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
64+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
65+
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
66+
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
67+
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

script.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package bitcoin
33
import (
44
"errors"
55

6-
"github.com/libsv/libsv/script"
6+
"github.com/libsv/go-bt"
77
)
88

99
// ScriptFromAddress will create an output P2PKH script from an address string
@@ -14,11 +14,11 @@ func ScriptFromAddress(address string) (string, error) {
1414
}
1515

1616
// Generate a script from address
17-
rawScript, err := script.NewP2PKHFromAddress(address)
17+
rawScript, err := bt.NewP2PKHOutputFromAddress(address, 0)
1818
if err != nil {
1919
return "", err
2020
}
2121

2222
// Return the string version
23-
return rawScript.ToString(), nil
23+
return rawScript.GetLockingScriptHexString(), nil
2424
}

transaction.go

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ import (
66
"strings"
77

88
"github.com/bitcoinsv/bsvd/bsvec"
9-
"github.com/libsv/libsv/transaction"
10-
"github.com/libsv/libsv/transaction/output"
11-
"github.com/libsv/libsv/transaction/signature"
9+
"github.com/libsv/go-bt"
1210
)
1311

1412
const (
@@ -56,16 +54,16 @@ type PayToAddress struct {
5654
type OpReturnData [][]byte
5755

5856
// TxFromHex will return a libsv.tx from a raw hex string
59-
func TxFromHex(rawHex string) (*transaction.Transaction, error) {
60-
return transaction.NewFromString(rawHex)
57+
func TxFromHex(rawHex string) (*bt.Tx, error) {
58+
return bt.NewTxFromString(rawHex)
6159
}
6260

6361
// CreateTxWithChange will automatically create the change output and calculate fees
6462
//
6563
// Use this if you don't want to figure out fees/change for a tx
6664
func CreateTxWithChange(utxos []*Utxo, payToAddresses []*PayToAddress, opReturns []OpReturnData,
6765
changeAddress string, standardRate, dataRate *FeeAmount,
68-
privateKey *bsvec.PrivateKey) (*transaction.Transaction, error) {
66+
privateKey *bsvec.PrivateKey) (*bt.Tx, error) {
6967

7068
// Missing utxo(s) or change address
7169
if len(utxos) == 0 {
@@ -139,7 +137,7 @@ func CreateTxWithChange(utxos []*Utxo, payToAddresses []*PayToAddress, opReturns
139137
//
140138
// Use this if you don't want to figure out fees/change for a tx
141139
func CreateTxWithChangeUsingWif(utxos []*Utxo, payToAddresses []*PayToAddress, opReturns []OpReturnData,
142-
changeAddress string, standardRate, dataRate *FeeAmount, wif string) (*transaction.Transaction, error) {
140+
changeAddress string, standardRate, dataRate *FeeAmount, wif string) (*bt.Tx, error) {
143141

144142
// Decode the WIF
145143
privateKey, err := WifToPrivateKey(wif)
@@ -159,10 +157,10 @@ func CreateTxWithChangeUsingWif(utxos []*Utxo, payToAddresses []*PayToAddress, o
159157
// Get the raw hex version: tx.ToString()
160158
// Get the tx id: tx.GetTxID()
161159
func CreateTx(utxos []*Utxo, addresses []*PayToAddress,
162-
opReturns []OpReturnData, privateKey *bsvec.PrivateKey) (*transaction.Transaction, error) {
160+
opReturns []OpReturnData, privateKey *bsvec.PrivateKey) (*bt.Tx, error) {
163161

164162
// Start creating a new transaction
165-
tx := transaction.New()
163+
tx := bt.NewTx()
166164

167165
// Accumulate the total satoshis from all utxo(s)
168166
var totalSatoshis uint64
@@ -184,9 +182,9 @@ func CreateTx(utxos []*Utxo, addresses []*PayToAddress,
184182
}
185183

186184
// Loop any op returns
187-
var outPut *output.Output
185+
var outPut *bt.Output
188186
for _, op := range opReturns {
189-
if outPut, err = output.NewOpReturnParts(op); err != nil {
187+
if outPut, err = bt.NewOpReturnPartsOutput(op); err != nil {
190188
return nil, err
191189
}
192190
tx.AddOutput(outPut)
@@ -205,7 +203,7 @@ func CreateTx(utxos []*Utxo, addresses []*PayToAddress,
205203
// Sign the transaction
206204
if privateKey != nil {
207205

208-
signer := signature.InternalSigner{PrivateKey: privateKey, SigHashFlag: 0}
206+
signer := bt.InternalSigner{PrivateKey: privateKey, SigHashFlag: 0}
209207
if err = tx.SignAuto(&signer); err != nil {
210208
return nil, err
211209
}
@@ -223,7 +221,7 @@ func CreateTx(utxos []*Utxo, addresses []*PayToAddress,
223221
// Get the raw hex version: tx.ToString()
224222
// Get the tx id: tx.GetTxID()
225223
func CreateTxUsingWif(utxos []*Utxo, addresses []*PayToAddress,
226-
opReturns []OpReturnData, wif string) (*transaction.Transaction, error) {
224+
opReturns []OpReturnData, wif string) (*bt.Tx, error) {
227225

228226
// Decode the WIF
229227
privateKey, err := WifToPrivateKey(wif)
@@ -241,7 +239,7 @@ func CreateTxUsingWif(utxos []*Utxo, addresses []*PayToAddress,
241239
// Rate(s) can be derived from MinerAPI (default is DefaultDataRate and DefaultStandardRate)
242240
// If rate is nil it will use default rates (0.5 sat per byte)
243241
// Reference: https://tncpw.co/c215a75c
244-
func CalculateFeeForTx(tx *transaction.Transaction, standardRate, dataRate *FeeAmount) uint64 {
242+
func CalculateFeeForTx(tx *bt.Tx, standardRate, dataRate *FeeAmount) uint64 {
245243

246244
// Set the totals
247245
var totalFee uint64

transaction_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"fmt"
55
"testing"
66

7-
"github.com/libsv/libsv/transaction"
7+
"github.com/libsv/go-bt"
88
)
99

1010
// TestTxFromHex will test the method TxFromHex()
@@ -62,7 +62,7 @@ func BenchmarkTxFromHex(b *testing.B) {
6262
// TestCreateTx will test the method CreateTx()
6363
func TestCreateTx(t *testing.T) {
6464

65-
// Example from: https://github.com/libsv/libsv
65+
// Example from: https://github.com/libsv/go-bt
6666

6767
// Use a new UTXO
6868
utxo := &Utxo{
@@ -89,7 +89,7 @@ func TestCreateTx(t *testing.T) {
8989
}
9090

9191
// Generate the TX
92-
var rawTx *transaction.Transaction
92+
var rawTx *bt.Tx
9393
rawTx, err = CreateTx(
9494
[]*Utxo{utxo},
9595
[]*PayToAddress{payTo},
@@ -106,7 +106,7 @@ func TestCreateTx(t *testing.T) {
106106

107107
func TestCreateEmptyTx(t *testing.T) {
108108
// Generate the TX
109-
var rawTx *transaction.Transaction
109+
var rawTx *bt.Tx
110110
rawTx, err := CreateTx(
111111
nil,
112112
nil,
@@ -332,7 +332,7 @@ func TestCreateTxErrors(t *testing.T) {
332332
// TestCreateTxUsingWif will test the method CreateTxUsingWif()
333333
func TestCreateTxUsingWif(t *testing.T) {
334334

335-
// Example from: https://github.com/libsv/libsv
335+
// Example from: https://github.com/libsv/go-bt
336336

337337
// Use a new UTXO
338338
utxo := &Utxo{
@@ -674,7 +674,7 @@ func TestCreateTxWithChange(t *testing.T) {
674674
}
675675

676676
// Generate the TX
677-
var rawTx *transaction.Transaction
677+
var rawTx *bt.Tx
678678
rawTx, err = CreateTxWithChange(
679679
[]*Utxo{utxo},
680680
[]*PayToAddress{payTo},
@@ -908,7 +908,7 @@ func TestCreateTxWithChangeErrors(t *testing.T) {
908908
}
909909

910910
// Run tests
911-
var rawTx *transaction.Transaction
911+
var rawTx *bt.Tx
912912
for _, test := range tests {
913913
privateKey, err := WifToPrivateKey(test.inputWif)
914914
if err != nil && !test.expectedError {
@@ -958,7 +958,7 @@ func ExampleCreateTxWithChange() {
958958
}
959959

960960
// Generate the TX
961-
var rawTx *transaction.Transaction
961+
var rawTx *bt.Tx
962962
rawTx, err = CreateTxWithChange(
963963
[]*Utxo{utxo},
964964
[]*PayToAddress{payTo},

0 commit comments

Comments
 (0)