Merge pull request #4091 from wpaulino/wallet-scan-relevant-key-scopes
build: update btcwallet dependency to only scan relevant key scopes
This commit is contained in:
commit
2e0f7c4ac2
5
go.mod
5
go.mod
@ -9,13 +9,12 @@ require (
|
|||||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f
|
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f
|
||||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d
|
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d
|
||||||
github.com/btcsuite/btcutil/psbt v1.0.2-0.20200323233600-8bf941f57059
|
github.com/btcsuite/btcutil/psbt v1.0.2-0.20200323233600-8bf941f57059
|
||||||
github.com/btcsuite/btcwallet v0.11.1-0.20200323235326-015c045a3bb7
|
github.com/btcsuite/btcwallet v0.11.1-0.20200403222202-ada7ca077ebb
|
||||||
github.com/btcsuite/btcwallet/wallet/txauthor v1.0.0
|
github.com/btcsuite/btcwallet/wallet/txauthor v1.0.0
|
||||||
github.com/btcsuite/btcwallet/wallet/txrules v1.0.0
|
github.com/btcsuite/btcwallet/wallet/txrules v1.0.0
|
||||||
github.com/btcsuite/btcwallet/walletdb v1.2.0
|
github.com/btcsuite/btcwallet/walletdb v1.3.1
|
||||||
github.com/btcsuite/btcwallet/wtxmgr v1.0.0
|
github.com/btcsuite/btcwallet/wtxmgr v1.0.0
|
||||||
github.com/btcsuite/fastsha256 v0.0.0-20160815193821-637e65642941
|
github.com/btcsuite/fastsha256 v0.0.0-20160815193821-637e65642941
|
||||||
github.com/coreos/bbolt v1.3.3
|
|
||||||
github.com/davecgh/go-spew v1.1.1
|
github.com/davecgh/go-spew v1.1.1
|
||||||
github.com/go-errors/errors v1.0.1
|
github.com/go-errors/errors v1.0.1
|
||||||
github.com/golang/protobuf v1.3.1
|
github.com/golang/protobuf v1.3.1
|
||||||
|
7
go.sum
7
go.sum
@ -28,18 +28,19 @@ github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d h1:yJzD/yFppdVCf6
|
|||||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
|
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
|
||||||
github.com/btcsuite/btcutil/psbt v1.0.2-0.20200323233600-8bf941f57059 h1:RU+MRFz83kf5hgJrGryakeYv/Xj2wZ7pwu9Eb7tna30=
|
github.com/btcsuite/btcutil/psbt v1.0.2-0.20200323233600-8bf941f57059 h1:RU+MRFz83kf5hgJrGryakeYv/Xj2wZ7pwu9Eb7tna30=
|
||||||
github.com/btcsuite/btcutil/psbt v1.0.2-0.20200323233600-8bf941f57059/go.mod h1:LVveMu4VaNSkIRTZu2+ut0HDBRuYjqGocxDMNS1KuGQ=
|
github.com/btcsuite/btcutil/psbt v1.0.2-0.20200323233600-8bf941f57059/go.mod h1:LVveMu4VaNSkIRTZu2+ut0HDBRuYjqGocxDMNS1KuGQ=
|
||||||
github.com/btcsuite/btcwallet v0.11.1-0.20200323235326-015c045a3bb7 h1:ubYJYIi13atgwPCX7FZQZV2mytkaRHWPycDFdF28U0o=
|
github.com/btcsuite/btcwallet v0.11.1-0.20200403222202-ada7ca077ebb h1:kkq2SSCy+OrC7GVZLIqutoHVR2yW4SJQdX70jtmuLDI=
|
||||||
github.com/btcsuite/btcwallet v0.11.1-0.20200323235326-015c045a3bb7/go.mod h1:1O1uRHMPXHdwA4/od8nqYqrgclVKp+wtfXUAqHmeRvE=
|
github.com/btcsuite/btcwallet v0.11.1-0.20200403222202-ada7ca077ebb/go.mod h1:9fJNm1aXi4q9P5Nk23mmqppCy1Le3f2/JMWj9UXKkCc=
|
||||||
github.com/btcsuite/btcwallet/wallet/txauthor v1.0.0 h1:KGHMW5sd7yDdDMkCZ/JpP0KltolFsQcB973brBnfj4c=
|
github.com/btcsuite/btcwallet/wallet/txauthor v1.0.0 h1:KGHMW5sd7yDdDMkCZ/JpP0KltolFsQcB973brBnfj4c=
|
||||||
github.com/btcsuite/btcwallet/wallet/txauthor v1.0.0/go.mod h1:VufDts7bd/zs3GV13f/lXc/0lXrPnvxD/NvmpG/FEKU=
|
github.com/btcsuite/btcwallet/wallet/txauthor v1.0.0/go.mod h1:VufDts7bd/zs3GV13f/lXc/0lXrPnvxD/NvmpG/FEKU=
|
||||||
github.com/btcsuite/btcwallet/wallet/txrules v1.0.0 h1:2VsfS0sBedcM5KmDzRMT3+b6xobqWveZGvjb+jFez5w=
|
github.com/btcsuite/btcwallet/wallet/txrules v1.0.0 h1:2VsfS0sBedcM5KmDzRMT3+b6xobqWveZGvjb+jFez5w=
|
||||||
github.com/btcsuite/btcwallet/wallet/txrules v1.0.0/go.mod h1:UwQE78yCerZ313EXZwEiu3jNAtfXj2n2+c8RWiE/WNA=
|
github.com/btcsuite/btcwallet/wallet/txrules v1.0.0/go.mod h1:UwQE78yCerZ313EXZwEiu3jNAtfXj2n2+c8RWiE/WNA=
|
||||||
github.com/btcsuite/btcwallet/wallet/txsizes v1.0.0 h1:6DxkcoMnCPY4E9cUDPB5tbuuf40SmmMkSQkoE8vCT+s=
|
github.com/btcsuite/btcwallet/wallet/txsizes v1.0.0 h1:6DxkcoMnCPY4E9cUDPB5tbuuf40SmmMkSQkoE8vCT+s=
|
||||||
github.com/btcsuite/btcwallet/wallet/txsizes v1.0.0/go.mod h1:pauEU8UuMFiThe5PB3EO+gO5kx87Me5NvdQDsTuq6cs=
|
github.com/btcsuite/btcwallet/wallet/txsizes v1.0.0/go.mod h1:pauEU8UuMFiThe5PB3EO+gO5kx87Me5NvdQDsTuq6cs=
|
||||||
github.com/btcsuite/btcwallet/walletdb v1.0.0 h1:mheT7vCWK5EP6rZzhxsQ7ms9+yX4VE8bwiJctECBeNw=
|
|
||||||
github.com/btcsuite/btcwallet/walletdb v1.0.0/go.mod h1:bZTy9RyYZh9fLnSua+/CD48TJtYJSHjjYcSaszuxCCk=
|
github.com/btcsuite/btcwallet/walletdb v1.0.0/go.mod h1:bZTy9RyYZh9fLnSua+/CD48TJtYJSHjjYcSaszuxCCk=
|
||||||
github.com/btcsuite/btcwallet/walletdb v1.2.0 h1:E0+M4jHOToAvGWZ27ew5AaDAHDi6fUiXkjUJUnoEOD0=
|
github.com/btcsuite/btcwallet/walletdb v1.2.0 h1:E0+M4jHOToAvGWZ27ew5AaDAHDi6fUiXkjUJUnoEOD0=
|
||||||
github.com/btcsuite/btcwallet/walletdb v1.2.0/go.mod h1:9cwc1Yyg4uvd4ZdfdoMnALji+V9gfWSMfxEdLdR5Vwc=
|
github.com/btcsuite/btcwallet/walletdb v1.2.0/go.mod h1:9cwc1Yyg4uvd4ZdfdoMnALji+V9gfWSMfxEdLdR5Vwc=
|
||||||
|
github.com/btcsuite/btcwallet/walletdb v1.3.1 h1:lW1Ac3F1jJY4K11P+YQtRNcP5jFk27ASfrV7C6mvRU0=
|
||||||
|
github.com/btcsuite/btcwallet/walletdb v1.3.1/go.mod h1:9cwc1Yyg4uvd4ZdfdoMnALji+V9gfWSMfxEdLdR5Vwc=
|
||||||
github.com/btcsuite/btcwallet/wtxmgr v1.0.0 h1:aIHgViEmZmZfe0tQQqF1xyd2qBqFWxX5vZXkkbjtbeA=
|
github.com/btcsuite/btcwallet/wtxmgr v1.0.0 h1:aIHgViEmZmZfe0tQQqF1xyd2qBqFWxX5vZXkkbjtbeA=
|
||||||
github.com/btcsuite/btcwallet/wtxmgr v1.0.0/go.mod h1:vc4gBprll6BP0UJ+AIGDaySoc7MdAmZf8kelfNb8CFY=
|
github.com/btcsuite/btcwallet/wtxmgr v1.0.0/go.mod h1:vc4gBprll6BP0UJ+AIGDaySoc7MdAmZf8kelfNb8CFY=
|
||||||
github.com/btcsuite/fastsha256 v0.0.0-20160815193821-637e65642941 h1:kij1x2aL7VE6gtx8KMIt8PGPgI5GV9LgtHFG5KaEMPY=
|
github.com/btcsuite/fastsha256 v0.0.0-20160815193821-637e65642941 h1:kij1x2aL7VE6gtx8KMIt8PGPgI5GV9LgtHFG5KaEMPY=
|
||||||
|
@ -799,7 +799,7 @@ func testOnchainFundRecovery(net *lntest.NetworkHarness, t *harnessTest) {
|
|||||||
// method takes the expected value of Carol's balance when using the
|
// method takes the expected value of Carol's balance when using the
|
||||||
// given recovery window. Additionally, the caller can specify an action
|
// given recovery window. Additionally, the caller can specify an action
|
||||||
// to perform on the restored node before the node is shutdown.
|
// to perform on the restored node before the node is shutdown.
|
||||||
restoreCheckBalance := func(expAmount int64, expectedNumUTXOs int,
|
restoreCheckBalance := func(expAmount int64, expectedNumUTXOs uint32,
|
||||||
recoveryWindow int32, fn func(*lntest.HarnessNode)) {
|
recoveryWindow int32, fn func(*lntest.HarnessNode)) {
|
||||||
|
|
||||||
// Restore Carol, passing in the password, mnemonic, and
|
// Restore Carol, passing in the password, mnemonic, and
|
||||||
@ -825,13 +825,7 @@ func testOnchainFundRecovery(net *lntest.NetworkHarness, t *harnessTest) {
|
|||||||
t.Fatalf("unable to query wallet balance: %v",
|
t.Fatalf("unable to query wallet balance: %v",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify that Carol's balance matches our expected
|
|
||||||
// amount.
|
|
||||||
currBalance = resp.ConfirmedBalance
|
currBalance = resp.ConfirmedBalance
|
||||||
if expAmount != currBalance {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
utxoReq := &lnrpc.ListUnspentRequest{
|
utxoReq := &lnrpc.ListUnspentRequest{
|
||||||
MaxConfs: math.MaxInt32,
|
MaxConfs: math.MaxInt32,
|
||||||
@ -841,8 +835,13 @@ func testOnchainFundRecovery(net *lntest.NetworkHarness, t *harnessTest) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unable to query utxos: %v", err)
|
t.Fatalf("unable to query utxos: %v", err)
|
||||||
}
|
}
|
||||||
|
currNumUTXOs = uint32(len(utxoResp.Utxos))
|
||||||
|
|
||||||
currNumUTXOs := len(utxoResp.Utxos)
|
// Verify that Carol's balance and number of UTXOs
|
||||||
|
// matches what's expected.
|
||||||
|
if expAmount != currBalance {
|
||||||
|
return false
|
||||||
|
}
|
||||||
if currNumUTXOs != expectedNumUTXOs {
|
if currNumUTXOs != expectedNumUTXOs {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -958,7 +957,50 @@ func testOnchainFundRecovery(net *lntest.NetworkHarness, t *harnessTest) {
|
|||||||
|
|
||||||
// Ensure that using a recovery window of 20 succeeds with all UTXOs
|
// Ensure that using a recovery window of 20 succeeds with all UTXOs
|
||||||
// found and the final balance reflected.
|
// found and the final balance reflected.
|
||||||
restoreCheckBalance(6*btcutil.SatoshiPerBitcoin, 6, 20, nil)
|
|
||||||
|
// After these checks are done, we'll want to make sure we can also
|
||||||
|
// recover change address outputs. This is mainly motivated by a now
|
||||||
|
// fixed bug in the wallet in which change addresses could at times be
|
||||||
|
// created outside of the default key scopes. Recovery only used to be
|
||||||
|
// performed on the default key scopes, so ideally this test case
|
||||||
|
// would've caught the bug earlier. Carol has received 6 BTC so far from
|
||||||
|
// the miner, we'll send 5 back to ensure all of her UTXOs get spent to
|
||||||
|
// avoid fee discrepancies and a change output is formed.
|
||||||
|
const minerAmt = 5 * btcutil.SatoshiPerBitcoin
|
||||||
|
const finalBalance = 6 * btcutil.SatoshiPerBitcoin
|
||||||
|
promptChangeAddr := func(node *lntest.HarnessNode) {
|
||||||
|
minerAddr, err := net.Miner.NewAddress()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unable to create new miner address: %v", err)
|
||||||
|
}
|
||||||
|
ctxt, _ := context.WithTimeout(ctxb, defaultTimeout)
|
||||||
|
resp, err := node.SendCoins(ctxt, &lnrpc.SendCoinsRequest{
|
||||||
|
Addr: minerAddr.String(),
|
||||||
|
Amount: minerAmt,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unable to send coins to miner: %v", err)
|
||||||
|
}
|
||||||
|
txid, err := waitForTxInMempool(
|
||||||
|
net.Miner.Node, minerMempoolTimeout,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("transaction not found in mempool: %v", err)
|
||||||
|
}
|
||||||
|
if resp.Txid != txid.String() {
|
||||||
|
t.Fatalf("txid mismatch: %v vs %v", resp.Txid,
|
||||||
|
txid.String())
|
||||||
|
}
|
||||||
|
block := mineBlocks(t, net, 1, 1)[0]
|
||||||
|
assertTxInBlock(t, block, txid)
|
||||||
|
}
|
||||||
|
restoreCheckBalance(finalBalance, 6, 20, promptChangeAddr)
|
||||||
|
|
||||||
|
// We should expect a static fee of 27750 satoshis for spending 6 inputs
|
||||||
|
// (3 P2WPKH, 3 NP2WPKH) to two P2WPKH outputs. Carol should therefore
|
||||||
|
// only have one UTXO present (the change output) of 6 - 5 - fee BTC.
|
||||||
|
const fee = 27750
|
||||||
|
restoreCheckBalance(finalBalance-minerAmt-fee, 1, 21, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// commitType is a simple enum used to run though the basic funding flow with
|
// commitType is a simple enum used to run though the basic funding flow with
|
||||||
|
Loading…
Reference in New Issue
Block a user