diff --git a/src/dstencode.h b/src/dstencode.h --- a/src/dstencode.h +++ b/src/dstencode.h @@ -11,8 +11,7 @@ class Config; class CChainParams; -std::string EncodeDestination(const CTxDestination &, const CChainParams &, - const Config &); +std::string EncodeDestination(const CTxDestination &dest, const Config &config); CTxDestination DecodeDestination(const std::string &addr, const CChainParams &); bool IsValidDestinationString(const std::string &addr, const CChainParams ¶ms); diff --git a/src/dstencode.cpp b/src/dstencode.cpp --- a/src/dstencode.cpp +++ b/src/dstencode.cpp @@ -8,10 +8,11 @@ #include "config.h" #include "script/standard.h" -std::string EncodeDestination(const CTxDestination &dst, - const CChainParams ¶ms, const Config &cfg) { - return cfg.UseCashAddrEncoding() ? EncodeCashAddr(dst, params) - : EncodeLegacyAddr(dst, params); +std::string EncodeDestination(const CTxDestination &dest, + const Config &config) { + const CChainParams ¶ms = config.GetChainParams(); + return config.UseCashAddrEncoding() ? EncodeCashAddr(dest, params) + : EncodeLegacyAddr(dest, params); } CTxDestination DecodeDestination(const std::string &addr, @@ -29,7 +30,7 @@ } std::string EncodeDestination(const CTxDestination &dst) { - return EncodeDestination(dst, Params(), GetConfig()); + return EncodeDestination(dst, GetConfig()); } CTxDestination DecodeDestination(const std::string &addr) { diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -43,7 +43,7 @@ QFont fixedPitchFont(); // Generate an invalid, but convincing address. -std::string DummyAddress(const CChainParams ¶ms, const Config &cfg); +std::string DummyAddress(const Config &cfg); // Set up widgets for address and amounts void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent); diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -128,8 +128,7 @@ return ""; } -std::string DummyAddress(const CChainParams ¶ms, const Config &cfg) { - +std::string DummyAddress(const Config &config) { // Just some dummy data to generate an convincing random-looking (but // consistent) address static const std::vector dummydata = { @@ -137,23 +136,22 @@ 0xb6, 0x7d, 0x06, 0x52, 0x99, 0x92, 0x59, 0x15, 0xae, 0xb1}; const CTxDestination dstKey = CKeyID(uint160(dummydata)); - return MakeAddrInvalid(EncodeDestination(dstKey, params, cfg)); + return MakeAddrInvalid(EncodeDestination(dstKey, config)); } void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent) { parent->setFocusProxy(widget); widget->setFont(fixedPitchFont()); - const CChainParams ¶ms = Params(); #if QT_VERSION >= 0x040700 // We don't want translators to use own addresses in translations // and this is the only place, where this address is supplied. widget->setPlaceholderText( QObject::tr("Enter a Bitcoin address (e.g. %1)") - .arg(QString::fromStdString(DummyAddress(params, GetConfig())))); + .arg(QString::fromStdString(DummyAddress(GetConfig())))); #endif widget->setValidator( - new BitcoinAddressEntryValidator(params.CashAddrPrefix(), parent)); + new BitcoinAddressEntryValidator(Params().CashAddrPrefix(), parent)); widget->setCheckValidator(new BitcoinAddressCheckValidator(parent)); } diff --git a/src/qt/receiverequestdialog.cpp b/src/qt/receiverequestdialog.cpp --- a/src/qt/receiverequestdialog.cpp +++ b/src/qt/receiverequestdialog.cpp @@ -110,15 +110,15 @@ // configured with at the time of creation. // // This converts to clients current configuration. -QString ToCurrentEncoding(const QString &addr, const Config &cfg) { - if (!IsValidDestinationString(addr.toStdString(), cfg.GetChainParams())) { +QString ToCurrentEncoding(const QString &addr, const Config &config) { + if (!IsValidDestinationString(addr.toStdString(), + config.GetChainParams())) { // We have something sketchy as input. Do not try to convert. return addr; } CTxDestination dst = - DecodeDestination(addr.toStdString(), cfg.GetChainParams()); - return QString::fromStdString( - EncodeDestination(dst, cfg.GetChainParams(), cfg)); + DecodeDestination(addr.toStdString(), config.GetChainParams()); + return QString::fromStdString(EncodeDestination(dst, config)); } void ReceiveRequestDialog::setInfo(const SendCoinsRecipient &_info) { diff --git a/src/qt/test/guiutiltests.cpp b/src/qt/test/guiutiltests.cpp --- a/src/qt/test/guiutiltests.cpp +++ b/src/qt/test/guiutiltests.cpp @@ -27,17 +27,18 @@ } // namespace void GUIUtilTests::dummyAddressTest() { - CChainParams ¶ms = Params(CBaseChainParams::MAIN); - UtilCfgDummy cfg; + UtilCfgDummy config; + const CChainParams ¶ms = config.GetChainParams(); + std::string dummyaddr; - cfg.SetCashAddrEncoding(false); - dummyaddr = GUIUtil::DummyAddress(params, cfg); + config.SetCashAddrEncoding(false); + dummyaddr = GUIUtil::DummyAddress(config); QVERIFY(!IsValidDestinationString(dummyaddr, params)); QVERIFY(!dummyaddr.empty()); - cfg.SetCashAddrEncoding(true); - dummyaddr = GUIUtil::DummyAddress(params, cfg); + config.SetCashAddrEncoding(true); + dummyaddr = GUIUtil::DummyAddress(config); QVERIFY(!IsValidDestinationString(dummyaddr, params)); QVERIFY(!dummyaddr.empty()); } diff --git a/src/test/dstencode_tests.cpp b/src/test/dstencode_tests.cpp --- a/src/test/dstencode_tests.cpp +++ b/src/test/dstencode_tests.cpp @@ -16,6 +16,9 @@ DstCfgDummy() : useCashAddr(false) {} void SetCashAddrEncoding(bool b) override { useCashAddr = b; } bool UseCashAddrEncoding() const override { return useCashAddr; } + const CChainParams &GetChainParams() const override { + return Params(CBaseChainParams::MAIN); + } private: bool useCashAddr; @@ -40,19 +43,18 @@ std::string base58_pubkey = "1BpEi6DfDAUFd7GtittLSdBeYJvcoaVggu"; std::string base58_script = "3CWFddi6m4ndiGyKqzYvsFYagqDLPVMTzC"; - const CChainParams ¶ms = Params(CBaseChainParams::MAIN); - DstCfgDummy cfg; + DstCfgDummy config; // Check encoding - cfg.SetCashAddrEncoding(true); - BOOST_CHECK_EQUAL(cashaddr_pubkey, EncodeDestination(dstKey, params, cfg)); - BOOST_CHECK_EQUAL(cashaddr_script, - EncodeDestination(dstScript, params, cfg)); - cfg.SetCashAddrEncoding(false); - BOOST_CHECK_EQUAL(base58_pubkey, EncodeDestination(dstKey, params, cfg)); - BOOST_CHECK_EQUAL(base58_script, EncodeDestination(dstScript, params, cfg)); + config.SetCashAddrEncoding(true); + BOOST_CHECK_EQUAL(cashaddr_pubkey, EncodeDestination(dstKey, config)); + BOOST_CHECK_EQUAL(cashaddr_script, EncodeDestination(dstScript, config)); + config.SetCashAddrEncoding(false); + BOOST_CHECK_EQUAL(base58_pubkey, EncodeDestination(dstKey, config)); + BOOST_CHECK_EQUAL(base58_script, EncodeDestination(dstScript, config)); // Check decoding + const CChainParams ¶ms = config.GetChainParams(); BOOST_CHECK(dstKey == DecodeDestination(cashaddr_pubkey, params)); BOOST_CHECK(dstScript == DecodeDestination(cashaddr_script, params)); BOOST_CHECK(dstKey == DecodeDestination(base58_pubkey, params));