Arcium LogoArcium TS SDK Docs
@arcium-hq/clientType aliases

ArciumIdlType

ArciumIdlType = object

Program IDL in camelCase format in order to be used in JS/TS.

Note that this is only a type helper and is not the actual IDL. The original IDL can be found at target/idl/arcium.json.

Properties

accounts

accounts: [{ discriminator: [2, 207, 122, 223, 93, 97, 231, 199]; name: "arxNode"; }, { discriminator: [152, 171, 158, 195, 75, 61, 51, 8]; name: "clockAccount"; }, { discriminator: [236, 225, 118, 228, 173, 106, 18, 60]; name: "cluster"; }, { discriminator: [136, 34, 167, 71, 41, 174, 103, 77]; name: "computationAccount"; }, { discriminator: [245, 176, 217, 221, 253, 104, 172, 200]; name: "computationDefinitionAccount"; }, { discriminator: [226, 70, 57, 224, 38, 233, 59, 136]; name: "computationDefinitionRaw"; }, { discriminator: [132, 11, 106, 171, 253, 138, 56, 78]; name: "failureClaimAccountHeader"; }, { discriminator: [172, 38, 77, 146, 148, 5, 51, 242]; name: "feePool"; }, { discriminator: [147, 145, 148, 170, 30, 13, 43, 216]; name: "largeExecPool"; }, { discriminator: [16, 168, 90, 235, 249, 207, 73, 223]; name: "largeMempool"; }, { discriminator: [103, 26, 85, 250, 179, 159, 17, 117]; name: "mxeAccount"; }, { discriminator: [97, 117, 128, 202, 213, 76, 5, 163]; name: "mediumExecPool"; }, { discriminator: [10, 249, 58, 39, 255, 231, 199, 168]; name: "mediumMempool"; }, { discriminator: [35, 240, 187, 131, 211, 114, 166, 11]; name: "mxeRecoveryAccount"; }, { discriminator: [219, 31, 188, 145, 69, 139, 204, 117]; name: "operator"; }, { discriminator: [113, 236, 217, 203, 251, 98, 36, 240]; name: "permissionedRecoveryPeersAccount"; }, { discriminator: [116, 60, 120, 184, 194, 209, 87, 183]; name: "recoveryClusterAccount"; }, { discriminator: [126, 243, 17, 238, 223, 222, 130, 120]; name: "recoveryPeerAccount"; }, { discriminator: [37, 147, 249, 253, 217, 136, 3, 87]; name: "smallExecPool"; }, { discriminator: [123, 153, 151, 118, 126, 71, 73, 92]; name: "smallMempool"; }, { discriminator: [80, 245, 5, 90, 154, 189, 190, 172]; name: "tinyExecPool"; }, { discriminator: [176, 33, 67, 108, 73, 135, 110, 166]; name: "tinyMempool"; }]


address

address: "Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ"


errors

errors: [{ code: 6000; msg: "The given authority is invalid"; name: "invalidAuthority"; }, { code: 6001; msg: "The MXE keys are already set, i.e. all the nodes of the MXE cluster already agreed on the MXE keys"; name: "mxeKeysAlreadySet"; }, { code: 6002; msg: "The MXE keys are not set, i.e. not all the nodes of the MXE cluster agreed on the MXE keys"; name: "mxeKeysNotSet"; }, { code: 6003; msg: "An invalid MXE account has been supplied"; name: "invalidMxe"; }, { code: 6004; msg: "The cluster is already set"; name: "clusterAlreadySet"; }, { code: 6005; msg: "The cluster is not set"; name: "clusterNotSet"; }, { code: 6006; msg: "An invalid cluster account has been supplied"; name: "invalidCluster"; }, { code: 6007; msg: "An invalid computation definition account has been supplied"; name: "invalidComputationDefinition"; }, { code: 6008; msg: "Couldn't find a mempool ID for the computation"; name: "cantFindMempoolId"; }, { code: 6009; msg: "MXE has unclosed computation definitions"; name: "mxeHasComputationDefinitions"; }, { code: 6010; msg: "MXE keygen is not finalized"; name: "mxeKeygenNotFinalized"; }, { code: 6100; msg: "Mempool discriminator is invalid"; name: "invalidMempoolDiscriminator"; }, { code: 6101; msg: "Mempool size is invalid"; name: "invalidMempoolSize"; }, { code: 6102; msg: "Execpool discriminator is invalid"; name: "invalidExecpoolDiscriminator"; }, { code: 6103; msg: "Max parallelism reached"; name: "maxParallelismReached"; }, { code: 6104; msg: "Mempool is already at its full allocated size"; name: "mempoolAlreadyFullSize"; }, { code: 6200; msg: "Computation offset is invalid"; name: "invalidComputationOffset"; }, { code: 6201; msg: "Callback accounts are invalid"; name: "invalidCallbackAccs"; }, { code: 6202; msg: "Callback accounts length is invalid"; name: "invalidCallbackAccsLen"; }, { code: 6203; msg: "The computation is already initialized"; name: "alreadyInitializedComputation"; }, { code: 6204; msg: "Callback computation already called"; name: "alreadyCallbackedComputation"; }, { code: 6205; msg: "Callback tx is invalid"; name: "invalidCallbackTx"; }, { code: 6206; msg: "Computation status is invalid"; name: "invalidComputationStatus"; }, { code: 6207; msg: "Computation is invalid"; name: "invalidComputation"; }, { code: 6208; msg: "Computation authority is invalid"; name: "invalidComputationAuthority"; }, { code: 6209; msg: "Callback instructions are invalid"; name: "invalidCallbackInstructions"; }, { code: 6210; msg: "Computation has not expired from mempool yet"; name: "computationNotExpired"; }, { code: 6211; msg: "Invalid callback transaction index"; name: "invalidCallbackIndex"; }, { code: 6212; msg: "Multi-transaction callbacks disabled"; name: "multiTxCallbacksDisabled"; }, { code: 6300; msg: "Computation definition is not completed"; name: "computationDefinitionNotCompleted"; }, { code: 6301; msg: "Arguments supplied are invalid"; name: "invalidArguments"; }, { code: 6302; msg: "Circuit source is invalid"; name: "invalidCircuitSource"; }, { code: 6303; msg: "Computation definition already completed"; name: "computationDefinitionAlreadyCompleted"; }, { code: 6304; msg: "CU amount exceeds maximum limit"; name: "invalidCuAmount"; }, { code: 6305; msg: "Offset is invalid"; name: "invalidOffset"; }, { code: 6306; msg: "Computation definition is deactivated"; name: "computationDefinitionDeactivated"; }, { code: 6307; msg: "Computation definition is not deactivated"; name: "computationDefinitionNotDeactivated"; }, { code: 6308; msg: "Computation definition has active computations"; name: "computationDefinitionHasActiveComputations"; }, { code: 6309; msg: "Computation definition TTL not passed"; name: "computationDefinitionTtlNotPassed"; }, { code: 6310; msg: "Cannot close a reserved computation definition"; name: "cannotCloseReservedComputationDefinition"; }, { code: 6400; msg: "Node is invalid"; name: "invalidNode"; }, { code: 6401; msg: "Maximum number of nodes in the cluster has been reached"; name: "maxClusterMembershipReached"; }, { code: 6402; msg: "The node already exists in the cluster"; name: "nodeAlreadyExists"; }, { code: 6403; msg: "Node authority is invalid"; name: "invalidNodeAuthority"; }, { code: 6404; msg: "Node is not inactive"; name: "nodeNotInactive"; }, { code: 6405; msg: "Node is not active"; name: "nodeNotActive"; }, { code: 6406; msg: "Cluster membership is invalid"; name: "invalidClusterMembership"; }, { code: 6407; msg: "Node is in an active cluster"; name: "nodeInActiveCluster"; }, { code: 6408; msg: "Node config is invalid"; name: "invalidNodeConfig"; }, { code: 6409; msg: "Unauthorized to create node on mainnet"; name: "unauthorizedNodeCreation"; }, { code: 6410; msg: "Node offset is invalid"; name: "invalidNodeOffset"; }, { code: 6411; msg: "The provided staking pool signer is not the staking program's StakingPoolAccount PDA"; name: "invalidStakingPoolSigner"; }, { code: 6412; msg: "The provided primary stake account is not owned by the staking program or does not match the node's bound staking account"; name: "invalidStakingAccount"; }, { code: 6500; msg: "Cluster is full"; name: "clusterFull"; }, { code: 6501; msg: "Cluster deactivation epoch is invalid"; name: "invalidDeactivationEpoch"; }, { code: 6502; msg: "Cluster maximum size is invalid"; name: "invalidMaxSize"; }, { code: 6503; msg: "Cluster authority is invalid"; name: "invalidClusterAuthority"; }, { code: 6504; msg: "Cluster fee proposal is invalid"; name: "invalidFeeProposal"; }, { code: 6505; msg: "Cluster state is invalid"; name: "invalidClusterState"; }, { code: 6506; msg: "Cluster vote is invalid"; name: "invalidVote"; }, { code: 6507; msg: "Cluster is not ready"; name: "clusterNotReady"; }, { code: 6508; msg: "Bls pubkey not set"; name: "blsPubkeyNotSet"; }, { code: 6600; msg: "Borsh serialization failed"; name: "serializationFailed"; }, { code: 6601; msg: "Borsh deserialization failed"; name: "deserializationFailed"; }, { code: 6602; msg: "Mempool capacity for the current slot reached - retry next slot or reduce queue rate"; name: "heapFull"; }, { code: 6603; msg: "Current slot is before the last updated slot"; name: "invalidSlot"; }, { code: 6604; msg: "Epoch is infinity"; name: "epochIsInfinity"; }, { code: 6605; msg: "Timestamp is invalid"; name: "invalidTimestamp"; }, { code: 6606; msg: "Epoch is invalid"; name: "invalidEpoch"; }, { code: 6607; msg: "Epoch overflowed"; name: "epochOverflow"; }, { code: 6608; msg: "Lighthouse program ID is invalid"; name: "invalidLighthouseProgramId"; }, { code: 6609; msg: "Extra instruction found in transaction"; name: "extraInstructionFound"; }, { code: 6610; msg: "Invalid number of Lighthouse program instructions"; name: "invalidLighthouseInstructionCount"; }, { code: 6611; msg: "Invalid BLS signature"; name: "invalidSignature"; }, { code: 6612; msg: "Value already set"; name: "valueAlreadySet"; }, { code: 6613; msg: "Invalid value setter index"; name: "invalidValueSetterIndex"; }, { code: 6614; msg: "Not all nodes have voted for the BLS public key"; name: "notAllNodesVotedForBlsPublicKey"; }, { code: 6615; msg: "Keyshares index out of bounds"; name: "keysharesIndexOutOfBounds"; }, { code: 6616; msg: "Recovery key material not set"; name: "recoveryKeyMaterialNotSet"; }, { code: 6617; msg: "Recovery already finalized"; name: "recoveryInitAlreadyFinalized"; }, { code: 6618; msg: "Invalid number of recovery peers"; name: "invalidRecoveryPeersCount"; }, { code: 6619; msg: "BLS public key is zero"; name: "blsPublicKeyZero"; }, { code: 6620; msg: "This instruction must be called directly, not via CPI"; name: "mustNotBeCalledViaCpi"; }, { code: 6621; msg: "Fee price exceeds maximum allowed"; name: "feePriceExceedsMax"; }, { code: 6622; msg: "No fees available to claim"; name: "noFeesToClaim"; }, { code: 6623; msg: "Recovery peer offset is zero"; name: "recoveryPeerOffsetZero"; }, { code: 6624; msg: "Invalid domain separator"; name: "invalidDomainSeparator"; }, { code: 6625; msg: "Recovery already initialized"; name: "recoveryInitAlreadyInitialized"; }, { code: 6626; msg: "Subsequent instruction in this transaction is not the expected one"; name: "invalidSubsequentIx"; }, { code: 6700; msg: "MXE is not in `Migration` state"; name: "mxeNotInMigrationState"; }, { code: 6701; msg: "MXE is already in `Migration` state"; name: "mxeAlreadyInMigration"; }, { code: 6702; msg: "Backup MXE keygen is not complete"; name: "backupKeygenNotComplete"; }, { code: 6703; msg: "Authority mismatch between original and backup MXE"; name: "recoveryAuthorityMismatch"; }, { code: 6704; msg: "Recovery peers account not initialized"; name: "recoveryPeersNotInitialized"; }, { code: 6705; msg: "Invalid peer offset for recovery share submission"; name: "invalidRecoveryPeerOffset"; }, { code: 6706; msg: "Signer is not a valid recovery peer"; name: "notRecoveryPeer"; }, { code: 6707; msg: "Recovery execution already finalized"; name: "recoveryExecutionAlreadyFinalized"; }, { code: 6708; msg: "Recovery threshold not met"; name: "recoveryThresholdNotMet"; }, { code: 6709; msg: "Recovery execution not finalized"; name: "recoveryExecutionNotFinalized"; }, { code: 6710; msg: "Previous computation did not fail, cannot requeue"; name: "recoveryComputationNotFailed"; }, { code: 6711; msg: "Cannot close recovery with active computation"; name: "recoveryActiveComputationExists"; }, { code: 6713; msg: "Backup MXE cluster is not set"; name: "backupClusterNotSet"; }, { code: 6714; msg: "Share already submitted"; name: "shareAlreadySubmitted"; }, { code: 6715; msg: "Arithmetic overflow"; name: "arithmeticOverflow"; }, { code: 6716; msg: "MXE is in `Migration` state, cannot queue new computations"; name: "mxeInMigrationState"; }, { code: 6717; msg: "Permissioned recovery peers to add must be distinct"; name: "permissionedRecoveryPeersNotDistinct"; }, { code: 6718; msg: "Too many permissioned recovery peers to add"; name: "tooManyPermissionedRecoveryPeers"; }, { code: 6719; msg: "Can only remove existing permissioned recovery peers"; name: "removeNonExistingPermissionedRecoveryPeers"; }, { code: 6720; msg: "Unauthorized to create recovery peer on mainnet"; name: "unauthorizedRecoveryPeerCreation"; }, { code: 6721; msg: "Program must be compiled with the \mainnet\ feature flag."; name: "compilationWithoutMainnetFeatureFlag"; }, { code: 6722; msg: "MXE is in `Active` state"; name: "mxeInActiveState"; }, { code: 6723; msg: "MXE is not in `Active` state"; name: "mxeNotInActiveState"; }, { code: 6724; msg: "Mxe recovery account data is not empty"; name: "mxeRecoveryAccountDataNotEmpty"; }, { code: 6725; msg: "MXE is in migration state, cannot close MXE"; name: "cannotCloseMxeDuringMigration"; }, { code: 6726; msg: "Account is not a valid target for this migration (wrong owner or discriminator)"; name: "invalidMigrationAccount"; }, { code: 6727; msg: "Node's primary stake is below the minimum for this cluster's mempool size"; name: "insufficientPrimaryStake"; }, { code: 6728; msg: "Invalid recovery peers argument"; name: "invalidRecoveryPeersArgument"; }]


