New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add option to create an encrypted wallet #15006
Conversation
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
Concept ACK |
73efe2b
to
1733089
Compare
1733089
to
3205e6e
Compare
Concept ACK |
self.log.info("Test disableprivatekeys creation.") | ||
self.nodes[0].createwallet('w1', True) | ||
w1 = node.get_wallet_rpc('w1') | ||
assert_raises_rpc_error(-4,"Error: Private keys are disabled for this wallet", w1.getnewaddress) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing whitespace after ,
. Please run this newly added file through black
to make sure formatting is correct :-)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@practicalswift that's an upstream test from #14938, where this has been fixed.
Concept ACK |
This fails travis:
|
780a296
to
3f17cbe
Compare
Fixed by rebasing |
3f17cbe
to
e2f447f
Compare
18886a2
to
b7918ad
Compare
b7918ad
to
51a477f
Compare
Rebased |
src/interfaces/wallet.cpp
Outdated
@@ -488,6 +488,10 @@ class WalletImpl : public Wallet | |||
{ | |||
return MakeHandler(m_wallet.NotifyWatchonlyChanged.connect(fn)); | |||
} | |||
std::unique_ptr<Handler> handleCanGetAddressesChanged(CanGetAddressesChangedFn fn) override |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
handleCanGetAddressesChanged
is a terrible method name in itself, took me at least 5 minutes to decode it, please add a comment saying it's a handler for changes in whether addresses can be generated or not :-)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a change from #15225 and out of scope for this pr. sorry.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fwiw I find it easy enough to read, but I'm used to similar nomenclature from iOs :-)
@@ -434,7 +434,7 @@ def batch(self, requests): | |||
def send_cli(self, command=None, *args, **kwargs): | |||
"""Run bitcoin-cli command. Deserializes returned string as python object.""" | |||
pos_args = [str(arg).lower() if type(arg) is bool else str(arg) for arg in args] | |||
named_args = [str(key) + "=" + str(value) for (key, value) in kwargs.items()] | |||
named_args = [str(key) + "=" + (str(value).lower() if type(value) is bool else str(value)) for (key, value) in kwargs.items()] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I remember I had a comment on this (please factor out the value→cli functionality to a function instead of duplicating it) but somehow it got lost …
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since this issue affects multiple PRs, I've split the fix into a separate PR: #15301
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hmmm, bizarre. You definitely did have a comment here because I responded to it!
51a477f
to
f2bed74
Compare
f2bed74
to
5e3d2b9
Compare
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
Summary: bitcoin/bitcoin@662d117 --- Backport of Core [[bitcoin/bitcoin#15006 | PR15006]] Test Plan: ninja check ./test/functional/test_runner.py wallet_createwallet.py Reviewers: #bitcoin_abc, deadalnix Reviewed By: #bitcoin_abc, deadalnix Subscribers: deadalnix Differential Revision: https://reviews.bitcoinabc.org/D6423
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This maintains a persistent list of wallets stored in settings that will automatically be loaded on startup. Being able to load a wallet automatically on startup will be more useful in the GUI when the option to create wallets is added in bitcoin#15006, but it's reasonable to expose this feature by RPC as well.
This PR adds a new
passphrase
argument tocreatewallet
which will create a wallet that is encrypted with that passphrase.This is built on #15226 because it needs to first create an empty wallet, then encrypt the empty wallet and generate new keys that have only been stored in an encrypted state.