Auto merge of #3537 - str4d:enable-sapling-features, r=bitcartel

Enable Sapling features on mainnet

Reverts the last commit from #3458.
This commit is contained in:
Homu
2018-09-21 17:32:56 -07:00
4 changed files with 9 additions and 24 deletions

View File

@@ -5,7 +5,7 @@
#include <gtest/gtest.h> #include <gtest/gtest.h>
TEST(Keys, DISABLED_EncodeAndDecodeSapling) TEST(Keys, EncodeAndDecodeSapling)
{ {
SelectParams(CBaseChainParams::MAIN); SelectParams(CBaseChainParams::MAIN);

View File

@@ -286,11 +286,7 @@ libzcash::PaymentAddress DecodePaymentAddress(const std::string& str)
} }
data.clear(); data.clear();
auto bech = bech32::Decode(str); auto bech = bech32::Decode(str);
bool allowSapling = Params().NetworkIDString() == "regtest" || ( if (bech.first == Params().Bech32HRP(CChainParams::SAPLING_PAYMENT_ADDRESS) &&
Params().NetworkIDString() == "test" &&
GetBoolArg("-experimentalfeatures", false) &&
GetBoolArg("-developersapling", false));
if (allowSapling && bech.first == Params().Bech32HRP(CChainParams::SAPLING_PAYMENT_ADDRESS) &&
bech.second.size() == ConvertedSaplingPaymentAddressSize) { bech.second.size() == ConvertedSaplingPaymentAddressSize) {
// Bech32 decoding // Bech32 decoding
data.reserve((bech.second.size() * 5) / 8); data.reserve((bech.second.size() * 5) / 8);
@@ -356,11 +352,7 @@ libzcash::SpendingKey DecodeSpendingKey(const std::string& str)
} }
data.clear(); data.clear();
auto bech = bech32::Decode(str); auto bech = bech32::Decode(str);
bool allowSapling = Params().NetworkIDString() == "regtest" || ( if (bech.first == Params().Bech32HRP(CChainParams::SAPLING_EXTENDED_SPEND_KEY) &&
Params().NetworkIDString() == "test" &&
GetBoolArg("-experimentalfeatures", false) &&
GetBoolArg("-developersapling", false));
if (allowSapling && bech.first == Params().Bech32HRP(CChainParams::SAPLING_EXTENDED_SPEND_KEY) &&
bech.second.size() == ConvertedSaplingExtendedSpendingKeySize) { bech.second.size() == ConvertedSaplingExtendedSpendingKeySize) {
// Bech32 decoding // Bech32 decoding
data.reserve((bech.second.size() * 5) / 8); data.reserve((bech.second.size() * 5) / 8);

View File

@@ -383,13 +383,12 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_z_validateaddress)
BOOST_CHECK_NO_THROW(retValue = CallRPC("z_validateaddress zs1z7rejlpsa98s2rrrfkwmaxu53e4ue0ulcrw0h4x5g8jl04tak0d3mm47vdtahatqrlkngh9slya")); BOOST_CHECK_NO_THROW(retValue = CallRPC("z_validateaddress zs1z7rejlpsa98s2rrrfkwmaxu53e4ue0ulcrw0h4x5g8jl04tak0d3mm47vdtahatqrlkngh9slya"));
resultObj = retValue.get_obj(); resultObj = retValue.get_obj();
b = find_value(resultObj, "isvalid").get_bool(); b = find_value(resultObj, "isvalid").get_bool();
// TODO: Revert when we re-enable Sapling addresses on mainnet BOOST_CHECK_EQUAL(b, true);
BOOST_CHECK_EQUAL(find_value(resultObj, "type").get_str(), "sapling");
b = find_value(resultObj, "ismine").get_bool();
BOOST_CHECK_EQUAL(b, false); BOOST_CHECK_EQUAL(b, false);
// BOOST_CHECK_EQUAL(find_value(resultObj, "type").get_str(), "sapling"); BOOST_CHECK_EQUAL(find_value(resultObj, "diversifier").get_str(), "1787997c30e94f050c634d");
// b = find_value(resultObj, "ismine").get_bool(); BOOST_CHECK_EQUAL(find_value(resultObj, "diversifiedtransmissionkey").get_str(), "34ed1f60f5db5763beee1ddbb37dd5f7e541d4d4fbdcc09fbfcc6b8e949bbe9d");
// BOOST_CHECK_EQUAL(b, false);
// BOOST_CHECK_EQUAL(find_value(resultObj, "diversifier").get_str(), "1787997c30e94f050c634d");
// BOOST_CHECK_EQUAL(find_value(resultObj, "diversifiedtransmissionkey").get_str(), "34ed1f60f5db5763beee1ddbb37dd5f7e541d4d4fbdcc09fbfcc6b8e949bbe9d");
} }
/* /*
@@ -537,8 +536,6 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_z_importwallet)
*/ */
BOOST_AUTO_TEST_CASE(rpc_wallet_z_importexport) BOOST_AUTO_TEST_CASE(rpc_wallet_z_importexport)
{ {
SelectParams(CBaseChainParams::REGTEST);
LOCK2(cs_main, pwalletMain->cs_wallet); LOCK2(cs_main, pwalletMain->cs_wallet);
UniValue retValue; UniValue retValue;
int n1 = 1000; // number of times to import/export int n1 = 1000; // number of times to import/export

View File

@@ -3141,13 +3141,9 @@ UniValue z_getnewaddress(const UniValue& params, bool fHelp)
addrType = params[0].get_str(); addrType = params[0].get_str();
} }
bool allowSapling = Params().NetworkIDString() == "regtest" || (
Params().NetworkIDString() == "test" &&
GetBoolArg("-experimentalfeatures", false) &&
GetBoolArg("-developersapling", false));
if (addrType == ADDR_TYPE_SPROUT) { if (addrType == ADDR_TYPE_SPROUT) {
return EncodePaymentAddress(pwalletMain->GenerateNewZKey()); return EncodePaymentAddress(pwalletMain->GenerateNewZKey());
} else if (addrType == ADDR_TYPE_SAPLING && allowSapling) { } else if (addrType == ADDR_TYPE_SAPLING) {
return EncodePaymentAddress(pwalletMain->GenerateNewSaplingZKey()); return EncodePaymentAddress(pwalletMain->GenerateNewSaplingZKey());
} else { } else {
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid address type"); throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid address type");