Files
khadhroony-bot3/idls/staking.4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7.jito_tip_distribution.V0_1_5.from_solscan.json
2026-07-30 10:27:06 +02:00

1143 lines
34 KiB
JSON

{
"address": "4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7",
"metadata": {
"name": "jito_tip_distribution",
"version": "0.1.5",
"spec": "0.1.0",
"description": "Tip distribution program, responsible for distributing funds to entitled parties."
},
"instructions": [
{
"name": "claim",
"docs": [
"Claims tokens from the [TipDistributionAccount]."
],
"discriminator": [
62,
198,
214,
193,
213,
159,
108,
210
],
"accounts": [
{
"name": "config"
},
{
"name": "tip_distribution_account",
"writable": true
},
{
"name": "merkle_root_upload_authority",
"signer": true
},
{
"name": "claim_status",
"docs": [
"Status of the claim. Used to prevent the same party from claiming multiple times."
],
"writable": true
},
{
"name": "claimant",
"docs": [
"Receiver of the funds."
],
"writable": true
},
{
"name": "payer",
"docs": [
"Who is paying for the claim."
],
"writable": true,
"signer": true
},
{
"name": "system_program"
}
],
"args": [
{
"name": "bump",
"type": "u8"
},
{
"name": "amount",
"type": "u64"
},
{
"name": "proof",
"type": {
"vec": {
"array": [
"u8",
32
]
}
}
}
]
},
{
"name": "close_claim_status",
"docs": [
"Anyone can invoke this only after the [TipDistributionAccount] has expired.",
"This instruction will return any rent back to `claimant` and close the account"
],
"discriminator": [
163,
214,
191,
165,
245,
188,
17,
185
],
"accounts": [
{
"name": "config"
},
{
"name": "claim_status",
"writable": true
},
{
"name": "claim_status_payer",
"docs": [
"Receiver of the funds."
],
"writable": true
}
],
"args": []
},
{
"name": "close_tip_distribution_account",
"docs": [
"Anyone can invoke this only after the [TipDistributionAccount] has expired.",
"This instruction will send any unclaimed funds to the designated `expired_funds_account`",
"before closing and returning the rent exempt funds to the validator."
],
"discriminator": [
47,
136,
208,
190,
125,
243,
74,
227
],
"accounts": [
{
"name": "config"
},
{
"name": "expired_funds_account",
"writable": true
},
{
"name": "tip_distribution_account",
"writable": true
},
{
"name": "validator_vote_account",
"writable": true
},
{
"name": "signer",
"docs": [
"Anyone can crank this instruction."
],
"writable": true,
"signer": true
}
],
"args": [
{
"name": "_epoch",
"type": "u64"
}
]
},
{
"name": "initialize",
"docs": [
"Initialize a singleton instance of the [Config] account."
],
"discriminator": [
175,
175,
109,
31,
13,
152,
155,
237
],
"accounts": [
{
"name": "config",
"writable": true
},
{
"name": "system_program"
},
{
"name": "initializer",
"writable": true,
"signer": true
}
],
"args": [
{
"name": "authority",
"type": "pubkey"
},
{
"name": "expired_funds_account",
"type": "pubkey"
},
{
"name": "num_epochs_valid",
"type": "u64"
},
{
"name": "max_validator_commission_bps",
"type": "u16"
},
{
"name": "bump",
"type": "u8"
}
]
},
{
"name": "initialize_merkle_root_upload_config",
"discriminator": [
232,
87,
72,
14,
89,
40,
40,
27
],
"accounts": [
{
"name": "config",
"writable": true
},
{
"name": "merkle_root_upload_config",
"writable": true
},
{
"name": "authority",
"signer": true
},
{
"name": "payer",
"writable": true,
"signer": true
},
{
"name": "system_program"
}
],
"args": [
{
"name": "authority",
"type": "pubkey"
},
{
"name": "original_authority",
"type": "pubkey"
}
]
},
{
"name": "initialize_tip_distribution_account",
"docs": [
"Initialize a new [TipDistributionAccount] associated with the given validator vote key",
"and current epoch."
],
"discriminator": [
120,
191,
25,
182,
111,
49,
179,
55
],
"accounts": [
{
"name": "config"
},
{
"name": "tip_distribution_account",
"writable": true
},
{
"name": "validator_vote_account",
"docs": [
"The validator's vote account is used to check this transaction's signer is also the authorized withdrawer."
]
},
{
"name": "signer",
"docs": [
"Must be equal to the supplied validator vote account's authorized withdrawer."
],
"writable": true,
"signer": true
},
{
"name": "system_program"
}
],
"args": [
{
"name": "merkle_root_upload_authority",
"type": "pubkey"
},
{
"name": "validator_commission_bps",
"type": "u16"
},
{
"name": "bump",
"type": "u8"
}
]
},
{
"name": "migrate_tda_merkle_root_upload_authority",
"discriminator": [
13,
226,
163,
144,
56,
202,
214,
23
],
"accounts": [
{
"name": "tip_distribution_account",
"writable": true
},
{
"name": "merkle_root_upload_config"
}
],
"args": []
},
{
"name": "update_config",
"docs": [
"Update config fields. Only the [Config] authority can invoke this."
],
"discriminator": [
29,
158,
252,
191,
10,
83,
219,
99
],
"accounts": [
{
"name": "config",
"writable": true
},
{
"name": "authority",
"writable": true,
"signer": true
}
],
"args": [
{
"name": "new_config",
"type": {
"defined": {
"name": "Config"
}
}
}
]
},
{
"name": "update_merkle_root_upload_config",
"discriminator": [
128,
227,
159,
139,
176,
128,
118,
2
],
"accounts": [
{
"name": "config"
},
{
"name": "merkle_root_upload_config",
"writable": true
},
{
"name": "authority",
"signer": true
},
{
"name": "system_program"
}
],
"args": [
{
"name": "authority",
"type": "pubkey"
},
{
"name": "original_authority",
"type": "pubkey"
}
]
},
{
"name": "upload_merkle_root",
"docs": [
"Uploads a merkle root to the provided [TipDistributionAccount]. This instruction may be",
"invoked many times as long as the account is at least one epoch old and not expired; and",
"no funds have already been claimed. Only the `merkle_root_upload_authority` has the",
"authority to invoke."
],
"discriminator": [
70,
3,
110,
29,
199,
190,
205,
176
],
"accounts": [
{
"name": "config"
},
{
"name": "tip_distribution_account",
"writable": true
},
{
"name": "merkle_root_upload_authority",
"writable": true,
"signer": true
}
],
"args": [
{
"name": "root",
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "max_total_claim",
"type": "u64"
},
{
"name": "max_num_nodes",
"type": "u64"
}
]
}
],
"accounts": [
{
"name": "ClaimStatus",
"discriminator": [
22,
183,
249,
157,
247,
95,
150,
96
]
},
{
"name": "Config",
"discriminator": [
155,
12,
170,
224,
30,
250,
204,
130
]
},
{
"name": "MerkleRootUploadConfig",
"discriminator": [
213,
125,
30,
192,
25,
121,
87,
33
]
},
{
"name": "TipDistributionAccount",
"discriminator": [
85,
64,
113,
198,
234,
94,
120,
123
]
}
],
"events": [
{
"name": "ClaimStatusClosedEvent",
"discriminator": [
188,
143,
237,
229,
192,
182,
164,
118
]
},
{
"name": "ClaimedEvent",
"discriminator": [
144,
172,
209,
86,
144,
87,
84,
115
]
},
{
"name": "ConfigUpdatedEvent",
"discriminator": [
245,
158,
129,
99,
60,
100,
214,
220
]
},
{
"name": "MerkleRootUploadAuthorityUpdatedEvent",
"discriminator": [
83,
157,
58,
165,
200,
171,
8,
106
]
},
{
"name": "MerkleRootUploadedEvent",
"discriminator": [
94,
233,
236,
49,
52,
224,
181,
167
]
},
{
"name": "TipDistributionAccountClosedEvent",
"discriminator": [
246,
152,
49,
154,
9,
79,
25,
58
]
},
{
"name": "TipDistributionAccountInitializedEvent",
"discriminator": [
39,
165,
224,
61,
40,
140,
139,
255
]
},
{
"name": "ValidatorCommissionBpsUpdatedEvent",
"discriminator": [
4,
34,
92,
25,
228,
88,
51,
206
]
}
],
"errors": [
{
"code": 6000,
"name": "AccountValidationFailure",
"msg": "Account failed validation."
},
{
"code": 6001,
"name": "ArithmeticError",
"msg": "Encountered an arithmetic under/overflow error."
},
{
"code": 6002,
"name": "ExceedsMaxClaim",
"msg": "The maximum number of funds to be claimed has been exceeded."
},
{
"code": 6003,
"name": "ExceedsMaxNumNodes",
"msg": "The maximum number of claims has been exceeded."
},
{
"code": 6004,
"name": "ExpiredTipDistributionAccount",
"msg": "The given TipDistributionAccount has expired."
},
{
"code": 6005,
"name": "FundsAlreadyClaimed",
"msg": "The funds for the given index and TipDistributionAccount have already been claimed."
},
{
"code": 6006,
"name": "InvalidParameters",
"msg": "Supplied invalid parameters."
},
{
"code": 6007,
"name": "InvalidProof",
"msg": "The given proof is invalid."
},
{
"code": 6008,
"name": "InvalidVoteAccountData",
"msg": "Failed to deserialize the supplied vote account data."
},
{
"code": 6009,
"name": "MaxValidatorCommissionFeeBpsExceeded",
"msg": "Validator's commission basis points must be less than or equal to the Config account's max_validator_commission_bps."
},
{
"code": 6010,
"name": "PrematureCloseTipDistributionAccount",
"msg": "The given TipDistributionAccount is not ready to be closed."
},
{
"code": 6011,
"name": "PrematureCloseClaimStatus",
"msg": "The given ClaimStatus account is not ready to be closed."
},
{
"code": 6012,
"name": "PrematureMerkleRootUpload",
"msg": "Must wait till at least one epoch after the tip distribution account was created to upload the merkle root."
},
{
"code": 6013,
"name": "RootNotUploaded",
"msg": "No merkle root has been uploaded to the given TipDistributionAccount."
},
{
"code": 6014,
"name": "Unauthorized",
"msg": "Unauthorized signer."
},
{
"code": 6015,
"name": "InvalidTdaForMigration",
"msg": "TDA not valid for migration."
}
],
"types": [
{
"name": "ClaimStatus",
"docs": [
"Gives us an audit trail of who and what was claimed; also enforces and only-once claim by any party."
],
"type": {
"kind": "struct",
"fields": [
{
"name": "is_claimed",
"docs": [
"If true, the tokens have been claimed."
],
"type": "bool"
},
{
"name": "claimant",
"docs": [
"Authority that claimed the tokens. Allows for delegated rewards claiming."
],
"type": "pubkey"
},
{
"name": "claim_status_payer",
"docs": [
"The payer who created the claim."
],
"type": "pubkey"
},
{
"name": "slot_claimed_at",
"docs": [
"When the funds were claimed."
],
"type": "u64"
},
{
"name": "amount",
"docs": [
"Amount of funds claimed."
],
"type": "u64"
},
{
"name": "expires_at",
"docs": [
"The epoch (upto and including) that tip funds can be claimed.",
"Copied since TDA can be closed, need to track to avoid making multiple claims"
],
"type": "u64"
},
{
"name": "bump",
"docs": [
"The bump used to generate this account"
],
"type": "u8"
}
]
}
},
{
"name": "ClaimStatusClosedEvent",
"type": {
"kind": "struct",
"fields": [
{
"name": "claim_status_payer",
"docs": [
"Account where funds were transferred to."
],
"type": "pubkey"
},
{
"name": "claim_status_account",
"docs": [
"[ClaimStatus] account that was closed."
],
"type": "pubkey"
}
]
}
},
{
"name": "ClaimedEvent",
"type": {
"kind": "struct",
"fields": [
{
"name": "tip_distribution_account",
"docs": [
"[TipDistributionAccount] claimed from."
],
"type": "pubkey"
},
{
"name": "payer",
"docs": [
"User that paid for the claim, may or may not be the same as claimant."
],
"type": "pubkey"
},
{
"name": "claimant",
"docs": [
"Account that received the funds."
],
"type": "pubkey"
},
{
"name": "amount",
"docs": [
"Amount of funds to distribute."
],
"type": "u64"
}
]
}
},
{
"name": "Config",
"type": {
"kind": "struct",
"fields": [
{
"name": "authority",
"docs": [
"Account with authority over this PDA."
],
"type": "pubkey"
},
{
"name": "expired_funds_account",
"docs": [
"We want to expire funds after some time so that validators can be refunded the rent.",
"Expired funds will get transferred to this account."
],
"type": "pubkey"
},
{
"name": "num_epochs_valid",
"docs": [
"Specifies the number of epochs a merkle root is valid for before expiring."
],
"type": "u64"
},
{
"name": "max_validator_commission_bps",
"docs": [
"The maximum commission a validator can set on their distribution account."
],
"type": "u16"
},
{
"name": "bump",
"docs": [
"The bump used to generate this account"
],
"type": "u8"
}
]
}
},
{
"name": "ConfigUpdatedEvent",
"type": {
"kind": "struct",
"fields": [
{
"name": "authority",
"docs": [
"Who updated it."
],
"type": "pubkey"
}
]
}
},
{
"name": "MerkleRoot",
"type": {
"kind": "struct",
"fields": [
{
"name": "root",
"docs": [
"The 256-bit merkle root."
],
"type": {
"array": [
"u8",
32
]
}
},
{
"name": "max_total_claim",
"docs": [
"Maximum number of funds that can ever be claimed from this [MerkleRoot]."
],
"type": "u64"
},
{
"name": "max_num_nodes",
"docs": [
"Maximum number of nodes that can ever be claimed from this [MerkleRoot]."
],
"type": "u64"
},
{
"name": "total_funds_claimed",
"docs": [
"Total funds that have been claimed."
],
"type": "u64"
},
{
"name": "num_nodes_claimed",
"docs": [
"Number of nodes that have been claimed."
],
"type": "u64"
}
]
}
},
{
"name": "MerkleRootUploadAuthorityUpdatedEvent",
"type": {
"kind": "struct",
"fields": [
{
"name": "old_authority",
"type": "pubkey"
},
{
"name": "new_authority",
"type": "pubkey"
}
]
}
},
{
"name": "MerkleRootUploadConfig",
"docs": [
"Singleton account that allows overriding TDA's merkle upload authority"
],
"type": {
"kind": "struct",
"fields": [
{
"name": "override_authority",
"docs": [
"The authority that overrides the TipDistributionAccount merkle_root_upload_authority"
],
"type": "pubkey"
},
{
"name": "original_upload_authority",
"docs": [
"The original merkle root upload authority that can be changed to the new overrided",
"authority. E.g. Jito Labs authority GZctHpWXmsZC1YHACTGGcHhYxjdRqQvTpYkb9LMvxDib"
],
"type": "pubkey"
},
{
"name": "bump",
"docs": [
"The bump used to generate this account"
],
"type": "u8"
}
]
}
},
{
"name": "MerkleRootUploadedEvent",
"type": {
"kind": "struct",
"fields": [
{
"name": "merkle_root_upload_authority",
"docs": [
"Who uploaded the root."
],
"type": "pubkey"
},
{
"name": "tip_distribution_account",
"docs": [
"Where the root was uploaded to."
],
"type": "pubkey"
}
]
}
},
{
"name": "TipDistributionAccount",
"docs": [
"The account that validators register as **tip_receiver** with the tip-payment program."
],
"type": {
"kind": "struct",
"fields": [
{
"name": "validator_vote_account",
"docs": [
"The validator's vote account, also the recipient of remaining lamports after",
"upon closing this account."
],
"type": "pubkey"
},
{
"name": "merkle_root_upload_authority",
"docs": [
"The only account authorized to upload a merkle-root for this account."
],
"type": "pubkey"
},
{
"name": "merkle_root",
"docs": [
"The merkle root used to verify user claims from this account."
],
"type": {
"option": {
"defined": {
"name": "MerkleRoot"
}
}
}
},
{
"name": "epoch_created_at",
"docs": [
"Epoch for which this account was created."
],
"type": "u64"
},
{
"name": "validator_commission_bps",
"docs": [
"The commission basis points this validator charges."
],
"type": "u16"
},
{
"name": "expires_at",
"docs": [
"The epoch (upto and including) that tip funds can be claimed."
],
"type": "u64"
},
{
"name": "bump",
"docs": [
"The bump used to generate this account"
],
"type": "u8"
}
]
}
},
{
"name": "TipDistributionAccountClosedEvent",
"type": {
"kind": "struct",
"fields": [
{
"name": "expired_funds_account",
"docs": [
"Account where unclaimed funds were transferred to."
],
"type": "pubkey"
},
{
"name": "tip_distribution_account",
"docs": [
"[TipDistributionAccount] closed."
],
"type": "pubkey"
},
{
"name": "expired_amount",
"docs": [
"Unclaimed amount transferred."
],
"type": "u64"
}
]
}
},
{
"name": "TipDistributionAccountInitializedEvent",
"type": {
"kind": "struct",
"fields": [
{
"name": "tip_distribution_account",
"type": "pubkey"
}
]
}
},
{
"name": "ValidatorCommissionBpsUpdatedEvent",
"type": {
"kind": "struct",
"fields": [
{
"name": "tip_distribution_account",
"type": "pubkey"
},
{
"name": "old_commission_bps",
"type": "u16"
},
{
"name": "new_commission_bps",
"type": "u16"
}
]
}
}
]
}