Auto merge of #3680 - bitcartel:3671_sapling_default_z_getnewaddress, r=bitcartel

Make Sapling the default address format when calling RPC z_getnewaddress

Closes #3671.
This commit is contained in:
Homu 2018-11-16 14:23:50 -08:00
commit 8394c30029
19 changed files with 50 additions and 50 deletions

View File

@ -94,7 +94,7 @@ class FinalSaplingRootTest(BitcoinTestFramework):
assert_equal(root, self.nodes[0].getblock("203")["finalsaplingroot"])
# Mine a block with a Sprout shielded tx and verify the final Sapling root does not change
zaddr1 = self.nodes[1].z_getnewaddress()
zaddr1 = self.nodes[1].z_getnewaddress('sprout')
recipients = []
recipients.append({"address": zaddr1, "amount": Decimal('10')})
myopid = self.nodes[0].z_sendmany(taddr0, recipients, 1, 0)

View File

@ -41,7 +41,7 @@ class MempoolUpgradeActivationTest(BitcoinTestFramework):
# Shield some ZEC
node1_taddr = self.nodes[1].getnewaddress()
node0_zaddr = self.nodes[0].z_getnewaddress()
node0_zaddr = self.nodes[0].z_getnewaddress('sprout')
recipients = [{'address': node0_zaddr, 'amount': Decimal('10')}]
myopid = self.nodes[1].z_sendmany(node1_taddr, recipients, 1, Decimal('0'))
print wait_and_assert_operationid_status(self.nodes[1], myopid)

View File

@ -23,9 +23,9 @@ class MempoolTxExpiryTest(BitcoinTestFramework):
# chain is at block height 199 when run_test executes
def run_test(self):
alice = self.nodes[0].getnewaddress()
z_alice = self.nodes[0].z_getnewaddress()
z_alice = self.nodes[0].z_getnewaddress('sprout')
bob = self.nodes[2].getnewaddress()
z_bob = self.nodes[2].z_getnewaddress()
z_bob = self.nodes[2].z_getnewaddress('sprout')
# When Overwinter not yet activated, no expiryheight in tx
sapling_tx = self.nodes[0].sendtoaddress(bob, 0.01)

View File

@ -45,7 +45,7 @@ class MempoolTxInputLimitTest(BitcoinTestFramework):
# Check 1: z_sendmany is limited by -mempooltxinputlimit
# Add zaddr to node 0
node0_zaddr = self.nodes[0].z_getnewaddress()
node0_zaddr = self.nodes[0].z_getnewaddress('sprout')
# Send three inputs from node 0 taddr to zaddr to get out of coinbase
node0_taddr = self.nodes[0].getnewaddress()

View File

@ -47,7 +47,7 @@ class PaymentDisclosureTest (BitcoinTestFramework):
assert_equal(self.nodes[2].getbalance(), 30)
mytaddr = self.nodes[0].getnewaddress()
myzaddr = self.nodes[0].z_getnewaddress()
myzaddr = self.nodes[0].z_getnewaddress('sprout')
# Check that Node 2 has payment disclosure disabled.
try:
@ -164,7 +164,7 @@ class PaymentDisclosureTest (BitcoinTestFramework):
assert_equal(output_value_sum, Decimal('39.99990000'))
# Create a z->z transaction, sending shielded funds from node 0 to node 1
node1zaddr = self.nodes[1].z_getnewaddress()
node1zaddr = self.nodes[1].z_getnewaddress('sprout')
recipients = [{"address":node1zaddr, "amount":Decimal('1')}]
myopid = self.nodes[0].z_sendmany(myzaddr, recipients)
txid = wait_and_assert_operationid_status(self.nodes[0], myopid)

View File

