Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions book/api/metrics-generated.md
Original file line number Diff line number Diff line change
Expand Up @@ -1045,6 +1045,10 @@
| <span class="metrics-name">bankf_&#8203;transaction_&#8203;result</span><br/>{transaction_&#8203;result="<span class="metrics-enum">insufficient_&#8203;funds_&#8203;for_&#8203;rent</span>"} | counter | Result of loading and executing a transaction. (The transaction would leave an account with a lower balance than the rent-exempt minimum) |
| <span class="metrics-name">bankf_&#8203;transaction_&#8203;result</span><br/>{transaction_&#8203;result="<span class="metrics-enum">unbalanced_&#8203;transaction</span>"} | counter | Result of loading and executing a transaction. (The total referenced account lamports before and after the transaction was unbalanced) |
| <span class="metrics-name">bankf_&#8203;transaction_&#8203;result</span><br/>{transaction_&#8203;result="<span class="metrics-enum">bundle_&#8203;peer</span>"} | counter | Result of loading and executing a transaction. (The transaction was part of a bundle and an earlier transaction in the bundle failed) |
| <span class="metrics-name">bankf_&#8203;transaction_&#8203;landed</span><br/>{transaction_&#8203;landed="<span class="metrics-enum">landed_&#8203;success</span>"} | counter | Whether a transaction landed in the block or not. (Transaction landed) |
| <span class="metrics-name">bankf_&#8203;transaction_&#8203;landed</span><br/>{transaction_&#8203;landed="<span class="metrics-enum">landed_&#8203;fees_&#8203;only</span>"} | counter | Whether a transaction landed in the block or not. (Transaction landed, but was fees only and did not execute) |
| <span class="metrics-name">bankf_&#8203;transaction_&#8203;landed</span><br/>{transaction_&#8203;landed="<span class="metrics-enum">landed_&#8203;failed</span>"} | counter | Whether a transaction landed in the block or not. (Transaction landed, but failed to execute) |
| <span class="metrics-name">bankf_&#8203;transaction_&#8203;landed</span><br/>{transaction_&#8203;landed="<span class="metrics-enum">unlanded</span>"} | counter | Whether a transaction landed in the block or not. (Transaction did not land) |

</div>

Expand Down
31 changes: 5 additions & 26 deletions src/disco/gui/fd_gui.c
Original file line number Diff line number Diff line change
Expand Up @@ -434,32 +434,11 @@ fd_gui_txn_waterfall_snap( fd_gui_t * gui,
cur->out.bank_invalid +=
bank_metrics[ MIDX( COUNTER, BANK, PROCESSING_FAILED ) ];
} else {
cur->out.block_success += bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_SUCCESS ) ];
cur->out.block_fail +=
bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_INSTRUCTON_ERROR ) ];

cur->out.bank_invalid +=
bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_ACCOUNT_NOT_FOUND ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_PROGRAM_ACCOUNT_NOT_FOUND ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_INSUFFICIENT_FUNDS_FOR_FEE ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_INVALID_ACCOUNT_FOR_FEE ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_ALREADY_PROCESSED ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_BLOCKHASH_NOT_FOUND ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_INVALID_PROGRAM_FOR_EXECUTION ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_ADDRESS_LOOKUP_TABLE_NOT_FOUND ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_INVALID_ADDRESS_LOOKUP_TABLE_OWNER ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_INVALID_ADDRESS_LOOKUP_TABLE_DATA ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_INVALID_ADDRESS_LOOKUP_TABLE_INDEX ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_DUPLICATE_INSTRUCTION ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_ACCOUNT_IN_USE ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_ACCOUNT_LOADED_TWICE ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_SIGNATURE_FAILURE ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_TOO_MANY_ACCOUNT_LOCKS ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_BUNDLE_PEER ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_INSUFFICIENT_FUNDS_FOR_RENT ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_UNBALANCED_TRANSACTION ) ];
cur->out.block_success += bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_LANDED_LANDED_SUCCESS ) ];
cur->out.block_fail +=
bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_LANDED_LANDED_FEES_ONLY ) ]
+ bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_LANDED_LANDED_FAILED ) ];
cur->out.bank_invalid += bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_LANDED_UNLANDED ) ];

