Skip to content

Commit

Permalink
[wallet] rpc: Drop misleading option
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcoFalke committed Aug 24, 2016
1 parent 62a5a8a commit fab5ecb
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 28 deletions.
8 changes: 8 additions & 0 deletions doc/release-notes.md
Expand Up @@ -41,6 +41,14 @@ report issues about Windows XP to the issue tracker.
Notable changes
===============

Low-level RPC changes
----------------------

- `importprunedfunds` only accepts two required arguments. Some versions accept
an optional third arg, which was always ignored. Make sure to never pass more
than two arguments.


0.14.0 Change log
=================

Expand Down
35 changes: 13 additions & 22 deletions qa/rpc-tests/importprunedfunds.py
Expand Up @@ -20,14 +20,10 @@ def setup_network(self, split=False):
self.is_network_split=False
self.sync_all()

def run_test (self):
import time
begintime = int(time.time())

def run_test(self):
print("Mining blocks...")
self.nodes[0].generate(101)

# sync
self.sync_all()

# address
Expand Down Expand Up @@ -72,7 +68,6 @@ def run_test (self):
rawtxn2 = self.nodes[0].gettransaction(txnid2)['hex']
proof2 = self.nodes[0].gettxoutproof([txnid2])


txnid3 = self.nodes[0].sendtoaddress(address3, 0.025)
self.nodes[0].generate(1)
rawtxn3 = self.nodes[0].gettransaction(txnid3)['hex']
Expand All @@ -82,28 +77,27 @@ def run_test (self):

#Import with no affiliated address
try:
result1 = self.nodes[1].importprunedfunds(rawtxn1, proof1, "")
self.nodes[1].importprunedfunds(rawtxn1, proof1)
except JSONRPCException as e:
assert('No addresses' in e.error['message'])
else:
assert(False)


balance1 = self.nodes[1].getbalance("", 0, True)
assert_equal(balance1, Decimal(0))

#Import with affiliated address with no rescan
self.nodes[1].importaddress(address2, "", False)
result2 = self.nodes[1].importprunedfunds(rawtxn2, proof2, "")
balance2 = Decimal(self.nodes[1].getbalance("", 0, True))
self.nodes[1].importaddress(address2, "add2", False)
result2 = self.nodes[1].importprunedfunds(rawtxn2, proof2)
balance2 = self.nodes[1].getbalance("add2", 0, True)
assert_equal(balance2, Decimal('0.05'))

#Import with private key with no rescan
self.nodes[1].importprivkey(address3_privkey, "", False)
result3 = self.nodes[1].importprunedfunds(rawtxn3, proof3, "")
balance3 = Decimal(self.nodes[1].getbalance("", 0, False))
self.nodes[1].importprivkey(address3_privkey, "add3", False)
result3 = self.nodes[1].importprunedfunds(rawtxn3, proof3)
balance3 = self.nodes[1].getbalance("add3", 0, False)
assert_equal(balance3, Decimal('0.025'))
balance3 = Decimal(self.nodes[1].getbalance("", 0, True))
balance3 = self.nodes[1].getbalance("*", 0, True)
assert_equal(balance3, Decimal('0.075'))

#Addresses Test - after import
Expand All @@ -118,26 +112,23 @@ def run_test (self):
assert_equal(address_info['ismine'], True)

#Remove transactions

try:
self.nodes[1].removeprunedfunds(txnid1)
except JSONRPCException as e:
assert('does not exist' in e.error['message'])
else:
assert(False)


balance1 = Decimal(self.nodes[1].getbalance("", 0, True))
balance1 = self.nodes[1].getbalance("*", 0, True)
assert_equal(balance1, Decimal('0.075'))


self.nodes[1].removeprunedfunds(txnid2)
balance2 = Decimal(self.nodes[1].getbalance("", 0, True))
balance2 = self.nodes[1].getbalance("*", 0, True)
assert_equal(balance2, Decimal('0.025'))

self.nodes[1].removeprunedfunds(txnid3)
balance3 = Decimal(self.nodes[1].getbalance("", 0, True))
balance3 = self.nodes[1].getbalance("*", 0, True)
assert_equal(balance3, Decimal('0.0'))

if __name__ == '__main__':
ImportPrunedFundsTest ().main ()
ImportPrunedFundsTest().main()
7 changes: 1 addition & 6 deletions src/wallet/rpcdump.cpp
Expand Up @@ -257,14 +257,13 @@ UniValue importprunedfunds(const UniValue& params, bool fHelp)
if (!EnsureWalletIsAvailable(fHelp))
return NullUniValue;

if (fHelp || params.size() < 2 || params.size() > 3)
if (fHelp || params.size() != 2)
throw runtime_error(
"importprunedfunds\n"
"\nImports funds without rescan. Corresponding address or script must previously be included in wallet. Aimed towards pruned wallets. The end-user is responsible to import additional transactions that subsequently spend the imported outputs or rescan after the point in the blockchain the transaction is included.\n"
"\nArguments:\n"
"1. \"rawtransaction\" (string, required) A raw transaction in hex funding an already-existing address in wallet\n"
"2. \"txoutproof\" (string, required) The hex output from gettxoutproof that contains the transaction\n"
"3. \"label\" (string, optional) An optional label\n"
);

CTransaction tx;
Expand All @@ -277,10 +276,6 @@ UniValue importprunedfunds(const UniValue& params, bool fHelp)
CMerkleBlock merkleBlock;
ssMB >> merkleBlock;

string strLabel = "";
if (params.size() == 3)
strLabel = params[2].get_str();

//Search partial merkle tree in proof for our transaction and index in valid block
vector<uint256> vMatch;
vector<unsigned int> vIndex;
Expand Down

0 comments on commit fab5ecb

Please sign in to comment.