Andrew Chow
cf06062859
Correctly check for default wallet
2020-04-23 13:59:48 -04:00
Andrew Chow
886e0d75f5
Implement CWallet::IsSpentKey for non-LegacySPKMans
2020-04-23 13:59:48 -04:00
Andrew Chow
3c19fdd2a2
Return error when no ScriptPubKeyMan is available for specified type
...
When a CWallet doesn't have a ScriptPubKeyMan for the requested type
in GetNewDestination, give a meaningful error. Also handle this in
Qt which did not do anything with errors.
2020-04-23 13:59:48 -04:00
Andrew Chow
388ba94231
Change wallet_encryption.py to use signmessage instead of dumpprivkey
2020-04-23 13:59:48 -04:00
Andrew Chow
1346e14831
Functional tests for descriptor wallets
2020-04-23 13:59:48 -04:00
Hugo Nguyen
f193ea889d
add importdescriptors RPC and tests for native descriptor wallets
...
Co-authored-by: Andrew Chow <achow101-github@achow101.com>
2020-04-23 13:59:48 -04:00
Andrew Chow
ce24a94494
Add IsLegacy to CWallet so that the GUI knows whether to show watchonly
2020-04-23 13:59:48 -04:00
Andrew Chow
1cb42b22b1
Generate new descriptors when encrypting
2020-04-23 13:59:48 -04:00
Andrew Chow
82ae02b165
Be able to create new wallets with DescriptorScriptPubKeyMans as backing
2020-04-23 13:59:48 -04:00
Andrew Chow
b713baa75a
Implement GetMetadata in DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
8b9603bd0b
Change GetMetadata to use unique_ptr<CKeyMetadata>
2020-04-23 13:59:48 -04:00
Andrew Chow
72a9540df9
Implement FillPSBT in DescriptorScriptPubKeyMan
...
FillPSBT will add our own scripts to the PSBT if those inputs are ours.
If an input also lists pubkeys that we happen to know the private keys
for, we will sign those inputs too.
2020-04-23 13:59:48 -04:00
Andrew Chow
84b4978c02
Implement SignMessage for descriptor wallets
2020-04-23 13:59:48 -04:00
Andrew Chow
bde7c9fa38
Implement SignTransaction in DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
d50c8ddd41
Implement GetSolvingProvider for DescriptorScriptPubKeyMan
...
Internally, a GetSigningProvider function is introduced which allows for
some private keys to be optionally included. This can be called with a
script as the argument (i.e. a scriptPubKey from our wallet when we are
signing) or with a pubkey. In order to know what index to expand the
private keys for that pubkey, we need to also cache all of the pubkeys
involved when we expand the descriptor. So SetCache and TopUp are
updated to do this too.
2020-04-23 13:59:48 -04:00
Andrew Chow
f1ca5feb4a
Implement GetKeypoolOldestTime and only display it if greater than 0
2020-04-23 13:59:48 -04:00
Andrew Chow
586b57a9a6
Implement ReturnDestination in DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
f866957979
Implement GetReservedDestination in DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
a775f7c7fd
Implement Unlock and Encrypt in DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
bfdd073486
Implement GetNewDestination for DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
58c7651821
Implement TopUp in DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
e014886a34
Implement SetupGeneration for DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
46dfb99768
Implement writing descriptorkeys, descriptorckeys, and descriptors to wallet file
2020-04-23 13:59:48 -04:00
Andrew Chow
4cb9b69be0
Implement several simple functions in DescriptorScriptPubKeyMan
...
Implements a bunch of one liners: UpgradeKeyMetadata, IsFirstRun, HavePrivateKeys,
KeypoolCountExternalKeys, GetKeypoolSize, GetTimeFirstKey, CanGetAddresses,
RewriteDB
2020-04-23 13:59:48 -04:00
Andrew Chow
d1ec3e4f19
Add IsSingleType to Descriptors
...
IsSingleType will return whether the descriptor will give one or multiple scriptPubKeys
2020-04-23 13:59:48 -04:00
Andrew Chow
953feb3d27
Implement loading of keys for DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
2363e9fcaa
Load the descriptor cache from the wallet file
2020-04-23 13:59:48 -04:00
Andrew Chow
46c46aebb7
Implement GetID for DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
ec2f9e1178
Implement IsHDEnabled in DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
741122d4c1
Implement MarkUnusedAddresses in DescriptorScriptPubKeyMan
2020-04-23 13:59:48 -04:00
Andrew Chow
2db7ca765c
Implement IsMine for DescriptorScriptPubKeyMan
...
Adds a set of scriptPubKeys that DescriptorScriptPubKeyMan tracks.
If the given script is in that set, it is considered ISMINE_SPENDABLE
2020-04-23 13:59:48 -04:00
Andrew Chow
db7177af8c
Add LoadDescriptorScriptPubKeyMan and SetActiveScriptPubKeyMan to CWallet
2020-04-23 13:59:42 -04:00
Andrew Chow
78f8a92910
Implement SetType in DescriptorScriptPubKeyMan
2020-04-23 13:25:50 -04:00
Andrew Chow
834de0300c
Store WalletDescriptor in DescriptorScriptPubKeyMan
2020-04-23 13:25:50 -04:00
Andrew Chow
d8132669e1
Add a lock cs_desc_man for DescriptorScriptPubKeyMan
2020-04-23 13:25:50 -04:00
Andrew Chow
3194a7f88a
Introduce WalletDescriptor class
...
WalletDescriptor is a Descriptor with other wallet metadata
2020-04-23 13:25:50 -04:00
Andrew Chow
6b13cd3fa8
Create LegacyScriptPubKeyMan when not a descriptor wallet
2020-04-23 13:25:50 -04:00
Andrew Chow
aeac157c9d
Return nullptr from GetLegacyScriptPubKeyMan if descriptor wallet
2020-04-23 13:25:50 -04:00
Andrew Chow
96accc73f0
Add WALLET_FLAG_DESCRIPTORS
2020-04-23 13:25:50 -04:00
Andrew Chow
6b8119af53
Introduce DescriptorScriptPubKeyMan as a dummy class
2020-04-23 13:25:50 -04:00
Andrew Chow
06620302c7
Introduce SetType function to tell ScriptPubKeyMans the type and internal-ness of it
2020-04-23 13:25:50 -04:00
Andrew Chow
eb37275a6f
Fix naming of macOS SDK and clarify version
2020-04-23 13:22:16 -04:00
John Newbery
e9ea95a30d
[net processing] Move all const declarations to top of net_processing.cpp
2020-04-23 12:54:06 -04:00
John Newbery
507b36dd1b
[validation] Move all const declarations to top of validation.h
2020-04-23 12:54:06 -04:00
John Newbery
0109622b08
[validation] Move validation-only consts to validation.cpp
2020-04-23 12:54:06 -04:00
John Newbery
b8580cacc7
[net processing] Move net processing consts to net_processing.cpp
2020-04-23 12:54:03 -04:00
MarcoFalke
64139803f1
Merge #18690 : test: Check object hashes in wait_for_getdata
...
9f5608c289
test: check for matching object hashes in wait_for_getdata (Danny Lee)
Pull request description:
Previously, `wait_for_getdata` only looked for the presence of a recent `"getdata"` message. Additionally checking the object hashes inside the message should make tests involving `wait_for_getdata` more robust.
`p2p_sendheaders.py` already overrides `wait_for_getdata` do this check; we can use the same approach consistently across all tests that call `wait_for_getdata`.
This PR is progress towards #18614 , but closing that issue would also involve some additional changes to `wait_for_getheaders`.
ACKs for top commit:
theStack:
ACK 9f5608c289
🍻
Tree-SHA512: 8e7f95881c19631db014d4bb2399fea0d14686a32542f6ca3b60809744b0d684eac4e4c107c87143991f3cd0c2d4ab09d0c17486239768a9b40bee25f2e4d54a
2020-04-23 06:37:53 -04:00
Samuel Dobson
e890c15e2c
Merge #18671 : wallet: Add BlockUntilSyncedToCurrentChain to dumpwallet
...
fa60afc4fb
wallet: Add BlockUntilSyncedToCurrentChain to dumpwallet (MarcoFalke)
Pull request description:
dumpwallet includes the block hash in the output, so this method depends on the chainstate. According to the developer notes e84a5f0004/doc/developer-notes.md (L1095)
it must include a `BlockUntilSyncedToCurrentChain`.
This is a minor fix and does not need backport, I think.
It fixes test failures such as https://travis-ci.org/github/bitcoin/bitcoin/jobs/675487097#L2657 , which can only happen in master because the test was not backported.
ACKs for top commit:
promag:
Code review ACK fa60afc4fb
.
ryanofsky:
Code review ACK fa60afc4fb
meshcollider:
utACK fa60afc4fb
Tree-SHA512: 8df70b06b226b2cdf880dec9264adb72d66fd81b09b404fd1665a79e5f5236d26122eebf15df00fe71ee292b5c91b2dc23a0a42b2aa50a8d690604b23832723f
2020-04-23 14:12:35 +12:00
Samuel Dobson
4f802e59a0
Merge #17509 : gui: save and load PSBT
...
764bfe4cba
[psbt] add file size limit (Sjors Provoost)
1cd8dc2556
[gui] load PSBT (Sjors Provoost)
f6895301f7
[gui] save PSBT to file (Sjors Provoost)
1d05a9d80b
Move DEFAULT_MAX_RAW_TX_FEE_RATE to node/transaction.h (Sjors Provoost)
86e22d23bb
[util] GetFileSize (Sjors Provoost)
6ab3aad9a5
[gui] send dialog: split on_sendButton_clicked (Sjors Provoost)
Pull request description:
This adds:
* a dialog after Create Unsigned, which lets you save a PSBT file in binary format, e.g. to an SD card
* a "Load PSBT" menu entry lets you pick a PSBT file. We broadcast the transaction if complete
## Save flow
<img width="482" alt="Schermafbeelding 2020-01-04 om 20 39 34" src="https://user-images.githubusercontent.com/10217/71765684-ba60d580-2f32-11ea-8dea-0c4398eb6e15.png ">
<img width="287" alt="Schermafbeelding 2020-01-04 om 20 40 35" src="https://user-images.githubusercontent.com/10217/71765677-a0bf8e00-2f32-11ea-8172-12dfd34a89f3.png ">
<img width="594" alt="Schermafbeelding 2020-01-04 om 20 41 12" src="https://user-images.githubusercontent.com/10217/71765681-aa48f600-2f32-11ea-8e2c-c4f6bf9f5309.png ">
<img width="632" alt="Schermafbeelding 2020-01-04 om 20 41 28" src="https://user-images.githubusercontent.com/10217/71765691-d19fc300-2f32-11ea-97ff-70f5dd59987a.png ">
By default the file name contains the destination address(es) and amount(s).
We only use the binary format for files, in order to avoid compatibility hell. If we do want to add base64 file format support, we should use a different extension for that (`.psbt64`?).
## Load flow
Select a file:
<img width="649" alt="Schermafbeelding 2020-01-04 om 21 08 57" src="https://user-images.githubusercontent.com/10217/71766089-2ba28780-2f37-11ea-875d-074794b5707d.png ">
Offer to send if complete:
<img width="308" alt="Schermafbeelding 2020-01-04 om 21 09 06" src="https://user-images.githubusercontent.com/10217/71766088-2a715a80-2f37-11ea-807d-394c8b840c59.png ">
Tell user if signatures are missing, offer to copy to clipboard:
<img width="308" alt="Schermafbeelding 2020-01-04 om 21 15 57" src="https://user-images.githubusercontent.com/10217/71766115-702e2300-2f37-11ea-9f62-a6ede499c0fa.png ">
Incomplete for another reason:
<img width="309" alt="Schermafbeelding 2020-01-04 om 21 07 51" src="https://user-images.githubusercontent.com/10217/71766090-2c3b1e00-2f37-11ea-8a22-6188377b67a1.png ">
ACKs for top commit:
instagibbs:
re-ACK 764bfe4cba
achow101:
ACK 764bfe4cba
jb55:
Tested ACK 764bfe4cba
jonatack:
ACK 764bfe4c
promag:
Code review ACK 764bfe4cba
.
Tree-SHA512: d284ed6895f3a271fb8ff879aac388ad217ddc13f72074725608e1c3d6d90650f6dc9e9e254479544dd71fc111516b02c8ff92158153208dc40fb2726b37d063
2020-04-23 13:16:23 +12:00
fanquake
3e38023af7
scripts: add PE .reloc section check to security-check.py
2020-04-23 08:40:24 +08:00