mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 01:43:16 +01:00
Merge pull request #9059 from guggero/bitcoind-28
CI: run integration tests against bitcoind v28
This commit is contained in:
commit
fb5e7f4b23
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@ -21,7 +21,7 @@ defaults:
|
||||
shell: bash
|
||||
|
||||
env:
|
||||
BITCOIN_VERSION: "27"
|
||||
BITCOIN_VERSION: "28"
|
||||
|
||||
TRANCHES: 8
|
||||
|
||||
|
@ -30,6 +30,10 @@ types](https://github.com/lightningnetwork/lnd/pull/8960).
|
||||
added [to turn on custom channel
|
||||
functionality](https://github.com/lightningnetwork/lnd/pull/8960).
|
||||
|
||||
* Compatibility with [`bitcoind
|
||||
v28.0`](https://github.com/lightningnetwork/lnd/pull/9059) was ensured by
|
||||
updating the version the CI pipeline is running against.
|
||||
|
||||
## RPC Additions
|
||||
|
||||
* Some new experimental [RPCs for managing SCID
|
||||
|
14
go.mod
14
go.mod
@ -10,11 +10,11 @@ require (
|
||||
github.com/btcsuite/btcd/btcutil/psbt v1.1.8
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f
|
||||
github.com/btcsuite/btcwallet v0.16.10-0.20240809133323-7d3434c65ae2
|
||||
github.com/btcsuite/btcwallet/wallet/txauthor v1.3.4
|
||||
github.com/btcsuite/btcwallet/wallet/txrules v1.2.1
|
||||
github.com/btcsuite/btcwallet/walletdb v1.4.2
|
||||
github.com/btcsuite/btcwallet/wtxmgr v1.5.3
|
||||
github.com/btcsuite/btcwallet v0.16.10-0.20240912233857-ffb143c77cc5
|
||||
github.com/btcsuite/btcwallet/wallet/txauthor v1.3.5
|
||||
github.com/btcsuite/btcwallet/wallet/txrules v1.2.2
|
||||
github.com/btcsuite/btcwallet/walletdb v1.4.4
|
||||
github.com/btcsuite/btcwallet/wtxmgr v1.5.4
|
||||
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f
|
||||
github.com/davecgh/go-spew v1.1.1
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0
|
||||
@ -73,7 +73,7 @@ require (
|
||||
github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect
|
||||
github.com/aead/siphash v1.0.1 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/btcsuite/btcwallet/wallet/txsizes v1.2.4 // indirect
|
||||
github.com/btcsuite/btcwallet/wallet/txsizes v1.2.5 // indirect
|
||||
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd // indirect
|
||||
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 // indirect
|
||||
github.com/btcsuite/winsvc v1.0.0 // indirect
|
||||
@ -157,7 +157,7 @@ require (
|
||||
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect
|
||||
gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec // indirect
|
||||
go.etcd.io/bbolt v1.3.7 // indirect
|
||||
go.etcd.io/bbolt v1.3.11 // indirect
|
||||
go.etcd.io/etcd/api/v3 v3.5.7 // indirect
|
||||
go.etcd.io/etcd/client/v2 v2.305.7 // indirect
|
||||
go.etcd.io/etcd/pkg/v3 v3.5.7 // indirect
|
||||
|
32
go.sum
32
go.sum
@ -92,18 +92,18 @@ github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtyd
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo=
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
|
||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
|
||||
github.com/btcsuite/btcwallet v0.16.10-0.20240809133323-7d3434c65ae2 h1:qa4Avm7p97JroZZyMJADbEb9u853pjleJYSeitENvLc=
|
||||
github.com/btcsuite/btcwallet v0.16.10-0.20240809133323-7d3434c65ae2/go.mod h1:X2xDre+j1QphTRo54y2TikUzeSvreL1t1aMXrD8Kc5A=
|
||||
github.com/btcsuite/btcwallet/wallet/txauthor v1.3.4 h1:poyHFf7+5+RdxNp5r2T6IBRD7RyraUsYARYbp/7t4D8=
|
||||
github.com/btcsuite/btcwallet/wallet/txauthor v1.3.4/go.mod h1:GETGDQuyq+VFfH1S/+/7slLM/9aNa4l7P4ejX6dJfb0=
|
||||
github.com/btcsuite/btcwallet/wallet/txrules v1.2.1 h1:UZo7YRzdHbwhK7Rhv3PO9bXgTxiOH45edK5qdsdiatk=
|
||||
github.com/btcsuite/btcwallet/wallet/txrules v1.2.1/go.mod h1:MVSqRkju/IGxImXYPfBkG65FgEZYA4fXchheILMVl8g=
|
||||
github.com/btcsuite/btcwallet/wallet/txsizes v1.2.4 h1:nmcKAVTv/cmYrs0A4hbiC6Qw+WTLYy/14SmTt3mLnCo=
|
||||
github.com/btcsuite/btcwallet/wallet/txsizes v1.2.4/go.mod h1:YqJR8WAAHiKIPesZTr9Cx9Az4fRhRLcJ6GcxzRUZCAc=
|
||||
github.com/btcsuite/btcwallet/walletdb v1.4.2 h1:zwZZ+zaHo4mK+FAN6KeK85S3oOm+92x2avsHvFAhVBE=
|
||||
github.com/btcsuite/btcwallet/walletdb v1.4.2/go.mod h1:7ZQ+BvOEre90YT7eSq8bLoxTsgXidUzA/mqbRS114CQ=
|
||||
github.com/btcsuite/btcwallet/wtxmgr v1.5.3 h1:QrWCio9Leh3DwkWfp+A1SURj8pYn3JuTLv3waP5uEro=
|
||||
github.com/btcsuite/btcwallet/wtxmgr v1.5.3/go.mod h1:M4nQpxGTXiDlSOODKXboXX7NFthmiBNjzAKKNS7Fhjg=
|
||||
github.com/btcsuite/btcwallet v0.16.10-0.20240912233857-ffb143c77cc5 h1:zYy233eUBvkF3lq2MUkybEhxhDsrRDSgiToIKN57mtk=
|
||||
github.com/btcsuite/btcwallet v0.16.10-0.20240912233857-ffb143c77cc5/go.mod h1:1HJXYbjJzgumlnxOC2+ViR1U+gnHWoOn7WeK5OfY1eU=
|
||||
github.com/btcsuite/btcwallet/wallet/txauthor v1.3.5 h1:Rr0njWI3r341nhSPesKQ2JF+ugDSzdPoeckS75SeDZk=
|
||||
github.com/btcsuite/btcwallet/wallet/txauthor v1.3.5/go.mod h1:+tXJ3Ym0nlQc/iHSwW1qzjmPs3ev+UVWMbGgfV1OZqU=
|
||||
github.com/btcsuite/btcwallet/wallet/txrules v1.2.2 h1:YEO+Lx1ZJJAtdRrjuhXjWrYsmAk26wLTlNzxt2q0lhk=
|
||||
github.com/btcsuite/btcwallet/wallet/txrules v1.2.2/go.mod h1:4v+grppsDpVn91SJv+mZT7B8hEV4nSmpREM4I8Uohws=
|
||||
github.com/btcsuite/btcwallet/wallet/txsizes v1.2.5 h1:93o5Xz9dYepBP4RMFUc9RGIFXwqP2volSWRkYJFrNtI=
|
||||
github.com/btcsuite/btcwallet/wallet/txsizes v1.2.5/go.mod h1:lQ+e9HxZ85QP7r3kdxItkiMSloSLg1PEGis5o5CXUQw=
|
||||
github.com/btcsuite/btcwallet/walletdb v1.4.4 h1:BDel6iT/ltYSIYKs0YbjwnEDi7xR3yzABIsQxN2F1L8=
|
||||
github.com/btcsuite/btcwallet/walletdb v1.4.4/go.mod h1:jk/hvpLFINF0C1kfTn0bfx2GbnFT+Nvnj6eblZALfjs=
|
||||
github.com/btcsuite/btcwallet/wtxmgr v1.5.4 h1:hJjHy1h/dJwSfD9uDsCwcH21D1iOrus6OrI5gR9E/O0=
|
||||
github.com/btcsuite/btcwallet/wtxmgr v1.5.4/go.mod h1:lAv0b1Vj9Ig5U8QFm0yiJ9WqPl8yGO/6l7JxdHY1PKE=
|
||||
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd h1:R/opQEbFEy9JGkIguV40SvRY1uliPX8ifOvi6ICsFCw=
|
||||
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
|
||||
github.com/btcsuite/golangcrypto v0.0.0-20150304025918-53f62d9b43e8/go.mod h1:tYvUd8KLhm/oXvUeSEs2VlLghFjQt9+ZaF9ghH0JNjc=
|
||||
@ -274,8 +274,8 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
||||
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
|
||||
@ -623,8 +623,8 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1
|
||||
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
|
||||
gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec h1:FpfFs4EhNehiVfzQttTuxanPIT43FtkkCFypIod8LHo=
|
||||
gitlab.com/yawning/bsaes.git v0.0.0-20190805113838-0a714cd429ec/go.mod h1:BZ1RAoRPbCxum9Grlv5aeksu2H8BiKehBYooU2LFiOQ=
|
||||
go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ=
|
||||
go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw=
|
||||
go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0=
|
||||
go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I=
|
||||
go.etcd.io/etcd/api/v3 v3.5.7 h1:sbcmosSVesNrWOJ58ZQFitHMdncusIifYcrBfwrlJSY=
|
||||
go.etcd.io/etcd/api/v3 v3.5.7/go.mod h1:9qew1gCdDDLu+VwmeG+iFpL+QlpHTo7iubavdVDgCAA=
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.7 h1:y3kf5Gbp4e4q7egZdn5T7W9TSHUvkClN6u+Rq9mEOmg=
|
||||
|
@ -13,7 +13,6 @@ func NewBackend(miner string, netParams *chaincfg.Params) (
|
||||
*BitcoindBackendConfig, func() error, error) {
|
||||
|
||||
extraArgs := []string{
|
||||
"-debug",
|
||||
"-regtest",
|
||||
"-txindex",
|
||||
"-disablewallet",
|
||||
|
@ -115,6 +115,7 @@ func newBackend(miner string, netParams *chaincfg.Params, extraArgs []string,
|
||||
zmqTxAddr := fmt.Sprintf("tcp://127.0.0.1:%d", port.NextAvailablePort())
|
||||
rpcPort := port.NextAvailablePort()
|
||||
p2pPort := port.NextAvailablePort()
|
||||
torBindPort := port.NextAvailablePort()
|
||||
|
||||
cmdArgs := []string{
|
||||
"-datadir=" + tempBitcoindDir,
|
||||
@ -124,8 +125,11 @@ func newBackend(miner string, netParams *chaincfg.Params, extraArgs []string,
|
||||
"220110063096c221be9933c82d38e1",
|
||||
fmt.Sprintf("-rpcport=%d", rpcPort),
|
||||
fmt.Sprintf("-port=%d", p2pPort),
|
||||
fmt.Sprintf("-bind=127.0.0.1:%d=onion", torBindPort),
|
||||
"-zmqpubrawblock=" + zmqBlockAddr,
|
||||
"-zmqpubrawtx=" + zmqTxAddr,
|
||||
"-debug",
|
||||
"-debugexclude=libevent",
|
||||
"-debuglogfile=" + logFile,
|
||||
}
|
||||
cmdArgs = append(cmdArgs, extraArgs...)
|
||||
|
@ -13,7 +13,6 @@ func NewBackend(miner string, netParams *chaincfg.Params) (
|
||||
*BitcoindBackendConfig, func() error, error) {
|
||||
|
||||
extraArgs := []string{
|
||||
"-debug",
|
||||
"-regtest",
|
||||
"-disablewallet",
|
||||
}
|
||||
|
@ -13,7 +13,6 @@ func NewBackend(miner string, netParams *chaincfg.Params) (
|
||||
*BitcoindBackendConfig, func() error, error) {
|
||||
|
||||
extraArgs := []string{
|
||||
"-debug",
|
||||
"-regtest",
|
||||
"-txindex",
|
||||
"-disablewallet",
|
||||
|
@ -82,6 +82,7 @@ func NewBitcoindBackend(t *testing.T, netParams *chaincfg.Params,
|
||||
tempBitcoindDir := t.TempDir()
|
||||
|
||||
rpcPort := port.NextAvailablePort()
|
||||
torBindPort := port.NextAvailablePort()
|
||||
zmqBlockPort := port.NextAvailablePort()
|
||||
zmqTxPort := port.NextAvailablePort()
|
||||
zmqBlockHost := fmt.Sprintf("tcp://127.0.0.1:%d", zmqBlockPort)
|
||||
@ -94,6 +95,7 @@ func NewBitcoindBackend(t *testing.T, netParams *chaincfg.Params,
|
||||
"-rpcauth=weks:469e9bb14ab2360f8e226efed5ca6fd$507c670e800a95" +
|
||||
"284294edb5773b05544b220110063096c221be9933c82d38e1",
|
||||
fmt.Sprintf("-rpcport=%d", rpcPort),
|
||||
fmt.Sprintf("-bind=127.0.0.1:%d=onion", torBindPort),
|
||||
"-disablewallet",
|
||||
"-zmqpubrawblock=" + zmqBlockHost,
|
||||
"-zmqpubrawtx=" + zmqTxHost,
|
||||
|
@ -1758,97 +1758,88 @@ func testPublishTransaction(r *rpctest.Harness,
|
||||
tx3, tx3Spend *wire.MsgTx
|
||||
)
|
||||
t.Run("rbf_tests", func(t *testing.T) {
|
||||
for _, rbf := range []bool{false, true} {
|
||||
// Now we'll try to double spend an output with a
|
||||
// different transaction. Create a new tx and publish
|
||||
// it. This is the output we'll try to double spend.
|
||||
tx3 = newTx(t, r, keyDesc.PubKey, alice, false)
|
||||
err := alice.PublishTransaction(tx3, labels.External)
|
||||
require.NoError(t, err)
|
||||
// Starting with bitcoind v28.0 and later, mempool full RBF is
|
||||
// turned on, so there's no way to _not_ signal RBF anymore.
|
||||
const rbf = true
|
||||
|
||||
// Mine the transaction.
|
||||
err = mineAndAssert(r, tx3)
|
||||
require.NoError(t, err)
|
||||
// Now we'll try to double spend an output with a
|
||||
// different transaction. Create a new tx and publish
|
||||
// it. This is the output we'll try to double spend.
|
||||
tx3 = newTx(t, r, keyDesc.PubKey, alice, false)
|
||||
err := alice.PublishTransaction(tx3, labels.External)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Now we create a transaction that spends the output
|
||||
// from the tx just mined.
|
||||
tx4, err := txFromOutput(
|
||||
tx3, alice.Cfg.Signer, keyDesc.PubKey,
|
||||
keyDesc.PubKey, txFee, rbf,
|
||||
)
|
||||
require.NoError(t, err)
|
||||
// Mine the transaction.
|
||||
err = mineAndAssert(r, tx3)
|
||||
require.NoError(t, err)
|
||||
|
||||
// This should be accepted into the mempool.
|
||||
err = alice.PublishTransaction(tx4, labels.External)
|
||||
require.NoError(t, err)
|
||||
// Now we create a transaction that spends the output
|
||||
// from the tx just mined.
|
||||
tx4, err := txFromOutput(
|
||||
tx3, alice.Cfg.Signer, keyDesc.PubKey,
|
||||
keyDesc.PubKey, txFee, rbf,
|
||||
)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Keep track of the last successfully published tx to
|
||||
// spend tx3.
|
||||
tx3Spend = tx4
|
||||
// This should be accepted into the mempool.
|
||||
err = alice.PublishTransaction(tx4, labels.External)
|
||||
require.NoError(t, err)
|
||||
|
||||
txid4 := tx4.TxHash()
|
||||
err = waitForMempoolTx(r, &txid4)
|
||||
require.NoError(t, err, "tx not relayed to miner")
|
||||
// Keep track of the last successfully published tx to
|
||||
// spend tx3.
|
||||
tx3Spend = tx4
|
||||
|
||||
// Create a new key we'll pay to, to ensure we create a
|
||||
// unique transaction.
|
||||
keyDesc2, err := alice.DeriveNextKey(
|
||||
keychain.KeyFamilyMultiSig,
|
||||
)
|
||||
require.NoError(t, err, "unable to obtain public key")
|
||||
txid4 := tx4.TxHash()
|
||||
err = waitForMempoolTx(r, &txid4)
|
||||
require.NoError(t, err, "tx not relayed to miner")
|
||||
|
||||
// Create a new transaction that spends the output from
|
||||
// tx3, and that pays to a different address.
|
||||
tx5, err := txFromOutput(
|
||||
tx3, alice.Cfg.Signer, keyDesc.PubKey,
|
||||
keyDesc2.PubKey, txFee, rbf,
|
||||
)
|
||||
require.NoError(t, err)
|
||||
// Create a new key we'll pay to, to ensure we create a
|
||||
// unique transaction.
|
||||
keyDesc2, err := alice.DeriveNextKey(
|
||||
keychain.KeyFamilyMultiSig,
|
||||
)
|
||||
require.NoError(t, err, "unable to obtain public key")
|
||||
|
||||
err = alice.PublishTransaction(tx5, labels.External)
|
||||
// Create a new transaction that spends the output from
|
||||
// tx3, and that pays to a different address.
|
||||
tx5, err := txFromOutput(
|
||||
tx3, alice.Cfg.Signer, keyDesc.PubKey,
|
||||
keyDesc2.PubKey, txFee, rbf,
|
||||
)
|
||||
require.NoError(t, err)
|
||||
|
||||
// If RBF is not enabled, we expect this to be rejected
|
||||
// because it is a double spend.
|
||||
expectedErr := lnwallet.ErrDoubleSpend
|
||||
err = alice.PublishTransaction(tx5, labels.External)
|
||||
|
||||
// If RBF is enabled, we expect it to be rejected
|
||||
// because it doesn't pay enough fees.
|
||||
if rbf {
|
||||
expectedErr = chain.ErrInsufficientFee
|
||||
}
|
||||
// We expect it to be rejected/ because it doesn't pay enough
|
||||
// fees.
|
||||
expectedErr := chain.ErrInsufficientFee
|
||||
|
||||
// Assert the expected error.
|
||||
require.ErrorIsf(t, err, expectedErr, "has rbf=%v", rbf)
|
||||
// Assert the expected error.
|
||||
require.ErrorIsf(t, err, expectedErr, "has rbf=%v", rbf)
|
||||
|
||||
// Create another transaction that spends the same
|
||||
// output, but has a higher fee. We expect also this tx
|
||||
// to be rejected for non-RBF enabled transactions,
|
||||
// while it should succeed otherwise.
|
||||
pubKey3, err := alice.DeriveNextKey(
|
||||
keychain.KeyFamilyMultiSig,
|
||||
)
|
||||
require.NoError(t, err, "unable to obtain public key")
|
||||
// Create another transaction that spends the same
|
||||
// output, but has a higher fee. We expect also this tx
|
||||
// to be rejected for non-RBF enabled transactions,
|
||||
// while it should succeed otherwise.
|
||||
pubKey3, err := alice.DeriveNextKey(
|
||||
keychain.KeyFamilyMultiSig,
|
||||
)
|
||||
require.NoError(t, err, "unable to obtain public key")
|
||||
|
||||
tx6, err := txFromOutput(
|
||||
tx3, alice.Cfg.Signer, keyDesc.PubKey,
|
||||
pubKey3.PubKey, 2*txFee, rbf,
|
||||
)
|
||||
require.NoError(t, err)
|
||||
tx6, err := txFromOutput(
|
||||
tx3, alice.Cfg.Signer, keyDesc.PubKey,
|
||||
pubKey3.PubKey, 2*txFee, rbf,
|
||||
)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Expect rejection in non-RBF case.
|
||||
expErr := lnwallet.ErrDoubleSpend
|
||||
if rbf {
|
||||
// Expect success in rbf case.
|
||||
expErr = nil
|
||||
tx3Spend = tx6
|
||||
}
|
||||
err = alice.PublishTransaction(tx6, labels.External)
|
||||
require.ErrorIs(t, err, expErr)
|
||||
// Expect rejection in non-RBF case.
|
||||
tx3Spend = tx6
|
||||
err = alice.PublishTransaction(tx6, labels.External)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Mine the tx spending tx3.
|
||||
err = mineAndAssert(r, tx3Spend)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
// Mine the tx spending tx3.
|
||||
err = mineAndAssert(r, tx3Spend)
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("tx_double_spend", func(t *testing.T) {
|
||||
@ -3071,9 +3062,9 @@ func testSingleFunderExternalFundingTx(miner *rpctest.Harness,
|
||||
)
|
||||
}
|
||||
|
||||
// TestInterfaces tests all registered interfaces with a unified set of tests
|
||||
// which exercise each of the required methods found within the WalletController
|
||||
// interface.
|
||||
// TestLightningWallet tests all registered interfaces with a unified set of
|
||||
// tests which exercise each of the required methods found within the
|
||||
// WalletController interface.
|
||||
//
|
||||
// NOTE: In the future, when additional implementations of the WalletController
|
||||
// interface have been implemented, in order to ensure the new concrete
|
||||
|
@ -4,13 +4,20 @@ set -ev
|
||||
|
||||
BITCOIND_VERSION=$1
|
||||
|
||||
# Useful for testing RCs: e.g. TAG_SUFFIX=.0rc1, DIR_SUFFIX=.0rc1
|
||||
TAG_SUFFIX=
|
||||
DIR_SUFFIX=.0
|
||||
|
||||
# Useful for testing against an image pushed to a different Docker repo.
|
||||
REPO=lightninglabs/bitcoin-core
|
||||
|
||||
if [ -z "$BITCOIND_VERSION" ]; then
|
||||
echo "Must specify a version of bitcoind to install."
|
||||
echo "Usage: install_bitcoind.sh <version>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
docker pull lightninglabs/bitcoin-core:${BITCOIND_VERSION}
|
||||
CONTAINER_ID=$(docker create lightninglabs/bitcoin-core:${BITCOIND_VERSION})
|
||||
sudo docker cp $CONTAINER_ID:/opt/bitcoin-${BITCOIND_VERSION}.0/bin/bitcoind /usr/local/bin/bitcoind
|
||||
docker pull ${REPO}:${BITCOIND_VERSION}${TAG_SUFFIX}
|
||||
CONTAINER_ID=$(docker create ${REPO}:${BITCOIND_VERSION}${TAG_SUFFIX})
|
||||
sudo docker cp $CONTAINER_ID:/opt/bitcoin-${BITCOIND_VERSION}${DIR_SUFFIX}/bin/bitcoind /usr/local/bin/bitcoind
|
||||
docker rm $CONTAINER_ID
|
||||
|
Loading…
Reference in New Issue
Block a user