events

events: [{ discriminator: [155, 213, 238, 159, 240, 76, 167, 19]; name: "callbackComputationEvent"; }, { discriminator: [143, 97, 229, 166, 72, 218, 87, 145]; name: "claimFailureEvent"; }, { discriminator: [24, 85, 55, 5, 223, 56, 125, 30]; name: "closeComputationDefinitionBuffersEvent"; }, { discriminator: [157, 140, 179, 138, 201, 132, 108, 37]; name: "closeComputationDefinitionEvent"; }, { discriminator: [71, 207, 152, 87, 123, 254, 179, 226]; name: "closeMxeEvent"; }, { discriminator: [139, 142, 249, 251, 50, 65, 58, 168]; name: "deactivateComputationDefinitionEvent"; }, { discriminator: [27, 75, 117, 221, 191, 213, 253, 249]; name: "finalizeComputationEvent"; }, { discriminator: [132, 26, 138, 201, 214, 29, 244, 167]; name: "finalizeFailureDataEvent"; }, { discriminator: [17, 51, 124, 226, 70, 97, 58, 186]; name: "initComputationEvent"; }, { discriminator: [83, 147, 226, 153, 39, 242, 109, 254]; name: "keyRecoveryEvent"; }, { discriminator: [118, 53, 33, 169, 32, 14, 197, 147]; name: "queueComputationEvent"; }]


instructions

