Skip to content

Commit

Permalink
AUDIT: Check block engine fee (#58)
Browse files Browse the repository at this point in the history
Check that block engine fee cannot be over MAX_BPS
  • Loading branch information
coachchucksol authored Jan 17, 2025
1 parent c991473 commit 77e3cfe
Show file tree
Hide file tree
Showing 7 changed files with 281 additions and 202 deletions.
102 changes: 53 additions & 49 deletions clients/js/jito_tip_router/errors/jitoTipRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,104 +76,106 @@ export const JITO_TIP_ROUTER_ERROR__VAULT_INDEX_ALREADY_IN_USE = 0x2213; // 8723
export const JITO_TIP_ROUTER_ERROR__MINT_ENTRY_NOT_FOUND = 0x2214; // 8724
/** FeeCapExceeded: Fee cap exceeded */
export const JITO_TIP_ROUTER_ERROR__FEE_CAP_EXCEEDED = 0x2215; // 8725
/** TotalFeesCannotBeZero: Total fees cannot be 0 */
export const JITO_TIP_ROUTER_ERROR__TOTAL_FEES_CANNOT_BE_ZERO = 0x2216; // 8726
/** DefaultDaoWallet: DAO wallet cannot be default */
export const JITO_TIP_ROUTER_ERROR__DEFAULT_DAO_WALLET = 0x2216; // 8726
export const JITO_TIP_ROUTER_ERROR__DEFAULT_DAO_WALLET = 0x2217; // 8727
/** IncorrectNcnAdmin: Incorrect NCN Admin */
export const JITO_TIP_ROUTER_ERROR__INCORRECT_NCN_ADMIN = 0x2217; // 8727
export const JITO_TIP_ROUTER_ERROR__INCORRECT_NCN_ADMIN = 0x2218; // 8728
/** IncorrectNcn: Incorrect NCN */
export const JITO_TIP_ROUTER_ERROR__INCORRECT_NCN = 0x2218; // 8728
export const JITO_TIP_ROUTER_ERROR__INCORRECT_NCN = 0x2219; // 8729
/** IncorrectFeeAdmin: Incorrect fee admin */
export const JITO_TIP_ROUTER_ERROR__INCORRECT_FEE_ADMIN = 0x2219; // 8729
export const JITO_TIP_ROUTER_ERROR__INCORRECT_FEE_ADMIN = 0x221a; // 8730
/** WeightTableNotFinalized: Weight table not finalized */
export const JITO_TIP_ROUTER_ERROR__WEIGHT_TABLE_NOT_FINALIZED = 0x221a; // 8730
export const JITO_TIP_ROUTER_ERROR__WEIGHT_TABLE_NOT_FINALIZED = 0x221b; // 8731
/** WeightNotFound: Weight not found */
export const JITO_TIP_ROUTER_ERROR__WEIGHT_NOT_FOUND = 0x221b; // 8731
export const JITO_TIP_ROUTER_ERROR__WEIGHT_NOT_FOUND = 0x221c; // 8732
/** NoOperators: No operators in ncn */
export const JITO_TIP_ROUTER_ERROR__NO_OPERATORS = 0x221c; // 8732
export const JITO_TIP_ROUTER_ERROR__NO_OPERATORS = 0x221d; // 8733
/** VaultOperatorDelegationFinalized: Vault operator delegation is already finalized - should not happen */
export const JITO_TIP_ROUTER_ERROR__VAULT_OPERATOR_DELEGATION_FINALIZED = 0x221d; // 8733
export const JITO_TIP_ROUTER_ERROR__VAULT_OPERATOR_DELEGATION_FINALIZED = 0x221e; // 8734
/** OperatorFinalized: Operator is already finalized - should not happen */
export const JITO_TIP_ROUTER_ERROR__OPERATOR_FINALIZED = 0x221e; // 8734
export const JITO_TIP_ROUTER_ERROR__OPERATOR_FINALIZED = 0x221f; // 8735
/** TooManyVaultOperatorDelegations: Too many vault operator delegations */
export const JITO_TIP_ROUTER_ERROR__TOO_MANY_VAULT_OPERATOR_DELEGATIONS = 0x221f; // 8735
export const JITO_TIP_ROUTER_ERROR__TOO_MANY_VAULT_OPERATOR_DELEGATIONS = 0x2220; // 8736
/** DuplicateVaultOperatorDelegation: Duplicate vault operator delegation */
export const JITO_TIP_ROUTER_ERROR__DUPLICATE_VAULT_OPERATOR_DELEGATION = 0x2220; // 8736
export const JITO_TIP_ROUTER_ERROR__DUPLICATE_VAULT_OPERATOR_DELEGATION = 0x2221; // 8737
/** DuplicateVoteCast: Duplicate Vote Cast */
export const JITO_TIP_ROUTER_ERROR__DUPLICATE_VOTE_CAST = 0x2221; // 8737
export const JITO_TIP_ROUTER_ERROR__DUPLICATE_VOTE_CAST = 0x2222; // 8738
/** OperatorVotesFull: Operator votes full */
export const JITO_TIP_ROUTER_ERROR__OPERATOR_VOTES_FULL = 0x2222; // 8738
export const JITO_TIP_ROUTER_ERROR__OPERATOR_VOTES_FULL = 0x2223; // 8739
/** BallotTallyFull: Merkle root tally full */
export const JITO_TIP_ROUTER_ERROR__BALLOT_TALLY_FULL = 0x2223; // 8739
export const JITO_TIP_ROUTER_ERROR__BALLOT_TALLY_FULL = 0x2224; // 8740
/** BallotTallyNotFoundFull: Ballot tally not found */
export const JITO_TIP_ROUTER_ERROR__BALLOT_TALLY_NOT_FOUND_FULL = 0x2224; // 8740
export const JITO_TIP_ROUTER_ERROR__BALLOT_TALLY_NOT_FOUND_FULL = 0x2225; // 8741
/** BallotTallyNotEmpty: Ballot tally not empty */
export const JITO_TIP_ROUTER_ERROR__BALLOT_TALLY_NOT_EMPTY = 0x2225; // 8741
export const JITO_TIP_ROUTER_ERROR__BALLOT_TALLY_NOT_EMPTY = 0x2226; // 8742
/** ConsensusAlreadyReached: Consensus already reached, cannot change vote */
export const JITO_TIP_ROUTER_ERROR__CONSENSUS_ALREADY_REACHED = 0x2226; // 8742
export const JITO_TIP_ROUTER_ERROR__CONSENSUS_ALREADY_REACHED = 0x2227; // 8743
/** ConsensusNotReached: Consensus not reached */
export const JITO_TIP_ROUTER_ERROR__CONSENSUS_NOT_REACHED = 0x2227; // 8743
export const JITO_TIP_ROUTER_ERROR__CONSENSUS_NOT_REACHED = 0x2228; // 8744
/** EpochSnapshotNotFinalized: Epoch snapshot not finalized */
export const JITO_TIP_ROUTER_ERROR__EPOCH_SNAPSHOT_NOT_FINALIZED = 0x2228; // 8744
export const JITO_TIP_ROUTER_ERROR__EPOCH_SNAPSHOT_NOT_FINALIZED = 0x2229; // 8745
/** VotingNotValid: Voting not valid, too many slots after consensus reached */
export const JITO_TIP_ROUTER_ERROR__VOTING_NOT_VALID = 0x2229; // 8745
export const JITO_TIP_ROUTER_ERROR__VOTING_NOT_VALID = 0x222a; // 8746
/** TieBreakerAdminInvalid: Tie breaker admin invalid */
export const JITO_TIP_ROUTER_ERROR__TIE_BREAKER_ADMIN_INVALID = 0x222a; // 8746
export const JITO_TIP_ROUTER_ERROR__TIE_BREAKER_ADMIN_INVALID = 0x222b; // 8747
/** VotingNotFinalized: Voting not finalized */
export const JITO_TIP_ROUTER_ERROR__VOTING_NOT_FINALIZED = 0x222b; // 8747
export const JITO_TIP_ROUTER_ERROR__VOTING_NOT_FINALIZED = 0x222c; // 8748
/** TieBreakerNotInPriorVotes: Tie breaking ballot must be one of the prior votes */
export const JITO_TIP_ROUTER_ERROR__TIE_BREAKER_NOT_IN_PRIOR_VOTES = 0x222c; // 8748
export const JITO_TIP_ROUTER_ERROR__TIE_BREAKER_NOT_IN_PRIOR_VOTES = 0x222d; // 8749
/** InvalidMerkleProof: Invalid merkle proof */
export const JITO_TIP_ROUTER_ERROR__INVALID_MERKLE_PROOF = 0x222d; // 8749
export const JITO_TIP_ROUTER_ERROR__INVALID_MERKLE_PROOF = 0x222e; // 8750
/** OperatorAdminInvalid: Operator admin needs to sign its vote */
export const JITO_TIP_ROUTER_ERROR__OPERATOR_ADMIN_INVALID = 0x222e; // 8750
export const JITO_TIP_ROUTER_ERROR__OPERATOR_ADMIN_INVALID = 0x222f; // 8751
/** InvalidNcnFeeGroup: Not a valid NCN fee group */
export const JITO_TIP_ROUTER_ERROR__INVALID_NCN_FEE_GROUP = 0x222f; // 8751
export const JITO_TIP_ROUTER_ERROR__INVALID_NCN_FEE_GROUP = 0x2230; // 8752
/** InvalidBaseFeeGroup: Not a valid base fee group */
export const JITO_TIP_ROUTER_ERROR__INVALID_BASE_FEE_GROUP = 0x2230; // 8752
export const JITO_TIP_ROUTER_ERROR__INVALID_BASE_FEE_GROUP = 0x2231; // 8753
/** OperatorRewardListFull: Operator reward list full */
export const JITO_TIP_ROUTER_ERROR__OPERATOR_REWARD_LIST_FULL = 0x2231; // 8753
export const JITO_TIP_ROUTER_ERROR__OPERATOR_REWARD_LIST_FULL = 0x2232; // 8754
/** OperatorRewardNotFound: Operator Reward not found */
export const JITO_TIP_ROUTER_ERROR__OPERATOR_REWARD_NOT_FOUND = 0x2232; // 8754
export const JITO_TIP_ROUTER_ERROR__OPERATOR_REWARD_NOT_FOUND = 0x2233; // 8755
/** VaultRewardNotFound: Vault Reward not found */
export const JITO_TIP_ROUTER_ERROR__VAULT_REWARD_NOT_FOUND = 0x2233; // 8755
export const JITO_TIP_ROUTER_ERROR__VAULT_REWARD_NOT_FOUND = 0x2234; // 8756
/** DestinationMismatch: Destination mismatch */
export const JITO_TIP_ROUTER_ERROR__DESTINATION_MISMATCH = 0x2234; // 8756
export const JITO_TIP_ROUTER_ERROR__DESTINATION_MISMATCH = 0x2235; // 8757
/** NcnRewardRouteNotFound: Ncn reward route not found */
export const JITO_TIP_ROUTER_ERROR__NCN_REWARD_ROUTE_NOT_FOUND = 0x2235; // 8757
export const JITO_TIP_ROUTER_ERROR__NCN_REWARD_ROUTE_NOT_FOUND = 0x2236; // 8758
/** FeeNotActive: Fee not active */
export const JITO_TIP_ROUTER_ERROR__FEE_NOT_ACTIVE = 0x2236; // 8758
export const JITO_TIP_ROUTER_ERROR__FEE_NOT_ACTIVE = 0x2237; // 8759
/** NoRewards: No rewards to distribute */
export const JITO_TIP_ROUTER_ERROR__NO_REWARDS = 0x2237; // 8759
export const JITO_TIP_ROUTER_ERROR__NO_REWARDS = 0x2238; // 8760
/** NoFeedWeightNotSet: No Feed Weight not set */
export const JITO_TIP_ROUTER_ERROR__NO_FEED_WEIGHT_NOT_SET = 0x2238; // 8760
export const JITO_TIP_ROUTER_ERROR__NO_FEED_WEIGHT_NOT_SET = 0x2239; // 8761
/** SwitchboardNotRegistered: Switchboard not registered */
export const JITO_TIP_ROUTER_ERROR__SWITCHBOARD_NOT_REGISTERED = 0x2239; // 8761
export const JITO_TIP_ROUTER_ERROR__SWITCHBOARD_NOT_REGISTERED = 0x223a; // 8762
/** BadSwitchboardFeed: Bad switchboard feed */
export const JITO_TIP_ROUTER_ERROR__BAD_SWITCHBOARD_FEED = 0x223a; // 8762
export const JITO_TIP_ROUTER_ERROR__BAD_SWITCHBOARD_FEED = 0x223b; // 8763
/** BadSwitchboardValue: Bad switchboard value */
export const JITO_TIP_ROUTER_ERROR__BAD_SWITCHBOARD_VALUE = 0x223b; // 8763
export const JITO_TIP_ROUTER_ERROR__BAD_SWITCHBOARD_VALUE = 0x223c; // 8764
/** StaleSwitchboardFeed: Stale switchboard feed */
export const JITO_TIP_ROUTER_ERROR__STALE_SWITCHBOARD_FEED = 0x223c; // 8764
export const JITO_TIP_ROUTER_ERROR__STALE_SWITCHBOARD_FEED = 0x223d; // 8765
/** NoFeedWeightOrSwitchboardFeed: Weight entry needs either a feed or a no feed weight */
export const JITO_TIP_ROUTER_ERROR__NO_FEED_WEIGHT_OR_SWITCHBOARD_FEED = 0x223d; // 8765
export const JITO_TIP_ROUTER_ERROR__NO_FEED_WEIGHT_OR_SWITCHBOARD_FEED = 0x223e; // 8766
/** RouterStillRouting: Router still routing */
export const JITO_TIP_ROUTER_ERROR__ROUTER_STILL_ROUTING = 0x223e; // 8766
export const JITO_TIP_ROUTER_ERROR__ROUTER_STILL_ROUTING = 0x223f; // 8767
/** InvalidEpochsBeforeStall: Invalid epochs before stall */
export const JITO_TIP_ROUTER_ERROR__INVALID_EPOCHS_BEFORE_STALL = 0x223f; // 8767
export const JITO_TIP_ROUTER_ERROR__INVALID_EPOCHS_BEFORE_STALL = 0x2240; // 8768
/** InvalidSlotsAfterConsensus: Invalid slots after consensus */
export const JITO_TIP_ROUTER_ERROR__INVALID_SLOTS_AFTER_CONSENSUS = 0x2240; // 8768
export const JITO_TIP_ROUTER_ERROR__INVALID_SLOTS_AFTER_CONSENSUS = 0x2241; // 8769
/** VaultNeedsUpdate: Vault needs to be updated */
export const JITO_TIP_ROUTER_ERROR__VAULT_NEEDS_UPDATE = 0x2241; // 8769
export const JITO_TIP_ROUTER_ERROR__VAULT_NEEDS_UPDATE = 0x2242; // 8770
/** InvalidAccountStatus: Invalid Account Status */
export const JITO_TIP_ROUTER_ERROR__INVALID_ACCOUNT_STATUS = 0x2242; // 8770
export const JITO_TIP_ROUTER_ERROR__INVALID_ACCOUNT_STATUS = 0x2243; // 8771
/** AccountAlreadyInitialized: Account already initialized */
export const JITO_TIP_ROUTER_ERROR__ACCOUNT_ALREADY_INITIALIZED = 0x2243; // 8771
export const JITO_TIP_ROUTER_ERROR__ACCOUNT_ALREADY_INITIALIZED = 0x2244; // 8772
/** BadBallot: Cannot vote with uninitialized account */
export const JITO_TIP_ROUTER_ERROR__BAD_BALLOT = 0x2244; // 8772
export const JITO_TIP_ROUTER_ERROR__BAD_BALLOT = 0x2245; // 8773
/** VotingIsNotOver: Cannot route until voting is over */
export const JITO_TIP_ROUTER_ERROR__VOTING_IS_NOT_OVER = 0x2245; // 8773
export const JITO_TIP_ROUTER_ERROR__VOTING_IS_NOT_OVER = 0x2246; // 8774
/** OperatorIsNotInSnapshot: Operator is not in snapshot */
export const JITO_TIP_ROUTER_ERROR__OPERATOR_IS_NOT_IN_SNAPSHOT = 0x2246; // 8774
export const JITO_TIP_ROUTER_ERROR__OPERATOR_IS_NOT_IN_SNAPSHOT = 0x2247; // 8775

export type JitoTipRouterError =
| typeof JITO_TIP_ROUTER_ERROR__ACCOUNT_ALREADY_INITIALIZED
Expand Down Expand Up @@ -241,6 +243,7 @@ export type JitoTipRouterError =
| typeof JITO_TIP_ROUTER_ERROR__TOO_MANY_MINTS_FOR_TABLE
| typeof JITO_TIP_ROUTER_ERROR__TOO_MANY_VAULT_OPERATOR_DELEGATIONS
| typeof JITO_TIP_ROUTER_ERROR__TOO_MANY_VAULTS_FOR_REGISTRY
| typeof JITO_TIP_ROUTER_ERROR__TOTAL_FEES_CANNOT_BE_ZERO
| typeof JITO_TIP_ROUTER_ERROR__VAULT_INDEX_ALREADY_IN_USE
| typeof JITO_TIP_ROUTER_ERROR__VAULT_NEEDS_UPDATE
| typeof JITO_TIP_ROUTER_ERROR__VAULT_NOT_IN_REGISTRY
Expand Down Expand Up @@ -325,6 +328,7 @@ if (process.env.NODE_ENV !== 'production') {
[JITO_TIP_ROUTER_ERROR__TOO_MANY_MINTS_FOR_TABLE]: `Too many mints for table`,
[JITO_TIP_ROUTER_ERROR__TOO_MANY_VAULT_OPERATOR_DELEGATIONS]: `Too many vault operator delegations`,
[JITO_TIP_ROUTER_ERROR__TOO_MANY_VAULTS_FOR_REGISTRY]: `Too many vaults for registry`,
[JITO_TIP_ROUTER_ERROR__TOTAL_FEES_CANNOT_BE_ZERO]: `Total fees cannot be 0`,
[JITO_TIP_ROUTER_ERROR__VAULT_INDEX_ALREADY_IN_USE]: `Vault index already in use by a different mint`,
[JITO_TIP_ROUTER_ERROR__VAULT_NEEDS_UPDATE]: `Vault needs to be updated`,
[JITO_TIP_ROUTER_ERROR__VAULT_NOT_IN_REGISTRY]: `Vault not in weight table registry`,
Expand Down
Loading

0 comments on commit 77e3cfe

Please sign in to comment.