diff options
| author | Jeff Garzik <[email protected]> | 2013-08-28 16:29:52 -0400 |
|---|---|---|
| committer | Jeff Garzik <[email protected]> | 2013-08-28 16:29:52 -0400 |
| commit | e5e9904c1c87fcdddf01e563ffe28cc56aea4f29 (patch) | |
| tree | 30c0cc52e398b3c2899ff9e6b914e7337b7ad2b5 /src/rpcwallet.cpp | |
| parent | Merge pull request #2928 from jgarzik/cnb-txout (diff) | |
| download | discoin-e5e9904c1c87fcdddf01e563ffe28cc56aea4f29.tar.xz discoin-e5e9904c1c87fcdddf01e563ffe28cc56aea4f29.zip | |
RPC: add getrawchangeaddress, for raw transaction change destinations
Diffstat (limited to 'src/rpcwallet.cpp')
| -rw-r--r-- | src/rpcwallet.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/rpcwallet.cpp b/src/rpcwallet.cpp index d07d3408b..978c44e1a 100644 --- a/src/rpcwallet.cpp +++ b/src/rpcwallet.cpp @@ -176,6 +176,29 @@ Value getaccountaddress(const Array& params, bool fHelp) } +Value getrawchangeaddress(const Array& params, bool fHelp) +{ + if (fHelp || params.size() > 1) + throw runtime_error( + "getrawchangeaddress\n" + "Returns a new Bitcoin address, for receiving change. " + "This is for use with raw transactions, NOT normal use."); + + if (!pwalletMain->IsLocked()) + pwalletMain->TopUpKeyPool(); + + CReserveKey reservekey(pwalletMain); + CPubKey vchPubKey; + if (!reservekey.GetReservedKey(vchPubKey)) + throw JSONRPCError(RPC_WALLET_ERROR, "Error: Unable to obtain key for change"); + + reservekey.KeepKey(); + + CKeyID keyID = vchPubKey.GetID(); + + return CBitcoinAddress(keyID).ToString(); +} + Value setaccount(const Array& params, bool fHelp) { |