diff --git a/src/rpcrawtransaction.cpp b/src/rpcrawtransaction.cpp index 5cca9df9d..4b4beb796 100644 --- a/src/rpcrawtransaction.cpp +++ b/src/rpcrawtransaction.cpp @@ -62,6 +62,9 @@ Array TxJoinSplitToJSON(const CTransaction& tx) { const JSDescription& jsdescription = tx.vjoinsplit[i]; Object joinsplit; + joinsplit.push_back(Pair("vpub_old", ValueFromAmount(jsdescription.vpub_old))); + joinsplit.push_back(Pair("vpub_new", ValueFromAmount(jsdescription.vpub_new))); + joinsplit.push_back(Pair("anchor", jsdescription.anchor.GetHex())); { @@ -80,6 +83,9 @@ Array TxJoinSplitToJSON(const CTransaction& tx) { joinsplit.push_back(Pair("commitments", commitments)); } + joinsplit.push_back(Pair("onetimePubKey", jsdescription.ephemeralKey.GetHex())); + joinsplit.push_back(Pair("randomSeed", jsdescription.randomSeed.GetHex())); + { Array macs; BOOST_FOREACH(const uint256 mac, jsdescription.macs) { @@ -88,8 +94,17 @@ Array TxJoinSplitToJSON(const CTransaction& tx) { joinsplit.push_back(Pair("macs", macs)); } - joinsplit.push_back(Pair("vpub_old", ValueFromAmount(jsdescription.vpub_old))); - joinsplit.push_back(Pair("vpub_new", ValueFromAmount(jsdescription.vpub_new))); + CDataStream ssProof(SER_NETWORK, PROTOCOL_VERSION); + ssProof << jsdescription.proof; + joinsplit.push_back(Pair("proof", HexStr(ssProof.begin(), ssProof.end()))); + + { + Array ciphertexts; + for (const ZCNoteEncryption::Ciphertext ct : jsdescription.ciphertexts) { + ciphertexts.push_back(HexStr(ct.begin(), ct.end())); + } + joinsplit.push_back(Pair("ciphertexts", ciphertexts)); + } vjoinsplit.push_back(joinsplit); } @@ -204,6 +219,33 @@ Value getrawtransaction(const Array& params, bool fHelp) " }\n" " ,...\n" " ],\n" + " \"vjoinsplit\" : [ (array of json objects, only for version >= 2)\n" + " {\n" + " \"vpub_old\" : x.xxx, (numeric) public input value in ZEC\n" + " \"vpub_new\" : x.xxx, (numeric) public output value in ZEC\n" + " \"anchor\" : \"hex\", (string) the anchor\n" + " \"nullifiers\" : [ (json array of string)\n" + " \"hex\" (string) input note nullifier\n" + " ,...\n" + " ],\n" + " \"commitments\" : [ (json array of string)\n" + " \"hex\" (string) output note commitment\n" + " ,...\n" + " ],\n" + " \"onetimePubKey\" : \"hex\", (string) the onetime public key used to encrypt the ciphertexts\n" + " \"randomSeed\" : \"hex\", (string) the random seed\n" + " \"macs\" : [ (json array of string)\n" + " \"hex\" (string) input note MAC\n" + " ,...\n" + " ],\n" + " \"proof\" : \"hex\", (string) the zero-knowledge proof\n" + " \"ciphertexts\" : [ (json array of string)\n" + " \"hex\" (string) output note ciphertext\n" + " ,...\n" + " ]\n" + " }\n" + " ,...\n" + " ],\n" " \"blockhash\" : \"hash\", (string) the block hash\n" " \"confirmations\" : n, (numeric) The confirmations\n" " \"time\" : ttt, (numeric) The transaction time in seconds since epoch (Jan 1 1970 GMT)\n" @@ -474,6 +516,33 @@ Value decoderawtransaction(const Array& params, bool fHelp) " }\n" " ,...\n" " ],\n" + " \"vjoinsplit\" : [ (array of json objects, only for version >= 2)\n" + " {\n" + " \"vpub_old\" : x.xxx, (numeric) public input value in ZEC\n" + " \"vpub_new\" : x.xxx, (numeric) public output value in ZEC\n" + " \"anchor\" : \"hex\", (string) the anchor\n" + " \"nullifiers\" : [ (json array of string)\n" + " \"hex\" (string) input note nullifier\n" + " ,...\n" + " ],\n" + " \"commitments\" : [ (json array of string)\n" + " \"hex\" (string) output note commitment\n" + " ,...\n" + " ],\n" + " \"onetimePubKey\" : \"hex\", (string) the onetime public key used to encrypt the ciphertexts\n" + " \"randomSeed\" : \"hex\", (string) the random seed\n" + " \"macs\" : [ (json array of string)\n" + " \"hex\" (string) input note MAC\n" + " ,...\n" + " ],\n" + " \"proof\" : \"hex\", (string) the zero-knowledge proof\n" + " \"ciphertexts\" : [ (json array of string)\n" + " \"hex\" (string) output note ciphertext\n" + " ,...\n" + " ]\n" + " }\n" + " ,...\n" + " ],\n" "}\n" "\nExamples:\n"