mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-05-12 19:20:42 +02:00
Merge wallet_undeprecate_legacy-26
This commit is contained in:
commit
dd9a275a37
@ -1308,11 +1308,6 @@ void BitcoinGUI::setNumBlocks(int count, const QDateTime& blockDate, double nVer
|
||||
void BitcoinGUI::createWallet()
|
||||
{
|
||||
#ifdef ENABLE_WALLET
|
||||
#ifndef USE_SQLITE
|
||||
// Compiled without sqlite support (required for descriptor wallets)
|
||||
message(tr("Error creating wallet"), tr("Cannot create new wallet, the software was compiled without sqlite support (required for descriptor wallets)"), CClientUIInterface::MSG_ERROR);
|
||||
return;
|
||||
#endif // USE_SQLITE
|
||||
auto activity = new CreateWalletActivity(getWalletController(), this);
|
||||
connect(activity, &CreateWalletActivity::created, this, &BitcoinGUI::setCurrentWallet);
|
||||
connect(activity, &CreateWalletActivity::created, rpcConsole, &RPCConsole::setCurrentWallet);
|
||||
|
@ -48,10 +48,12 @@ CreateWalletDialog::CreateWalletDialog(QWidget* parent) :
|
||||
ui->encrypt_wallet_checkbox->setEnabled(!checked);
|
||||
ui->blank_wallet_checkbox->setEnabled(!checked);
|
||||
ui->disable_privkeys_checkbox->setEnabled(!checked);
|
||||
ui->descriptor_checkbox->setEnabled(!checked);
|
||||
|
||||
// The external signer checkbox is only enabled when a device is detected.
|
||||
// In that case it is checked by default. Toggling it restores the other
|
||||
// options to their default.
|
||||
ui->descriptor_checkbox->setChecked(checked);
|
||||
ui->encrypt_wallet_checkbox->setChecked(false);
|
||||
ui->disable_privkeys_checkbox->setChecked(checked);
|
||||
ui->blank_wallet_checkbox->setChecked(false);
|
||||
@ -83,6 +85,19 @@ CreateWalletDialog::CreateWalletDialog(QWidget* parent) :
|
||||
}
|
||||
});
|
||||
|
||||
#ifndef USE_SQLITE
|
||||
ui->descriptor_checkbox->setToolTip(tr("Compiled without sqlite support (required for descriptor wallets)"));
|
||||
ui->descriptor_checkbox->setEnabled(false);
|
||||
ui->descriptor_checkbox->setChecked(false);
|
||||
ui->external_signer_checkbox->setEnabled(false);
|
||||
ui->external_signer_checkbox->setChecked(false);
|
||||
#endif
|
||||
|
||||
#ifndef USE_BDB
|
||||
ui->descriptor_checkbox->setEnabled(false);
|
||||
ui->descriptor_checkbox->setChecked(true);
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_EXTERNAL_SIGNER
|
||||
//: "External signing" means using devices such as hardware wallets.
|
||||
ui->external_signer_checkbox->setToolTip(tr("Compiled without external signing support (required for external signing)"));
|
||||
@ -138,6 +153,11 @@ bool CreateWalletDialog::isMakeBlankWalletChecked() const
|
||||
return ui->blank_wallet_checkbox->isChecked();
|
||||
}
|
||||
|
||||
bool CreateWalletDialog::isDescriptorWalletChecked() const
|
||||
{
|
||||
return ui->descriptor_checkbox->isChecked();
|
||||
}
|
||||
|
||||
bool CreateWalletDialog::isExternalSignerChecked() const
|
||||
{
|
||||
return ui->external_signer_checkbox->isChecked();
|
||||
|
@ -35,6 +35,7 @@ public:
|
||||
bool isEncryptWalletChecked() const;
|
||||
bool isDisablePrivateKeysChecked() const;
|
||||
bool isMakeBlankWalletChecked() const;
|
||||
bool isDescriptorWalletChecked() const;
|
||||
bool isExternalSignerChecked() const;
|
||||
|
||||
private:
|
||||
|
@ -153,6 +153,19 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="descriptor_checkbox">
|
||||
<property name="toolTip">
|
||||
<string>Use descriptors for scriptPubKey management</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Descriptor Wallet</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="external_signer_checkbox">
|
||||
<property name="toolTip">
|
||||
@ -196,6 +209,7 @@
|
||||
<tabstop>encrypt_wallet_checkbox</tabstop>
|
||||
<tabstop>disable_privkeys_checkbox</tabstop>
|
||||
<tabstop>blank_wallet_checkbox</tabstop>
|
||||
<tabstop>descriptor_checkbox</tabstop>
|
||||
<tabstop>external_signer_checkbox</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
|
@ -254,14 +254,15 @@ void CreateWalletActivity::createWallet()
|
||||
|
||||
std::string name = m_create_wallet_dialog->walletName().toStdString();
|
||||
uint64_t flags = 0;
|
||||
// Enable descriptors by default.
|
||||
flags |= WALLET_FLAG_DESCRIPTORS;
|
||||
if (m_create_wallet_dialog->isDisablePrivateKeysChecked()) {
|
||||
flags |= WALLET_FLAG_DISABLE_PRIVATE_KEYS;
|
||||
}
|
||||
if (m_create_wallet_dialog->isMakeBlankWalletChecked()) {
|
||||
flags |= WALLET_FLAG_BLANK_WALLET;
|
||||
}
|
||||
if (m_create_wallet_dialog->isDescriptorWalletChecked()) {
|
||||
flags |= WALLET_FLAG_DESCRIPTORS;
|
||||
}
|
||||
if (m_create_wallet_dialog->isExternalSignerChecked()) {
|
||||
flags |= WALLET_FLAG_EXTERNAL_SIGNER;
|
||||
}
|
||||
|
@ -370,8 +370,7 @@ static RPCHelpMan createwallet()
|
||||
{"passphrase", RPCArg::Type::STR, RPCArg::Optional::OMITTED, "Encrypt the wallet with this passphrase."},
|
||||
{"avoid_reuse", RPCArg::Type::BOOL, RPCArg::Default{false}, "Keep track of coin reuse, and treat dirty and clean coins differently with privacy considerations in mind."},
|
||||
{"descriptors", RPCArg::Type::BOOL, RPCArg::Default{true}, "Create a native descriptor wallet. The wallet will use descriptors internally to handle address creation."
|
||||
" Setting to \"false\" will create a legacy wallet; This is only possible with the -deprecatedrpc=create_bdb setting because, the legacy wallet type is being deprecated and"
|
||||
" support for creating and opening legacy wallets will be removed in the future."},
|
||||
" Setting to \"false\" will create a legacy wallet"},
|
||||
{"load_on_startup", RPCArg::Type::BOOL, RPCArg::Optional::OMITTED, "Save wallet name to persistent settings and load on startup. True to add wallet to startup list, false to remove, null to leave unchanged."},
|
||||
{"external_signer", RPCArg::Type::BOOL, RPCArg::Default{false}, "Use an external signer such as a hardware wallet. Requires -signer to be configured. Wallet creation will fail if keys cannot be fetched. Requires disable_private_keys and descriptors set to true."},
|
||||
},
|
||||
@ -429,11 +428,6 @@ static RPCHelpMan createwallet()
|
||||
throw JSONRPCError(RPC_WALLET_ERROR, "Compiled without sqlite support (required for descriptor wallets)");
|
||||
#endif
|
||||
flags |= WALLET_FLAG_DESCRIPTORS;
|
||||
} else {
|
||||
if (!context.chain->rpcEnableDeprecated("create_bdb")) {
|
||||
throw JSONRPCError(RPC_WALLET_ERROR, "BDB wallet creation is deprecated and will be removed in a future release."
|
||||
" In this release it can be re-enabled temporarily with the -deprecatedrpc=create_bdb setting.");
|
||||
}
|
||||
}
|
||||
if (!request.params[7].isNull() && request.params[7].get_bool()) {
|
||||
#ifdef ENABLE_EXTERNAL_SIGNER
|
||||
|
@ -293,11 +293,6 @@ std::shared_ptr<CWallet> LoadWalletInternal(WalletContext& context, const std::s
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Legacy wallets are being deprecated, warn if the loaded wallet is legacy
|
||||
if (!wallet->IsWalletFlagSet(WALLET_FLAG_DESCRIPTORS)) {
|
||||
warnings.push_back(_("Wallet loaded successfully. The legacy wallet type is being deprecated and support for creating and opening legacy wallets will be removed in the future. Legacy wallets can be migrated to a descriptor wallet with migratewallet."));
|
||||
}
|
||||
|
||||
NotifyWalletLoaded(context, wallet);
|
||||
AddWallet(context, wallet);
|
||||
wallet->postInitProcess();
|
||||
@ -486,11 +481,6 @@ std::shared_ptr<CWallet> CreateWallet(WalletContext& context, const std::string&
|
||||
// Write the wallet settings
|
||||
UpdateWalletSetting(*context.chain, name, load_on_start, warnings);
|
||||
|
||||
// Legacy wallets are being deprecated, warn if a newly created wallet is legacy
|
||||
if (!(wallet_creation_flags & WALLET_FLAG_DESCRIPTORS)) {
|
||||
warnings.push_back(_("Wallet created successfully. The legacy wallet type is being deprecated and support for creating and opening legacy wallets will be removed in the future."));
|
||||
}
|
||||
|
||||
status = DatabaseStatus::SUCCESS;
|
||||
return wallet;
|
||||
}
|
||||
|
@ -339,10 +339,9 @@ class BackwardsCompatibilityTest(BitcoinTestFramework):
|
||||
# Restore the wallet to master
|
||||
load_res = node_master.restorewallet(wallet_name, backup_path)
|
||||
|
||||
# Make sure this wallet opens with only the migration warning. See https://github.com/bitcoin/bitcoin/pull/19054
|
||||
# Make sure this wallet opens without warnings
|
||||
if not self.options.descriptors:
|
||||
# Legacy wallets will have only a deprecation warning
|
||||
assert_equal(load_res["warnings"], ["Wallet loaded successfully. The legacy wallet type is being deprecated and support for creating and opening legacy wallets will be removed in the future. Legacy wallets can be migrated to a descriptor wallet with migratewallet."])
|
||||
assert "warnings" not in load_res
|
||||
else:
|
||||
assert "warnings" not in load_res
|
||||
|
||||
|
@ -161,7 +161,7 @@ class CreateWalletTest(BitcoinTestFramework):
|
||||
assert_equal(walletinfo['keypoolsize_hd_internal'], keys)
|
||||
# Allow empty passphrase, but there should be a warning
|
||||
resp = self.nodes[0].createwallet(wallet_name='w7', disable_private_keys=False, blank=False, passphrase='')
|
||||
assert_equal(resp["warnings"], [EMPTY_PASSPHRASE_MSG] if self.options.descriptors else [EMPTY_PASSPHRASE_MSG, LEGACY_WALLET_MSG])
|
||||
assert_equal(resp["warnings"], [EMPTY_PASSPHRASE_MSG])
|
||||
|
||||
w7 = node.get_wallet_rpc('w7')
|
||||
assert_raises_rpc_error(-15, 'Error: running with an unencrypted wallet, but walletpassphrase was called.', w7.walletpassphrase, '', 60)
|
||||
@ -175,7 +175,7 @@ class CreateWalletTest(BitcoinTestFramework):
|
||||
self.log.info('Using a passphrase with private keys disabled returns error')
|
||||
assert_raises_rpc_error(-4, 'Passphrase provided but private keys are disabled. A passphrase is only used to encrypt private keys, so cannot be used for wallets with private keys disabled.', self.nodes[0].createwallet, wallet_name='w9', disable_private_keys=True, passphrase='thisisapassphrase')
|
||||
|
||||
if self.is_bdb_compiled():
|
||||
if False:
|
||||
self.log.info("Test legacy wallet deprecation")
|
||||
result = self.nodes[0].createwallet(wallet_name="legacy_w0", descriptors=False, passphrase=None)
|
||||
assert_equal(result, {
|
||||
|
Loading…
Reference in New Issue
Block a user