@ -282,7 +282,7 @@ class WalletTest (BitcoinTestFramework):
assert_equal(0, len(myvjoinsplits))
# z_sendmany is expected to fail if tx size breaks limit
myzaddr = self.nodes[0].z_getnewaddress()
myzaddr = self.nodes[0].z_getnewaddress('sprout')
recipients = []
num_t_recipients = 3000
@ -316,7 +316,7 @@ class WalletTest (BitcoinTestFramework):
newtaddr = self.nodes[2].getnewaddress()
recipients.append({"address":newtaddr, "amount":amount_per_recipient})
for i in xrange(0,num_z_recipients):
newzaddr = self.nodes[2].z_getnewaddress()
newzaddr = self.nodes[2].z_getnewaddress('sprout')
recipients.append({"address":newzaddr, "amount":amount_per_recipient})
# Issue #2759 Workaround START
@ -334,7 +334,7 @@ class WalletTest (BitcoinTestFramework):
amount_per_recipient = Decimal('0.00000001')
errorString = ''
for i in xrange(0,num_z_recipients):
newzaddr = self.nodes[2].z_getnewaddress()
newzaddr = self.nodes[2].z_getnewaddress('sprout')
recipients.append({"address":newzaddr, "amount":amount_per_recipient})
try:
self.nodes[0].z_sendmany(myzaddr, recipients)
@ -343,7 +343,7 @@ class WalletTest (BitcoinTestFramework):
assert("Invalid parameter, too many zaddr outputs" in errorString)
# add zaddr to node 2
myzaddr = self.nodes[2].z_getnewaddress()
myzaddr = self.nodes[2].z_getnewaddress('sprout')
# send node 2 taddr to zaddr
recipients = []
@ -437,7 +437,7 @@ class WalletTest (BitcoinTestFramework):
assert_equal("not an integer" in errorString, True)
myzaddr = self.nodes[0].z_getnewaddress()
myzaddr = self.nodes[0].z_getnewaddress('sprout')
recipients = [ {"address": myzaddr, "amount": Decimal('0.0') } ]
errorString = ''

View File

@ -47,7 +47,7 @@ class Wallet1941RegressionTest (BitcoinTestFramework):
self.nodes[0].generate(101)
mytaddr = self.nodes[0].getnewaddress() # where coins were mined
myzaddr = self.nodes[0].z_getnewaddress()
myzaddr = self.nodes[0].z_getnewaddress('sprout')
# Send 10 coins to our zaddr.
recipients = []
@ -74,7 +74,7 @@ class Wallet1941RegressionTest (BitcoinTestFramework):
# Start the new wallet
self.add_second_node()
self.nodes[1].getnewaddress()
self.nodes[1].z_getnewaddress()
self.nodes[1].z_getnewaddress('sprout')
self.nodes[1].generate(101)
self.sync_all()

View File

@ -37,41 +37,41 @@ class WalletAddressesTest(BitcoinTestFramework):
assert_equal(self.nodes[0].getblockcount(), 200)
# Current height = 200 -> Sprout
# Default address type is Sprout
# Default address type is Sapling
print "Testing height 200 (Sprout)"
addr_checks('sprout')
addr_checks('sapling')
self.nodes[0].generate(1)
self.sync_all()
# Current height = 201 -> Sprout
# Default address type is Sprout
# Default address type is Sapling
print "Testing height 201 (Sprout)"
addr_checks('sprout')
addr_checks('sapling')
self.nodes[0].generate(1)
self.sync_all()
# Current height = 202 -> Overwinter
# Default address type is Sprout
# Default address type is Sapling
print "Testing height 202 (Overwinter)"
addr_checks('sprout')
addr_checks('sapling')
self.nodes[0].generate(1)
self.sync_all()
# Current height = 203 -> Overwinter
# Default address type is Sprout
# Default address type is Sapling
print "Testing height 203 (Overwinter)"
addr_checks('sprout')
addr_checks('sapling')
self.nodes[0].generate(1)
self.sync_all()
# Current height = 204 -> Sapling
# Default address type is Sprout
# Default address type is Sapling
print "Testing height 204 (Sapling)"
addr_checks('sprout')
addr_checks('sapling')
if __name__ == '__main__':
WalletAddressesTest().main()