cur->out.bank_nonce_already_advanced = bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_NONCE_ALREADY_ADVANCED ) ];
cur->out.bank_nonce_advance_failed = bank_metrics[ MIDX( COUNTER, BANKF, TRANSACTION_RESULT_NONCE_ADVANCE_FAILED ) ];
Expand Down
4 changes: 4 additions & 0 deletions src/disco/metrics/generated/fd_metrics_bankf.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,8 @@ const fd_metrics_meta_t FD_METRICS_BANKF[FD_METRICS_BANKF_TOTAL] = {
DECLARE_METRIC_ENUM( BANKF_TRANSACTION_RESULT, COUNTER, TRANSACTION_RESULT, INSUFFICIENT_FUNDS_FOR_RENT ),
DECLARE_METRIC_ENUM( BANKF_TRANSACTION_RESULT, COUNTER, TRANSACTION_RESULT, UNBALANCED_TRANSACTION ),
DECLARE_METRIC_ENUM( BANKF_TRANSACTION_RESULT, COUNTER, TRANSACTION_RESULT, BUNDLE_PEER ),
DECLARE_METRIC_ENUM( BANKF_TRANSACTION_LANDED, COUNTER, TRANSACTION_LANDED, LANDED_SUCCESS ),
DECLARE_METRIC_ENUM( BANKF_TRANSACTION_LANDED, COUNTER, TRANSACTION_LANDED, LANDED_FEES_ONLY ),
DECLARE_METRIC_ENUM( BANKF_TRANSACTION_LANDED, COUNTER, TRANSACTION_LANDED, LANDED_FAILED ),
DECLARE_METRIC_ENUM( BANKF_TRANSACTION_LANDED, COUNTER, TRANSACTION_LANDED, UNLANDED ),
};
14 changes: 13 additions & 1 deletion src/disco/metrics/generated/fd_metrics_bankf.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,19 @@
#define FD_METRICS_COUNTER_BANKF_TRANSACTION_RESULT_UNBALANCED_TRANSACTION_OFF (40UL)
#define FD_METRICS_COUNTER_BANKF_TRANSACTION_RESULT_BUNDLE_PEER_OFF (41UL)

#define FD_METRICS_BANKF_TOTAL (26UL)
#define FD_METRICS_COUNTER_BANKF_TRANSACTION_LANDED_OFF (42UL)
#define FD_METRICS_COUNTER_BANKF_TRANSACTION_LANDED_NAME "bankf_transaction_landed"
#define FD_METRICS_COUNTER_BANKF_TRANSACTION_LANDED_TYPE (FD_METRICS_TYPE_COUNTER)
#define FD_METRICS_COUNTER_BANKF_TRANSACTION_LANDED_DESC "Whether a transaction landed in the block or not."
#define FD_METRICS_COUNTER_BANKF_TRANSACTION_LANDED_CVT (FD_METRICS_CONVERTER_NONE)
#define FD_METRICS_COUNTER_BANKF_TRANSACTION_LANDED_CNT (4UL)

#define FD_METRICS_COUNTER_BANKF_TRANSACTION_LANDED_LANDED_SUCCESS_OFF (42UL)
#define FD_METRICS_COUNTER_BANKF_TRANSACTION_LANDED_LANDED_FEES_ONLY_OFF (43UL)
#define FD_METRICS_COUNTER_BANKF_TRANSACTION_LANDED_LANDED_FAILED_OFF (44UL)
#define FD_METRICS_COUNTER_BANKF_TRANSACTION_LANDED_UNLANDED_OFF (45UL)

#define FD_METRICS_BANKF_TOTAL (30UL)
extern const fd_metrics_meta_t FD_METRICS_BANKF[FD_METRICS_BANKF_TOTAL];

#endif /* HEADER_fd_src_disco_metrics_generated_fd_metrics_bankf_h */
11 changes: 11 additions & 0 deletions src/disco/metrics/generated/fd_metrics_enums.h
Original file line number Diff line number Diff line change
Expand Up @@ -546,6 +546,17 @@
#define FD_METRICS_ENUM_TRANSACTION_RESULT_V_BUNDLE_PEER_IDX 25
#define FD_METRICS_ENUM_TRANSACTION_RESULT_V_BUNDLE_PEER_NAME "bundle_peer"

#define FD_METRICS_ENUM_TRANSACTION_LANDED_NAME "transaction_landed"
#define FD_METRICS_ENUM_TRANSACTION_LANDED_CNT (4UL)
#define FD_METRICS_ENUM_TRANSACTION_LANDED_V_LANDED_SUCCESS_IDX 0
#define FD_METRICS_ENUM_TRANSACTION_LANDED_V_LANDED_SUCCESS_NAME "landed_success"
#define FD_METRICS_ENUM_TRANSACTION_LANDED_V_LANDED_FEES_ONLY_IDX 1
#define FD_METRICS_ENUM_TRANSACTION_LANDED_V_LANDED_FEES_ONLY_NAME "landed_fees_only"
#define FD_METRICS_ENUM_TRANSACTION_LANDED_V_LANDED_FAILED_IDX 2
#define FD_METRICS_ENUM_TRANSACTION_LANDED_V_LANDED_FAILED_NAME "landed_failed"
#define FD_METRICS_ENUM_TRANSACTION_LANDED_V_UNLANDED_IDX 3
#define FD_METRICS_ENUM_TRANSACTION_LANDED_V_UNLANDED_NAME "unlanded"