instructions: [{ accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; writable: true; }]; args: [{ name: "nodeOffset"; type: "u32"; }]; discriminator: [15, 203, 48, 186, 243, 85, 60, 115]; name: "activateArx"; }, { accounts: [{ name: "authority"; signer: true; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "id"; }]; }; writable: true; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }]; args: [{ name: "clusterId"; type: "u32"; }]; discriminator: [228, 170, 10, 172, 246, 96, 63, 154]; name: "activateCluster"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "permissionedRecoveryPeersAcc"; pda: { seeds: [{ kind: "const"; value: [80, 101, 114, 109, 105, 115, 115, 105, 111, 110, 101, 100, 82, 101, 99, 111, 118, 101, 114, 121, 80, 101, 101, 114, 115, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }, { name: "programData"; pda: { program: { kind: "const"; value: [2, 168, 246, 145, 78, 136, 161, 176, 226, 16, 21, 62, 247, 99, 174, 43, 0, 194, 185, 61, 22, 193, 36, 210, 192, 83, 122, 16, 4, 128, 0, 0]; }; seeds: [{ kind: "const"; value: [146, 111, 9, 170, 109, 72, 125, 226, 216, 140, 55, 106, 22, 29, 7, 127, 176, 129, 11, 19, 35, 107, 124, 118, 71, 160, 112, 40, 3, 250, 93, 137]; }]; }; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "peers"; type: { vec: "pubkey"; }; }]; discriminator: [190, 177, 28, 28, 204, 131, 176, 251]; docs: ["Add permissioned recovery peers"]; name: "addPermissionedRecoveryPeers"; }, { accounts: [{ docs: ["The recovery peer's `authority` — same dual role as in `MigrateArxNode`: it authorizes the", "bind and is the owner of `primary_stake_account`."]; name: "authority"; signer: true; }, { docs: ["Must already be layout-migrated (`migrate_recovery_peer`) so the appended", "`primary_stake_account` field exists; otherwise the zero-copy load fails on the short", "account. Bundle `migrate_recovery_peer` ahead of this instruction in the same transaction."]; name: "recoveryPeerAccount"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 80, 101, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "peerOffset"; }]; }; writable: true; }, { name: "primaryStakeAccount"; writable: true; }, { address: "ArcStnN9zZZVB5WjgPhLHjYpY7Gb29mzb96ySsb1kxgq"; name: "arciumStakingProgram"; }]; args: [{ name: "peerOffset"; type: "u32"; }]; discriminator: [30, 148, 4, 206, 139, 2, 55, 156]; name: "bindRecoveryPeerMigration"; }, { accounts: [{ name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }]; args: [{ name: "clusterOffset"; type: "u32"; }]; discriminator: [172, 203, 90, 207, 128, 221, 229, 246]; name: "bumpEpochCluster"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "node"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }, { name: "comp"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }, { name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }, { name: "executingPool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }, { name: "compDefAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compDefOffset"; }]; }; }, { address: "Sysvar1nstructions1111111111111111111111111"; name: "instructionsSysvar"; }]; args: [{ name: "compOffset"; type: "u64"; }, { name: "nodeOffset"; type: "u32"; }, { name: "compDefOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "executionStatus"; type: { defined: { name: "executionStatus"; }; }; }, { name: "callbackTransactionIndex"; type: "u8"; }]; discriminator: [11, 224, 42, 236, 0, 154, 74, 163]; name: "callbackComputation"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "comp"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "clusterOffset"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "compOffset"; type: "u64"; }, { name: "clusterOffset"; type: "u32"; }]; discriminator: [215, 218, 1, 166, 81, 218, 16, 151]; name: "claimComputationRent"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "failureAcc"; pda: { seeds: [{ kind: "const"; value: [70, 97, 105, 108, 117, 114, 101, 67, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 72, 101, 97, 100, 101, 114]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }]; args: [{ name: "compOffset"; type: "u64"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "chunk"; type: "bytes"; }, { name: "failureClaimOffset"; type: "u32"; }]; discriminator: [92, 52, 184, 203, 76, 221, 128, 69]; name: "claimFailureAppend"; }, { accounts: [{ name: "signer"; signer: true; }, { name: "failureAcc"; pda: { seeds: [{ kind: "const"; value: [70, 97, 105, 108, 117, 114, 101, 67, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 72, 101, 97, 100, 101, 114]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }, { name: "executingPool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }, { name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }, { name: "comp"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }]; args: [{ name: "compOffset"; type: "u64"; }, { name: "nodeOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }]; discriminator: [192, 133, 215, 19, 76, 107, 111, 217]; name: "claimFailureFinalize"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "nodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; }, { name: "compAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }, { kind: "arg"; path: "compOffset"; }]; }; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }, { name: "compDefAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }, { account: "computationAccount"; kind: "account"; path: "comp_acc.computation_definition_offset"; }]; }; }, { name: "failureAcc"; pda: { seeds: [{ kind: "const"; value: [70, 97, 105, 108, 117, 114, 101, 67, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 72, 101, 97, 100, 101, 114]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "compOffset"; type: "u64"; }, { name: "nodeOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "outputLenBytes"; type: "u32"; }]; discriminator: [204, 106, 245, 73, 212, 136, 61, 99]; name: "claimFailureInit"; }, { accounts: [{ docs: ["The `arcium_staking::state::StakingPoolAccount` PDA, signing via CPI. Also the destination", "for the settled lamports (so the staking program immediately owns them for later", "proportional distribution). The `seeds`/`bump` constraint verifies it's the canonical pool", "PDA under `ARCIUM_STAKING_ID` (so only the staking program can call this); `Signer`", "enforces it actually signed."]; name: "stakingPoolSigner"; pda: { program: { kind: "const"; value: [146, 110, 184, 172, 179, 131, 118, 35, 207, 122, 30, 190, 228, 134, 232, 140, 222, 89, 53, 150, 174, 187, 151, 58, 208, 108, 237, 119, 97, 204, 184, 186]; }; seeds: [{ kind: "const"; value: [83, 116, 97, 107, 105, 110, 103, 80, 111, 111, 108, 65, 99, 99, 111, 117, 110, 116]; }]; }; signer: true; writable: true; }, { docs: ["The `PrimaryStakingAccount` bound to this node. Passed so the handler can verify", "`node.primary_staking_account == primary_stake_account.key()` — i.e. the staking account", "that's about to claim the fees is the one this node was initialized with."]; name: "primaryStakeAccount"; }, { name: "cluster"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "node"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }, { name: "pool"; pda: { seeds: [{ kind: "const"; value: [70, 101, 101, 80, 111, 111, 108]; }]; }; writable: true; }]; args: [{ name: "clusterOffset"; type: "u32"; }, { name: "nodeOffset"; type: "u32"; }]; discriminator: [68, 13, 185, 34, 151, 76, 194, 43]; name: "claimNodeFees"; returns: "u64"; }, { accounts: [{ docs: ["`arcium_staking::StakingPoolAccount` PDA, signing via CPI and receiving the drained", "lamports. The `seeds`/`bump` constraint verifies it's the canonical pool PDA under", "`ARCIUM_STAKING_ID`; `Signer` enforces `is_signer`."]; name: "stakingPoolSigner"; pda: { program: { kind: "const"; value: [146, 110, 184, 172, 179, 131, 118, 35, 207, 122, 30, 190, 228, 134, 232, 140, 222, 89, 53, 150, 174, 187, 151, 58, 208, 108, 237, 119, 97, 204, 184, 186]; }; seeds: [{ kind: "const"; value: [83, 116, 97, 107, 105, 110, 103, 80, 111, 111, 108, 65, 99, 99, 111, 117, 110, 116]; }]; }; signer: true; writable: true; }, { docs: ["`PrimaryStakingAccount` the claiming peer is bound to. Only the key is compared", "against `recovery_peer.primary_stake_account`; the staking program owns the struct."]; name: "primaryStakeAccount"; }, { name: "recoveryPeer"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 80, 101, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "peerOffset"; }]; }; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "pool"; pda: { seeds: [{ kind: "const"; value: [70, 101, 101, 80, 111, 111, 108]; }]; }; writable: true; }]; args: [{ name: "mxeProgram"; type: "pubkey"; }, { name: "peerOffset"; type: "u32"; }]; discriminator: [132, 120, 187, 164, 106, 57, 202, 8]; name: "claimRecoveryPeerFees"; returns: "u64"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "compDefAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }, { name: "executingPool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; }, { address: "11111111111111111111111111111111"; docs: ["System program account."]; name: "systemProgram"; }]; args: [{ name: "compOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "clusterOffset"; type: "u32"; }]; discriminator: [175, 224, 148, 1, 107, 74, 70, 110]; docs: ["Closes a computation definition after TTL wait and verifying no active computations."]; name: "closeComputationDefinition"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; }, { name: "compDefAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compOffset"; }]; }; }, { name: "compDefRaw"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 82, 97, 119]; }, { kind: "account"; path: "compDefAcc"; }, { kind: "arg"; path: "rawCircuitIndex"; }]; }; writable: true; }]; args: [{ name: "compOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "rawCircuitIndex"; type: "u8"; }]; discriminator: [98, 101, 140, 112, 8, 211, 211, 1]; docs: ["Closes the raw circuit buffer account for a computation definition."]; name: "closeComputationDefinitionBuffers"; }, { accounts: [{ name: "authority"; signer: true; writable: true; }, { name: "originalMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; }, { name: "backupMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeRecoveryAccount"; }]; }; writable: true; }, { name: "mxeRecoveryAccount"; pda: { seeds: [{ kind: "const"; value: [77, 120, 101, 82, 101, 99, 111, 118, 101, 114, 121, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; writable: true; }, { name: "keyRecoveryFinalizeCompDef"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeRecoveryAccount"; }, { kind: "const"; value: [3, 0, 0, 0]; }]; }; writable: true; }, { name: "keyRecoveryFinalizeComputation"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "backupClusterOffset"; }, { kind: "account"; path: "mxeRecoveryAccount"; }]; }; writable: true; }, { name: "originalMxeProgram"; }, { name: "backupMxeProgram"; }]; args: [{ name: "originalMxeProgram"; type: "pubkey"; }, { name: "backupClusterOffset"; type: "u32"; }]; discriminator: [249, 127, 56, 116, 125, 136, 84, 184]; docs: ["Closes all recovery-related accounts in the success path."]; name: "closeKeyRecovery"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { docs: ["constraint in tests because setting it would require us to deploy a program each time."]; name: "mxeProgram"; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeProgram"; }]; }; writable: true; }, { name: "mxeKeygenComputation"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "clusterOffset"; }, { kind: "arg"; path: "keygenOffset"; }]; }; writable: true; }, { name: "mxeKeygenCompDef"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeProgram"; }, { kind: "const"; value: [1, 0, 0, 0]; }]; }; writable: true; }, { docs: ["Optional: only exists if key recovery was initiated."]; name: "mxeKeyRecoveryInitCompDef"; optional: true; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeProgram"; }, { kind: "const"; value: [2, 0, 0, 0]; }]; }; writable: true; }, { name: "keyRecoveryInitComputation"; optional: true; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "clusterOffset"; }, { account: "mxeAccount"; kind: "account"; path: "mxe.key_recovery_init_offset"; }]; }; writable: true; }, { name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeProgram"; }]; }; writable: true; }]; args: [{ name: "clusterOffset"; type: "u32"; }, { name: "keygenOffset"; type: "u64"; }]; discriminator: [121, 143, 242, 246, 169, 45, 13, 97]; docs: ["Closes an MXE account and auto-closes the keygen computation definition."]; name: "closeMxe"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "permissionedRecoveryPeersAcc"; pda: { seeds: [{ kind: "const"; value: [80, 101, 114, 109, 105, 115, 115, 105, 111, 110, 101, 100, 82, 101, 99, 111, 118, 101, 114, 121, 80, 101, 101, 114, 115, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }, { name: "programData"; pda: { program: { kind: "const"; value: [2, 168, 246, 145, 78, 136, 161, 176, 226, 16, 21, 62, 247, 99, 174, 43, 0, 194, 185, 61, 22, 193, 36, 210, 192, 83, 122, 16, 4, 128, 0, 0]; }; seeds: [{ kind: "const"; value: [146, 111, 9, 170, 109, 72, 125, 226, 216, 140, 55, 106, 22, 29, 7, 127, 176, 129, 11, 19, 35, 107, 124, 118, 71, 160, 112, 40, 3, 250, 93, 137]; }]; }; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: []; discriminator: [55, 55, 184, 150, 82, 190, 205, 92]; docs: ["Close the permissioned recovery peers account"]; name: "closePermissionedRecoveryPeersAccount"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; writable: true; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }, { name: "clusterAcc"; optional: true; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "account"; path: "arxNodeAcc"; }]; }; }]; args: [{ name: "nodeOffset"; type: "u32"; }]; discriminator: [117, 244, 137, 148, 25, 190, 175, 164]; name: "deactivateArx"; }, { accounts: [{ name: "authority"; signer: true; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "id"; }]; }; writable: true; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }]; args: [{ name: "clusterId"; type: "u32"; }, { name: "deactivationEpoch"; type: { defined: { name: "epoch"; }; }; }]; discriminator: [13, 42, 182, 159, 184, 10, 212, 178]; name: "deactivateCluster"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; }, { name: "compDefAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }]; args: [{ name: "compOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }]; discriminator: [170, 212, 226, 44, 43, 226, 117, 162]; docs: ["Deactivates a computation definition, preventing new computations from being queued."]; name: "deactivateComputationDefinition"; }, { accounts: [{ name: "tinyMempool"; }, { name: "tinyExecpool"; }, { name: "smallMempool"; }, { name: "smallExecpool"; }, { name: "mediumMempool"; }, { name: "mediumExecpool"; }, { name: "largeMempool"; }, { name: "largeExecpool"; }]; args: [{ name: "selector"; type: { defined: { name: "leaderSelector"; }; }; }]; discriminator: [57, 4, 200, 151, 58, 19, 120, 9]; docs: ["Only present so the mempool and execpool accounts are actually included in the idl, since we", "don't explicitly declare them in the accounts section of the other instructions."]; name: "dummyInstruction"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "compDefAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compOffset"; }]; }; }, { name: "compDefRaw"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 82, 97, 119]; }, { kind: "account"; path: "compDefAcc"; }, { kind: "arg"; path: "rawCircuitIndex"; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "compOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "rawCircuitIndex"; type: "u8"; }]; discriminator: [92, 195, 192, 21, 193, 242, 135, 194]; name: "embiggenRawCircuitAcc"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "node"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; }, { name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; }]; args: [{ name: "nodeOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "keysharesOffset"; type: "u32"; }, { name: "keyshares"; type: { vec: { array: [{ array: ["u8", 32]; }, 5]; }; }; }]; discriminator: [236, 31, 169, 50, 185, 38, 47, 187]; name: "extendRecoveryKeyshares"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "compDefAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }, { docs: ["At least the first raw circuit account must exist before finalizing"]; name: "compDefRaw"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 82, 97, 119]; }, { kind: "account"; path: "compDefAcc"; }, { kind: "const"; value: [0]; }]; }; }]; args: [{ name: "compOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }]; discriminator: [174, 66, 159, 51, 199, 243, 219, 38]; name: "finalizeComputationDefinition"; }, { accounts: [{ name: "signer"; signer: true; }, { name: "originalMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; writable: true; }, { name: "backupMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "backupMxeProgram"; }]; }; writable: true; }, { name: "mxeRecoveryAccount"; pda: { seeds: [{ kind: "const"; value: [77, 120, 101, 82, 101, 99, 111, 118, 101, 114, 121, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "originalMxeProgram"; }]; }; }, { name: "computation"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "clusterOffset"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }, { name: "compDef"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "backupMxeProgram"; }, { kind: "const"; value: [3, 0, 0, 0]; }]; }; }, { name: "node"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; }, { name: "executingPool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "originalMxeProgram"; }, { name: "backupMxeProgram"; }]; args: [{ name: "originalMxeProgram"; type: "pubkey"; }, { name: "backupMxeProgram"; type: "pubkey"; }, { name: "clusterOffset"; type: "u32"; }, { name: "compOffset"; type: "u64"; }, { name: "nodeOffset"; type: "u32"; }, { name: "executionStatus"; type: { defined: { name: "executionStatus"; }; }; }, { name: "callbackTransactionIndex"; type: "u8"; }, { name: "outputBytes"; type: "bytes"; }, { name: "blsSig"; type: { array: ["u8", 64]; }; }]; discriminator: [143, 63, 33, 26, 66, 235, 94, 31]; docs: ["Callback for key_recovery_finalize computation."]; name: "finalizeKeyRecoveryCallback"; }, { accounts: [{ name: "authority"; signer: true; writable: true; }, { name: "payer"; signer: true; writable: true; }, { name: "originalMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; }, { name: "backupMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "backupMxeProgram"; }]; }; }, { name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; }, { name: "mxeRecoveryAccount"; pda: { seeds: [{ kind: "const"; value: [77, 120, 101, 82, 101, 99, 111, 118, 101, 114, 121, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "originalMxeProgram"; }]; }; }, { name: "keyRecoveryFinalizeCompDef"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "backupMxeProgram"; }, { kind: "const"; value: [3, 0, 0, 0]; }]; }; }, { name: "keyRecoveryFinalizeComputation"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "clusterOffset"; }, { kind: "account"; path: "mxeRecoveryAccount"; }]; }; writable: true; }, { name: "executingPool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "poolAccount"; pda: { seeds: [{ kind: "const"; value: [70, 101, 101, 80, 111, 111, 108]; }]; }; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; }, { docs: ["Seeds are checked in the CPI to LUT program, so no need to check them here."]; name: "addressLookupTable"; writable: true; }, { address: "AddressLookupTab1e1111111111111111111111111"; name: "lutProgram"; }, { name: "originalMxeProgram"; }, { name: "backupMxeProgram"; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "originalMxeProgram"; type: "pubkey"; }, { name: "backupMxeProgram"; type: "pubkey"; }, { name: "clusterOffset"; type: "u32"; }]; discriminator: [211, 40, 223, 121, 15, 169, 2, 59]; docs: ["Queues the key_recovery_finalize computation after threshold is met."]; name: "finalizeKeyRecoveryExecution"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "node"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; }, { name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; }, { name: "comp"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }, { kind: "arg"; path: "computationOffset"; }]; }; }]; args: [{ name: "nodeOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "computationOffset"; type: "u64"; }]; discriminator: [205, 57, 149, 12, 12, 176, 188, 74]; name: "finalizeKeyRecoverySharesUpload"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "cluster"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "mxeProgram"; type: "pubkey"; }]; discriminator: [108, 137, 125, 95, 202, 237, 190, 158]; name: "finalizeMxeKeys"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "clusterOffset"; type: "u32"; }]; discriminator: [19, 165, 166, 25, 174, 122, 166, 250]; name: "increaseMempoolSize"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }, { name: "feePool"; pda: { seeds: [{ kind: "const"; value: [70, 101, 101, 80, 111, 111, 108]; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "startEpochTimestamp"; type: { defined: { name: "timestamp"; }; }; }]; discriminator: [220, 59, 207, 236, 108, 250, 47, 100]; name: "init"; }, { accounts: [{ name: "operatorSigner"; signer: true; writable: true; }, { name: "operatorAcc"; pda: { seeds: [{ kind: "const"; value: [79, 112, 101, 114, 97, 116, 111, 114]; }, { kind: "account"; path: "operatorSigner"; }]; }; writable: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; writable: true; }, { docs: ["The `PrimaryStakingAccount` (owned by the `arcium_staking` program) that this node will be", "bound to for the rest of its life. Reward settlement requires this linkage: fees accrued", "under this node can only be drained via a CPI signed by the staking program's pool PDA", "after matching on this key.", "the staking program's responsibility — if the staker binds garbage they lock themselves", "out of rewards, which is their own problem."]; name: "primaryStakeAccount"; writable: true; }, { docs: ["Authority of `primary_stake_account`. Required as a second signer so we can CPI into", "`arcium_staking::bind_primary_stake` and commit the stake to this node. The staking", "program re-derives the stake PDA from this key and rejects the call if it mismatches."]; name: "staker"; signer: true; }, { address: "ArcStnN9zZZVB5WjgPhLHjYpY7Gb29mzb96ySsb1kxgq"; name: "arciumStakingProgram"; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "nodeOffset"; type: "u32"; }, { name: "config"; type: { defined: { name: "arxNodeConfig"; }; }; }, { name: "cuCapacityClaim"; type: "u64"; }, { name: "blsPubkey"; type: { defined: { name: "bn254g2blsPublicKey"; }; }; }, { name: "blsPopSig"; type: { array: ["u8", 64]; }; }, { name: "metadata"; type: { defined: { name: "nodeMetadata"; }; }; }, { name: "x25519Pubkey"; type: { array: ["u8", 32]; }; }]; discriminator: [55, 177, 212, 125, 72, 118, 148, 232]; name: "initArxNode"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "id"; }]; }; writable: true; }, { name: "authority"; }, { docs: ["function"]; name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { kind: "arg"; path: "id"; }]; }; writable: true; }, { name: "execpool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { kind: "arg"; path: "id"; }]; }; writable: true; }, { name: "poolAccount"; pda: { seeds: [{ kind: "const"; value: [70, 101, 101, 80, 111, 111, 108]; }]; }; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "clusterId"; type: "u32"; }, { name: "mempoolSize"; type: { defined: { name: "mempoolSize"; }; }; }, { name: "clusterSize"; type: "u16"; }, { name: "cuPrice"; type: "u64"; }, { name: "tdInfo"; type: { option: { defined: { name: "nodeMetadata"; }; }; }; }]; discriminator: [144, 230, 5, 18, 93, 71, 133, 187]; name: "initCluster"; }, { accounts: [{ docs: ["Signer of the transaction."]; name: "signer"; signer: true; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { docs: ["Seeds are checked in the CPI to LUT program, so no need to check them here."]; name: "addressLookupTable"; writable: true; }, { address: "AddressLookupTab1e1111111111111111111111111"; name: "lutProgram"; }, { name: "compDefAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; docs: ["System program account."]; name: "systemProgram"; }]; args: [{ name: "compOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "computationDefinition"; type: { defined: { name: "computationDefinitionMeta"; }; }; }, { name: "circuitSourceOverride"; type: { option: { defined: { name: "circuitSource"; }; }; }; }, { name: "cuAmount"; type: "u64"; }]; discriminator: [45, 185, 155, 17, 97, 77, 230, 73]; docs: ["Initializes a computation definition."]; name: "initComputationDefinition"; }, { accounts: [{ name: "authority"; signer: true; writable: true; }, { name: "payer"; signer: true; writable: true; }, { name: "originalMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; }, { docs: ["Full allocation happens in init_key_recovery_execution_part2."]; name: "mxeRecoveryAccount"; pda: { seeds: [{ kind: "const"; value: [77, 120, 101, 82, 101, 99, 111, 118, 101, 114, 121, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "originalMxeProgram"; }]; }; writable: true; }, { name: "originalMxeProgram"; }, { name: "backupMxeProgram"; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "originalMxeProgram"; type: "pubkey"; }, { name: "backupMxeProgram"; type: "pubkey"; }]; discriminator: [73, 228, 114, 224, 181, 108, 251, 224]; docs: ["Part 1 of key recovery execution initialization.", "Creates the MxeRecoveryAccount with partial size due to Solana's 10KB limit.", "Call init_key_recovery_execution_part2 afterwards."]; name: "initKeyRecoveryExecutionPart1"; }, { accounts: [{ name: "authority"; signer: true; writable: true; }, { name: "payer"; signer: true; writable: true; }, { name: "originalMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; }, { name: "backupMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "backupMxeProgram"; }]; }; writable: true; }, { name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; }, { name: "mxeRecoveryAccount"; pda: { seeds: [{ kind: "const"; value: [77, 120, 101, 82, 101, 99, 111, 118, 101, 114, 121, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "originalMxeProgram"; }]; }; writable: true; }, { docs: ["The computation definition account for MxeKeyRecoveryFinalize (on backup MXE)"]; name: "keyRecoveryFinalizeCompDef"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "backupMxeProgram"; }, { kind: "const"; value: [3, 0, 0, 0]; }]; }; writable: true; }, { name: "keyRecoveryFinalizeComputation"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { account: "mxeAccount"; kind: "account"; path: "backup_mxe.cluster"; }, { kind: "arg"; path: "keyRecoveryFinalizeOffset"; }]; }; writable: true; }, { name: "originalMxeProgram"; }, { name: "backupMxeProgram"; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "originalMxeProgram"; type: "pubkey"; }, { name: "backupMxeProgram"; type: "pubkey"; }, { name: "clusterOffset"; type: "u32"; }, { name: "keyRecoveryFinalizeOffset"; type: "u64"; }]; discriminator: [181, 38, 231, 178, 21, 239, 196, 158]; docs: ["Part 2 of key recovery execution initialization.", "Finishes allocating MxeRecoveryAccount and creates the computation definition."]; name: "initKeyRecoveryExecutionPart2"; }, { accounts: [{ docs: ["Signer of the transaction."]; name: "signer"; signer: true; writable: true; }, { docs: ["Full allocation happens in init_mxe_part2."]; name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeProgram"; }]; }; writable: true; }, { docs: ["constraint in tests because setting it would require us to deploy a program each time."]; name: "mxeProgram"; }, { docs: ["Gates part1 on the upgrade authority (same check as part2), so the predictable", "`recovery_cluster_acc` PDA and its recovery_peers can't be front-run by an attacker."]; name: "programData"; pda: { program: { kind: "const"; value: [2, 168, 246, 145, 78, 136, 161, 176, 226, 16, 21, 62, 247, 99, 174, 43, 0, 194, 185, 61, 22, 193, 36, 210, 192, 83, 122, 16, 4, 128, 0, 0]; }; seeds: [{ kind: "account"; path: "mxeProgram"; }]; }; }, { address: "11111111111111111111111111111111"; docs: ["System program account."]; name: "systemProgram"; }]; args: [{ name: "recoveryPeers"; type: { array: ["u32", 100]; }; }]; discriminator: [134, 126, 69, 42, 180, 144, 202, 165]; docs: ["Initializes a MPC Execution Environment (part 1).", "Due to Solana's 10KB per-instruction allocation limit, this only partially", "allocates recovery_cluster_acc. Call init_mxe_part2 afterwards to finish", "allocation and add keygen to mempool."]; name: "initMxePart1"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { docs: ["Cluster to add to the MXE."]; name: "cluster"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; }, { docs: ["MXE account to initialize."]; name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeProgram"; }]; }; writable: true; }, { name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeProgram"; }]; }; writable: true; }, { name: "executingPool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "mxeKeygenComputationDefinition"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeProgram"; }, { kind: "const"; value: [1, 0, 0, 0]; }]; }; writable: true; }, { name: "mxeKeygenComputation"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "clusterOffset"; }, { kind: "arg"; path: "keygenOffset"; }]; }; writable: true; }, { name: "keyRecoveryInitComputation"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "clusterOffset"; }, { kind: "arg"; path: "keyRecoveryInitOffset"; }]; }; writable: true; }, { name: "mxeAuthority"; optional: true; }, { docs: ["constraint in tests because setting it would require us to deploy a program each time."]; name: "mxeProgram"; }, { name: "programData"; pda: { program: { kind: "const"; value: [2, 168, 246, 145, 78, 136, 161, 176, 226, 16, 21, 62, 247, 99, 174, 43, 0, 194, 185, 61, 22, 193, 36, 210, 192, 83, 122, 16, 4, 128, 0, 0]; }; seeds: [{ kind: "account"; path: "mxeProgram"; }]; }; }, { name: "poolAccount"; pda: { seeds: [{ kind: "const"; value: [70, 101, 101, 80, 111, 111, 108]; }]; }; writable: true; }, { docs: ["Seeds are checked in the CPI to LUT program, so no need to check them here."]; name: "addressLookupTable"; writable: true; }, { address: "AddressLookupTab1e1111111111111111111111111"; name: "lutProgram"; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }, { address: "Sysvar1nstructions1111111111111111111111111"; docs: ["Instructions sysvar — used in the handler to verify the **next** instruction in this", "transaction is `arcium_staking::init_mxe_recovery_stake_state` with the same", "`mxe_program`. This mirrors the reverse check on the staking side and is what", "guarantees that every MXE is created alongside its recovery stake state (replacement", "for the CPI we couldn't do because of the 4KB stack limit on `try_accounts`)."]; name: "instructionsSysvar"; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "clusterOffset"; type: "u32"; }, { name: "keygenOffset"; type: "u64"; }, { name: "keyRecoveryInitOffset"; type: "u64"; }, { name: "recentSlot"; type: "u64"; }]; discriminator: [70, 121, 251, 59, 255, 152, 202, 136]; docs: ["Finishes MXE initialization (part 2).", "Reallocates recovery_cluster_acc to full size, initializes recovery_peers,", "and adds the keygen computation to the mempool."]; name: "initMxePart2"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "operatorAcc"; pda: { seeds: [{ kind: "const"; value: [79, 112, 101, 114, 97, 116, 111, 114]; }, { kind: "account"; path: "signer"; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "meta"; type: { defined: { name: "operatorMeta"; }; }; }]; discriminator: [132, 210, 12, 91, 159, 94, 35, 54]; name: "initOperator"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "permissionedRecoveryPeersAcc"; pda: { seeds: [{ kind: "const"; value: [80, 101, 114, 109, 105, 115, 115, 105, 111, 110, 101, 100, 82, 101, 99, 111, 118, 101, 114, 121, 80, 101, 101, 114, 115, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }, { name: "programData"; pda: { program: { kind: "const"; value: [2, 168, 246, 145, 78, 136, 161, 176, 226, 16, 21, 62, 247, 99, 174, 43, 0, 194, 185, 61, 22, 193, 36, 210, 192, 83, 122, 16, 4, 128, 0, 0]; }; seeds: [{ kind: "const"; value: [146, 111, 9, 170, 109, 72, 125, 226, 216, 140, 55, 106, 22, 29, 7, 127, 176, 129, 11, 19, 35, 107, 124, 118, 71, 160, 112, 40, 3, 250, 93, 137]; }]; }; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: []; discriminator: [23, 147, 149, 121, 218, 173, 81, 117]; docs: ["Initialize the permissioned recovery peers account"]; name: "initPermissionedRecoveryPeersAccount"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "compDefAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compOffset"; }]; }; }, { name: "compDefRaw"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 82, 97, 119]; }, { kind: "account"; path: "compDefAcc"; }, { kind: "arg"; path: "rawCircuitIndex"; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "compOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "rawCircuitIndex"; type: "u8"; }]; discriminator: [16, 228, 193, 228, 93, 231, 58, 4]; name: "initRawCircuitAcc"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "recoveryPeerAccount"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 80, 101, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "peerOffset"; }]; }; writable: true; }, { name: "permissionedRecoveryPeersAcc"; pda: { seeds: [{ kind: "const"; value: [80, 101, 114, 109, 105, 115, 115, 105, 111, 110, 101, 100, 82, 101, 99, 111, 118, 101, 114, 121, 80, 101, 101, 114, 115, 65, 99, 99, 111, 117, 110, 116]; }]; }; }, { docs: ["The `PrimaryStakingAccount` (owned by `arcium_staking`) that the recovery peer is", "binding itself to. Mirrors the stake-first requirement on `InitArxNode`: every", "recovery peer has to point at a real staking account so we have someone to slash", "(or dock rewards from) if the peer misbehaves. Full account-structure validation", "is the staking program's job — here we just make sure the account is owned by it.", "point at any primary stake account they have authority over."]; name: "primaryStakeAccount"; writable: true; }, { docs: ["Authority of `primary_stake_account`. Required as a second signer so we can CPI into", "`arcium_staking::bind_primary_stake` and commit the stake to this recovery peer. The", "staking program re-derives the stake PDA from this key and rejects on mismatch."]; name: "staker"; signer: true; }, { address: "ArcStnN9zZZVB5WjgPhLHjYpY7Gb29mzb96ySsb1kxgq"; name: "arciumStakingProgram"; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "peerOffset"; type: "u32"; }, { name: "signer"; type: "pubkey"; }, { name: "x25519Pubkey"; type: { array: ["u8", 32]; }; }]; discriminator: [116, 29, 20, 126, 177, 149, 50, 147]; name: "initRecoveryPeerAccount"; }, { accounts: [{ name: "nodeAuthority"; signer: true; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; writable: true; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "clusterId"; type: "u32"; }, { name: "nodeBump"; type: "u32"; }, { name: "join"; type: "bool"; }]; discriminator: [150, 167, 124, 239, 108, 128, 31, 162]; name: "joinCluster"; }, { accounts: [{ docs: ["The node's `config.authority`, which both *authorizes* the bind (only the node's own admin", "may link a stake account to it — otherwise anyone could divert a node's rewards to their", "own stake) and doubles as the `staker` (owner of `primary_stake_account`) for the CPI."]; name: "authority"; signer: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; writable: true; }, { docs: ["The `PrimaryStakingAccount` (created beforehand via", "`arcium_staking::add_primary_stake_to_legacy_acc`) to bind. Owner-checked here; the staking", "program re-derives `[SEED, authority]` and rejects a mismatch during the bind CPI."]; name: "primaryStakeAccount"; writable: true; }, { address: "ArcStnN9zZZVB5WjgPhLHjYpY7Gb29mzb96ySsb1kxgq"; name: "arciumStakingProgram"; }]; args: [{ name: "nodeOffset"; type: "u32"; }]; discriminator: [26, 223, 103, 52, 241, 117, 229, 143]; name: "migrateArxNode"; }, { accounts: [{ name: "payer"; signer: true; writable: true; }, { docs: ["because the new program cannot deserialize the old (short) layout via `Account<Cluster>`."]; name: "cluster"; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: []; discriminator: [158, 61, 104, 161, 253, 138, 0, 17]; docs: ["One-shot layout migrations for the staking upgrade. Each grows one already-deployed", "account to the current (append-only) layout; idempotent and permissionless. See", "`instructions::migration`."]; name: "migrateCluster"; }, { accounts: [{ name: "payer"; signer: true; writable: true; }, { name: "mxe"; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: []; discriminator: [96, 162, 117, 100, 242, 143, 16, 80]; name: "migrateMxeAccount"; }, { accounts: [{ name: "payer"; signer: true; writable: true; }, { name: "recoveryPeer"; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: []; discriminator: [58, 226, 37, 60, 200, 31, 251, 245]; name: "migrateRecoveryPeer"; }, { accounts: [{ name: "nodeAuthority"; signer: true; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }]; args: [{ name: "clusterOffset"; type: "u32"; }, { name: "nodeOffset"; type: "u32"; }, { name: "proposedFee"; type: "u64"; }]; discriminator: [103, 204, 172, 134, 248, 252, 27, 170]; name: "proposeFee"; }, { accounts: [{ name: "clusterAuthority"; signer: true; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; writable: true; }, { docs: ["The cluster's mempool account, used only to read its size (from the discriminator) so we", "know the minimum primary stake the invited node must hold.", "`mempool_size_of`."]; name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; }, { docs: ["The `PrimaryStakingAccount` (owned by `arcium_staking`) bound to the invited node. We read", "its `primary_stake` (first field) to enforce the per-mempool-size minimum. Verified to be", "owned by the staking program and to match the node's recorded `primary_staking_account`."]; name: "primaryStakeAccount"; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "clusterId"; type: "u32"; }, { name: "nodeBump"; type: "u32"; }]; discriminator: [148, 228, 222, 211, 161, 128, 118, 175]; name: "proposeJoinCluster"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { docs: ["This is ok-ish though, as we're just reading the bump to verify the PDA."]; name: "signSeed"; pda: { program: { kind: "arg"; path: "mxeProgram"; }; seeds: [{ kind: "const"; value: [65, 114, 99, 105, 117, 109, 83, 105, 103, 110, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }]; }; signer: true; }, { name: "comp"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }, { kind: "arg"; path: "computationOffset"; }]; }; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; }, { name: "executingPool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }, { name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }, { name: "compDefAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "computationDefinitionOffset"; }]; }; }, { name: "cluster"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }, { name: "poolAccount"; pda: { seeds: [{ kind: "const"; value: [70, 101, 101, 80, 111, 111, 108]; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }]; args: [{ name: "compOffset"; type: "u64"; }, { name: "computationDefinitionOffset"; type: "u32"; }, { name: "args"; type: { defined: { name: "argumentList"; }; }; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "customCallbackInstructions"; type: { vec: { defined: { name: "callbackInstruction"; }; }; }; }, { name: "callbackTransactionsRequired"; type: "u8"; }, { name: "callbackCuLimit"; type: "u32"; }, { name: "padding"; type: "u32"; }, { name: "cuPriceMicro"; type: "u64"; }]; discriminator: [1, 149, 103, 13, 102, 227, 93, 164]; docs: ["Queues a computation.", "cu_price_micro: The priority price of a CU, in micro-lamports. Used", "to calculate the priority fee and rounded down.", "callback_cu_limit: The compute unit limit to request for the callback transaction(s)", "via set_compute_unit_limit. 0 means unset (the node uses the default compute budget).", "A non-zero value incurs an additional priority fee of callback_cu_limit * cu_price_micro.", "callback_cu_limit + padding together occupy the 8 bytes that previously held the", "(always-zero) output_delivery_fee: u64, so the instruction layout is unchanged."]; name: "queueComputation"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; }, { name: "executingPool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "keyRecoveryInitComputationDefinition"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeProgram"; }, { kind: "const"; value: [2, 0, 0, 0]; }]; }; writable: true; }, { name: "keyRecoveryInitComputation"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "clusterOffset"; }, { account: "mxeAccount"; kind: "account"; path: "mxe.key_recovery_init_offset"; }]; }; writable: true; }, { name: "mxeProgram"; }, { name: "poolAccount"; pda: { seeds: [{ kind: "const"; value: [70, 101, 101, 80, 111, 111, 108]; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "clusterOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }]; discriminator: [76, 132, 32, 81, 11, 163, 98, 82]; docs: ["Queues the key recovery init computation for the MXE.", "Can only be called after MXE keys are set."]; name: "queueKeyRecoveryInit"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; }, { name: "comp"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }, { kind: "arg"; path: "compOffset"; }]; }; writable: true; }, { name: "executingPool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }, { name: "poolAccount"; pda: { seeds: [{ kind: "const"; value: [70, 101, 101, 80, 111, 111, 108]; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "compOffset"; type: "u64"; }, { name: "mxeProgram"; type: "pubkey"; }]; discriminator: [146, 230, 72, 249, 217, 144, 70, 33]; docs: ["Reclaim fees for an expired computation that was never executed."]; name: "reclaimExpiredComputationFee"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { docs: ["failure PDA"]; name: "recipient"; writable: true; }, { docs: ["the checks and close by hand in the instruction handler."]; name: "failureAcc"; writable: true; }]; args: [{ name: "compOffset"; type: "u64"; }, { name: "mxeProgram"; type: "pubkey"; }]; discriminator: [138, 13, 253, 191, 226, 239, 246, 10]; name: "reclaimFailureRentIdempotent"; }, { accounts: [{ name: "authority"; signer: true; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; }, { name: "mxeProgram"; }]; args: [{ name: "mxeProgram"; type: "pubkey"; }]; discriminator: [65, 99, 9, 69, 97, 38, 105, 253]; docs: ["Sets an MXE to the `Migration` state, enabling the recovery process to begin."]; name: "recoverMxe"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeProgram"; }]; }; }, { name: "mxeProgram"; }, { name: "addressLookupTable"; pda: { program: { kind: "const"; value: [2, 119, 166, 175, 151, 51, 155, 122, 200, 141, 24, 146, 201, 4, 70, 245, 0, 2, 48, 146, 102, 246, 46, 83, 193, 24, 36, 73, 130, 0, 0, 0]; }; seeds: [{ kind: "account"; path: "mxe"; }, { account: "mxeAccount"; kind: "account"; path: "mxe.lut_offset_slot"; }]; }; writable: true; }, { address: "AddressLookupTab1e1111111111111111111111111"; name: "lutProgram"; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "account"; type: "pubkey"; }]; discriminator: [55, 38, 119, 20, 35, 231, 184, 236]; name: "registerAccountInLut"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "permissionedRecoveryPeersAcc"; pda: { seeds: [{ kind: "const"; value: [80, 101, 114, 109, 105, 115, 115, 105, 111, 110, 101, 100, 82, 101, 99, 111, 118, 101, 114, 121, 80, 101, 101, 114, 115, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }, { name: "programData"; pda: { program: { kind: "const"; value: [2, 168, 246, 145, 78, 136, 161, 176, 226, 16, 21, 62, 247, 99, 174, 43, 0, 194, 185, 61, 22, 193, 36, 210, 192, 83, 122, 16, 4, 128, 0, 0]; }; seeds: [{ kind: "const"; value: [146, 111, 9, 170, 109, 72, 125, 226, 216, 140, 55, 106, 22, 29, 7, 127, 176, 129, 11, 19, 35, 107, 124, 118, 71, 160, 112, 40, 3, 250, 93, 137]; }]; }; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "peers"; type: { vec: "pubkey"; }; }]; discriminator: [246, 123, 224, 196, 110, 208, 85, 6]; docs: ["Remove permissioned recovery peers"]; name: "removePermissionedRecoveryPeers"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeProgram"; }]; }; }, { name: "executingPool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "cluster"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; }, { name: "mxeKeygenComputation"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "clusterOffset"; }, { account: "mxeAccount"; kind: "account"; path: "mxe.keygen_offset"; }]; }; writable: true; }, { name: "mxeProgram"; }]; args: [{ name: "clusterOffset"; type: "u32"; }]; discriminator: [90, 98, 117, 181, 88, 71, 135, 30]; docs: ["Re-queues the MXE keygen computation if it has expired from the mempool.", "This allows retrying the keygen if it wasn't processed in time."]; name: "requeueMxeKeygen"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; }, { name: "mxeRecoveryAccount"; pda: { seeds: [{ kind: "const"; value: [77, 120, 101, 82, 101, 99, 111, 118, 101, 114, 121, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; }, { name: "mxeProgram"; }]; args: [{ name: "mxeProgram"; type: "pubkey"; }]; discriminator: [29, 16, 225, 132, 38, 216, 206, 33]; docs: ["Sets an MXE to `Active`."]; name: "setActive"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; writable: true; }]; args: [{ name: "nodeOffset"; type: "u32"; }, { name: "config"; type: { defined: { name: "arxNodeConfig"; }; }; }]; discriminator: [163, 75, 176, 148, 145, 196, 238, 234]; name: "setArxNodeConfig"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; writable: true; }]; args: [{ name: "nodeOffset"; type: "u32"; }, { name: "meta"; type: { defined: { name: "nodeMetadata"; }; }; }]; discriminator: [176, 88, 44, 90, 127, 151, 62, 80]; name: "setArxNodeMetadata"; }, { accounts: [{ name: "currentAuthority"; signer: true; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "id"; }]; }; writable: true; }]; args: [{ name: "clusterId"; type: "u32"; }, { name: "newAuthority"; type: { option: "pubkey"; }; }]; discriminator: [94, 172, 32, 75, 38, 40, 31, 106]; name: "setClusterAuthority"; }, { accounts: [{ name: "authority"; signer: true; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "id"; }]; }; writable: true; }]; args: [{ name: "clusterId"; type: "u32"; }, { name: "tdInfo"; type: { option: { defined: { name: "nodeMetadata"; }; }; }; }]; discriminator: [182, 126, 92, 101, 25, 252, 84, 180]; name: "setClusterTdInfo"; }, { accounts: [{ name: "nodeAuthority"; signer: true; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }, { name: "mempool"; pda: { seeds: [{ kind: "const"; value: [77, 101, 109, 112, 111, 111, 108]; }, { kind: "arg"; path: "clusterOffset"; }]; }; }]; args: [{ name: "clusterOffset"; type: "u32"; }, { name: "nodeOffset"; type: "u32"; }, { name: "choice"; type: { defined: { name: "leaderChoice"; }; }; }]; discriminator: [42, 7, 112, 255, 254, 186, 135, 133]; name: "setLeaderChoice"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "node"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }]; args: [{ name: "nodeOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "mxeX25519Pubkey"; type: { array: ["u8", 32]; }; }, { name: "mxeEd25519VerifyingKey"; type: { array: ["u8", 32]; }; }, { name: "mxeElgamalPubkey"; type: { array: ["u8", 32]; }; }, { name: "mxePubkeyValidityProof"; type: { array: ["u8", 64]; }; }]; discriminator: [156, 205, 125, 215, 134, 88, 62, 144]; name: "setMxeKeys"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "node"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }, { name: "mxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }]; }; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { account: "mxeAccount"; kind: "account"; path: "mxe.cluster"; }]; }; writable: true; }]; args: [{ name: "nodeOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "nonce"; type: { array: ["u8", 16]; }; }, { name: "encryptedMxeKeys"; type: { array: [{ array: ["u8", 32]; }, 13]; }; }, { name: "keyMaterialHash"; type: { array: ["u8", 32]; }; }, { name: "blsSig"; type: { array: ["u8", 64]; }; }]; discriminator: [49, 89, 116, 64, 81, 250, 112, 64]; name: "setMxeRecoveryKeysInit"; }, { accounts: [{ docs: ["The `arcium_staking::state::StakingPoolAccount` PDA, signing via CPI. The `seeds`/`bump`", "constraint verifies it's the canonical pool PDA under `ARCIUM_STAKING_ID` (so only the", "staking program can call this)"]; name: "stakingPoolSigner"; pda: { program: { kind: "const"; value: [146, 110, 184, 172, 179, 131, 118, 35, 207, 122, 30, 190, 228, 134, 232, 140, 222, 89, 53, 150, 174, 187, 151, 58, 208, 108, 237, 119, 97, 204, 184, 186]; }; seeds: [{ kind: "const"; value: [83, 116, 97, 107, 105, 110, 103, 80, 111, 111, 108, 65, 99, 99, 111, 117, 110, 116]; }]; }; signer: true; }, { name: "cluster"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; }]; args: [{ name: "clusterOffset"; type: "u32"; }, { name: "nodeOffset"; type: "u32"; }, { name: "stake"; type: "u64"; }]; discriminator: [158, 40, 109, 244, 217, 195, 35, 140]; name: "setNodeStaking"; }, { accounts: [{ name: "nodeAuthority"; signer: true; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }]; args: [{ name: "clusterId"; type: "u32"; }, { name: "nodeBump"; type: "u32"; }, { name: "aggregatedBlsPubkey"; type: { defined: { name: "bn254g2blsPublicKey"; }; }; }]; discriminator: [192, 135, 47, 120, 63, 18, 232, 164]; name: "submitAggregatedBlsPubkey"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "recoveryPeerAccount"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 80, 101, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "peerOffset"; }]; }; }, { name: "originalMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; }, { name: "recoveryClusterAcc"; pda: { seeds: [{ kind: "const"; value: [82, 101, 99, 111, 118, 101, 114, 121, 67, 108, 117, 115, 116, 101, 114, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; }, { name: "mxeRecoveryAccount"; pda: { seeds: [{ kind: "const"; value: [77, 120, 101, 82, 101, 99, 111, 118, 101, 114, 121, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "originalMxeProgram"; }]; }; writable: true; }, { name: "originalMxeProgram"; }, { name: "backupMxeProgram"; }]; args: [{ name: "originalMxeProgram"; type: "pubkey"; }, { name: "backupMxeProgram"; type: "pubkey"; }, { name: "peerOffset"; type: "u32"; }, { name: "peerIndex"; type: "u32"; }, { name: "share"; type: { array: [{ array: ["u8", 32]; }, 5]; }; }]; discriminator: [108, 74, 123, 253, 76, 98, 190, 164]; docs: ["Submits a recovery share from a recovery peer.", "Each share contains RESCUE_KEY_COUNT (5) field elements of 32 bytes each."]; name: "submitKeyRecoveryShare"; }, { accounts: [{ name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }]; args: []; discriminator: [47, 73, 68, 127, 116, 74, 89, 62]; name: "updateCurrentEpochIdempotent"; }, { accounts: [{ name: "signer"; signer: true; writable: true; }, { name: "compDefAcc"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "mxeProgram"; }, { kind: "arg"; path: "compOffset"; }]; }; }, { name: "compDefRaw"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 82, 97, 119]; }, { kind: "account"; path: "compDefAcc"; }, { kind: "arg"; path: "rawCircuitIndex"; }]; }; writable: true; }, { address: "11111111111111111111111111111111"; name: "systemProgram"; }]; args: [{ name: "compOffset"; type: "u32"; }, { name: "mxeProgram"; type: "pubkey"; }, { name: "rawCircuitIndex"; type: "u8"; }, { name: "uploadData"; type: { array: ["u8", 814]; }; }, { name: "offset"; type: "u32"; }]; discriminator: [86, 238, 214, 111, 30, 23, 168, 100]; name: "uploadCircuit"; }, { accounts: [{ name: "nodeAuthority"; signer: true; writable: true; }, { name: "clusterAcc"; pda: { seeds: [{ kind: "const"; value: [67, 108, 117, 115, 116, 101, 114]; }, { kind: "arg"; path: "clusterOffset"; }]; }; writable: true; }, { name: "arxNodeAcc"; pda: { seeds: [{ kind: "const"; value: [65, 114, 120, 78, 111, 100, 101]; }, { kind: "arg"; path: "nodeOffset"; }]; }; }, { name: "clock"; pda: { seeds: [{ kind: "const"; value: [67, 108, 111, 99, 107, 65, 99, 99, 111, 117, 110, 116]; }]; }; writable: true; }]; args: [{ name: "clusterOffset"; type: "u32"; }, { name: "nodeOffset"; type: "u32"; }, { name: "feeVote"; type: "u64"; }]; discriminator: [39, 118, 79, 185, 118, 12, 71, 84]; name: "voteFee"; }, { accounts: [{ name: "authority"; signer: true; writable: true; }, { name: "originalMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; }, { name: "backupMxe"; pda: { seeds: [{ kind: "const"; value: [77, 88, 69, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeRecoveryAccount"; }]; }; writable: true; }, { name: "mxeRecoveryAccount"; pda: { seeds: [{ kind: "const"; value: [77, 120, 101, 82, 101, 99, 111, 118, 101, 114, 121, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "originalMxeProgram"; }]; }; writable: true; }, { name: "keyRecoveryFinalizeCompDef"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "account"; path: "mxeRecoveryAccount"; }, { kind: "const"; value: [3, 0, 0, 0]; }]; }; writable: true; }, { name: "keyRecoveryFinalizeComputation"; pda: { seeds: [{ kind: "const"; value: [67, 111, 109, 112, 117, 116, 97, 116, 105, 111, 110, 65, 99, 99, 111, 117, 110, 116]; }, { kind: "arg"; path: "backupClusterOffset"; }, { kind: "account"; path: "mxeRecoveryAccount"; }]; }; writable: true; }, { name: "executingPool"; pda: { seeds: [{ kind: "const"; value: [69, 120, 101, 99, 112, 111, 111, 108]; }, { kind: "arg"; path: "backupClusterOffset"; }]; }; writable: true; }, { name: "originalMxeProgram"; }, { name: "backupMxeProgram"; }]; args: [{ name: "originalMxeProgram"; type: "pubkey"; }, { name: "backupClusterOffset"; type: "u32"; }]; discriminator: [28, 29, 32, 130, 111, 5, 244, 101]; docs: ["Closes all recovery-related accounts in the cancel path.", "Instruction name starts with 'Z' to append to the idls."]; name: "zCloseAbortedKeyRecovery"; }]


