Skip to content
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

gui: Create wallet menu option #15450

Merged
merged 5 commits into from Sep 7, 2019
Merged

Conversation

achow101
Copy link
Member

This PR adds a menu option to create a new wallet. When clicked, a CreateWalletDialog will be created and prompt the user to name the wallet and choose whether to disable private keys, make a blank wallet, and encrypt the wallet. If the wallet is encrypted, the wallet will be born encrypted with the wallet first created blank, then encrypted, and then a new HD seed generated and set.

To allow the newly created wallets to be encrypted, some changes to how encrypting a wallet works. Instead of encrypting and locking the wallet, the wallet will be encrypted and then unlocked. This is also an extra belt-and-suspenders check to make sure that encryption worked.

dialog->show();

// Create the wallet
std::unique_ptr<interfaces::Wallet> wallet = m_wallet_controller->createWallet(wallet_name, flags);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it is too difficult to do in this PR, but if it's possible to avoid creating the wallet in the GUI event loop thread and calling createWallet, setNewHdSeed, topUpKeyPool synchronously that would be a nice of allowing the GUI to avoid hangs and be more responsive. I believe @promag has some changes which use worker threads, so he might be able to give specific suggestions.

There may also be reason to avoid the new dlg.exec() call as in #15313.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not very familiar with the GUI code so I think it would best to let someone else do that.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The suggestion I have is to do similar to #15478. I think it's fine as a follow up.

@instagibbs
Copy link
Member

Maybe:

  1. Move Encrypt wallet to the top since it's likely the most common thing people would do
  2. The menu as-is lacks any explanation, which makes it hard to evaluate unless you're an expert and know all the internals. Explain what they do/interactions between different modes

@achow101
Copy link
Member Author

Move Encrypt wallet to the top since it's likely the most common thing people would do

Done

The menu as-is lacks any explanation, which makes it hard to evaluate unless you're an expert and know all the internals. Explain what they do/interactions between different modes

There are tooltips that explain this. Hover over the selections.

@DrahtBot
Copy link
Contributor

DrahtBot commented Feb 20, 2019

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #10102 ([experimental] Multiprocess bitcoin by ryanofsky)

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.

@Sjors
Copy link
Member

Sjors commented Feb 20, 2019

Concept ACK 🎉

@promag
Copy link
Member

promag commented Feb 20, 2019

Concept ACK, will pick this shortly and push a branch with some changes for your consideration.

src/qt/bitcoingui.cpp Outdated Show resolved Hide resolved
@fanquake
Copy link
Member

Concept ACK.

Screen:
screen shot 2019-02-21 at 12 33 25 pm

Travis warning:
A new circular dependency in the form of "qt/bitcoingui -> qt/createwalletdialog -> qt/bitcoingui" appears to have been introduced.

@jonasschnelli
Copy link
Contributor

General Concept ACK
I'm not sure if we – yet - should allow creating a blank wallet or a wallet with disabled private keys since it can't be used/extended with the GUI (outside of the console). It would make very much sense if there would be a way to import descriptors/addresses and or set/change a hd seed via the GUI.

@Sjors
Copy link
Member

Sjors commented Feb 21, 2019

Works!

