Chain
Overview
Section titled “Overview”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.
Key Features
Section titled “Key Features”- 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
Core Concepts
Section titled “Core Concepts”Chain Execution (/execute)
Section titled “Chain Execution (/execute)”- 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
queryIdto reference the transaction later
Chain Call (/call)
Section titled “Chain Call (/call)”- 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
datafield with the method’s result
Get Transaction by Hash
Section titled “Get Transaction by Hash”- Look up any blockchain transaction using its
txHashandchainId - Returns full block, gas, status, logs, and decoded return data
Get Transaction by FSCO ID
Section titled “Get Transaction by FSCO ID”- If you executed a transaction using FSCO, you can use the
queryIdreturned to fetch its status and metadata
When to Use This Module
Section titled “When to Use This Module”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
How It Works
Section titled “How It Works”Executing a Transaction
Section titled “Executing a Transaction”- Encode your transaction calldata
- Provide
txData,walletId, andchainIdto/v2/chain/execute - FSCO signs and broadcasts the transaction
- You’ll receive a
queryIdto check its status later
Performing a Call
Section titled “Performing a Call”- Encode your read-only method calldata
- Submit
txDataandchainIdto/v2/chain/call - FSCO returns the decoded result in the
datafield
Retrieving Transactions
Section titled “Retrieving Transactions”- Use
GET /v2/chain/tx/{txId}for FSCO-issued transactions - Use
GET /v2/chain/chain/{chainId}/tx/{txHash}for blockchain-native lookups
Common Use Cases
Section titled “Common Use Cases”- 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
Getting Started
Section titled “Getting Started”API Reference
Section titled “API Reference”For full request/response schemas, see the Chain API Reference
Best Practices
Section titled “Best Practices”- Use transaction simulation before executing costly operations
- Always store returned
queryIdvalues to track transaction status - Use a reliable encoder (e.g.
ethers.jsorviem) to producetxData - Ensure wallet IDs used are funded and correctly scoped to your org
Limitations
Section titled “Limitations”- Requires correctly encoded RLP data; FSCO does not validate ABI-level structure
- No built-in decoding of logs or method outputs — returned
datais raw - Transaction execution depends on network availability and wallet funding