metadata

metadata: object

NameType
description"The Arcium program"
name"arcium"
spec"0.1.0"
version"0.13.2"

types

types: [{ name: "abortReason"; type: { kind: "enum"; variants: [{ name: "invalidMac"; }, { name: "expectedSentShare"; }, { name: "expectedFieldElement"; }, { name: "expectedAbort"; }, { name: "malformedData"; }, { name: "computationFailed"; }, { name: "internalError"; }, { name: "preprocessingStreamError"; }, { name: "divisionByZero"; }, { name: "noSignature"; }, { name: "invalidSignature"; }, { name: "primitiveError"; }, { name: "invalidBatchLength"; }, { name: "quadraticNonResidue"; }, { name: "bitConversionError"; }, { name: "channelClosed"; }, { name: "timeoutElapsed"; }, { name: "keyRecoveryError"; }]; }; }, { name: "acccountAccessInfo"; repr: { kind: "c"; }; serialization: "bytemuck"; type: { fields: [{ name: "inner"; type: "u16"; }]; kind: "struct"; }; }, { name: "accountArgument"; type: { fields: [{ name: "pubkey"; type: "pubkey"; }, { name: "offset"; type: "u32"; }, { name: "length"; type: "u32"; }]; kind: "struct"; }; }, { name: "activation"; type: { fields: [{ docs: ["epoch for the cluster was activated. Epoch::INFINITY if inactive."]; name: "activationEpoch"; type: { defined: { name: "epoch"; }; }; }, { docs: ["epoch for the cluster to be deactivated. Epoch::INFINITY if none."]; name: "deactivationEpoch"; type: { defined: { name: "epoch"; }; }; }]; kind: "struct"; }; }, { docs: ["Container for arguments that separates small inline values from large indexed data"]; name: "argumentList"; type: { fields: [{ name: "args"; type: { vec: { defined: { name: "argumentRef"; }; }; }; }, { name: "byteArrays"; type: { vec: { array: ["u8", 32]; }; }; }, { name: "plaintextNumbers"; type: { vec: "u64"; }; }, { name: "values128Bit"; type: { vec: "u128"; }; }, { name: "accounts"; type: { vec: { defined: { name: "accountArgument"; }; }; }; }]; kind: "struct"; }; }, { docs: ["A reference to an argument - stores small values that don't affect alignment inline and large", "values as indices."]; name: "argumentRef"; type: { kind: "enum"; variants: [{ fields: ["bool"]; name: "plaintextBool"; }, { fields: ["u8"]; name: "plaintextU8"; }, { fields: ["i8"]; name: "plaintextI8"; }, { fields: ["u8"]; name: "plaintextU16"; }, { fields: ["u8"]; name: "plaintextU32"; }, { fields: ["u8"]; name: "plaintextU64"; }, { fields: ["u8"]; name: "plaintextU128"; }, { fields: ["u8"]; name: "plaintextFloat"; }, { fields: ["u8"]; name: "encryptedBool"; }, { fields: ["u8"]; name: "encryptedU8"; }, { fields: ["u8"]; name: "encryptedU16"; }, { fields: ["u8"]; name: "encryptedU32"; }, { fields: ["u8"]; name: "encryptedU64"; }, { fields: ["u8"]; name: "encryptedU128"; }, { fields: ["u8"]; name: "encryptedFloat"; }, { fields: ["u8"]; name: "x25519Pubkey"; }, { fields: ["u8"]; name: "arcisEd25519Signature"; }, { fields: ["u8"]; name: "account"; }, { fields: ["u8"]; name: "plaintextI16"; }, { fields: ["u8"]; name: "plaintextI32"; }, { fields: ["u8"]; name: "plaintextI64"; }, { fields: ["u8"]; name: "plaintextI128"; }, { fields: ["u8"]; name: "encryptedI8"; }, { fields: ["u8"]; name: "encryptedI16"; }, { fields: ["u8"]; name: "encryptedI32"; }, { fields: ["u8"]; name: "encryptedI64"; }, { fields: ["u8"]; name: "encryptedI128"; }, { fields: ["u8"]; name: "plaintextPoint"; }]; }; }, { name: "arxNode"; type: { fields: [{ docs: ["X25519 public key. MUST BE AT byte index 8 - 40"]; name: "x25519Pubkey"; type: { array: ["u8", 32]; }; }, { name: "primaryStakingAccount"; type: "pubkey"; }, { name: "metadata"; type: { defined: { name: "nodeMetadata"; }; }; }, { name: "config"; type: { defined: { name: "arxNodeConfig"; }; }; }, { docs: ["The offsets of the cluster the node is a member of."]; name: "clusterMembership"; type: { defined: { name: "clusterMembership"; }; }; }, { name: "cuCapacityClaim"; type: "u64"; }, { name: "isActive"; type: "bool"; }, { docs: ["BLS public key for this node (64 bytes compressed G2 point for alt-bn128)"]; name: "blsPubkey"; type: { defined: { name: "bn254g2blsPublicKey"; }; }; }, { name: "bump"; type: "u8"; }]; kind: "struct"; }; }, { name: "arxNodeConfig"; type: { fields: [{ docs: ["Admin key for node management operations"]; name: "authority"; type: "pubkey"; }, { docs: ["Key used to sign computation callbacks - separated for operational security"]; name: "callbackAuthority"; type: "pubkey"; }]; kind: "struct"; }; }, { name: "bn254g2blsPublicKey"; type: { fields: [{ array: ["u8", 64]; }]; kind: "struct"; }; }, { docs: ["A callback account to be provided to a computation.", "We don't specify signer, since node operators can't sign."]; name: "callbackAccount"; type: { fields: [{ name: "pubkey"; type: "pubkey"; }, { name: "isWritable"; type: "bool"; }]; kind: "struct"; }; }, { name: "callbackComputationEvent"; type: { fields: [{ name: "computationOffset"; type: "u64"; }, { name: "mxeProgramId"; type: "pubkey"; }]; kind: "struct"; }; }, { docs: ["A custom callback instruction with its own program ID and discriminator."]; name: "callbackInstruction"; type: { fields: [{ name: "programId"; type: "pubkey"; }, { name: "discriminator"; type: "bytes"; }, { name: "accounts"; type: { vec: { defined: { name: "callbackAccount"; }; }; }; }]; kind: "struct"; }; }, { name: "circuitFailureReason"; type: { kind: "enum"; variants: [{ name: "onChainCircuitNotReady"; }, { name: "offChainCircuitFetchFailed"; }, { name: "offChainCircuitHashMismatch"; }, { name: "circuitCuMismatch"; }, { name: "localCircuitFetchFailed"; }, { name: "circuitSerialization"; }, { name: "otherArxError"; }]; }; }, { name: "circuitSource"; type: { kind: "enum"; variants: [{ fields: [{ defined: { name: "localCircuitSource"; }; }]; name: "local"; }, { fields: [{ defined: { name: "onChainCircuitSource"; }; }]; name: "onChain"; }, { fields: [{ defined: { name: "offChainCircuitSource"; }; }]; name: "offChain"; }]; }; }, { name: "claimFailureEvent"; type: { fields: [{ name: "computationOffset"; type: "u64"; }, { name: "mxeProgramId"; type: "pubkey"; }]; kind: "struct"; }; }, { docs: ["An account storing the current network epoch"]; name: "clockAccount"; type: { fields: [{ name: "startEpoch"; type: { defined: { name: "epoch"; }; }; }, { name: "currentEpoch"; type: { defined: { name: "epoch"; }; }; }, { name: "startEpochTimestamp"; type: { defined: { name: "timestamp"; }; }; }, { name: "bump"; type: "u8"; }]; kind: "struct"; }; }, { name: "closeComputationDefinitionBuffersEvent"; type: { fields: [{ name: "compDefOffset"; type: "u32"; }, { name: "mxeProgramId"; type: "pubkey"; }, { name: "rawCircuitIndex"; type: "u8"; }]; kind: "struct"; }; }, { name: "closeComputationDefinitionEvent"; type: { fields: [{ name: "compDefOffset"; type: "u32"; }, { name: "mxeProgramId"; type: "pubkey"; }]; kind: "struct"; }; }, { name: "closeMxeEvent"; type: { fields: [{ name: "mxeProgramId"; type: "pubkey"; }, { name: "clusterOffset"; type: "u32"; }]; kind: "struct"; }; }, { name: "cluster"; type: { fields: [{ name: "tdInfo"; type: { option: { defined: { name: "nodeMetadata"; }; }; }; }, { name: "authority"; type: { option: "pubkey"; }; }, { name: "clusterSize"; type: "u16"; }, { name: "activation"; type: { defined: { name: "activation"; }; }; }, { name: "maxCapacity"; type: "u64"; }, { docs: ["The price of compute units in this cluster, in micro-lamports (millionths of a lamport)."]; name: "cuPrice"; type: "u64"; }, { docs: ["The proposals for the cu price proposals in the next epoch, in micro-lamports.", "Index 0 is always the current price, we allow `MAX_FEE_PROPS` at most."]; name: "cuPriceProposals"; type: { array: ["u64", 32]; }; }, { docs: ["The epoch this cluster was last updated.", "Used to determine if the cluster needs to be updated."]; name: "lastUpdatedEpoch"; type: { defined: { name: "epoch"; }; }; }, { name: "nodes"; type: { vec: { defined: { name: "nodeRef"; }; }; }; }, { name: "pendingNodes"; type: { vec: "u32"; }; }, { docs: ["BLS public key for the cluster (64 bytes compressed G2 point for alt-bn128)", "Set only when all nodes have submitted and agreed on the aggregated pubkey"]; name: "blsPublicKey"; type: { defined: { generics: [{ kind: "type"; type: { defined: ...; }; }]; name: "setUnset"; }; }; }, { docs: ["PDA bump. Declared by hand rather than via the `#[bump]` macro (which appends the bump", "as the *final* struct field) so it keeps its original offset right after", "`bls_public_key`. Everything below is appended *after* the bump, which means the byte", "layout of every field up to and including `bump` is identical to the pre-staking", "`Cluster` — old deserializers (including external user programs that read this account)", "decode the original prefix and harmlessly ignore the trailing staking fields."]; name: "bump"; type: "u8"; }, { docs: ["Running total of computation rewards accrued during `rewards_epoch`. Drained to zero", "by `claim_node_fees` when nodes settle via `finalize_epoch_rewards`."]; name: "currentEpochTotalRewards"; type: "u64"; }, { docs: ["The epoch that `current_epoch_total_rewards` belongs to. If the clock has advanced", "past this epoch and `current_epoch_total_rewards > 0`, the rewards are stale", "(nodes didn't settle in time) — new accruals are silently skipped until nodes", "finalize, which punishes lazy operators."]; name: "rewardsEpoch"; type: { defined: { name: "epoch"; }; }; }, { docs: ["The selector for leader."]; name: "leaderSelector"; type: { defined: { name: "leaderSelector"; }; }; }]; kind: "struct"; }; }, { name: "clusterMembership"; type: { kind: "enum"; variants: [{ name: "inactive"; }, { fields: ["u32"]; name: "active"; }, { fields: ["u32"]; name: "proposed"; }]; }; }, { docs: ["A computation execution call to a [super::mxe::ComputationDefinitionAccount]."]; name: "computationAccount"; type: { fields: [{ name: "payer"; type: "pubkey"; }, { docs: ["The program ID of the MXE that this computation is associated with."]; name: "mxeProgramId"; type: "pubkey"; }, { docs: ["The offset of the corresponding [super::mxe::ComputationDefinitionAccount]."]; name: "computationDefinitionOffset"; type: "u32"; }, { docs: ["The execution fee for the execution."]; name: "executionFee"; type: { defined: { name: "executionFee"; }; }; }, { name: "slot"; type: "u64"; }, { name: "slotCounter"; type: "u16"; }, { name: "status"; type: { defined: { name: "computationStatus"; }; }; }, { name: "arguments"; type: { defined: { name: "argumentList"; }; }; }, { name: "customCallbackInstructions"; type: { vec: { defined: { name: "callbackInstruction"; }; }; }; }, { name: "callbackTransactionsRequired"; type: "u8"; }, { name: "callbackTransactionsSubmittedBm"; type: "u16"; }, { name: "bump"; type: "u8"; }]; kind: "struct"; }; }, { docs: ["An account representing a [ComputationDefinition] in a MXE."]; name: "computationDefinitionAccount"; type: { fields: [{ docs: ["Slot at which the computation definition was deactivated, or `None` while active.", "An OnChain circuit with `OnChainCircuitSource.is_completed == false` is not yet", "queueable even when `deactivation_slot == None`; use `is_ready_to_queue()` to combine", "both conditions."]; name: "deactivationSlot"; type: { option: "u64"; }; }, { docs: ["The amount of CUs this computation will use."]; name: "cuAmount"; type: "u64"; }, { docs: ["The interface of the computation to execute."]; name: "definition"; type: { defined: { name: "computationDefinitionMeta"; }; }; }, { docs: ["Where to fetch the actual raw circuit to execute."]; name: "circuitSource"; type: { defined: { name: "circuitSource"; }; }; }, { docs: ["We have to manually put the bump here instead of using the #[bump] for backwards", "compatibility."]; name: "bump"; type: "u8"; }, { docs: ["Padding to avoid breaking change since the above used to be Option<Pubkey>"]; name: "padding"; type: { array: ["u8", 24]; }; }]; kind: "struct"; }; }, { docs: ["A computation definition for execution in a MXE."]; name: "computationDefinitionMeta"; type: { fields: [{ name: "circuitLen"; type: "u32"; }, { name: "signature"; type: { defined: { name: "computationSignature"; }; }; }]; kind: "struct"; }; }, { name: "computationDefinitionRaw"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "bump"; type: "u8"; }, { docs: ["The length here is meaningless."]; name: "compiledCircuit"; type: { array: ["u8", 0]; }; }]; kind: "struct"; }; }, { docs: ["Metadata for each computation slot in the execpool."]; name: "computationMeta"; repr: { kind: "c"; }; serialization: "bytemuck"; type: { fields: [{ name: "index"; type: "u64"; }, { docs: ["Slot at which the computation was originally queued (derived from mempool buffer", "position at promotion time). Preserves the original queue time so lifecycle checks", "like `all_computations_newer_than` compare against the real queue slot, not the", "promotion slot."]; name: "queuedSlot"; type: "u64"; }]; kind: "struct"; }; }, { name: "computationReference"; repr: { kind: "c"; }; serialization: "bytemuck"; type: { fields: [{ name: "computationOffset"; type: "u64"; }, { name: "priorityFee"; type: "u64"; }, { name: "accs"; type: { array: [{ defined: { name: "acccountAccessInfo"; }; }, 15]; }; }, { name: "padding"; type: { array: ["u8", 2]; }; }]; kind: "struct"; }; }, { docs: ["The signature of a computation defined in a [ComputationDefinition]."]; name: "computationSignature"; type: { fields: [{ docs: ["The input parameters of the computation."]; name: "parameters"; type: { vec: { defined: { name: "parameter"; }; }; }; }, { docs: ["The output(s) of the computation."]; name: "outputs"; type: { vec: { defined: { name: "output"; }; }; }; }]; kind: "struct"; }; }, { name: "computationStatus"; type: { kind: "enum"; variants: [{ name: "queued"; }, { name: "finalized"; }]; }; }, { name: "deactivateComputationDefinitionEvent"; type: { fields: [{ name: "compDefOffset"; type: "u32"; }, { name: "mxeProgramId"; type: "pubkey"; }, { name: "deactivationSlot"; type: "u64"; }]; kind: "struct"; }; }, { docs: ["The network epoch"]; name: "epoch"; type: { fields: ["u64"]; kind: "struct"; }; }, { generics: [{ kind: "const"; name: "maxParrallelComputations"; type: "usize"; }]; name: "executingPool"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "bump"; type: "u8"; }, { name: "padding"; type: { array: ["u8", 7]; }; }, { name: "counter"; type: "u64"; }, { name: "meta"; type: { array: [{ defined: { name: "computationMeta"; }; }, { generic: "maxParrallelComputations"; }]; }; }, { name: "currentlyExecuting"; type: { array: [{ defined: { name: "computationReference"; }; }, { generic: "maxParrallelComputations"; }]; }; }]; kind: "struct"; }; }, { name: "executionFailure"; type: { kind: "enum"; variants: [{ name: "serialization"; }, { name: "router"; }, { name: "circuit"; }, { name: "inputs"; }, { name: "protocolInit"; }, { name: "protocolRun"; }, { fields: [{ defined: { name: "abortReason"; }; }]; name: "abort"; }, { fields: [{ defined: { name: "keyRecoveryFailureReason"; }; }]; name: "keyRecoveryFailure"; }, { name: "trustedDealer"; }, { name: "outputTooLarge"; }, { fields: [{ defined: { name: "circuitFailureReason"; }; }]; name: "circuitFailure"; }]; }; }, { name: "executionFee"; type: { fields: [{ docs: ["The base fee for the computation."]; name: "baseFee"; type: "u64"; }, { docs: ["The additional fee to enforce prioritized execution in the mempool."]; name: "priorityFee"; type: "u64"; }, { docs: ["The compute unit limit to request for the callback transaction(s), i.e. how many CUs the", "node should request via set_compute_unit_limit. 0 means unset, in which case the node uses", "the default compute budget.", "", "This reuses the low 4 bytes of what was previously `output_delivery_fee: u64` (which was", "always 0), so the serialized layout of ExecutionFee is unchanged."]; name: "callbackCuLimit"; type: "u32"; }, { docs: ["Padding preserving the original 8-byte (u64) layout of the former `output_delivery_fee`."]; name: "padding"; type: "u32"; }]; kind: "struct"; }; }, { name: "executionStatus"; type: { kind: "enum"; variants: [{ name: "success"; }, { fields: [{ defined: { name: "executionFailure"; }; }, { array: ["u8", 32]; }]; name: "failure"; }]; }; }, { name: "failureClaimAccountHeader"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "bump"; type: "u8"; }, { name: "isComplete"; type: "bool"; }, { name: "padding"; type: { array: ["u8", 6]; }; }, { name: "challengeEndSlot"; type: "u64"; }, { name: "poster"; type: "pubkey"; }]; kind: "struct"; }; }, { name: "feePool"; type: { fields: [{ name: "bump"; type: "u8"; }]; kind: "struct"; }; }, { name: "finalizeComputationEvent"; type: { fields: [{ name: "computationOffset"; type: "u64"; }, { name: "mxeProgramId"; type: "pubkey"; }, { name: "executionStatus"; type: { defined: { name: "executionStatus"; }; }; }]; kind: "struct"; }; }, { name: "finalizeFailureDataEvent"; type: { fields: [{ name: "computationOffset"; type: "u64"; }, { name: "mxeProgramId"; type: "pubkey"; }]; kind: "struct"; }; }, { name: "initComputationEvent"; type: { fields: [{ name: "computationOffset"; type: "u64"; }, { name: "mxeProgramId"; type: "pubkey"; }]; kind: "struct"; }; }, { name: "keyRecoveryEvent"; type: { fields: [{ name: "computationOffset"; type: "u64"; }, { name: "mxeProgramId"; type: "pubkey"; }, { name: "backupMxeProgramId"; type: "pubkey"; }]; kind: "struct"; }; }, { name: "keyRecoveryFailureReason"; type: { kind: "enum"; variants: [{ name: "keysDigestMismatch"; }, { name: "x25519PubkeyMismatch"; }, { name: "ed25519VerifyingKeyMismatch"; }, { name: "elGamalPubkeyMismatch"; }, { name: "tooManyCorruptPeers"; }, { name: "serialization"; }, { name: "noPubkeysSet"; }]; }; }, { name: "largeExecPool"; repr: { kind: "transparent"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "inner"; type: { defined: { generics: [{ kind: "const"; value: "100"; }]; name: "executingPool"; }; }; }]; kind: "struct"; }; }, { name: "largeMempool"; repr: { kind: "transparent"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "inner"; type: { defined: { name: "largeMempoolInner"; }; }; }]; kind: "struct"; }; }, { name: "largeMempoolInner"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "lastUpdatedSlot"; type: "u64"; }, { name: "slotCounter"; type: "u16"; }, { name: "bump"; type: "u8"; }, { name: "padding"; type: { array: ["u8", 5]; }; }, { name: "computations"; type: { defined: { name: "largeMempoolInnerBuffer"; }; }; }]; kind: "struct"; }; }, { name: "largeMempoolInnerBuffer"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "elems"; type: { array: [{ defined: { name: "largeMempoolInnerBufferHeap"; }; }, 180]; }; }, { docs: ["Bit array tracking which slots are valid (1 = valid, 0 = stale)", "1 bit per slot, packed into bytes. For $buffer_length=180, this is 23 bytes."]; name: "validBits"; type: { array: ["u8", 23]; }; }, { name: "startIndex"; type: "u8"; }, { name: "length"; type: "u8"; }, { name: "padding"; type: { array: ["u8", 7]; }; }]; kind: "struct"; }; }, { name: "largeMempoolInnerBufferHeap"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "entries"; type: { array: [{ defined: { name: "computationReference"; }; }, 100]; }; }, { name: "count"; type: "u16"; }, { name: "padding"; type: { array: ["u8", 6]; }; }]; kind: "struct"; }; }, { docs: ["The computation chosen by a node to be executed when the node is leader."]; name: "leaderChoice"; type: { fields: [{ docs: ["Computation_offset of the chosen computation."]; name: "offset"; type: "u64"; }, { docs: ["The index of the max_heap the computation is in inside the MemPool's Circular Buffer.", "This is the physical index, not the logical one."]; name: "slotIdx"; type: "u16"; }]; kind: "struct"; }; }, { docs: ["The information about a node."]; name: "leaderInfo"; type: { fields: [{ docs: ["The node's stake."]; name: "stake"; type: "u64"; }, { docs: ["The number + 1 of times the node has been chosen as leader in this cycle.", "0 if the stake is unset.", "This way works well for performance."]; name: "count"; type: "u64"; }, { docs: ["The last time the node has been chosen as leader."]; name: "lastCounterPlusOne"; type: "u64"; }, { docs: ["The choice of that node."]; name: "choice"; type: { defined: { name: "leaderChoice"; }; }; }]; kind: "struct"; }; }, { docs: ["To select a Leader.", "Uses the greatest divisors method: https://en.wikipedia.org/wiki/D%27Hondt_method"]; name: "leaderSelector"; type: { fields: [{ docs: ["The last epoch the staking was set."]; name: "stakingEpoch"; type: { defined: { name: "epoch"; }; }; }, { docs: ["The information about each node."]; name: "info"; type: { vec: { defined: { name: "leaderInfo"; }; }; }; }]; kind: "struct"; }; }, { name: "localCircuitSource"; type: { kind: "enum"; variants: [{ name: "mxeKeygen"; }, { name: "mxeKeyRecoveryInit"; }, { name: "mxeKeyRecoveryFinalize"; }]; }; }, { docs: ["A MPC Execution Environment."]; name: "mxeAccount"; type: { fields: [{ docs: ["`cluster` used to be Option<u32>, so we need to add a padding byte for backwards", "compatibility."]; name: "padding"; type: "u8"; }, { docs: ["The cluster executing the MXE."]; name: "cluster"; type: "u32"; }, { docs: ["The offset used for the keygen computation account.", "Stored so requeue_mxe_keygen can find the computation account."]; name: "keygenOffset"; type: "u64"; }, { docs: ["The offset used for the key recovery init computation account.", "Stored so queue_key_recovery_init can find the computation account."]; name: "keyRecoveryInitOffset"; type: "u64"; }, { docs: ["The program ID of the program that this MXE is associated with. Needed so that when we", "index this account offchain we can find out what program it is associated with."]; name: "mxeProgramId"; type: "pubkey"; }, { docs: ["The management authority of the MXE."]; name: "authority"; type: { option: "pubkey"; }; }, { docs: ["The utility pubkeys, consisting of", "- x25519 pubkey (32 bytes), used for key exchange", "- ed25519 verifying key (32 bytes), used for signature verification", "- ElGamal pubkey (32 bytes), used for c-spl", "- ElGamal pubkey validity proof (64 bytes), used for c-spl"]; name: "utilityPubkeys"; type: { defined: { generics: [{ kind: "type"; type: { defined: ...; }; }]; name: "setUnset"; }; }; }, { name: "lutOffsetSlot"; type: "u64"; }, { docs: ["The offsets of all [ComputationDefinitionAccount]s of this MXE."]; name: "computationDefinitions"; type: { vec: "u32"; }; }, { docs: ["The status of this MXE (`Active` or `Migration`)."]; name: "status"; type: { defined: { name: "mxeStatus"; }; }; }, { docs: ["PDA bump. Declared by hand rather than via the `#[bump]` macro (which appends the bump", "as the *final* struct field) so it keeps its original offset right after `status`.", "The recovery-reward fields below are appended *after* the bump, leaving the byte layout", "of every field up to and including `bump` identical to the pre-staking `MXEAccount` —", "old deserializers (including external user programs) decode the original prefix and", "harmlessly ignore the trailing fields."]; name: "bump"; type: "u8"; }, { docs: ["Running total of recovery-peer rewards accrued during `recovery_rewards_epoch`.", "Fed by the 20% slice of every computation/failure fee processed on this MXE;", "drained to zero by `claim_recovery_peer_fees` when recovery peers settle via", "`arcium_staking::finalize_recovery_epoch_rewards`. Same stale-epoch guard as", "`Cluster::current_epoch_total_rewards` — if peers don't settle before the epoch", "rolls over, new accruals are silently skipped until the pot is drained."]; name: "currentEpochRecoveryRewards"; type: "u64"; }, { docs: ["Epoch that `current_epoch_recovery_rewards` is attributed to. Compared against the", "executing cluster's `last_updated_epoch` (the same proxy used by cluster rewards) to", "decide whether a new accrual is for the current round or a stale one."]; name: "recoveryRewardsEpoch"; type: { defined: { name: "epoch"; }; }; }]; kind: "struct"; }; }, { name: "mediumExecPool"; repr: { kind: "transparent"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "inner"; type: { defined: { generics: [{ kind: "const"; value: "10"; }]; name: "executingPool"; }; }; }]; kind: "struct"; }; }, { name: "mediumMempool"; repr: { kind: "transparent"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "inner"; type: { defined: { name: "mediumMempoolInner"; }; }; }]; kind: "struct"; }; }, { name: "mediumMempoolInner"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "lastUpdatedSlot"; type: "u64"; }, { name: "slotCounter"; type: "u16"; }, { name: "bump"; type: "u8"; }, { name: "padding"; type: { array: ["u8", 5]; }; }, { name: "computations"; type: { defined: { name: "mediumMempoolInnerBuffer"; }; }; }]; kind: "struct"; }; }, { name: "mediumMempoolInnerBuffer"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "elems"; type: { array: [{ defined: { name: "mediumMempoolInnerBufferHeap"; }; }, 180]; }; }, { docs: ["Bit array tracking which slots are valid (1 = valid, 0 = stale)", "1 bit per slot, packed into bytes. For $buffer_length=180, this is 23 bytes."]; name: "validBits"; type: { array: ["u8", 23]; }; }, { name: "startIndex"; type: "u8"; }, { name: "length"; type: "u8"; }, { name: "padding"; type: { array: ["u8", 7]; }; }]; kind: "struct"; }; }, { name: "mediumMempoolInnerBufferHeap"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "entries"; type: { array: [{ defined: { name: "computationReference"; }; }, 10]; }; }, { name: "count"; type: "u16"; }, { name: "padding"; type: { array: ["u8", 6]; }; }]; kind: "struct"; }; }, { name: "mempoolSize"; type: { kind: "enum"; variants: [{ name: "tiny"; }, { name: "small"; }, { name: "medium"; }, { name: "large"; }]; }; }, { docs: ["Account for tracking key recovery execution state.", "PDA seeds: [MxeRecoveryAccount::SEED, original_mxe_pubkey]"]; name: "mxeRecoveryAccount"; repr: { kind: "c"; }; serialization: "bytemuck"; type: { fields: [{ docs: ["The computation offset for the queued key_recovery_finalize circuit."]; name: "keyRecoveryFinalizeOffset"; type: "u64"; }, { docs: ["The shares submitted by recovery peers. Each peer submits RESCUE_KEY_COUNT (5) field", "elements. Each field element is 32 bytes. Zeros indicate not yet uploaded."]; name: "shares"; type: { array: [{ array: [{ array: ...; }, 5]; }, 100]; }; }, { name: "originalMxePubkey"; type: "pubkey"; }, { name: "backupMxePubkey"; type: "pubkey"; }, { docs: ["Padding to ensure struct size is u64 aligned"]; name: "padding"; type: { array: ["u8", 7]; }; }, { name: "bump"; type: "u8"; }]; kind: "struct"; }; }, { docs: ["The status of an MXE."]; name: "mxeStatus"; type: { kind: "enum"; variants: [{ name: "active"; }, { name: "migration"; }]; }; }, { docs: ["location as [ISO 3166-1 alpha-2](https://www.iso.org/iso-3166-country-codes.html) country code"]; name: "nodeMetadata"; type: { fields: [{ docs: ["`Ipv4Addr`, represented by its 4 octets"]; name: "ip"; type: { array: ["u8", 4]; }; }, { docs: ["Needed for MPC protocol"]; name: "peerId"; type: { array: ["u8", 32]; }; }, { name: "location"; type: "u8"; }]; kind: "struct"; }; }, { docs: ["A reference to a node in the cluster.", "The offset is to derive the Node Account."]; name: "nodeRef"; type: { fields: [{ name: "offset"; type: "u32"; }, { docs: ["Reserved padding occupying the 8 bytes that previously held `current_total_rewards: u64`", "(per-node reward tracking, now superseded by the cluster-level", "`current_epoch_total_rewards`). We keep these bytes rather than shrinking `NodeRef`", "because `nodes: Vec<NodeRef>` sits in the *middle* of the `Cluster` struct: removing the", "field would change the encoded element size and desync the borsh decode of every field", "after `nodes` for already-deployed accounts and external deserializers. Do not repurpose", "without a full account migration."]; name: "padding"; type: { array: ["u8", 8]; }; }, { name: "vote"; type: "u8"; }]; kind: "struct"; }; }, { name: "offChainCircuitSource"; type: { fields: [{ name: "source"; type: "string"; }, { name: "hash"; type: { array: ["u8", 32]; }; }]; kind: "struct"; }; }, { name: "onChainCircuitSource"; type: { fields: [{ docs: ["Specifies if the circuit for this computation has been fully uploaded,", "as this can take multiple transactions due to the circuit size."]; name: "isCompleted"; type: "bool"; }, { docs: ["The authority that is allowed to upload circuit data and finalize the computation", "definition. This controls the definition lifecycle, distinct from", "`finalization_authority` (in `ComputationDefinitionAccount`) which controls computation", "execution finalization."]; name: "uploadAuth"; type: "pubkey"; }]; kind: "struct"; }; }, { name: "operator"; type: { fields: [{ name: "nodeOffsets"; type: { vec: "u32"; }; }, { name: "meta"; type: { defined: { name: "operatorMeta"; }; }; }, { name: "bump"; type: "u8"; }]; kind: "struct"; }; }, { docs: ["location as [ISO 3166-1 alpha-2](https://www.iso.org/iso-3166-country-codes.html) country code"]; name: "operatorMeta"; type: { fields: [{ docs: ["URL should point to a JSON containing the following fields:", "- `name`: String, the name of the operator", "- `description`: String, a description of the operator", "- `icon`: String, a URL to an icon representing the operator", "- `url`: String, a URL to the operator's website"]; name: "url"; type: "string"; }, { name: "location"; type: "u8"; }]; kind: "struct"; }; }, { docs: ["An output of a computation.", "We currently don't support encrypted outputs yet since encrypted values are passed via", "data objects."]; name: "output"; type: { kind: "enum"; variants: [{ name: "plaintextBool"; }, { name: "plaintextU8"; }, { name: "plaintextU16"; }, { name: "plaintextU32"; }, { name: "plaintextU64"; }, { name: "plaintextU128"; }, { name: "ciphertext"; }, { name: "arcisX25519Pubkey"; }, { name: "plaintextFloat"; }, { name: "plaintextPoint"; }, { name: "plaintextI8"; }, { name: "plaintextI16"; }, { name: "plaintextI32"; }, { name: "plaintextI64"; }, { name: "plaintextI128"; }]; }; }, { docs: ["A parameter of a computation.", "We differentiate between plaintext and encrypted parameters and data objects.", "Plaintext parameters are directly provided as their value.", "Encrypted parameters are provided as an offchain reference to the data.", "Data objects are provided as a reference to the data object account."]; name: "parameter"; type: { kind: "enum"; variants: [{ name: "plaintextBool"; }, { name: "plaintextU8"; }, { name: "plaintextU16"; }, { name: "plaintextU32"; }, { name: "plaintextU64"; }, { name: "plaintextU128"; }, { name: "ciphertext"; }, { name: "arcisX25519Pubkey"; }, { name: "arcisSignature"; }, { name: "plaintextFloat"; }, { name: "plaintextI8"; }, { name: "plaintextI16"; }, { name: "plaintextI32"; }, { name: "plaintextI64"; }, { name: "plaintextI128"; }, { name: "plaintextPoint"; }]; }; }, { docs: ["Account for tracking permissioned recovery peers - needed until we have staking."]; name: "permissionedRecoveryPeersAccount"; repr: { kind: "c"; }; serialization: "bytemuck"; type: { fields: [{ docs: ["DO NOT PUT ANYTHING ELSE BEFORE THE PERMISSIONED_PEERS FIELD, IT'S EXPECTED TO BE AT", "OFFSET 8."]; name: "permissionedPeers"; type: { array: ["pubkey", 25]; }; }, { name: "bump"; type: "u8"; }]; kind: "struct"; }; }, { name: "queueComputationEvent"; type: { fields: [{ name: "computationOffset"; type: "u64"; }, { name: "mxeProgramId"; type: "pubkey"; }]; kind: "struct"; }; }, { name: "recoveryClusterAccount"; repr: { kind: "c"; }; serialization: "bytemuck"; type: { fields: [{ docs: ["The offsets of nodes in our key recovery cluster. 0 means null in this context.", "DO NOT PUT ANYTHING BEFORE THE RECOVERY_PEERS FIELD, IT'S EXPECTED TO BE AT OFFSET 8."]; name: "recoveryPeers"; type: { array: ["u32", 100]; }; }, { name: "recoveryKeyMaterial"; type: { defined: { name: "recoveryKeyMaterial"; }; }; }, { name: "padding"; type: { array: ["u8", 2]; }; }, { name: "bump"; type: "u8"; }]; kind: "struct"; }; }, { name: "recoveryKeyMaterial"; repr: { kind: "c"; }; serialization: "bytemuck"; type: { fields: [{ name: "nonce"; type: { array: ["u8", 16]; }; }, { name: "encryptedMxeKeys"; type: { array: [{ array: ["u8", 32]; }, 13]; }; }, { name: "keyMaterialHash"; type: { array: ["u8", 32]; }; }, { name: "recoveryKeyshares"; type: { array: [{ array: [{ array: ...; }, 5]; }, 100]; }; }, { name: "blsSig"; type: { array: ["u8", 64]; }; }, { name: "status"; type: "u8"; }]; kind: "struct"; }; }, { name: "recoveryPeerAccount"; repr: { kind: "c"; }; serialization: "bytemuck"; type: { fields: [{ name: "authority"; type: "pubkey"; }, { docs: ["DO NOT PUT ANYTHING ELSE BEFORE THE X25519_PUBKEY FIELD, IT'S EXPECTED TO BE AT OFFSET 40."]; name: "x25519Pubkey"; type: { array: ["u8", 32]; }; }, { docs: ["DO NOT PUT ANYTHING ELSE BEFORE THE PEER_OFFSET FIELD, IT'S EXPECTED TO BE AT OFFSET 72."]; name: "peerOffset"; type: { array: ["u8", 4]; }; }, { docs: ["PDA bump. Declared by hand rather than via the `#[bump]` macro (which appends the bump", "as the *final* struct field) so it keeps its original offset (76) right after", "`peer_offset`. `primary_stake_account` is appended *after* the bump, leaving the byte", "layout of every field up to and including `bump` identical to the pre-staking", "`RecoveryPeerAccount` — old deserializers decode the original prefix and harmlessly", "ignore the trailing field."]; name: "bump"; type: "u8"; }, { docs: ["The `PrimaryStakingAccount` (owned by `arcium_staking`) this recovery peer is bound", "to. Enforced at init time via an owner check so every recovery peer has skin in the", "game — the same stake-first model we already apply to `ArxNode`. Stored here so", "downstream instructions (and off-chain consumers) can look up the backing stake", "without re-validating the chain of accounts. Appended after `bump` to preserve the", "legacy on-chain layout (see the `bump` field comment)."]; name: "primaryStakeAccount"; type: "pubkey"; }]; kind: "struct"; }; }, { docs: ["Utility struct to store a value that needs to be set by a certain number of participants (keys", "in our case). Once all participants have set the value, the value is considered set and we only", "store it once."]; generics: [{ kind: "type"; name: "t"; }]; name: "setUnset"; type: { kind: "enum"; variants: [{ fields: [{ generic: "t"; }]; name: "set"; }, { fields: [{ generic: "t"; }, { vec: "bool"; }]; name: "unset"; }]; }; }, { name: "smallExecPool"; repr: { kind: "transparent"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "inner"; type: { defined: { generics: [{ kind: "const"; value: "3"; }]; name: "executingPool"; }; }; }]; kind: "struct"; }; }, { name: "smallMempool"; repr: { kind: "transparent"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "inner"; type: { defined: { name: "smallMempoolInner"; }; }; }]; kind: "struct"; }; }, { name: "smallMempoolInner"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "lastUpdatedSlot"; type: "u64"; }, { name: "slotCounter"; type: "u16"; }, { name: "bump"; type: "u8"; }, { name: "padding"; type: { array: ["u8", 5]; }; }, { name: "computations"; type: { defined: { name: "smallMempoolInnerBuffer"; }; }; }]; kind: "struct"; }; }, { name: "smallMempoolInnerBuffer"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "elems"; type: { array: [{ defined: { name: "smallMempoolInnerBufferHeap"; }; }, 180]; }; }, { docs: ["Bit array tracking which slots are valid (1 = valid, 0 = stale)", "1 bit per slot, packed into bytes. For $buffer_length=180, this is 23 bytes."]; name: "validBits"; type: { array: ["u8", 23]; }; }, { name: "startIndex"; type: "u8"; }, { name: "length"; type: "u8"; }, { name: "padding"; type: { array: ["u8", 7]; }; }]; kind: "struct"; }; }, { name: "smallMempoolInnerBufferHeap"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "entries"; type: { array: [{ defined: { name: "computationReference"; }; }, 3]; }; }, { name: "count"; type: "u16"; }, { name: "padding"; type: { array: ["u8", 6]; }; }]; kind: "struct"; }; }, { name: "timestamp"; type: { fields: [{ name: "timestamp"; type: "u64"; }]; kind: "struct"; }; }, { name: "tinyExecPool"; repr: { kind: "transparent"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "inner"; type: { defined: { generics: [{ kind: "const"; value: "1"; }]; name: "executingPool"; }; }; }]; kind: "struct"; }; }, { name: "tinyMempool"; repr: { kind: "transparent"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "inner"; type: { defined: { name: "tinyMempoolInner"; }; }; }]; kind: "struct"; }; }, { name: "tinyMempoolInner"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "lastUpdatedSlot"; type: "u64"; }, { name: "slotCounter"; type: "u16"; }, { name: "bump"; type: "u8"; }, { name: "padding"; type: { array: ["u8", 5]; }; }, { name: "computations"; type: { defined: { name: "tinyMempoolInnerBuffer"; }; }; }]; kind: "struct"; }; }, { name: "tinyMempoolInnerBuffer"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "elems"; type: { array: [{ defined: { name: "tinyMempoolInnerBufferHeap"; }; }, 180]; }; }, { docs: ["Bit array tracking which slots are valid (1 = valid, 0 = stale)", "1 bit per slot, packed into bytes. For $buffer_length=180, this is 23 bytes."]; name: "validBits"; type: { array: ["u8", 23]; }; }, { name: "startIndex"; type: "u8"; }, { name: "length"; type: "u8"; }, { name: "padding"; type: { array: ["u8", 7]; }; }]; kind: "struct"; }; }, { name: "tinyMempoolInnerBufferHeap"; repr: { kind: "c"; }; serialization: "bytemuckunsafe"; type: { fields: [{ name: "entries"; type: { array: [{ defined: { name: "computationReference"; }; }, 1]; }; }, { name: "count"; type: "u16"; }, { name: "padding"; type: { array: ["u8", 6]; }; }]; kind: "struct"; }; }, { name: "utilityPubkeys"; type: { fields: [{ name: "x25519Pubkey"; type: { array: ["u8", 32]; }; }, { name: "ed25519VerifyingKey"; type: { array: ["u8", 32]; }; }, { name: "elgamalPubkey"; type: { array: ["u8", 32]; }; }, { name: "pubkeyValidityProof"; type: { array: ["u8", 64]; }; }]; kind: "struct"; }; }]

On this page