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
queryId
to 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
data
field with the method’s result
Get Transaction by Hash
Section titled “Get Transaction by Hash”- Look up any blockchain transaction using its
txHash
andchainId
- 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
queryId
returned 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
, andchainId
to/v2/chain/execute
- FSCO signs and broadcasts the transaction
- You’ll receive a
queryId
to check its status later
Performing a Call
Section titled “Performing a Call”- Encode your read-only method calldata
- Submit
txData
andchainId
to/v2/chain/call
- FSCO returns the decoded result in the
data
field
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
queryId
values to track transaction status - Use a reliable encoder (e.g.
ethers.js
orviem
) 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
data
is raw - Transaction execution depends on network availability and wallet funding