Line data Source code
1 : #ifndef HEADER_fd_src_discof_bank_fd_bank_err_h 2 : #define HEADER_fd_src_discof_bank_fd_bank_err_h 3 : 4 : #include "../../util/log/fd_log.h" 5 : #include "../../flamenco/runtime/fd_runtime_err.h" 6 : #include "../../disco/metrics/generated/fd_metrics_enums.h" 7 : 8 : 9 : static inline int 10 0 : fd_bank_err_from_runtime_err( int err ) { 11 0 : switch( err ) { 12 0 : case FD_RUNTIME_EXECUTE_SUCCESS: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_SUCCESS_IDX; 13 : 14 0 : case FD_RUNTIME_TXN_ERR_INSTRUCTION_ERROR: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_INSTRUCTON_ERROR_IDX; 15 : 16 0 : case FD_RUNTIME_TXN_ERR_ACCOUNT_NOT_FOUND: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_ACCOUNT_NOT_FOUND_IDX; 17 0 : case FD_RUNTIME_TXN_ERR_PROGRAM_ACCOUNT_NOT_FOUND: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_PROGRAM_ACCOUNT_NOT_FOUND_IDX; 18 0 : case FD_RUNTIME_TXN_ERR_INSUFFICIENT_FUNDS_FOR_FEE: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_INSUFFICIENT_FUNDS_FOR_FEE_IDX; 19 0 : case FD_RUNTIME_TXN_ERR_INVALID_ACCOUNT_FOR_FEE: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_INVALID_ACCOUNT_FOR_FEE_IDX; 20 0 : case FD_RUNTIME_TXN_ERR_ALREADY_PROCESSED: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_ALREADY_PROCESSED_IDX; 21 0 : case FD_RUNTIME_TXN_ERR_BLOCKHASH_NOT_FOUND: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_BLOCKHASH_NOT_FOUND_IDX; 22 0 : case FD_RUNTIME_TXN_ERR_INVALID_PROGRAM_FOR_EXECUTION: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_INVALID_PROGRAM_FOR_EXECUTION_IDX; 23 0 : case FD_RUNTIME_TXN_ERR_ADDRESS_LOOKUP_TABLE_NOT_FOUND: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_ADDRESS_LOOKUP_TABLE_NOT_FOUND_IDX; 24 0 : case FD_RUNTIME_TXN_ERR_INVALID_ADDRESS_LOOKUP_TABLE_OWNER: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_INVALID_ADDRESS_LOOKUP_TABLE_OWNER_IDX; 25 0 : case FD_RUNTIME_TXN_ERR_INVALID_ADDRESS_LOOKUP_TABLE_DATA: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_INVALID_ADDRESS_LOOKUP_TABLE_DATA_IDX; 26 0 : case FD_RUNTIME_TXN_ERR_INVALID_ADDRESS_LOOKUP_TABLE_INDEX: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_INVALID_ADDRESS_LOOKUP_TABLE_INDEX_IDX; 27 0 : case FD_RUNTIME_TXN_ERR_MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED_IDX; 28 0 : case FD_RUNTIME_TXN_ERR_DUPLICATE_INSTRUCTION: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_DUPLICATE_INSTRUCTION_IDX; 29 0 : case FD_RUNTIME_TXN_ERR_INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT_IDX; 30 : 31 0 : case FD_RUNTIME_TXN_ERR_ACCOUNT_IN_USE: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_ACCOUNT_IN_USE_IDX; 32 0 : case FD_RUNTIME_TXN_ERR_ACCOUNT_LOADED_TWICE: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_ACCOUNT_LOADED_TWICE_IDX; 33 0 : case FD_RUNTIME_TXN_ERR_SIGNATURE_FAILURE: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_SIGNATURE_FAILURE_IDX; 34 0 : case FD_RUNTIME_TXN_ERR_TOO_MANY_ACCOUNT_LOCKS: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_TOO_MANY_ACCOUNT_LOCKS_IDX; 35 : 36 0 : case FD_RUNTIME_TXN_ERR_INSUFFICIENT_FUNDS_FOR_RENT: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_INSUFFICIENT_FUNDS_FOR_RENT_IDX; 37 0 : case FD_RUNTIME_TXN_ERR_UNBALANCED_TRANSACTION: return FD_METRICS_ENUM_TRANSACTION_RESULT_V_UNBALANCED_TRANSACTION_IDX; 38 : 39 0 : case FD_RUNTIME_TXN_ERR_CALL_CHAIN_TOO_DEEP: 40 0 : case FD_RUNTIME_TXN_ERR_MISSING_SIGNATURE_FOR_FEE: 41 0 : case FD_RUNTIME_TXN_ERR_INVALID_ACCOUNT_INDEX: 42 0 : case FD_RUNTIME_TXN_ERR_SANITIZE_FAILURE: 43 0 : case FD_RUNTIME_TXN_ERR_CLUSTER_MAINTENANCE: 44 0 : case FD_RUNTIME_TXN_ERR_ACCOUNT_BORROW_OUTSTANDING: 45 0 : case FD_RUNTIME_TXN_ERR_WOULD_EXCEED_MAX_BLOCK_COST_LIMIT: 46 0 : case FD_RUNTIME_TXN_ERR_UNSUPPORTED_VERSION: 47 0 : case FD_RUNTIME_TXN_ERR_INVALID_WRITABLE_ACCOUNT: 48 0 : case FD_RUNTIME_TXN_ERR_WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT: 49 0 : case FD_RUNTIME_TXN_ERR_WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT: 50 0 : case FD_RUNTIME_TXN_ERR_INVALID_RENT_PAYING_ACCOUNT: 51 0 : case FD_RUNTIME_TXN_ERR_WOULD_EXCEED_MAX_VOTE_COST_LIMIT: 52 0 : case FD_RUNTIME_TXN_ERR_WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT: 53 0 : case FD_RUNTIME_TXN_ERR_RESANITIZATION_NEEDED: 54 0 : case FD_RUNTIME_TXN_ERR_PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED: 55 0 : case FD_RUNTIME_TXN_ERR_PROGRAM_CACHE_HIT_MAX_LIMIT: 56 0 : default: FD_LOG_ERR(( "Unknown runtime error %d", err )); 57 0 : } 58 : 59 0 : return 0; 60 0 : } 61 : 62 0 : #define FD_BANK_LUT_ERR_SUCCESS ( 0) 63 0 : #define FD_BANK_LUT_ERR_ADDRESS_LOOKUP_TABLE_NOT_FOUND (-1) 64 0 : #define FD_BANK_LUT_ERR_INVALID_ADDRESS_LOOKUP_TABLE_OWNER (-2) 65 0 : #define FD_BANK_LUT_ERR_INVALID_ADDRESS_LOOKUP_TABLE_DATA (-3) 66 0 : #define FD_BANK_LUT_ERR_INVALID_ADDRESS_LOOKUP_TABLE_INDEX (-5) 67 : 68 : #define FD_BANK_LUT_ERR_LAST (-5) 69 : 70 : static inline int 71 0 : fd_bank_lut_err_from_runtime_err( int err ) { 72 0 : switch( err ) { 73 0 : case FD_RUNTIME_EXECUTE_SUCCESS: return FD_BANK_LUT_ERR_SUCCESS; 74 0 : case FD_RUNTIME_TXN_ERR_ADDRESS_LOOKUP_TABLE_NOT_FOUND: return FD_BANK_LUT_ERR_ADDRESS_LOOKUP_TABLE_NOT_FOUND; 75 0 : case FD_RUNTIME_TXN_ERR_INVALID_ADDRESS_LOOKUP_TABLE_OWNER: return FD_BANK_LUT_ERR_INVALID_ADDRESS_LOOKUP_TABLE_OWNER; 76 0 : case FD_RUNTIME_TXN_ERR_INVALID_ADDRESS_LOOKUP_TABLE_DATA: return FD_BANK_LUT_ERR_INVALID_ADDRESS_LOOKUP_TABLE_DATA; 77 0 : case FD_RUNTIME_TXN_ERR_INVALID_ADDRESS_LOOKUP_TABLE_INDEX: return FD_BANK_LUT_ERR_INVALID_ADDRESS_LOOKUP_TABLE_INDEX; 78 0 : default: FD_LOG_ERR(( "Unknown runtime LUT error %d", err )); 79 0 : } 80 0 : } 81 : 82 : #endif /* HEADER_fd_src_discof_bank_fd_bank_err_h */