View File

@ -44,7 +44,7 @@ class WalletAnchorForkTest (BitcoinTestFramework):
# Node 0 creates a joinsplit transaction
mytaddr0 = self.nodes[0].getnewaddress()
myzaddr0 = self.nodes[0].z_getnewaddress()
myzaddr0 = self.nodes[0].z_getnewaddress('sprout')
recipients = []
recipients.append({"address":myzaddr0, "amount": Decimal('10.0') - Decimal('0.0001')})
myopid = self.nodes[0].z_sendmany(mytaddr0, recipients)

View File

@ -18,8 +18,8 @@ class WalletChangeIndicatorTest (BitcoinTestFramework):
# Tests
def run_test(self):
taddr = self.nodes[1].getnewaddress()
zaddr1 = self.nodes[1].z_getnewaddress()
zaddr2 = self.nodes[1].z_getnewaddress()
zaddr1 = self.nodes[1].z_getnewaddress('sprout')
zaddr2 = self.nodes[1].z_getnewaddress('sprout')
self.nodes[0].sendtoaddress(taddr, Decimal('1.0'))
self.generate_and_sync()

View File

@ -70,7 +70,7 @@ class WalletListNotes(BitcoinTestFramework):
assert_equal(202, self.nodes[0].getblockcount())
# Send 1.0 (actually 0.9999) from sproutzaddr to a new zaddr
sproutzaddr2 = self.nodes[0].z_getnewaddress()
sproutzaddr2 = self.nodes[0].z_getnewaddress('sprout')
receive_amount_1 = Decimal('1.0') - Decimal('0.0001')
change_amount_9 = receive_amount_10 - Decimal('1.0')
assert_equal('sprout', self.nodes[0].z_validateaddress(sproutzaddr2)['type'])

View File

@ -54,7 +54,7 @@ class WalletMergeToAddressTest (BitcoinTestFramework):
assert_equal(self.nodes[2].getbalance(), 30)
# Shield the coinbase
myzaddr = self.nodes[0].z_getnewaddress()
myzaddr = self.nodes[0].z_getnewaddress('sprout')
result = self.nodes[0].z_shieldcoinbase("*", myzaddr, 0)
wait_and_assert_operationid_status(self.nodes[0], result['opid'])
self.sync_all()
@ -172,7 +172,7 @@ class WalletMergeToAddressTest (BitcoinTestFramework):
assert_equal(self.nodes[2].getbalance(), 30)
# Shield all notes to another z-addr
myzaddr2 = self.nodes[0].z_getnewaddress()
myzaddr2 = self.nodes[0].z_getnewaddress('sprout')
result = self.nodes[0].z_mergetoaddress(["ANY_ZADDR"], myzaddr2, 0)
assert_equal(result["mergingUTXOs"], Decimal('0'))
assert_equal(result["remainingUTXOs"], Decimal('0'))

View File

@ -18,7 +18,7 @@ class WalletNullifiersTest (BitcoinTestFramework):
def run_test (self):
# add zaddr to node 0
myzaddr0 = self.nodes[0].z_getnewaddress()
myzaddr0 = self.nodes[0].z_getnewaddress('sprout')
# send node 0 taddr to zaddr to get out of coinbase
mytaddr = self.nodes[0].getnewaddress()
@ -32,7 +32,7 @@ class WalletNullifiersTest (BitcoinTestFramework):
self.sync_all()
# add zaddr to node 2
myzaddr = self.nodes[2].z_getnewaddress()
myzaddr = self.nodes[2].z_getnewaddress('sprout')
# import node 2 zaddr into node 1
myzkey = self.nodes[2].z_exportkey(myzaddr)
@ -64,7 +64,7 @@ class WalletNullifiersTest (BitcoinTestFramework):
assert_equal(self.nodes[1].z_getbalance(myzaddr), zsendmanynotevalue)
# add zaddr to node 3
myzaddr3 = self.nodes[3].z_getnewaddress()
myzaddr3 = self.nodes[3].z_getnewaddress('sprout')
# send node 2 zaddr to note 3 zaddr
recipients = []

