Skip to content

Chain

The Chain module provides a raw, low-level interface to the blockchain. It allows you to execute arbitrary transactions and simulate method calls using RLP-encoded data — without needing to register ABIs or deployments. This is ideal for advanced users who need full control over the transaction payload.

  • Raw Transaction Execution: Send any signed or unsigned EVM-compatible transaction to the blockchain
  • Method Call Simulation: Perform read-only method calls with raw calldata
  • Transaction Retrieval: Fetch detailed information about transactions by hash or FSCO-issued transaction ID
  • Wallet Integration: Seamlessly use FSCO wallet IDs to sign and broadcast transactions
  • Multi-Chain Support: Fully supports all EVM-compatible networks
  • Used for state-changing transactions (e.g. sending tokens, calling transfer)
  • Requires full RLP-encoded transaction data (txData)
  • Signed by an FSCO wallet and broadcast to the specified chainId
  • Returns a queryId to reference the transaction later
  • Simulates a read-only method (e.g. balanceOf, ownerOf)
  • Does not incur gas or change state
  • Uses txData, similar to execution, but only for querying
  • Returns a decoded data field with the method’s result
  • Look up any blockchain transaction using its txHash and chainId
  • Returns full block, gas, status, logs, and decoded return data
  • If you executed a transaction using FSCO, you can use the queryId returned to fetch its status and metadata

Use the Chain module when:

  • You want to bypass ABI registration and work directly with low-level data
  • You have custom or dynamic contracts and don’t want to manage deployments
  • You want to simulate a call without persisting any state
  • You want to broadcast pre-signed transactions
  • You’re implementing advanced tooling, like wallets or SDKs
  1. Encode your transaction calldata
  2. Provide txData, walletId, and chainId to /v2/chain/execute
  3. FSCO signs and broadcasts the transaction
  4. You’ll receive a queryId to check its status later
  1. Encode your read-only method calldata
  2. Submit txData and chainId to /v2/chain/call
  3. FSCO returns the decoded result in the data field
  • Use GET /v2/chain/tx/{txId} for FSCO-issued transactions
  • Use GET /v2/chain/chain/{chainId}/tx/{txHash} for blockchain-native lookups
  • Power users building SDKs with full control over calldata
  • Wallets broadcasting signed transactions
  • Gasless reads from contracts without registering ABIs
  • Debugging on-chain interactions by inspecting raw return data and logs
  1. Execute a Chain Transaction
  2. Call a Chain Method
  3. Get Transaction by FSCO ID
  4. Get Transaction by Hash

For full request/response schemas, see the Chain API Reference

  • Use transaction simulation before executing costly operations
  • Always store returned queryId values to track transaction status
  • Use a reliable encoder (e.g. ethers.js or viem) to produce txData
  • Ensure wallet IDs used are funded and correctly scoped to your org
  • Requires correctly encoded RLP data; FSCO does not validate ABI-level structure
  • No built-in decoding of logs or method outputs — returned data is raw
  • Transaction execution depends on network availability and wallet funding