#define FD_METRICS_ENUM_SHRED_PROCESSING_RESULT_NAME "shred_processing_result"
#define FD_METRICS_ENUM_SHRED_PROCESSING_RESULT_CNT (6UL)
#define FD_METRICS_ENUM_SHRED_PROCESSING_RESULT_V_BAD_SLOT_IDX 0
Expand Down
8 changes: 8 additions & 0 deletions src/disco/metrics/metrics.xml
Original file line number Diff line number Diff line change
Expand Up @@ -681,8 +681,16 @@ metric introduced.
<int value="25" name="BundlePeer" label="The transaction was part of a bundle and an earlier transaction in the bundle failed" />
</enum>

<enum name="TransactionLanded">
<int value="0" name="LandedSuccess" label="Transaction landed" />
<int value="1" name="LandedFeesOnly" label="Transaction landed, but was fees only and did not execute" />
<int value="2" name="LandedFailed" label="Transaction landed, but failed to execute" />
<int value="3" name="Unlanded" label="Transaction did not land" />
</enum>

<tile name="bankf">
<counter name="TransactionResult" enum="TransactionResult" summary="Result of loading and executing a transaction." />
<counter name="TransactionLanded" enum="TransactionLanded" summary="Whether a transaction landed in the block or not." />
</tile>

<tile name="bank">
Expand Down
69 changes: 39 additions & 30 deletions src/discof/bank/fd_bank_tile.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ typedef struct {

struct {
ulong txn_result[ FD_METRICS_ENUM_TRANSACTION_RESULT_CNT ];
ulong txn_landed[ FD_METRICS_ENUM_TRANSACTION_LANDED_CNT ];
} metrics;
} fd_bank_ctx_t;