View File

@ -35,9 +35,9 @@ class WalletOverwinterTxTest (BitcoinTestFramework):
taddr0 = self.nodes[0].getnewaddress()
taddr1 = self.nodes[1].getnewaddress()
taddr2 = self.nodes[2].getnewaddress()
zaddr2 = self.nodes[2].z_getnewaddress()
zaddr2 = self.nodes[2].z_getnewaddress('sprout')
taddr3 = self.nodes[3].getnewaddress()
zaddr3 = self.nodes[3].z_getnewaddress()
zaddr3 = self.nodes[3].z_getnewaddress('sprout')
#
# Currently at block 198. The next block to be mined 199 is a Sprout block

View File

@ -75,7 +75,7 @@ class WalletProtectCoinbaseTest (BitcoinTestFramework):
# Prepare to send taddr->zaddr
mytaddr = self.nodes[0].getnewaddress()
myzaddr = self.nodes[0].z_getnewaddress()
myzaddr = self.nodes[0].z_getnewaddress('sprout')
# Node 3 will test that watch only address utxos are not selected
self.nodes[3].importaddress(mytaddr)
@ -335,7 +335,7 @@ class WalletProtectCoinbaseTest (BitcoinTestFramework):
custom_fee = Decimal('0.00012345')
zbalance = self.nodes[0].z_getbalance(myzaddr)
for i in xrange(0,num_recipients):
newzaddr = self.nodes[2].z_getnewaddress()
newzaddr = self.nodes[2].z_getnewaddress('sprout')
recipients.append({"address":newzaddr, "amount":amount_per_recipient})
myopid = self.nodes[0].z_sendmany(myzaddr, recipients, minconf, custom_fee)
wait_and_assert_operationid_status(self.nodes[0], myopid)

View File

@ -35,7 +35,7 @@ class WalletTreeStateTest (BitcoinTestFramework):
self.sync_all()
mytaddr = self.nodes[0].getnewaddress() # where coins were mined
myzaddr = self.nodes[0].z_getnewaddress()
myzaddr = self.nodes[0].z_getnewaddress('sprout')
# Spend coinbase utxos to create three notes of 9.99990000 each
recipients = []
@ -66,15 +66,15 @@ class WalletTreeStateTest (BitcoinTestFramework):
# Tx 1 will change the treestate while Tx 2 containing chained joinsplits is still being generated
recipients = []
recipients.append({"address":self.nodes[2].z_getnewaddress(), "amount":Decimal('10.0') - Decimal('0.0001')})
recipients.append({"address":self.nodes[2].z_getnewaddress('sprout'), "amount":Decimal('10.0') - Decimal('0.0001')})
myopid = self.nodes[0].z_sendmany(mytaddr, recipients)
wait_and_assert_operationid_status(self.nodes[0], myopid)
# Tx 2 will consume all three notes, which must take at least two joinsplits. This is regardless of
# the z_sendmany implementation because there are only two inputs per joinsplit.
recipients = []
recipients.append({"address":self.nodes[2].z_getnewaddress(), "amount":Decimal('18')})
recipients.append({"address":self.nodes[2].z_getnewaddress(), "amount":Decimal('11.9997') - Decimal('0.0001')})
recipients.append({"address":self.nodes[2].z_getnewaddress('sprout'), "amount":Decimal('18')})
recipients.append({"address":self.nodes[2].z_getnewaddress('sprout'), "amount":Decimal('11.9997') - Decimal('0.0001')})
myopid = self.nodes[0].z_sendmany(myzaddr, recipients)
# Wait for Tx 2 to begin executing...

View File