Couple of things, nothing that can't wait for a followup, but since this is still very early in the 0.19 cycle might as well get it right:

  • I suspect adding a grey border, like in the send / receive screen, is more visually pleasing. It also allows separating the screen into sections.
  • Let's add a section Advanced, where the Disable Private Keys and Make Blank Wallet goes.
  • Left side of check boxes should be aligned with the "Wallet" label.
  • "Create Wallet" menu items needs "..." (to indicate there's still some form of confirmation)
  • Rename "OK" to "Create"
  • Disable OK and Cancel buttons as soon as the users clicks OK (might tie into @ryanofsky's point about event loops, because double clicking doesn't cause a duplicate wallet afaik)
  • When you click Encrypt Wallet, unhide an "Encryption" section with a Password & Confirmation field (just like we unhide coin selection and fees section)
  • Disable the OK (Create) button until form validation passes (in this case: name must be set)
  • Set initial focus on name field, and pressing tab should jump to the check boxes, the text next to them (this makes the tooltip accessible), and the OK / Cancel field
  • Canceling the password dialog should result in canceling wallet creation (easy to prevent with the previous suggestion, because the form would simply be invalid if "Encrypt" is ticked and the password is empty or not matching)

I agree with @jonasschnelli that being able to enter descriptors here would be useful, but I suggest holding off on that until we have a descriptor based wallet. Otherwise we have to explain that once the keypool runs out they somehow need to top it up. For the most part I expect descriptors would be part of a recovery workflow, which could be another menu item like Recover wallet. But they could also be an advanced setting during wallet creation, if someone wants to override our default derivation paths.

@fanquake fanquake added this to the 0.19.0 milestone Feb 23, 2019
@fanquake fanquake added this to In progress in Multiwallet support Feb 23, 2019
@hebasto
Copy link
Member

hebasto commented Feb 24, 2019

Concept ACK.

@jnewbery
Copy link
Contributor

This fails a linter on Travis ("A new circular dependency in the form of "qt/bitcoingui -> qt/createwalletdialog -> qt/bitcoingui" appears to have been introduced."), and also fails to build when rebased on master, since WalletImpl.m_wallet is now a shared pointer instead of a CWallet object.

@achow101 - do you intend to keep working on this?

@achow101
Copy link
Member Author

Yes, I'll rebase and have a look at it again soon.

@achow101
Copy link
Member Author

Rebased.

I'm not entirely sure how to get rid of the circular dependency.

Copy link
Contributor

@jnewbery jnewbery left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for rebasing @achow101!

I'm not entirely sure how to get rid of the circular dependency.

I think for now it's ok to remove the call to m_parent->setCurrentWallet(model); in CreateWalletDialog::accept(). That would allow you to not have an m_wallet member variable, and change the CreateWalletDialog::CreateWalletDialog() signature to take a QWidget* instead of a BitcoinGUI*.

This matches the existing 'Open Wallet' behaviour, which does not select the new wallet when it's opened.

src/wallet/wallet.cpp Outdated Show resolved Hide resolved
src/wallet/wallet.h Outdated Show resolved Hide resolved
src/wallet/rpcwallet.cpp Outdated Show resolved Hide resolved
src/qt/createwalletdialog.cpp Outdated Show resolved Hide resolved
src/qt/createwalletdialog.cpp Outdated Show resolved Hide resolved
src/qt/createwalletdialog.cpp Show resolved Hide resolved
src/qt/forms/createwalletdialog.ui Outdated Show resolved Hide resolved
<string>Wallet Name</string>
</property>
</widget>
<widget class="QCheckBox" name="disable_privkeys_checkbox">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with @Sjors that these two boxes should be hidden in an 'Advanced options' section.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I couldn't figure out how to do this.

src/qt/createwalletdialog.cpp Outdated Show resolved Hide resolved
Copy link
Contributor

@jnewbery jnewbery left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This now segfaults for me when I try to create an encryted wallet.

I think that https://github.com/bitcoin/bitcoin/pull/15450/files#r287152838 needs to be addressed. If not, perhaps this PR could drop support for creating encrypted wallets to begin with, and we add that later.

src/qt/createwalletdialog.h Outdated Show resolved Hide resolved
src/qt/createwalletdialog.cpp Outdated Show resolved Hide resolved
src/qt/createwalletdialog.cpp Outdated Show resolved Hide resolved
src/qt/createwalletdialog.cpp Outdated Show resolved Hide resolved
@achow101 achow101 force-pushed the gui-create-wallet branch 2 times, most recently from dc13d00 to 76bc7ae Compare May 24, 2019 22:15
@meshcollider
Copy link
Contributor

I agree with fanquake, I'll review+test tomorrow but I think I will merge it after that to give proper time for testing as mentioned. Please review before then everyone :D

Copy link
Contributor

@jonatack jonatack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK da8a86c. Built, ran all tests, manually tested the gui wallet with Debian, reviewed the code.

Verified:

  • when "Encrypt Wallet" is selected, "Disable Private Keys" is disabled
  • when "Disable Private Keys" is checked and then "Encrypt Wallet" is selected, "Disable" is unchecked

I'm not sure what auto-focus issue @fanquake is seeing in #15450 (review). The focus behaves well in my testing. It begins automatically in the name field, and tabbing moves it successively through all the fields in the correct order.

if you create a wallet with a HTML escaped character in the name, i.e Alice & Bob,
then the & will not be shown in some menus / dialogs.

Saw the same issue on Debian. Among the special characters I entered, only the & seemed to be affected.

A few comments follow. Feel free to ignore or add them to the to-do list for the future.

</rect>
</property>
<property name="toolTip">
<string>Encrypt the wallet. The wallet will be encrypted with a password of your choice.</string>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/password/passphrase/ given that the dialog in question asks the user to input passphrases, not passwords

return ui->wallet_name_line_edit->text();
}

