diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index 77613482d..a0706365f 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -1529,7 +1529,7 @@ namespace tools for (size_t n = 0; n < tx_constructions.size(); ++n) { const tools::wallet2::tx_construction_data &cd = tx_constructions[n]; - res.desc.push_back({0, 0, std::numeric_limits::max(), 0, {}, "", 0, "", 0, 0, ""}); + res.desc.push_back({0, 0, std::numeric_limits::max(), 0, {}, {}, "", 0, "", 0, 0, ""}); wallet_rpc::COMMAND_RPC_DESCRIBE_TRANSFER::transfer_description &desc = res.desc.back(); // Clear the recipients collection ready for this loop iteration tx_dests.clear(); @@ -1560,8 +1560,14 @@ namespace tools for (size_t s = 0; s < cd.sources.size(); ++s) { - desc.amount_in += cd.sources[s].amount; - size_t ring_size = cd.sources[s].outputs.size(); + const cryptonote::tx_source_entry &src_in = cd.sources[s]; + wallet_rpc::COMMAND_RPC_DESCRIBE_TRANSFER::source &src_out = desc.sources.emplace_back(); + src_out.amount = src_in.amount; + src_out.global_index = src_in.outputs.at(src_in.real_output_in_tx_index).first; + src_out.rct = src_in.rct; + src_out.pubkey = epee::string_tools::pod_to_hex(src_in.outputs.at(src_in.real_output_in_tx_index).second); + desc.amount_in += src_in.amount; + size_t ring_size = src_in.outputs.size(); if (ring_size < desc.ring_size) desc.ring_size = ring_size; } diff --git a/src/wallet/wallet_rpc_server_commands_defs.h b/src/wallet/wallet_rpc_server_commands_defs.h index 317add94b..e6332d273 100644 --- a/src/wallet/wallet_rpc_server_commands_defs.h +++ b/src/wallet/wallet_rpc_server_commands_defs.h @@ -47,7 +47,7 @@ // advance which version they will stop working with // Don't go over 32767 for any of these #define WALLET_RPC_VERSION_MAJOR 1 -#define WALLET_RPC_VERSION_MINOR 29 +#define WALLET_RPC_VERSION_MINOR 30 #define MAKE_WALLET_RPC_VERSION(major,minor) (((major)<<16)|(minor)) #define WALLET_RPC_VERSION MAKE_WALLET_RPC_VERSION(WALLET_RPC_VERSION_MAJOR, WALLET_RPC_VERSION_MINOR) namespace tools @@ -698,6 +698,21 @@ namespace wallet_rpc struct COMMAND_RPC_DESCRIBE_TRANSFER { + struct source + { + uint64_t amount; + uint64_t global_index; + bool rct; + std::string pubkey; + + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE(amount) + KV_SERIALIZE(global_index) + KV_SERIALIZE(rct) + KV_SERIALIZE(pubkey) + END_KV_SERIALIZE_MAP() + }; + struct recipient { std::string address; @@ -715,6 +730,7 @@ namespace wallet_rpc uint64_t amount_out; uint32_t ring_size; uint64_t unlock_time; + std::list sources; std::list recipients; std::string payment_id; uint64_t change_amount; @@ -728,6 +744,7 @@ namespace wallet_rpc KV_SERIALIZE(amount_out) KV_SERIALIZE(ring_size) KV_SERIALIZE(unlock_time) + KV_SERIALIZE(sources) KV_SERIALIZE(recipients) KV_SERIALIZE(payment_id) KV_SERIALIZE(change_amount)