Overview
Learn how to set up and run your own Intuition node to participate in the network using the official Rust implementation.
What is an Intuition Node?
The intuition-rs workspace is a comprehensive Rust workspace for blockchain data indexing and processing, featuring a modular architecture with multiple specialized services. This implementation provides high performance, memory safety, and reliability for running Intuition nodes and backend services.
Running an Intuition node requires Docker, Rust toolchain, and proper environment configuration. This guide provides comprehensive setup instructions for local development and production deployments.
Supported Contract Versions
- Multivault v2.0
Why Run a Node?
Running your own Intuition node provides several key benefits:
- Full Data Access: Direct access to all blockchain data without relying on third-party services
- Network Participation: Actively contribute to the decentralization and resilience of the Intuition network
- Custom Indexing: Tailor data indexing and processing to your specific needs
- Performance Control: Optimize performance and resource allocation based on your requirements
- Enhanced Privacy: Process and query data without exposing your queries to external services
- Development Freedom: Ideal for building and testing applications in a controlled environment
Architecture
This workspace contains the following core services:
Core Services
CLI: Terminal UI client for interacting with the Intuition system
Consumer: Event processing pipeline using Redis Streams (RAW, DECODED, and RESOLVER consumers)
Models: Domain models and data structures for the Intuition system
Infrastructure Services
Hasura: GraphQL API with database migrations and configuration
Image Guard: Image processing and validation service
RPC Proxy: RPC call proxy with caching for eth_call methods
Supporting Services
Histocrawler: Historical data crawler
Shared Utils: Common utilities and shared code
Migration Scripts: Database migration utilities
Event Processing Pipeline
The system processes blockchain events through multiple stages:
- RAW - Raw event ingestion from blockchain
- DECODED - Event decoding and parsing
- RESOLVER - Data resolution and enrichment
- IPFS-UPLOAD - Upload images to IPFS and track them in the local DB
Prerequisites
Required Tools
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shcargo install --force cargo-makecurl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bashEnvironment Configuration
You'll need to set up environment variables for various services. Create a .env file based on the .env.sample template with the following required variables:
| Variable | Description | Source |
|---|---|---|
OPENAI_API_KEY | OpenAI API key for AI features | OpenAI Platform |
PINATA_GATEWAY_TOKEN | Pinata gateway token for IPFS | Pinata Dashboard |
PINATA_API_JWT | Pinata API JWT for IPFS uploads | Pinata Dashboard |
BASE_MAINNET_RPC_URL | Base mainnet RPC endpoint | Alchemy Dashboard |
BASE_SEPOLIA_RPC_URL | Base sepolia testnet RPC endpoint | Alchemy Dashboard |
ETHEREUM_MAINNET_RPC_URL | Ethereum mainnet RPC endpoint | Alchemy Dashboard |
LINEA_MAINNET_RPC_URL | Linea mainnet RPC endpoint | Alchemy Dashboard |
LINEA_SEPOLIA_RPC_URL | Linea sepolia testnet RPC endpoint | Alchemy Dashboard |
TRUST_TESTNET_RPC_URL | Trust testnet RPC endpoint (local geth) | Local development |
TRUST_MAINNET_RPC_URL | Trust mainnet RPC endpoint (local geth) | Local development |
INDEXER_SCHEMA | Database schema for indexer (set to "local") | Local development |
INTUITION_CONTRACT_ADDRESS | Intuition contract address | Contract deployment |
Next Steps
Once you understand the architecture and have the prerequisites ready:
- Learn about why we chose Rust for the backend implementation
- Follow the Running a Node guide to start your node
- Explore Local Development Setup for development workflows
- Check Kubernetes Deployment for production deployments