bool CreateWalletDialog::encrypt() const
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: it would be clearer to name this as encryptWallet here and makeBlankWallet on line 58, the way disablePrivateKeys is named.

QString walletName() const;
bool encrypt() const;
bool disablePrivateKeys() const;
bool blank() const;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: following my comment above, naming these encryptWallet and makeBlankWallet (like disablePrivateKeys) seems more precise/coherent/would improve git grepping.

@@ -5,6 +5,8 @@
#ifndef BITCOIN_QT_GUICONSTANTS_H
#define BITCOIN_QT_GUICONSTANTS_H

#include <cstdint>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For my understanding, why is this now needed?

}

QTimer::singleShot(500, worker(), [this, name, flags] {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: would be nice to hoist the 4 occurrences of this magic value (500) to a helpfully named constant.

@promag
Copy link
Member

promag commented Sep 5, 2019

@achow101 please rebase, here's the trivial diff from my PR:

diff --git a/src/qt/walletcontroller.cpp b/src/qt/walletcontroller.cpp
index d0ffd6ba3..88ccc8c2d 100644
--- a/src/qt/walletcontroller.cpp
+++ b/src/qt/walletcontroller.cpp
@@ -160,10 +160,6 @@ void WalletControllerActivity::showProgressDialog(const QString& label_text)
     m_progress_dialog->setCancelButton(nullptr);
     m_progress_dialog->setWindowModality(Qt::ApplicationModal);
     GUIUtil::PolishProgressDialog(m_progress_dialog);
-
-    connect(m_progress_dialog, &QObject::destroyed, [this] {
-        m_progress_dialog = nullptr;
-    });
 }

 OpenWalletActivity::OpenWalletActivity(WalletController* wallet_controller, QWidget* parent_widget)
@@ -192,11 +188,11 @@ void OpenWalletActivity::open(const std::string& path)

     showProgressDialog(tr("Opening Wallet <b>%1</b>...").arg(name.toHtmlEscaped()));

-    QTimer::singleShot(500, worker(), [this, path] {
+    QTimer::singleShot(0, worker(), [this, path] {
         std::unique_ptr<interfaces::Wallet> wallet = node().loadWallet(path, m_error_message, m_warning_message);

         if (wallet) m_wallet_model = m_wallet_controller->getOrCreateWallet(std::move(wallet));

-        QTimer::singleShot(500, this, &OpenWalletActivity::finish);
+        QTimer::singleShot(0, this, &OpenWalletActivity::finish);
     });
 }
diff --git a/src/qt/walletcontroller.h b/src/qt/walletcontroller.h
index da8fde9f5..dada9cfa6 100644
--- a/src/qt/walletcontroller.h
+++ b/src/qt/walletcontroller.h
@@ -46,10 +46,11 @@ public:
     //! Returns wallet models currently open.
     std::vector<WalletModel*> getOpenWallets() const;

+    WalletModel* getOrCreateWallet(std::unique_ptr<interfaces::Wallet> wallet);
+
     //! Returns all wallet names in the wallet dir mapped to whether the wallet
     //! is loaded.
     std::map<std::string, bool> listWalletDir() const;
-    WalletModel* getOrCreateWallet(std::unique_ptr<interfaces::Wallet> wallet);

     void closeWallet(WalletModel* wallet_model, QWidget* parent = nullptr);

@promag
Copy link
Member

promag commented Sep 5, 2019

Tested ACK on macOS 10.14.3 (rebased with my branch), played around, looks good to me.

This is at least one inconsistency where if you create a wallet with a HTML escaped character in the name, i.e Alice & Bob, then the & will not be shown in some menus / dialogs.

@fanquake something to fix next.

achow101 and others added 4 commits September 5, 2019 20:36
Co-authored-by: João Barbosa <joao.paulo.barbosa@gmail.com>
Co-authored-by: João Barbosa <joao.paulo.barbosa@gmail.com>
Co-authored-by: João Barbosa <joao.paulo.barbosa@gmail.com>
@achow101
Copy link
Member Author

achow101 commented Sep 6, 2019

Rebased onto #16261

@sipa
Copy link
Member

sipa commented Sep 6, 2019

Concept and approach ACK

@fanquake
Copy link
Member

fanquake commented Sep 7, 2019

ACK 613de61 - re-reviewed on macOS. I'm going to merge this now. It's had a stack of review, and as mentioned multiple times above, lets get this into master so it can get more testing pre v0.19.0.

Checked that the gui: Refactor OpenWalletActivity commit in this PR matches the one in #16261. So will close #16261 post merge here.

Re-rested creating the different wallet types.

Checked that when Encrypt Wallet is selected Disable Private Keys is disabled. Also checked that if Disable Private Keys was checked before Encrypt Wallet is selected it gets unchecked.

Checked that there still aren't any issues when compiling with --disable-wallet.

I'm not sure what auto-focus issue @fanquake is seeing

At least on macOS, if you're creating an encrypted wallet, after clicking Create the Encrypt wallet dialog isn't focused, so you can't type until you click on it.

Screenshots:

Encrypted Wallet

No Private Keys

Blank Wallet

Follow up for this PR include:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

ACK 613de61 - re-reviewed on macOS. I'm going to merge this now. It's had a stack of review, and as mentioned multiple times above, lets get this into master so it can get more testing pre v0.19.0.
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEz7FuIclQ9n+pXlWPLuufXMCVJsEFAl1zUgAACgkQLuufXMCV
JsGSEg//QrKZvNXQ6Jwom8qsfw3Zlcd7rIoJoLI9jfhXEGzIDi9yrTryrYWTzaqq
PVp8aeFyQtXPg9a06mWaQJG0Gb2sQRv6rUAba8fLfDiEg+ycFzMRsd53o3fY0O+a
FhTmE2hdkVQnwZX9yDmyRKnbmL2l0FP9zGqfas78yHVkq47zRe7dbcTQcLyLjhck
sFAnZGJVgyko3ynRsk4YqIk3e5ALMcVXzJIXknbpiHlmwb346on1O08oiPMjArmo
3lDrEF1QuOs7DXrmW5y/aaCgd06EtqlZ1ufL1ISSHM8lah/sRrDkF+TMymJ6yLie
pIrOQu8UUkLLh8hUsmHMlMtFksQHUSBRI2XYuYkfHJI6TB/M0f4UfCz7nq1VlLyZ
YUKl4r6hgy+/GPrjQkf7b80zwpLdC0xaiNGI9S2zfpIk0rYJxkrB+2AKpmRQZsCX
B004jEICoe6elyLtepAwm77UCDXz6cA3XDhlYT1415nWm3MM4mRgGPKMHe1K19A8
YyhrUfPI5ZCS2hEim5g/6VCYeY4HzOi9OlsZnzFhQbL2ImgNlyMQ3OC2KiSxJrg/
4yEahL+zIGYe/esBu7rrRV76j6Q0c5ngkjSVMR9+ZhHV49T5AWUYQKwdUENc3TM9
gtk2q9Zi5cnLlSDPOtPW7NxWT0oKzHNJ5VmS8EdWGZ1aMZwF+UE=
=AV8M
-----END PGP SIGNATURE-----

fanquake added a commit that referenced this pull request Sep 7, 2019
613de61 Add Create Wallet menu action (Andrew Chow)
9b41cbb Expose wallet creation to the GUI via WalletController (Andrew Chow)
78863e2 Add CreateWalletDialog to create wallets from the GUI (Andrew Chow)
60adb21 Optionally allow AskPassphraseDialog to output the passphrase (Andrew Chow)
bc6d8a3 gui: Refactor OpenWalletActivity (João Barbosa)

Pull request description:

  This PR adds a menu option to create a new wallet. When clicked, a `CreateWalletDialog` will be created and prompt the user to name the wallet and choose whether to disable private keys, make a blank wallet, and encrypt the wallet. If the wallet is encrypted, the wallet will be born encrypted with the wallet first created blank, then encrypted, and then a new HD seed generated and set.

  To allow the newly created wallets to be encrypted, some changes to how encrypting a wallet works. Instead of encrypting and locking the wallet, the wallet will be encrypted and then unlocked. This is also an extra belt-and-suspenders check to make sure that encryption worked.

ACKs for top commit:
  fanquake:
    ACK 613de61 - re-reviewed on macOS. I'm going to merge this now. It's had a stack of review, and as mentioned multiple times above, lets get this into `master` so it can get more testing pre `v0.19.0`.

Tree-SHA512: 3f22cc20b13703ffc90d366ae9133114832fea77f4f319da7fd85eb454f2f0bd5d7e1e6e20284dea2f370d8574f83b45669dcbbe506b994410d32e8e7a6fa877
@fanquake fanquake merged commit 613de61 into bitcoin:master Sep 7, 2019
@fanquake fanquake removed this from Blockers in High-priority for review Sep 7, 2019
@fanquake fanquake mentioned this pull request Sep 7, 2019
fanquake added a commit to fanquake/bitcoin that referenced this pull request Sep 16, 2019
cad3ab5 gui: fix autofocus in CreateWalletActivity::askPassphrase() (Jon Atack)
539d940 gui: fix passphrase labels/tooltip in createwalletdialog/askpassphrasedialog (Jon Atack)
43aa9b0 gui: rename encrypt(), blank(), and askPasshprase() (Jon Atack)

Pull request description:

  Closes bitcoin#16820. The wallet [name escaping issue](bitcoin#15450 (review)) in that issue predates bitcoin#15450 and is fixed by bitcoin#16826.

  - [x]  rename encrypt() to encryptWallet(), and blank() to makeBlankWallet() // EDIT: updated to
          isEncryptWalletChecked()
          isDisablePrivateKeysChecked()
          isMakeBlankWalletChecked()
  - [x]  fix naming of askPasshprase() to askPassphrase()
  - [x]  fix passphrase labels and tooltip in createwalletdialog.ui and askpassphrasedialog.ui
  - [x]  fix grammar of labels in askpassphrase dialog and WalletController::closeWallet
  - [x]  fix autofocus in CreateWalletActivity::askPassphrase()

  Squashed down to three commits.

  Reviewers, to test manually: build, launch the gui wallet, and look at labels/tooltips/focus with the create wallet, encrypt wallet, change password, and close wallet commands.

ACKs for top commit:
  jb55:
    Approach ACK cad3ab5
  instagibbs:
    code review and tACK cad3ab5
  fanquake:
    ACK cad3ab5

Tree-SHA512: b441fbf8f8cd370dd692bac24f0d3c1b32fc7d947b6c3a2c9ba7cf0bc175a72b3460440f2f10f7632c0e8e0f8e65fe15615a30c46e2c7763bf258c504b457dd6
sidhujag pushed a commit to syscoin/syscoin that referenced this pull request Sep 16, 2019
cad3ab5 gui: fix autofocus in CreateWalletActivity::askPassphrase() (Jon Atack)
539d940 gui: fix passphrase labels/tooltip in createwalletdialog/askpassphrasedialog (Jon Atack)
43aa9b0 gui: rename encrypt(), blank(), and askPasshprase() (Jon Atack)

Pull request description:

  Closes bitcoin#16820. The wallet [name escaping issue](bitcoin#15450 (review)) in that issue predates bitcoin#15450 and is fixed by bitcoin#16826.

  - [x]  rename encrypt() to encryptWallet(), and blank() to makeBlankWallet() // EDIT: updated to
          isEncryptWalletChecked()
          isDisablePrivateKeysChecked()
          isMakeBlankWalletChecked()
  - [x]  fix naming of askPasshprase() to askPassphrase()
  - [x]  fix passphrase labels and tooltip in createwalletdialog.ui and askpassphrasedialog.ui
  - [x]  fix grammar of labels in askpassphrase dialog and WalletController::closeWallet
  - [x]  fix autofocus in CreateWalletActivity::askPassphrase()

  Squashed down to three commits.

  Reviewers, to test manually: build, launch the gui wallet, and look at labels/tooltips/focus with the create wallet, encrypt wallet, change password, and close wallet commands.

ACKs for top commit:
  jb55:
    Approach ACK cad3ab5
  instagibbs:
    code review and tACK cad3ab5
  fanquake:
    ACK cad3ab5

Tree-SHA512: b441fbf8f8cd370dd692bac24f0d3c1b32fc7d947b6c3a2c9ba7cf0bc175a72b3460440f2f10f7632c0e8e0f8e65fe15615a30c46e2c7763bf258c504b457dd6
@fanquake fanquake moved this from In progress to Done in Multiwallet support Nov 7, 2019
deadalnix pushed a commit to Bitcoin-ABC/bitcoin-abc that referenced this pull request Aug 3, 2020
Summary:
bitcoin/bitcoin@bc6d8a3

Partial backport of Core [[bitcoin/bitcoin#15450 | PR15450]]

depends on D7108

Test Plan:
  ninja check

Open bitcoin-qt open and close wallets to make sure it works as before

Reviewers: #bitcoin_abc, deadalnix

Reviewed By: #bitcoin_abc, deadalnix

Subscribers: deadalnix

Differential Revision: https://reviews.bitcoinabc.org/D7102
deadalnix pushed a commit to Bitcoin-ABC/bitcoin-abc that referenced this pull request Aug 3, 2020
…he passphrase

Summary:
bitcoin/bitcoin@60adb21

---

Depends on D7102

Partial backport of Core [[bitcoin/bitcoin#15450 | PR15450]]

Test Plan:
  ninja check

Reviewers: #bitcoin_abc, Fabien

Reviewed By: #bitcoin_abc, Fabien

Subscribers: Fabien

Differential Revision: https://reviews.bitcoinabc.org/D7103
jasonbcox pushed a commit to Bitcoin-ABC/bitcoin-abc that referenced this pull request Aug 3, 2020
…e GUI

Summary:
Co-authored-by: João Barbosa <joao.paulo.barbosa@gmail.com>

bitcoin/bitcoin@78863e2

---

Depends on D7103

Partial backport of Core [[bitcoin/bitcoin#15450 | PR15450]]

Test Plan:
  ninja check

Reviewers: #bitcoin_abc, Fabien

Reviewed By: #bitcoin_abc, Fabien

Subscribers: Fabien

Differential Revision: https://reviews.bitcoinabc.org/D7104
jasonbcox pushed a commit to Bitcoin-ABC/bitcoin-abc that referenced this pull request Aug 3, 2020
…roller

Summary:
Co-authored-by: João Barbosa <joao.paulo.barbosa@gmail.com>

bitcoin/bitcoin@9b41cbb

---

Depends on D7104

Partial backport of Core [[bitcoin/bitcoin#15450 | PR15450]]

Test Plan:
  ninja check

Reviewers: #bitcoin_abc, Fabien

Reviewed By: #bitcoin_abc, Fabien

Subscribers: Fabien

Differential Revision: https://reviews.bitcoinabc.org/D7105
jasonbcox pushed a commit to Bitcoin-ABC/bitcoin-abc that referenced this pull request Aug 3, 2020
Summary:
Co-authored-by: João Barbosa <joao.paulo.barbosa@gmail.com>

bitcoin/bitcoin@613de61

---

Depends on D7105

Concludes backport of Core [[bitcoin/bitcoin#15450 | PR15450]]

Test Plan:
  ninja check check-functional

Used the bitcoin-qt wallet on regtest mode to create wallets and make sure behavior is expected

Reviewers: #bitcoin_abc, Fabien

Reviewed By: #bitcoin_abc, Fabien

Differential Revision: https://reviews.bitcoinabc.org/D7106
@bitcoin bitcoin locked as resolved and limited conversation to collaborators Dec 16, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

None yet