Expand All @@ -83,6 +84,7 @@ scratch_footprint( fd_topo_tile_t const * tile ) {
static inline void
metrics_write( fd_bank_ctx_t * ctx ) {
FD_MCNT_ENUM_COPY( BANKF, TRANSACTION_RESULT, ctx->metrics.txn_result );
FD_MCNT_ENUM_COPY( BANKF, TRANSACTION_LANDED, ctx->metrics.txn_landed );
}

static int
Expand Down Expand Up @@ -180,32 +182,37 @@ handle_microblock( fd_bank_ctx_t * ctx,
txn->flags &= ~FD_TXN_P_FLAGS_SANITIZE_SUCCESS;
txn->flags &= ~FD_TXN_P_FLAGS_EXECUTE_SUCCESS;

txn_ctx->exec_err = fd_runtime_prepare_and_execute_txn( ctx->banks,
ctx->_bank_idx,
txn_ctx,
txn,
NULL,
&ctx->exec_stack,
&ctx->exec_accounts[0],
NULL,
NULL );
fd_bank_t * bank = fd_banks_bank_query( ctx->banks, ctx->_bank_idx );
FD_TEST( bank );
txn_ctx->err.exec_err = fd_runtime_prepare_and_execute_txn( bank,
txn_ctx,
txn,
NULL,
&ctx->exec_stack,
&ctx->exec_accounts[0],
NULL,
NULL );

/* Stash the result in the flags value so that pack can inspect it. */
txn->flags = (txn->flags & 0x00FFFFFFU) | ((uint)(-txn_ctx->exec_err)<<24);
txn->flags = (txn->flags & 0x00FFFFFFU) | ((uint)(-txn_ctx->err.exec_err)<<24);

if( FD_UNLIKELY( !(txn_ctx->flags & FD_TXN_P_FLAGS_SANITIZE_SUCCESS ) ) ) {
if( FD_UNLIKELY( !txn_ctx->err.is_committable ) ) {
FD_TEST( !txn_ctx->err.is_fees_only );
fd_pack_rebate_sum_add_txn( ctx->rebater, txn, NULL, 1UL );
ctx->metrics.txn_result[ fd_bank_err_from_runtime_err( txn_ctx->exec_err ) ]++;
ctx->metrics.txn_landed[ FD_METRICS_ENUM_TRANSACTION_LANDED_V_UNLANDED_IDX ]++;
ctx->metrics.txn_result[ fd_bank_err_from_runtime_err( txn_ctx->err.exec_err ) ]++;
continue;
}

if( FD_UNLIKELY( txn_ctx->err.is_fees_only ) ) ctx->metrics.txn_landed[ FD_METRICS_ENUM_TRANSACTION_LANDED_V_LANDED_FEES_ONLY_IDX ]++;
else if( FD_UNLIKELY( txn_ctx->err.txn_err ) ) ctx->metrics.txn_landed[ FD_METRICS_ENUM_TRANSACTION_LANDED_V_LANDED_FAILED_IDX ]++;
else ctx->metrics.txn_landed[ FD_METRICS_ENUM_TRANSACTION_LANDED_V_LANDED_SUCCESS_IDX ]++;

/* TXN_P_FLAGS_EXECUTE_SUCCESS means that it should be included in
the block. It's a bit of a misnomer now that there are fee-only
transactions. */
FD_TEST( txn_ctx->flags & FD_TXN_P_FLAGS_EXECUTE_SUCCESS );
txn->flags |= FD_TXN_P_FLAGS_EXECUTE_SUCCESS | FD_TXN_P_FLAGS_SANITIZE_SUCCESS;

ctx->metrics.txn_result[ fd_bank_err_from_runtime_err( txn_ctx->exec_err ) ]++;
ctx->metrics.txn_result[ fd_bank_err_from_runtime_err( txn_ctx->err.exec_err ) ]++;

/* Commit must succeed so no failure path. Once commit is called,
the transactions MUST be mixed into the PoH otherwise we will
Expand All @@ -221,10 +228,10 @@ handle_microblock( fd_bank_ctx_t * ctx,
in finalize anyway. */
fd_runtime_finalize_txn( ctx->txn_ctx->funk, ctx->txn_ctx->progcache, txn_ctx->status_cache, txn_ctx->xid, txn_ctx, bank, NULL, &tips );

if( FD_UNLIKELY( !txn_ctx->flags ) ) {
if( FD_UNLIKELY( !txn_ctx->err.is_committable ) ) {
/* If the transaction failed to fit into the block, we need to
updated the transaction flag with the error code. */
txn->flags = (txn->flags & 0x00FFFFFFU) | ((uint)(-txn_ctx->exec_err)<<24);
txn->flags = (txn->flags & 0x00FFFFFFU) | ((uint)(-txn_ctx->err.exec_err)<<24);
fd_cost_tracker_t * cost_tracker = fd_bank_cost_tracker_locking_modify( bank );
uchar * signature = (uchar *)txn_ctx->txn.payload + TXN( &txn_ctx->txn )->signature_off;
int res = fd_cost_tracker_calculate_cost_and_add( cost_tracker, txn_ctx );
Expand All @@ -238,8 +245,8 @@ handle_microblock( fd_bank_ctx_t * ctx,
cost_tracker->account_cost_limit ));
}

uint actual_execution_cus = (uint)(txn_ctx->compute_budget_details.compute_unit_limit - txn_ctx->compute_budget_details.compute_meter);
uint actual_acct_data_cus = (uint)(txn_ctx->loaded_accounts_data_size_cost);
uint actual_execution_cus = (uint)(txn_ctx->details.compute_budget.compute_unit_limit - txn_ctx->details.compute_budget.compute_meter);
uint actual_acct_data_cus = (uint)(txn_ctx->details.loaded_accounts_data_size_cost);

int is_simple_vote = 0;
if( FD_UNLIKELY( is_simple_vote = fd_txn_is_simple_vote_transaction( TXN(txn), txn->payload ) ) ) {
Expand All @@ -261,7 +268,7 @@ handle_microblock( fd_bank_ctx_t * ctx,
that first the non-alt accounts are laid out, then the writable
alt accounts, and finally the read-only alt accounts. */
fd_txn_t * txn_descriptor = TXN( &txn_ctx->txn );
fd_acct_addr_t const * writable_alt = fd_type_pun_const( txn_ctx->account_keys+txn_descriptor->acct_addr_cnt );
fd_acct_addr_t const * writable_alt = fd_type_pun_const( txn_ctx->accounts.account_keys+txn_descriptor->acct_addr_cnt );
fd_pack_rebate_sum_add_txn( ctx->rebater, txn, &writable_alt, 1UL );

/* The VM will stop executing and fail an instruction immediately if
Expand All @@ -273,7 +280,7 @@ handle_microblock( fd_bank_ctx_t * ctx,
FD_LOG_ERR(( "Actual CUs unexpectedly exceeded requested amount. actual_execution_cus (%u) actual_acct_data_cus "
"(%u) requested_exec_plus_acct_data_cus (%u) is_simple_vote (%i) exec_failed (%i)",
actual_execution_cus, actual_acct_data_cus, requested_exec_plus_acct_data_cus, is_simple_vote,
txn_ctx->exec_err ));
txn_ctx->err.exec_err ));
}

}
Expand Down Expand Up @@ -364,15 +371,17 @@ handle_bundle( fd_bank_ctx_t * ctx,
txn->flags = (txn->flags & 0x00FFFFFFU) | ((uint)(-FD_RUNTIME_TXN_ERR_BUNDLE_PEER)<<24);
continue;
}

txn_ctx->exec_err = fd_runtime_prepare_and_execute_txn( ctx->banks, ctx->_bank_idx, txn_ctx, txn, NULL, &ctx->exec_stack, &ctx->exec_accounts[ i ], NULL, NULL );
txn->flags = (txn->flags & 0x00FFFFFFU) | ((uint)(-txn_ctx->exec_err)<<24);
if( FD_UNLIKELY( !(txn_ctx->flags & FD_TXN_P_FLAGS_SANITIZE_SUCCESS ) || txn_ctx->exec_err ) ) {
fd_bank_t * bank = fd_banks_bank_query( ctx->banks, ctx->_bank_idx );
FD_TEST( bank );
txn_ctx->bundle.is_bundle = 1;
txn_ctx->err.exec_err = fd_runtime_prepare_and_execute_txn( bank, txn_ctx, txn, NULL, &ctx->exec_stack, &ctx->exec_accounts[ i ], NULL, NULL );
txn->flags = (txn->flags & 0x00FFFFFFU) | ((uint)(-txn_ctx->err.exec_err)<<24);
if( FD_UNLIKELY( !txn_ctx->err.is_committable || txn_ctx->err.exec_err!=FD_RUNTIME_EXECUTE_SUCCESS ) ) {
execution_success = 0;
continue;
}

writable_alt[i] = fd_type_pun_const( txn_ctx->account_keys+TXN( &txn_ctx->txn )->acct_addr_cnt );
writable_alt[i] = fd_type_pun_const( txn_ctx->accounts.account_keys+TXN( &txn_ctx->txn )->acct_addr_cnt );
}

/* If all of the transactions in the bundle executed successfully, we
Expand All @@ -388,8 +397,8 @@ handle_bundle( fd_bank_ctx_t * ctx,

txns[ i ].flags |= FD_TXN_P_FLAGS_EXECUTE_SUCCESS | FD_TXN_P_FLAGS_SANITIZE_SUCCESS;
fd_runtime_finalize_txn( txn_ctx->funk, txn_ctx->progcache, txn_ctx->status_cache, txn_ctx->xid, txn_ctx, bank, NULL, &tips[ i ] );
if( FD_UNLIKELY( !txn_ctx->flags ) ) {
txns[ i ].flags = (txns[ i ].flags & 0x00FFFFFFU) | ((uint)(-txn_ctx->exec_err)<<24);
if( FD_UNLIKELY( !txn_ctx->err.is_committable ) ) {
txns[ i ].flags = (txns[ i ].flags & 0x00FFFFFFU) | ((uint)(-txn_ctx->err.exec_err)<<24);
fd_cost_tracker_t * cost_tracker = fd_bank_cost_tracker_locking_modify( bank );
int res = fd_cost_tracker_calculate_cost_and_add( cost_tracker, txn_ctx );
FD_LOG_HEXDUMP_WARNING(( "txn", txns[ i ].payload, txns[ i ].payload_sz ));
Expand All @@ -402,8 +411,8 @@ handle_bundle( fd_bank_ctx_t * ctx,
cost_tracker->account_cost_limit ));
}

uint actual_execution_cus = (uint)(txn_ctx->compute_budget_details.compute_unit_limit - txn_ctx->compute_budget_details.compute_meter);
uint actual_acct_data_cus = (uint)(txn_ctx->loaded_accounts_data_size_cost);
uint actual_execution_cus = (uint)(txn_ctx->details.compute_budget.compute_unit_limit - txn_ctx->details.compute_budget.compute_meter);
uint actual_acct_data_cus = (uint)(txn_ctx->details.loaded_accounts_data_size_cost);
if( FD_UNLIKELY( fd_txn_is_simple_vote_transaction( TXN( &txns[ i ] ), txns[ i ].payload ) ) ) {
actual_execution_cus = FD_PACK_VOTE_DEFAULT_COMPUTE_UNITS;
actual_acct_data_cus = 0U;
Expand Down
Loading
Loading