Collateral Program
Lineagei
Frameworki
What's Anchor?
Batteries-included Rust framework. Ships account-validation codegen, 8-byte instruction discriminators, and an on-chain IDL — the program describes itself.
Bigger binary and higher rent in exchange for safety rails, introspection, and dev speed. The choice of a team optimizing for correctness over on-chain footprint.
Originally Coral (Armani Ferrante); now community-maintained.
What it is
The de facto standard. Rust macros (#[program], #[derive(Accounts)]) eliminate boilerplate: it auto-generates 8-byte account and instruction discriminators — SHA256("account:<Name>")[..8] and SHA256("global:<ix>")[..8] — handles Borsh (de)serialization, enforces account constraints declaratively (mut, has_one, seeds, init), and emits a JSON IDL that client libraries consume directly. The cost: Borsh copies data on every deserialize (not zero-copy), and the macro machinery adds binary bloat and compute overhead — irrelevant for ~99% of programs.
When to pick it
Building a new protocol, moving fast, or wanting maximum ecosystem compatibility. It's the beginner default and stays the right call for most production programs.
How it looks on-chain
The most recognizable framework. Every account it owns begins with an 8-byte discriminator, and the IDL is often published on-chain at a PDA derived from the program id. Both are strong, reliable fingerprints — this is the only framework we can label with confidence.
Others in the wild: Steel (Ore team — near-native performance on solana-program), Seahorse (Python → Anchor), and Poseidon & Quasar (TypeScript → Rust). Transpilers inherit their lowering target's fingerprint: a Quasar or Poseidon program that compiles down to Anchor will look like Anchor on-chain — discriminators and all.
Anchor docsFootprinti
Recovered architecturei
Reachi
Controli
What's upgrade authority?
The upgrade authority is the account allowed to replace a program's code after it's deployed.
If it's set (mutable), that key can push new bytecode at any time — including malicious code, the classic "rug" vector. If it's null (immutable / frozen), the code can never change; what 's on-chain is final. A Squads multisig sits in between — upgrades are possible but need M-of-N signers, not one hot wallet. So mutable + single hot-wallet = highest risk; immutable or multisig = stronger guarantees.
What's a verified build?
A verified build proves the program running on-chain was compiled from the public source you can read — nothing hidden.
Someone re-compiles the source in a deterministic (Docker) environment and checks the resulting bytecode is byte-for-byte identical to what's deployed; tools like solana-verify do this and record it with a verification service. "Not verified" isn't a red flag by itself — most programs simply never submit one. It just means you're trusting the deployed bytecode as-is, with no source cross-check.
Security.txti
What's a security.txt?
A block of contact info a developer embeds directly in the program binary — the Neodyme convention — so whitehats know how to report a vulnerability.
It carries contacts, a disclosure policy, auditors, and a source link. It's self-declared, so treat it as a claim, not proof — but its presence signals a team that expects scrutiny and wants to be reachable.
Convictioni
Interface — the on-chain IDLi
Instructions 34
add_collateral_admin
Adds a new admin to a Collateral account
- sendersignerwritable
- rent_receiverwritable
- collateralwritable
- collateral_admin_signatureswritable
- system_program
- new_adminpubkey
add_coordinator_executor
Adds a new executor to a Coordinator account
- sendersignerwritable
- coordinatorwritable
- system_program
- new_executorpubkey
add_coordinator_publisher
Adds a new publisher to a Coordinator account
- sendersignerwritable
- coordinatorwritable
- system_program
- new_publisherpubkey
add_supported_asset
Adds a new supported asset to the context of the Coordinator
- sendersignerwritable
- rent_payersignerwritable
- coordinator
- mint_token
- oracle
- supported_assetwritable
- system_program
- new_supported_assetNewSupportedAsset
close_old_collateral_signatures
Closes an old CollateralAdminSignatures account and sends rent to collateral authority
- sendersignerwritable
- coordinator
- collateral
- collateral_authoritywritable
- collateral_admin_signatureswritable
- system_program
create_collateral
Creates a new Collateral account to the context of the Coordinator
- sendersignerwritable
- rent_payersignerwritable
- coordinator
- collateralwritable
- collateral_authority
- system_program
- new_collateralNewCollateral
create_coordinator
Creates a new Coordinator account
- rent_payersignerwritable
- coordinatorwritable
- system_program
- new_coordinatorNewCoordinator
create_old_collateral
Creates a new old collateral account
- sendersignerwritable
- rent_payersignerwritable
- coordinator
- collateralwritable
- collateral_authority
- system_program
- new_collateralNewCollateral
create_single_signer_collateral
Creates a new SingleSignerCollateral account with single owner model
- sendersignerwritable
- rent_payersignerwritable
- coordinator
- collateralwritable
- collateral_authority
- system_program
- new_collateralNewSingleSignerCollateral
increase_funds_nonce
Increases the funds nonce of a Collateral account
- sendersignerwritable
- coordinator
- collateralwritable
- system_program
liquidate_assets
Liquidates the assets of a Collateral account to pay a Statement
- sendersignerwritable
- coordinator
- collateralwritable
- collateral_authoritywritable
- statementwritable
- treasurywritable
- token_program
- token2022_program
- system_program
make_payment_from_collateral
Makes a payment from a Collateral account
- sendersignerwritable
- coordinator
- collateralwritable
- supported_asset
- collateral_authoritywritable
- treasurywritable
- assetoptional
- oracleoptional
- collateral_token_accountwritableoptional
- treasury_token_accountwritableoptional
- token_program
- instruction_sysvar
- system_program
- requestMakePaymentFromCollateralRequest
make_payment_from_collateral_for_statement
Makes a payment from a Collateral account for a specific Statement
- sendersignerwritable
- coordinator
- collateralwritable
- supported_asset
- statementwritable
- collateral_authoritywritable
- treasurywritable
- assetoptional
- oracleoptional
- collateral_token_accountwritableoptional
- treasury_token_accountwritableoptional
- token_program
- instruction_sysvar
- system_program
- requestMakePaymentFromCollateralRequest
make_payment_from_user_account
Makes a payment transferring the assets from the transaction sender
- sendersignerwritable
- coordinator
- supported_asset
- treasurywritable
- assetoptional
- oracleoptional
- sender_token_accountwritableoptional
- treasury_token_accountwritableoptional
- token_program
- system_program
- requestMakePaymentFromUserAccountRequest
make_payment_from_user_account_for_statement
Makes a payment transferring the assets from the transaction sender for a specific Statement
- sendersignerwritable
- coordinator
- supported_asset
- statementwritable
- treasurywritable
- assetoptional
- oracleoptional
- sender_token_accountwritableoptional
- treasury_token_accountwritableoptional
- token_program
- system_program
- requestMakePaymentFromUserAccountRequest
mark_statement_paid
Marks an specific amount of a Statement as paid
- sendersignerwritable
- coordinator
- statementwritable
- system_program
- requestMarkStatementPaidRequest
migrate_collateral_info
Migrates the collateral info from the old format to the current format
- sendersignerwritable
- rent_payersignerwritable
- coordinator
- collateralwritable
- system_program
migrate_to_single_signer_collateral
Migrates a Collateral (multi-admin) to SingleSignerCollateral (single-owner) via coordinator collateral_creator authorization
- sendersignerwritable
- rent_receiversignerwritable
- coordinator
- collateralwritable
- system_program
- new_ownerpubkey
publish_statement
Publishes a new Statement for a Collateral account into the context of the Coordinator
- sendersignerwritable
- rent_payersignerwritable
- coordinator
- collateral
- statementwritable
- system_program
- new_statementUpsertStatement
remove_collateral_admin
Removes an admin from a Collateral account
- sendersignerwritable
- rent_receiverwritable
- collateralwritable
- collateral_admin_signatureswritable
- system_program
- admin_to_removepubkey
remove_coordinator_executor
Removes an executor from a Coordinator account
- sendersignerwritable
- coordinatorwritable
- system_program
- executorpubkey
remove_coordinator_publisher
Removes a publisher from a Coordinator account
- sendersignerwritable
- coordinatorwritable
- system_program
- publisherpubkey
remove_supported_asset
Removes a supported asset from the context of the Coordinator
- sendersignerwritable
- rent_receiverwritable
- coordinator
- supported_assetwritable
- system_program
- assetpubkey
submit_old_collateral_signatures
Submits signatures to an old Collateral account
- rent_payersignerwritable
- collateral
- collateral_admin_signatureswritable
- instruction_sysvar
- system_program
- requestSignatureSubmissionRequest
submit_signatures
Upsert a collateral admin signature into a Collateral account
- rent_payersignerwritable
- collateral
- collateral_admin_signatureswritable
- instruction_sysvar
- system_program
- requestSignatureSubmissionRequest
transfer_collateral_team
Transfer a Collateral Account to a new team
- sendersignerwritable
- rent_receiverwritable
- collateralwritable
- collateral_admin_signatureswritable
- system_program
- requestTransferCollateralTeamRequest
transfer_ownership
Transfers the ownership of a Coordinator account
- sendersignerwritable
- coordinatorwritable
- system_program
- new_ownerpubkey
transfer_single_signer_collateral_ownership
Transfers ownership of a SingleSignerCollateral account
- ownersignerwritable
- collateralwritable
- new_ownerpubkey
update_collateral_admin_threshold
Updates the admin threshold of a Collateral account
- sendersignerwritable
- rent_receiverwritable
- collateralwritable
- collateral_admin_signatureswritable
- system_program
- new_thresholdu8
update_collateral_creator
Updates a Coordinator account collateral creator
- sendersignerwritable
- coordinatorwritable
- system_program
- collateral_creatorpubkey
update_coordinator_treasury
Updates a Coordinator account supported asset treasury
- sendersignerwritable
- coordinatorwritable
- system_program
- treasurypubkey
update_statement
Updates a Statement for a Collateral account into the context of the Coordinator
- sendersignerwritable
- coordinator
- collateral
- statementwritable
- system_program
- update_statementUpsertStatement
withdraw_collateral_asset
Withdraws a Collateral asset from a Collateral account
- sendersignerwritable
- rent_receiverwritable
- coordinator
- collateralwritable
- collateral_authoritywritable
- collateral_admin_signatureswritable
- receiverwritable
- assetoptional
- collateral_token_accountwritableoptional
- receiver_token_accountwritableoptional
- token_program
- instruction_sysvar
- system_program
- requestWithdrawCollateralAssetRequest
withdraw_single_signer_collateral_asset
Withdraws an asset from a SingleSignerCollateral account (owner + coordinator signature)
- ownersignerwritable
- coordinator
- collateralwritable
- collateral_authoritywritable
- destinationwritable
- assetoptional
- collateral_token_accountwritableoptional
- destination_token_accountwritableoptional
- token_program
- instruction_sysvar
- system_program
- requestWithdrawSingleSignerCollateralAssetRequest
Accounts 9
Collateral
no fields
CollateralAdminSignatures
no fields
CollateralAdminSignaturesV2
no fields
CollateralV2
no fields
Coordinator
no fields
PriceUpdateV2
no fields
SingleSignerCollateral
no fields
Statement
no fields
SupportedAsset
no fields
Types 53
Collateralstruct
- idpubkey
- coordinatorpubkey
- authority_bumpu8
- namestring
- adminsVec<pubkey>
- admin_thresholdu8
- admin_data_nonceu32
- admin_funds_nonceu32
CollateralAccountCreatedstruct
- coordinator_accountpubkeyThe address of the Coordinator account the Collateral account belongs to
- collateral_accountpubkeyThe address where the Collateral account was created
- authority_addresspubkeyThe address of the Collateral authority that will manage the funds
- namestringThe name assigned to the Collateral account
- userpubkeyThe user that created the Collateral account
CollateralAdminAddedstruct
- collateral_accountpubkeyThe address of the Collateral account where the admin was added
- adminpubkeyThe address of the admin that was added
CollateralAdminRemovedstruct
- collateral_accountpubkeyThe address of the Collateral account where the admin was removed
- adminpubkeyThe address of the admin that was removed
CollateralAdminSignaturesstruct
- id[u8; 32]The hash of the allowed parameters that works as account id
- bumpu8
- collateralpubkey
- is_in_progressboolThe flag to indicate in a request if in progress or not.
- signersVec<pubkey>The list of admins that have signed the request
CollateralAdminSignaturesSubmittedstruct
- collateral_accountpubkeyThe address of the Collateral account where the admin signature was added
- signatures_accountpubkeyThe address of the CollateralAdminSignatures account where the admin signature was added
- signersVec<pubkey>The address of the admin that submitted the signatures
- actionSignatureSubmissionTypeThe action that was signed
CollateralAdminSignaturesV2struct
- id[u8; 32]The hash of the allowed parameters that works as account id
- bumpu8
- collateralpubkey
- rent_payerpubkeyThe address of the account rent payer
- is_in_progressboolThe flag to indicate in a request if in progress or not.
- signersVec<pubkey>The list of admins that have signed the request
CollateralAdminThresholdUpdatedstruct
- collateral_accountpubkeyThe address of the Collateral account where the admin threshold was updated
- thresholdu8The updated value for the admin threshold
CollateralCreatorUpdatedstruct
- coordinator_accountpubkeyThe coordinator account the collateral creator was updated in.
- collateral_creatorpubkeyThe Pubkey of the new collateral creator
- old_collateral_creatorpubkeyThe Pubkey of the old collateral creator
CollateralFundsNonceIncreasedstruct
- collateral_accountpubkeyThe address of the Collateral account where the funds nonce was increased
- nonceu32The new value for the funds nonce
CollateralMigratedToSingleSignerstruct
- collateral_accountpubkey
- previous_adminsVec<pubkey>
- new_ownerpubkey
CollateralTeamTransferredstruct
- collateral_accountpubkeyThe address of the Collateral account that was transferred
- new_namestringThe new name assigned to the Collateral account
- new_adminsVec<pubkey>The new list of admins for the Collateral account
- new_thresholdu8The new threshold for the Collateral account
CollateralV2struct
- idpubkey
- coordinatorpubkey
- authority_bumpu8
- namestring
- admin_thresholdu8
- admin_data_nonceu32
- admin_funds_nonceu32
- admins_capacityu8The capacity of the admins array
- adminsVec<pubkey>
CollateralWithdrawalstruct
- collateral_accountpubkeyThe address of the Collateral account where the asset was withdrawn
- assetpubkeyThe address of the asset that was withdrawn
- recipientpubkeyThe address of the account that received the asset
- amount_of_assetu64The amount of the asset that was withdrawn
Coordinatorstruct
- idpubkeyCoordinator account id
- bumpu8Coordinator account bump use to derive the address where the account was created
- ownerpubkeyIs the account owner of the coordinator allowed to managed the other roles and to list new supported assets.
- collateral_creatorpubkeyIs the account allowed to create Collateral accounts for coordinator borrowers.
- treasurypubkeyThe Treasury Account is the account where the payments are collected.
- publishersVec<pubkey>A list with the publishers accounts allowed to publish statements for the coordinator.
- executorsVec<pubkey>A list with the executors accounts responsible of payments management and statements liquidations.
ExecutorAddedstruct
- coordinator_accountpubkeyThe coordinator account the executor was added to.
- executorpubkeyThe Pubkey of the added executor.
ExecutorRemovedstruct
- coordinator_accountpubkeyThe coordinator account the executor was removed from.
- executorpubkeyThe Pubkey of the executor that was removed.
Liquidationstruct
- coordinator_accountpubkeyThe address of the Coordinator account the Collateral account belongs to.
- collateral_accountpubkeyThe address of the Collateral account were the funds were paid from.
- liquidatorpubkeyThe address of the liquidator.
- statement_idstringThe id of the statement that was liquidated.
- assetsVec<pubkey>The addresses of the assets liquidated.
- asset_decimalsbytesThe decimals of the assets liquidated.
- amounts_in_assetsVec<u64>The liquidated amount in assets.
- amounts_in_centsVec<u64>The liquidated amounts in cents.
- fees_in_assetsVec<u64>The fees in asset for each asset liquidated.
- net_amount_in_centsu64The net amount in cents of the liquidation.
MakePaymentFromCollateralRequeststruct
- team_or_statement_idstringThe team ID or statement ID to make the payment to.
- amount_in_assetu64The amount in asset to make the payment.
- signature_expiration_timei64The timestamp when the publisher/executor signature expires.
- signature_salt[u8; 32]The salt used to generate the signature.
MakePaymentFromUserAccountRequeststruct
- team_or_statement_idstringThe team ID or statement ID to make the payment to.
- amount_in_assetu64The amount in asset to make the payment.
MarkStatementPaidRequeststruct
- statement_idstringThe external ID of the statement to mark as paid.
- amount_in_centsu64The amount of cents to mark as paid.
NewCollateralstruct
- idpubkeyAn Id to derive the address of the Collateral account.
- namestringThe name of the Collateral account.
- initial_adminpubkeyThe initial admin of the Collateral account.
NewCoordinatorstruct
- idpubkeyThe coordinator account id used to derive the address where the account will be created
- ownerpubkeyThe account that will be owner of the new coordinator account.
- collateral_creatorpubkeyThe collateral creator account.
- treasurypubkeyThe treasury address
- initial_publisherpubkeyThe address of the first publisher account.
- initial_executorpubkeyThe address of the first executor account.
NewSingleSignerCollateralstruct
- idpubkey
- namestring
- ownerpubkey
NewSupportedAssetstruct
- feed_idOption<string>An optional feed id corresponding to the price oracle to assign.
- price_uncertainty_thresholdu32A percentage value with seven decimals that represent the maximum price uncertainty allowed for the asset operations. For example, if the price uncertainty threshold is 15000000, the price result of Pyth confidence/price must be lower that 1,5%. Maximum threshold is 429,4967295%.
- stale_thresholdu32An stale threshold in seconds indicating the maximum age a price can reach before being considered to old to be used.
- fee_bpsu16The Fee in Basis points to be charged to the borrower when the asset is used for payment or liquidations.
NewTreasurystruct
- coordinator_accountpubkeyThe coordinator account the treasury was updated in.
- treasurypubkeyThe Pubkey of the new treasury
- old_treasurypubkeyThe Pubkey of the old treasury
OwnershipTransferredstruct
- coordinator_accountpubkeyThe coordinator account the ownership was transferred from.
- new_ownerpubkeyThe Pubkey of the new owner
- old_ownerpubkeyThe Pubkey of the old owner
PaymentFromCollateralstruct
- payerpubkeyThe address of the payer.
- team_idstringThe id of the team.
- collateral_accountpubkeyThe address of the Collateral account were the funds were paid from.
- assetpubkeyThe address of the asset paid.
- amount_in_assetu64The amount of the asset paid.
- amount_in_centsu64The amount in cents paid.
- fee_in_assetu64The fee in asset.
- asset_decimalsu8The decimals of the asset.
- nonceu32The nonce for the collateral funds nonce.
- expires_ati64The expiration date of the given signature to allow the payment from collateral.
PaymentFromCollateralForStatementstruct
- payerpubkeyThe address of the payer.
- statement_idstringThe id of the statement.
- team_idstringThe id of the team.
- collateral_accountpubkeyThe address of the Collateral account were the funds are paid from.
- assetpubkeyThe address of the asset paid.
- amount_in_assetu64The amount of the asset paid.
- amount_in_centsu64The amount in cents paid.
- fee_in_assetu64The value of the fee paid in asset.
- asset_decimalsu8The decimals of the asset.
- nonceu32The nonce for the collateral funds nonce.
- expires_ati64The expiration date of the given signature to allow the payment from collateral.
PaymentFromUserAccountstruct
- payerpubkeyThe address of the payer.
- team_idstringThe id of the team the payment is made to.
- assetpubkeyThe address of the asset used to pay.
- amount_in_assetu64The amount of the asset paid.
- amount_in_centsu64The amount in cents paid.
- fee_in_assetu64The value of the fee paid in asset.
- asset_decimalsu8The decimals of the asset.
PaymentFromUserAccountForStatementstruct
- payerpubkeyThe address of the payer.
- statement_idstringThe id of the statement the payment was made to.
- team_idstringThe id of the team the payment was made to.
- assetpubkeyThe address of the asset used to pay.
- amount_in_assetu64The amount of the asset paid.
- amount_in_centsu64The amount in cents paid.
- fee_in_assetu64The value of the fee paid in asset.
- asset_decimalsu8The decimals of the asset.
PriceFeedMessagestruct
- feed_id[u8; 32]`FeedId` but avoid the type alias because of compatibility issues with Anchor's `idl-build` feature.
- pricei64
- confu64
- exponenti32
- publish_timei64The timestamp of this price update in seconds
- prev_publish_timei64The timestamp of the previous price update. This field is intended to allow users to identify the single unique price update for any moment in time: for any time t, the unique update is the one such that prev_publish_time < t <= publish_time. Note that there may not be such an update while we are migrating to the new message-sending logic, as some price updates on pythnet may not be sent to other chains (because the message-sending logic may not have triggered). We can solve this problem by making the message-sending mandatory (which we can do once publishers have migrated over). Additionally, this field may be equal to publish_time if the message is sent on a slot where where the aggregation was unsuccesful. This problem will go away once all publishers have migrated over to a recent version of pyth-agent.
- ema_pricei64
- ema_confu64
PriceUpdateV2struct
- write_authoritypubkey
- verification_levelVerificationLevel
- price_messagePriceFeedMessage
- posted_slotu64
PublisherAddedstruct
- coordinator_accountpubkeyThe coordinator account the publisher was added to.
- publisherpubkeyThe Pubkey of the added publisher
PublisherRemovedstruct
- coordinator_accountpubkeyThe coordinator account the publisher was removed from.
- publisherpubkeyThe Pubkey of the publisher that was removed.
SignatureSubmissionRequeststruct
- target_nonceu32The nonce value that is expected to be used with the signatures
- signature_submission_typeSignatureSubmissionTypeThe type of the signature submission
- saltsVec<[u8; 32]>The salts used to generate the signatures
SignatureSubmissionTypeenum
- AddAdmin
- RemoveAdmin
- UpdateThreshold
- TransferCollateralTeam
- WithdrawCollateralAsset
- MigrateToSingleSigner
SingleSignerCollateralstruct
- idpubkey
- coordinatorpubkey
- authority_bumpu8
- namestring
- nonceu32
- ownerpubkey
SingleSignerCollateralCreatedstruct
- coordinator_accountpubkey
- collateral_accountpubkey
- authority_addresspubkey
- namestring
- ownerpubkey
SingleSignerCollateralOwnershipTransferredstruct
- collateral_accountpubkey
- previous_ownerpubkey
- new_ownerpubkey
SingleSignerCollateralWithdrawalstruct
- collateral_accountpubkey
- ownerpubkey
- destinationpubkey
- assetpubkey
- amount_in_assetu64
- nonceu32
Statementstruct
- idstring
- bumpu8
- coordinatorpubkey
- collateralpubkey
- team_idstring
- closing_balance_in_centsu64
- paid_amount_in_centsu64
- liquidatable_afteru64
StatementMarkedPaidstruct
- statement_idstringThe id of the statement that has been paid.
- amount_in_centsu64The amount paid in dollar cents.
StatementPublishedstruct
- coordinator_accountpubkeyThe coordinator account the statement was published in.
- collateral_accountpubkeyThe collateral account the statement was published in.
- statement_idstringThe statement id.
- team_idstringThe id of the team the statement belongs to.
- closing_account_balance_centsu64The total value to pay in dollar cents for the statement.
- liquidatable_afteru64The date in seconds after which the statement can be liquidated.
StatementUpdatedstruct
- coordinator_accountpubkeyThe coordinator account the statement is related to.
- collateral_accountpubkeyThe collateral account the statement is related to.
- statement_idstringThe statement id.
- team_idstringThe id of the team the statement belongs to.
- closing_account_balance_centsu64The total value to pay in dollar cents for the statement.
- liquidatable_afteru64The date in seconds after which the statement can be liquidated.
SupportedAssetstruct
- coordinatorpubkeyThe coordinator account that owns the supported asset
- assetpubkeyThe address of the asset tu Support. It may be either the default key for supporting the native asset or the SPL token address for any other assets.
- bumpu8The bump of the supported asset account
- oraclepubkeyThe oracle address where the token price is going to be queried. The address must belongs to a PriceUpdateV2 account of the Pyth Network protocol.
- feed_id[u8; 32]The price ID to query the token price to the oracle. It the Feed Id stored by the PriceUpdateV2 oracle account and its verified when try to query a price, so it is important the feed id matches with the given oracle. Can look for Feed Ids in https://www.pyth.network/developers/price-feed-ids.
- price_uncertainty_thresholdu32A percentage value with seven decimals that represent the maximum price uncertainty allowed for the asset operations. For example, if the price uncertainty threshold is 15000000, the price result of Pyth confidence/price must be lower that 1,5%. Maximum threshold is 429,4967295%.
- stale_thresholdu32A time in seconds after which a price is considered staled, e.i, too old to be considered valid or usable.
- fee_bpsu16The fee in basis points that will be charged to the borrower when the asset is used for payment or liquidations. It can take values between 0 and 10000 where 10000 is equivalent to a fee of 100%.
SupportedAssetAddedstruct
- coordinator_accountpubkeyThe address of the coordinator that owns the supported asset.
- assetpubkeyThe address of the asset that is supported.
- oraclepubkeyThe address of the oracle to query the asset price.
- feed_idOption<string>The optional feed id corresponding to the price oracle.
- price_uncertainty_thresholdu32The maximum price uncertainty allowed for the asset operations.
- stale_thresholdu32The threshold for the oracle to be considered stale.
- fee_bpsu16The fee in basis points.
SupportedAssetRemovedstruct
- coordinator_accountpubkeyThe address of the coordinator that not longer owns the supported asset.
- assetpubkeyThe address of the asset that is no longer supported.
- oraclepubkeyThe address of the oracle used to query the asset price.
- stale_thresholdu32The threshold for the oracle to be considered stale.
- fee_bpsu16The fee in basis points used for the supported asset.
TransferCollateralTeamRequeststruct
- new_namestringThe new name of the Collateral account.
- new_adminsVec<pubkey>The new list of admins of the Collateral account.
- new_admin_thresholdu8The new admin threshold of the Collateral account.
UpsertStatementstruct
- statement_idstringThe external ID of the statement to create or update.
- team_idstringThe ID of the team that owns the statement.
- closing_balance_in_centsu64The total debt that must be paid in the statement by the borrower.
- liquidatable_afteru64The date in seconds after which the collateral is liquidatable.
VerificationLevelenum
- Partial
- Full
WithdrawCollateralAssetRequeststruct
- amount_of_assetu64The amount of the asset to withdraw.
- signature_expiration_timei64The time when the signature expires.
- coordinator_signature_salt[u8; 32]The salt used to generate the coordinator's signature.
WithdrawSingleSignerCollateralAssetRequeststruct
- amount_in_assetu64
- signature_expiration_timei64
- coordinator_signature_salt[u8; 32]
Events 29
CollateralAccountCreated
no fields
CollateralAdminAdded
no fields
CollateralAdminRemoved
no fields
CollateralAdminSignaturesSubmitted
no fields
CollateralAdminThresholdUpdated
no fields
CollateralCreatorUpdated
no fields
CollateralFundsNonceIncreased
no fields
CollateralMigratedToSingleSigner
no fields
CollateralTeamTransferred
no fields
CollateralWithdrawal
no fields
ExecutorAdded
no fields
ExecutorRemoved
no fields
Liquidation
no fields
NewTreasury
no fields
OwnershipTransferred
no fields
PaymentFromCollateral
no fields
PaymentFromCollateralForStatement
no fields
PaymentFromUserAccount
no fields
PaymentFromUserAccountForStatement
no fields
PublisherAdded
no fields
PublisherRemoved
no fields
SingleSignerCollateralCreated
no fields
SingleSignerCollateralOwnershipTransferred
no fields
SingleSignerCollateralWithdrawal
no fields
StatementMarkedPaid
no fields
StatementPublished
no fields
StatementUpdated
no fields
SupportedAssetAdded
no fields
SupportedAssetRemoved
no fields
Errors 11
- 6000InvalidSupportedAssetAccountInvalid supported asset account
- 6001InvalidFeeBPSInvalid Fee BPS
- 6002InvalidFeedIdFeed ID length must be 66
- 6003InvalidStaleThresholdInvalid stale threshold
- 6004FeedIdRequiredFeed ID is required when the oracle is not the default address
- 6005DefaultKeysNotAllowedOracle and asset pubkeys cannot be both default keys
- 6006InvalidPriceOracleAccountInvalid price oracle account
- 6007UnsupportedMintExtensionUnsupported mint extension
- 6008SupportedAssetDoesNotBelongToCoordinatorSupported asset does not belong to the coordinator
- 6009MintTokenDoesNotBelongToSupportedAssetMint token does not belong to the supported asset
- 6010PriceOracleMismatchPrice oracle does not match the supported asset
What's an IDL?
An IDL — Interface Description Language — is a JSON spec that describes how to talk to a program: its instructions, the accounts each one needs, argument and account types, events, and errors.
Anchor auto-generates it at build time. A program can publish it on-chain at a PDA derived from its id, so any client or explorer can decode the program's transactions without its source code.
Why it's often missing
Publishing is opt-in — a courtesy, not a requirement. Many programs never do, and non-Anchor frameworks (Pinocchio, native, Steel) don't produce one at all; their interface lives in an off-chain Shank/Codama artifact, or nowhere public. Absence means you can't auto-decode it — not that anything is wrong.
Tractioni
Code familyi
The recordi
| Event | When | Detail | Receipt |
|---|---|---|---|
| SIBLING DEPLOY | 2d ago | packs_mining | same code, fresh id |
| SIBLING DEPLOY | 3d ago | portfolio | same code, fresh id |
| DEPLOY | 3d ago | slot 432,059,993 | poll…9993 |