Indexing on Fuel Network
Introductionโ
Envio supports the Fuel Network on mainnet and testnet. This page shows how to use HyperIndex with Fuelโs architecture and features.
Fuel offers several advantages as a modular execution layer including:
- Parallel transaction execution
- State-minimized design
- UTXO-based architecture
- Advanced FuelVM capabilities
HyperIndex for Fuelโ
HyperIndex enables developers to easily index and query real-time and historical data on Fuel Network with the same powerful features available for EVM chains.
Getting Started with Fuel Indexingโ
You can start indexing Fuel contracts in two ways:
-
Quick Start (5-minute tutorial): Follow our step-by-step tutorial to create your first Fuel indexer quickly.
-
No-Code Contract Import: Use our Contract Import tool to automatically generate configuration and schema files for your Fuel contracts.
Example Fuel Indexersโ
Looking for inspiration? Check out these indexers built by projects in the Fuel ecosystem:
| Project | Type | GitHub Repository |
|---|---|---|
| Spark | Orderbook DEX | github |
| Mira | AMM DEX | github |
| Thunder | NFT Marketplace | github |
| Swaylend | Lending Protocol | github |
| Greeter | Tutorial | github |
Features Supported on Fuelโ
HyperIndex for Fuel supports all the core features available in the EVM version:
- โ No-code Contract Import
- โ Dynamic Contracts / Factory Tracking
- โ Testing Framework
- โ Hosted Service
- โ Wildcard Indexing
Fuel-Specific Event Typesโ
Understanding Fuel's Event Modelโ
Fuel's event model differs significantly from EVM. Instead of predefined events, Fuel uses a more flexible approach with various receipt types that can be indexed.
LOG_DATA Receipts (Primary Event Type)โ
The most common event type in Fuel is the LOG_DATA receipt, created by the log instruction in Sway contracts.
Unlike Solidity's emit which requires predefined event structures, Sway's log function allows passing any data, providing greater flexibility.
Configuration Example:โ
ecosystem: fuel
network:
name: "fuel_testnet"
contracts:
- name: SwayContract
abi_file_path: "./abis/SwayContract.json"
start_block: 1
address: "0x123..."
events:
- name: NewGreeting
logId: "8500535089865083573"
The logId is a unique identifier for the logged struct, which you can find in your contract's ABI file.
Auto-detection of logId:โ
If your event name matches the logged struct name in Sway, you can omit the logId:
events:
- name: NewGreeting # Will automatically detect logId if it matches the struct name
Tip: Instead of manually configuring events, use the Contract Import tool which automatically detects events and generates the proper configuration.
Additional Fuel Event Typesโ
Fuel allows indexing several additional receipt types not available in EVM:
| Event Type | Description | Example Configuration |
|---|---|---|
Mint | Triggered when a contract mints tokens | - name: Mint |
Burn | Triggered when a contract burns tokens | - name: Burn |
Transfer | Combines TRANSFER and TRANSFER_OUT receipts | - name: Transfer |
Call | Triggered when a contract calls another contract | - name: Call |
Using Custom Names:โ
You can rename these events while maintaining their type:
events:
- name: MintMyNft # Custom name
type: mint # Actual event type
Note: All event types can be used with Wildcard Indexing.
Transfer Event Specificsโ
The Transfer event type combines two Fuel receipt types:
TRANSFER: Emitted when a contract transfers tokens to another contractTRANSFER_OUT: Emitted when a contract transfers tokens to a wallet
Important: Transfers between wallets are not included in the
Transferevent type.
Event Object Structure in Handlersโ
When handling Fuel events, the event object structure differs from EVM:
// Example Fuel event handler
SwayContract.NewGreeting.handler(async ({ event, context }) => {
// Access event parameters
const message = event.params.message;
// Access block information
const blockHeight = event.block.height;
const blockTime = event.block.time;
const blockId = event.block.id;
// Access transaction information
const txId = event.transaction.id;
// Access source contract address
const sourceContract = event.srcAddress;
// Access log position
const logIndex = event.logIndex;
// Store data
context.Greeting.set({
id: event.transaction.id,
message: message,
timestamp: blockTime,
});
});
HyperFuelโ
HyperFuel is Envio's low-level data API for the Fuel Network (equivalent to HyperSync for EVM chains).
HyperFuel provides:
- High-performance data access
- Flexible query capabilities
- Multiple data formats (Parquet, Arrow, typed data)
- Complete historical data
Available Clientsโ
Access HyperFuel data using any of these clients:
- Rust: hyperfuel-client-rust
- Python: hyperfuel-client-python
- Node.js: hyperfuel-client-node
- JSON API: hyperfuel-json-api
HyperFuel Endpointsโ
- Mainnet: https://fuel.hypersync.xyz
- Testnet: https://fuel-testnet.hypersync.xyz
For detailed information, see the HyperFuel documentation.
About Fuel Networkโ
Fuel is an operating system purpose-built for Ethereum rollups with unique architecture focused on:
- Parallelization: Execute transactions concurrently for higher throughput
- State-minimized execution: Efficient storage and computation model
- Interoperability: Seamless integration with other blockchain systems
Powered by the FuelVM, Fuel expands Ethereum's capabilities without compromising security or decentralization.
Resourcesโ
Need Help?โ
If you encounter any issues with Fuel indexing, please:
- Check our Troubleshooting guides
- Join our Discord for community support
- Create an issue in our GitHub repository