Created
April 23, 2025 16:26
-
-
Save aaroncox/5de94228bc2feeceaa3b768a1812630d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/plugins/trace_api_plugin/CMakeLists.txt b/plugins/trace_api_plugin/CMakeLists.txt | |
index 8f9f18691..f94981a7e 100644 | |
--- a/plugins/trace_api_plugin/CMakeLists.txt | |
+++ b/plugins/trace_api_plugin/CMakeLists.txt | |
@@ -12,4 +12,3 @@ target_link_libraries( trace_api_plugin chain_plugin http_plugin eosio_chain app | |
target_include_directories( trace_api_plugin PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include" ) | |
add_subdirectory( utils ) | |
-add_subdirectory( test ) | |
diff --git a/plugins/trace_api_plugin/include/eosio/trace_api/extract_util.hpp b/plugins/trace_api_plugin/include/eosio/trace_api/extract_util.hpp | |
index ce240a9b5..f5c9059c6 100644 | |
--- a/plugins/trace_api_plugin/include/eosio/trace_api/extract_util.hpp | |
+++ b/plugins/trace_api_plugin/include/eosio/trace_api/extract_util.hpp | |
@@ -15,13 +15,24 @@ inline ActionTrace to_action_trace( const chain::action_trace& at ) { | |
if constexpr(std::is_same_v<ActionTrace, action_trace_v1>) { | |
r.return_value = at.return_value; | |
} | |
+ r.action_ordinal = at.action_ordinal; | |
+ r.creator_action_ordinal = at.creator_action_ordinal; | |
+ r.closest_unnotified_ancestor_action_ordinal = at.closest_unnotified_ancestor_action_ordinal; | |
if( at.receipt ) { | |
- r.global_sequence = at.receipt->global_sequence; | |
+ r.receipt_receiver = at.receipt->receiver; | |
+ r.global_sequence = at.receipt->global_sequence; | |
+ r.recv_sequence = at.receipt->recv_sequence; | |
+ r.auth_sequence = at.receipt->auth_sequence; | |
+ r.code_sequence = at.receipt->code_sequence; | |
+ r.abi_sequence = at.receipt->abi_sequence; | |
} | |
r.authorization.reserve( at.act.authorization.size()); | |
for( const auto& auth : at.act.authorization ) { | |
r.authorization.emplace_back( authorization_trace_v0{auth.actor, auth.permission} ); | |
} | |
+ r.context_free = at.context_free; | |
+ r.elapsed = at.elapsed; | |
+ r.account_ram_deltas = at.account_ram_deltas; | |
return r; | |
} | |
diff --git a/plugins/trace_api_plugin/include/eosio/trace_api/trace.hpp b/plugins/trace_api_plugin/include/eosio/trace_api/trace.hpp | |
index e3fc82a77..0b150d6d4 100644 | |
--- a/plugins/trace_api_plugin/include/eosio/trace_api/trace.hpp | |
+++ b/plugins/trace_api_plugin/include/eosio/trace_api/trace.hpp | |
@@ -13,12 +13,39 @@ namespace eosio { namespace trace_api { | |
}; | |
struct action_trace_v0 { | |
- uint64_t global_sequence = {}; | |
- chain::name receiver = {}; | |
- chain::name account = {}; | |
- chain::name action = {}; | |
- std::vector<authorization_trace_v0> authorization = {}; | |
- chain::bytes data = {}; | |
+ fc::unsigned_int action_ordinal; | |
+ fc::unsigned_int creator_action_ordinal; | |
+ fc::unsigned_int closest_unnotified_ancestor_action_ordinal; | |
+ | |
+ /// receipt | |
+ chain::name receipt_receiver = {}; | |
+ //digest_type act_digest; | |
+ uint64_t global_sequence = 0; ///< total number of actions dispatched since genesis | |
+ uint64_t recv_sequence = 0; ///< total number of actions with this receiver since genesis | |
+ chain::flat_map<chain::account_name, uint64_t> auth_sequence = {}; | |
+ fc::unsigned_int code_sequence = 0; ///< total number of setcodes | |
+ fc::unsigned_int abi_sequence = 0; ///< total number of setabis | |
+ /// receipt | |
+ | |
+ chain::name receiver; | |
+ | |
+ /// act | |
+ chain::name account; | |
+ chain::name action; // name | |
+ std::vector<authorization_trace_v0> authorization; | |
+ chain::bytes data; | |
+ /// act | |
+ | |
+ bool context_free = false; | |
+ fc::microseconds elapsed; | |
+ //string console; | |
+ //transaction_id_type trx_id; ///< the transaction that generated this action | |
+ //uint32_t block_num = 0; | |
+ //block_timestamp_type block_time; | |
+ //fc::optional<block_id_type> producer_block_id; | |
+ chain::flat_set<chain::account_delta> account_ram_deltas; | |
+ //fc::optional<fc::exception> except; | |
+ //fc::optional<uint64_t> error_code; | |
}; | |
struct action_trace_v1 : public action_trace_v0 { | |
@@ -98,7 +125,7 @@ namespace eosio { namespace trace_api { | |
} } | |
FC_REFLECT(eosio::trace_api::authorization_trace_v0, (account)(permission)) | |
-FC_REFLECT(eosio::trace_api::action_trace_v0, (global_sequence)(receiver)(account)(action)(authorization)(data)) | |
+FC_REFLECT(eosio::trace_api::action_trace_v0, (action_ordinal)(creator_action_ordinal)(closest_unnotified_ancestor_action_ordinal)(receipt_receiver)(global_sequence)(recv_sequence)(auth_sequence)(code_sequence)(abi_sequence)(receiver)(account)(action)(authorization)(data)(context_free)(elapsed)(account_ram_deltas)) | |
FC_REFLECT_DERIVED(eosio::trace_api::action_trace_v1, (eosio::trace_api::action_trace_v0),(return_value)) | |
FC_REFLECT(eosio::trace_api::transaction_trace_v0, (id)(actions)) | |
FC_REFLECT_DERIVED(eosio::trace_api::transaction_trace_v1, (eosio::trace_api::transaction_trace_v0), (status)(cpu_usage_us)(net_usage_words)(signatures)(trx_header)) | |
diff --git a/plugins/trace_api_plugin/request_handler.cpp b/plugins/trace_api_plugin/request_handler.cpp | |
index a20225e2a..a19397b42 100644 | |
--- a/plugins/trace_api_plugin/request_handler.cpp | |
+++ b/plugins/trace_api_plugin/request_handler.cpp | |
@@ -16,7 +16,7 @@ namespace { | |
result.reserve(authorizations.size()); | |
for ( const auto& a: authorizations) { | |
result.emplace_back(fc::mutable_variant_object() | |
- ("account", a.account.to_string()) | |
+ ("actor", a.account.to_string()) | |
("permission", a.permission.to_string()) | |
); | |
} | |
@@ -40,11 +40,24 @@ namespace { | |
auto action_variant = fc::mutable_variant_object(); | |
action_variant("global_sequence", a.global_sequence) | |
+ ("action_ordinal", a.action_ordinal) | |
+ ("creator_action_ordinal", a.creator_action_ordinal) | |
+ ("closest_unnotified_ancestor_action_ordinal", a.closest_unnotified_ancestor_action_ordinal) | |
+ ("receipt_receiver", a.receipt_receiver.to_string()) | |
+ ("global_sequence", a.global_sequence) | |
+ ("recv_sequence", a.recv_sequence) | |
+ ("auth_sequence", a.auth_sequence) | |
+ ("code_sequence", a.code_sequence) | |
+ ("abi_sequence", a.abi_sequence) | |
("receiver", a.receiver.to_string()) | |
("account", a.account.to_string()) | |
- ("action", a.action.to_string()) | |
+ ("name", a.action.to_string()) | |
("authorization", process_authorizations(a.authorization)) | |
- ("data", fc::to_hex(a.data.data(), a.data.size())); | |
+ ("data", fc::to_hex(a.data.data(), a.data.size())) | |
+ ("context_free", a.context_free) | |
+ ("elapsed", a.elapsed) | |
+ ("account_ram_deltas", a.account_ram_deltas) | |
+ ; | |
if constexpr(std::is_same_v<ActionTrace, action_trace_v0>){ | |
auto [params, return_data] = data_handler(a); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment