Solana Integration
Solana EOA Flow
- Tag:
Blockchain - Auth: JWT
- Audience: EXTERNAL
Overview
This section documents the Solana EOA (externally-owned account) flow exposed via the generic endpoint POST /v1.2/safes/operations. These operations are off-chain preparation and status helpers for Solana transactions and do not create Safe operations on EVM chains.
-
Supported Solana operation types (as string keys in the operations array):
SOLANA_PREPARESOLANA_SIGNSOLANA_SENDSOLANA_CONFIRMSOLANA_STATUS
-
All requests accept an optional
X-Blockchain-IdorchainIdin body to target the Solana network configured in the system. Clients should provide the correct Solana blockchain id.
POST /v1.2/safes/operations (Solana usage)
-
Use the common endpoint and pass a single operation per request for simplicity.
-
The body must include a dummy
safeAddress(your EVM Safe address) for authentication consistency, but no EVM operation will be built. -
Request example (SOLANA_PREPARE)
- Response example
- Operation schemas
SOLANA_PREPAREinstructions: array of base64-encoded Solana instructionspayer: base58 public keyrecentBlockhash: stringlastValidBlockHeight: numbercomputeUnitPriceMicroLamports(optional): numbercomputeUnitLimit(optional): numbersponsored(optional): boolean. If true, the server acts as fee payer (subject to policy limits).
SOLANA_SIGNmessage: base64 message to sign
SOLANA_SENDtransaction: base64 signed transactionsponsored(optional): boolean. If true, client provides user signatures and the server adds the fee payer signature and relays.
SOLANA_CONFIRMsignature: base58 stringcommitment: one ofprocessed,confirmed,finalizedtimeoutMs(optional): number
SOLANA_STATUSsignature: base58 string
Notes:
- These operations are exposed as string keys (not added to the Prisma
OperationTypeenum), similar toBITCOIN_SEND. - The server returns WebAuthn
credentialRequestOptionsto authorize, but does not sign Solana payloads server-side.
Transaction status (alias vs BCReader)
-
Preferred: use existing BCReader endpoints with the Solana blockchain id:
GET /v1.2/bcreader/transactions?blockchainId=<SOLANA_ID>&signature=<SIG>``GET /v1.2/bcreader/balances?blockchainId=<SOLANA_ID>&address=<PUBKEY>``
-
Optional alias (if enabled by deployment):
GET /solana/tx/:signaturemay proxy to BCReadertransactionsfor convenience. If not present in your deployment, use the BCReader endpoints above.
Examples
- Sign
- Send
- Confirm
- Status