32 if( !t.
trace->failed_dtrx_trace ) {
35 r.id = t.
trace->failed_dtrx_trace->id;
37 if constexpr(std::is_same_v<TransactionTrace, transaction_trace_v1> ||
38 std::is_same_v<TransactionTrace, transaction_trace_v2> ||
39 std::is_same_v<TransactionTrace, transaction_trace_v3>) {
40 if (t.
trace->receipt) {
41 r.status = t.
trace->receipt->status;
42 r.cpu_usage_us = t.
trace->receipt->cpu_usage_us;
43 r.net_usage_words = t.
trace->receipt->net_usage_words;
45 r.signatures = t.
trx->get_signatures();
48 r.block_num = t.
trace->block_num;
49 r.block_time = t.
trace->block_time;
50 r.producer_block_id = t.
trace->producer_block_id;
53 using action_trace_t = std::conditional_t<std::is_same_v<TransactionTrace, transaction_trace_v2> ||
54 std::is_same_v<TransactionTrace, transaction_trace_v3>
56 r.actions = std::vector<action_trace_t>();
57 std::get<std::vector<action_trace_t>>(
r.actions).reserve( t.
trace->action_traces.size());
58 for(
const auto& at : t.
trace->action_traces ) {
59 if( !at.context_free ) {
69 r.number = bsp->block_num;
70 r.previous_id = bsp->block->previous;
71 r.timestamp = bsp->block->timestamp;
72 r.producer = bsp->block->producer;
73 r.schedule_version = bsp->block->schedule_version;
74 r.transaction_mroot = bsp->block->transaction_mroot;
75 r.action_mroot = bsp->block->action_mroot;