From 3aab9499243b65ec6baf98d9017c90007abb8b48 Mon Sep 17 00:00:00 2001 From: Todd Fleming Date: Thu, 13 Sep 2018 16:48:56 -0400 Subject: [PATCH] get_raw_abi --- plugins/chain_plugin/chain_plugin.cpp | 5 +++-- .../include/eosio/chain_plugin/chain_plugin.hpp | 8 +++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/plugins/chain_plugin/chain_plugin.cpp b/plugins/chain_plugin/chain_plugin.cpp index 53c0df50c..fe3b4b283 100644 --- a/plugins/chain_plugin/chain_plugin.cpp +++ b/plugins/chain_plugin/chain_plugin.cpp @@ -1572,9 +1572,10 @@ read_only::get_raw_abi_results read_only::get_raw_abi( const get_raw_abi_params& const auto& d = db.db(); const auto& accnt = d.get(params.account_name); - // todo: fetch hash from table in eosio account + result.abi_hash = fc::sha256::hash( accnt.abi.data(), accnt.abi.size() ); result.code_hash = fc::sha256::hash( accnt.code.data(), accnt.code.size() ); - result.abi = blob{{accnt.abi.begin(), accnt.abi.end()}}; + if( !params.abi_hash || *params.abi_hash != result.abi_hash ) + result.abi = blob{{accnt.abi.begin(), accnt.abi.end()}}; return result; } diff --git a/plugins/chain_plugin/include/eosio/chain_plugin/chain_plugin.hpp b/plugins/chain_plugin/include/eosio/chain_plugin/chain_plugin.hpp index 40f395ac9..d4f4d49ea 100644 --- a/plugins/chain_plugin/include/eosio/chain_plugin/chain_plugin.hpp +++ b/plugins/chain_plugin/include/eosio/chain_plugin/chain_plugin.hpp @@ -182,12 +182,14 @@ public: struct get_raw_abi_params { name account_name; + optional abi_hash; }; struct get_raw_abi_results { name account_name; fc::sha256 code_hash; - chain::blob abi; + fc::sha256 abi_hash; + optional abi; }; @@ -696,8 +698,8 @@ FC_REFLECT( eosio::chain_apis::read_only::get_code_hash_params, (account_name) ) FC_REFLECT( eosio::chain_apis::read_only::get_abi_params, (account_name) ) FC_REFLECT( eosio::chain_apis::read_only::get_raw_code_and_abi_params, (account_name) ) FC_REFLECT( eosio::chain_apis::read_only::get_raw_code_and_abi_results, (account_name)(wasm)(abi) ) -FC_REFLECT( eosio::chain_apis::read_only::get_raw_abi_params, (account_name) ) -FC_REFLECT( eosio::chain_apis::read_only::get_raw_abi_results, (account_name)(code_hash)(abi) ) +FC_REFLECT( eosio::chain_apis::read_only::get_raw_abi_params, (account_name)(abi_hash) ) +FC_REFLECT( eosio::chain_apis::read_only::get_raw_abi_results, (account_name)(code_hash)(abi_hash)(abi) ) FC_REFLECT( eosio::chain_apis::read_only::producer_info, (producer_name) ) FC_REFLECT( eosio::chain_apis::read_only::abi_json_to_bin_params, (code)(action)(args) ) FC_REFLECT( eosio::chain_apis::read_only::abi_json_to_bin_result, (binargs) ) -- GitLab