@ -83,7 +83,7 @@ class ZkeyImportExportTest (BitcoinTestFramework):
miner.generate(100)
self.sync_all()
# Shield Alice's coinbase funds to her zaddr
alice_zaddr = alice.z_getnewaddress()
alice_zaddr = alice.z_getnewaddress('sprout')
res = alice.z_shieldcoinbase("*", alice_zaddr)
wait_and_assert_operationid_status(alice, res['opid'])
self.sync_all()
@ -91,7 +91,7 @@ class ZkeyImportExportTest (BitcoinTestFramework):
self.sync_all()
# Now get a pristine z-address for receiving transfers:
bob_zaddr = bob.z_getnewaddress()
bob_zaddr = bob.z_getnewaddress('sprout')
verify_utxos(bob, [], bob_zaddr)
# TODO: Verify that charlie doesn't have funds in addr
# verify_utxos(charlie, [])

View File

@ -626,7 +626,7 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_z_importexport)
BOOST_CHECK(myaddrs == listaddrs);
// Add one more address
BOOST_CHECK_NO_THROW(retValue = CallRPC("z_getnewaddress"));
BOOST_CHECK_NO_THROW(retValue = CallRPC("z_getnewaddress sprout"));
std::string newaddress = retValue.get_str();
auto address = DecodePaymentAddress(newaddress);
BOOST_CHECK(IsValidPaymentAddress(address));
@ -1366,7 +1366,7 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_encrypted_wallet_zkeys)
// create keys
for (int i = 0; i < n; i++) {
CallRPC("z_getnewaddress");
CallRPC("z_getnewaddress sprout");
}
// Verify we can list the keys imported
@ -1391,14 +1391,14 @@ BOOST_AUTO_TEST_CASE(rpc_wallet_encrypted_wallet_zkeys)
BOOST_CHECK(arr.size() == n);
// Try to add a new key, but we can't as the wallet is locked
BOOST_CHECK_THROW(CallRPC("z_getnewaddress"), runtime_error);
BOOST_CHECK_THROW(CallRPC("z_getnewaddress sprout"), runtime_error);
// We can't call RPC walletpassphrase as that invokes RPCRunLater which breaks tests.
// So we manually unlock.
BOOST_CHECK(pwalletMain->Unlock(strWalletPass));
// Now add a key
BOOST_CHECK_NO_THROW(CallRPC("z_getnewaddress"));
BOOST_CHECK_NO_THROW(CallRPC("z_getnewaddress sprout"));
// Verify the key has been added
BOOST_CHECK_NO_THROW(retValue = CallRPC("z_listaddresses"));
@ -1507,7 +1507,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_listunspent_parameters)
BOOST_CHECK_THROW(CallRPC("z_listunspent 1 999 true [\"zcMuhvq8sEkHALuSU2i4NbNQxshSAYrpCExec45ZjtivYPbuiFPwk6WHy4SvsbeZ4siy1WheuRGjtaJmoD1J8bFqNXhsG6U\"]"), runtime_error);
// create shielded address so we have the spending key
BOOST_CHECK_NO_THROW(retValue = CallRPC("z_getnewaddress"));
BOOST_CHECK_NO_THROW(retValue = CallRPC("z_getnewaddress sprout"));
std::string myzaddr = retValue.get_str();
// return empty array for this address

View File

@ -3146,13 +3146,13 @@ UniValue z_getnewaddress(const UniValue& params, bool fHelp)
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;
std::string defaultType = ADDR_TYPE_SPROUT;
std::string defaultType = ADDR_TYPE_SAPLING;
if (fHelp || params.size() > 1)
throw runtime_error(
"z_getnewaddress ( type )\n"
"\nReturns a new shielded address for receiving payments.\n"
"\nWith no arguments, returns a Sprout address.\n"
"\nWith no arguments, returns a Sapling address.\n"
"\nArguments:\n"
"1. \"type\" (string, optional, default=\"" + defaultType + "\") The type of address. One of [\""
+ ADDR_TYPE_SPROUT + "\", \"" + ADDR_TYPE_SAPLING + "\"].\n"