Technical Architecture
Intuition's architecture consists of three tightly integrated layers that work together to create a high-performance, decentralized knowledge graph. This document provides a technical deep-dive into each layer and how they interconnect.
Architecture Overview

Intuition's architecture is designed for speed, scale, and interoperability. By separating concerns across three specialized layers, we achieve optimal performance while maintaining decentralization and cross-chain compatibility.
Layer 1: Intuition Network (Base L3)
Overview
The Intuition Network is an EVM-compatible Layer 3 built on Base using the Orbit stack. This provides the ultra-fast, low-cost transaction environment essential for high-frequency knowledge graph operations.
Why Layer 3?
Traditional L1s and even L2s are too expensive and slow for the granular operations required by a knowledge graph. Every atom creation, triple attestation, and signal update needs to be economically viable. The L3 architecture provides:
- Sub-cent transaction costs - Making micro-attestations economically feasible
- Sub-second finality - Enabling real-time knowledge graph updates
- Massive throughput - Supporting millions of daily knowledge operations
- EVM compatibility - Leveraging existing tooling and developer knowledge
Technical Specifications
Performance
- Block time: ~250ms
- Transaction throughput: 10,000+ TPS
- Finality: < 1 second
- Gas costs: < $0.001 per tx
Stack Components
- Base Layer: Orbit framework on Base
- Consensus: Optimistic rollup with fraud proofs
- Execution: EVM-compatible runtime
- Data Availability: Base for settlement
Interoperability
- Metalayer: Cross-chain messaging protocol
- Metatoken: Unified token standard
- Bridge: Native Base ↔ L3 bridge
- Standards: ERC-1155, ERC-4626, ERC-4337
Cross-Chain Interoperability
The Network leverages Caldera's Metalayer and Metatoken standards for seamless cross-chain operations:
// Example: Cross-chain atom reference
interface IMetalayerBridge {
function attestCrossChain(
uint256 chainId,
uint256 atomId,
bytes calldata data
) external returns (bytes32 messageId);
function resolveAtom(
uint256 chainId,
uint256 atomId
) external view returns (string memory uri);
}
This enables atoms and triples to reference data across any supported chain, creating a truly interoperable knowledge graph.
Layer 2: Intuition Protocol (On-Chain Logic)
Overview
The Intuition Protocol implements all on-chain logic for the knowledge graph through a suite of smart contracts. This is where atoms are created, triples are formed, and economic incentives are enforced.
Core Contract Architecture
EthMultiVault
The economic engine managing all vault operations:
contract EthMultiVault {
// Core vault operations
function deployVault(uint256 atomId) external returns (address vault);
function deposit(uint256 vaultId, uint256 amount) external;
function redeem(uint256 vaultId, uint256 shares) external;
// Bonding curve integration
function calculatePrice(uint256 supply) public view returns (uint256);
function calculateShares(uint256 deposit, uint256 totalSupply) external view;
}
Key Features:
- Automated vault deployment for atoms/triples
- Dynamic pricing via bonding curves
- Share-based ownership model
- Fee distribution to stakers
AtomWallet
Primary interface for creating and managing knowledge graph primitives:
contract AtomWallet {
// Atom operations
function createAtom(string memory uri) external returns (uint256 atomId);
// Triple operations
function createTriple(
uint256 subjectId,
uint256 predicateId,
uint256 objectId
) external returns (uint256 tripleId);
// Signal operations
function depositAtom(uint256 atomId, uint256 amount) external;
function depositTriple(uint256 tripleId, uint256 amount, bool isPositive) external;
}
Key Features:
- Gas-efficient batch operations
- Account abstraction support (ERC-4337)
- Multi-signature capabilities
- Upgradeable proxy pattern
Economic Mechanics
The Protocol implements sophisticated economic incentives:
Bonding Curves
- Automated price discovery
- Early adopter rewards
- Exponential growth model
- Anti-manipulation mechanics
Fee Distribution
- Creator fees: 5% of deposits
- Protocol fees: 2% of deposits
- Staker rewards: Proportional shares
- Compound interest mechanics
Vault Mechanics
- Positive/negative signal vaults
- Automatic liquidity provision
- Rage quit protection
- Time-weighted averaging
State Management
The Protocol maintains the complete on-chain state of the knowledge graph:
interface OnChainState {
atoms: Map<number, {
id: number;
uri: string;
vault: address;
creator: address;
timestamp: number;
}>;
triples: Map<number, {
id: number;
subjectId: number;
predicateId: number;
objectId: number;
vaultFor: address;
vaultAgainst: address;
}>;
signals: Map<address, Map<number, {
shares: bigint;
lastUpdate: number;
}>>;
}
Layer 3: Rust Subnet (Off-Chain Infrastructure)
Overview
The Rust Subnet is Intuition's high-performance off-chain infrastructure that indexes on-chain state, resolves off-chain data references, and serves the unified knowledge graph through APIs.
Why Rust?
The Subnet is built in Rust for maximum performance and reliability:
- Memory safety without garbage collection
- Concurrent processing for parallel indexing
- Zero-cost abstractions for efficient data structures
- WebAssembly compatibility for edge deployment
Core Components
Event Processing Pipeline
Processes blockchain events through multiple stages:
// Consumer modes for different processing stages
pub enum ConsumerMode {
Raw(RawConsumerContext), // Raw event ingestion
Decoded(DecodedConsumerContext), // Event decoding
Resolver(ResolverConsumerContext), // Data resolution
}
impl ConsumerMode {
pub async fn process_message(&self, message: String) -> Result<(), ConsumerError> {
match self {
ConsumerMode::Raw(context) => {
self.raw_message_store_and_relay(message, context).await
}
ConsumerMode::Decoded(context) => {
self.handle_decoded_message(message, context).await
}
ConsumerMode::Resolver(context) => {
self.handle_resolved_message(message, context).await
}
}
}
}
- Real-time event processing through SQS queues
- Multi-stage pipeline (Raw → Decoded → Resolved)
- Chain reorganization handling
- Parallel processing across consumers
Data Resolver
Resolves and enriches on-chain references with off-chain data:
pub struct ResolverConsumerContext {
pub client: Arc<dyn BasicConsumer>,
pub image_guard_url: String,
pub ipfs_resolver: IPFSResolver,
pub mainnet_client: Arc<ENSRegistryInstance<Http<Client>, RootProvider<Http<Client>>>>,
pub pg_pool: PgPool,
pub reqwest_client: reqwest::Client,
}
impl ResolverConsumerContext {
pub async fn resolve_atom_data(&self, atom_uri: &str) -> Result<ResolvedData, ConsumerError> {
match atom_uri {
uri if uri.starts_with("ipfs://") => {
self.ipfs_resolver.fetch_content(uri).await
}
uri if uri.starts_with("http") => {
self.reqwest_client.get(uri).send().await?.json().await
}
addr if is_ethereum_address(addr) => {
self.resolve_ens_name(addr).await
}
}
}
}
- IPFS content resolution via Pinata
- HTTP/HTTPS metadata fetching
- ENS name resolution on mainnet
- Image validation through image-guard service
Database Integration
Processes and stores structured data for API consumption:
pub struct DecodedConsumerContext {
pub base_client: Arc<EthMultiVaultInstance<Http<Client>, RootProvider<Http<Client>>>>,
pub pg_pool: PgPool,
pub backend_schema: String,
}
impl DecodedConsumerContext {
pub async fn handle_decoded_message(&self, message: DecodedMessage) -> Result<(), ConsumerError> {
match &message.body {
EthMultiVaultEvents::AtomCreated(atom_data) => {
atom_data.handle_atom_creation(self, &message).await?;
}
EthMultiVaultEvents::TripleCreated(triple_data) => {
triple_data.handle_triple_creation(self, &message).await?;
}
EthMultiVaultEvents::Deposited(deposit_data) => {
deposit_data.handle_deposit_creation(self, &message).await?;
}
}
Ok(())
}
}
- PostgreSQL with Hasura GraphQL layer
- Real-time event storage and indexing
- Complex relationship mapping
- Optimized queries with database migrations
Data Pipeline
The Subnet implements a sophisticated data pipeline:
API Layer
The Subnet exposes multiple API interfaces:
GraphQL API
query GetAtomWithTriples {
atom(id: "123") {
uri
vault {
totalStaked
sharePrice
}
triplesAsSubject {
predicate { uri }
object { uri }
signal
}
}
}
REST API
GET /api/v1/atoms/123
GET /api/v1/triples?subject=123
POST /api/v1/search
WebSocket /ws/subscriptions
Real-time Subscriptions
subscription OnAtomUpdate {
atomUpdated(id: "123") {
signal
lastActivity
vaultBalance
}
}
Data Flow Architecture
Transaction Lifecycle
Understanding how data flows through the system is crucial for developers:
- User Action → SDK creates transaction
- Network Processing → L3 validates and includes in block
- Protocol Execution → Smart contracts update state
- Event Emission → Contracts emit events
- Subnet Indexing → Events processed and indexed
- Data Resolution → Off-chain data fetched and cached
- API Response → Unified data served to applications
Average End-to-End Latency: < 2 seconds
State Synchronization
The system maintains consistency across all layers:
interface SyncStrategy {
// Real-time sync for recent blocks
realtimeSync: {
blockLag: 2,
confirmations: 1,
retryPolicy: ExponentialBackoff
};
// Batch sync for historical data
batchSync: {
chunkSize: 1000,
parallelWorkers: 10,
checkpointInterval: 100
};
// Consistency checks
validation: {
stateRootVerification: true,
periodicReconciliation: '1h',
alertThreshold: 0.001 // 0.1% discrepancy
};
}
Performance Optimizations
Caching Strategy
Multi-layer caching for optimal performance:
L1: CDN Edge Cache
- Static content
- Popular queries
- 5-minute TTL
L2: Redis Cache
- Query results
- Session data
- 1-hour TTL
L3: Application Cache
- Computed values
- Aggregate data
- 24-hour TTL
Query Optimization
The Subnet employs sophisticated query optimization:
- Query planning - Analyzes queries to determine optimal execution path
- Parallel execution - Breaks queries into independent subqueries
- Index utilization - Maintains specialized indexes for common patterns
- Result streaming - Streams large results instead of loading all at once
Security Architecture
Smart Contract Security
- Audited contracts by leading security firms
- Upgradeable proxies with time-locked admin functions
- Rate limiting on sensitive operations
- Emergency pause functionality
API Security
- JWT authentication for protected endpoints
- Rate limiting per API key
- DDoS protection at edge layer
- Input validation and sanitization
Data Integrity
- Merkle proofs for on-chain data
- IPFS content addressing for immutable references
- Signature verification for attestations
- Consensus validation across indexer nodes
Development Patterns
Recommended Integration Flow
For developers building on Intuition, we recommend:
- Use the TypeScript SDK for all contract interactions
- Query via GraphQL for complex data needs
- Subscribe to WebSockets for real-time updates
- Cache aggressively at the application layer
- Batch operations when possible to reduce costs
Example: Creating and Querying Atoms
// Using the SDK to create an atom
const atom = await intuition.createAtom({
uri: 'ipfs://QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco'
});
// Staking on the atom
await intuition.stake(atom.id, parseEther('100'));
// Querying via GraphQL
const query = gql`
query GetAtom($id: ID!) {
atom(id: $id) {
uri
creator
vault {
totalStaked
holders
}
signal
}
}
`;
const result = await client.query({
query,
variables: { id: atom.id }
});
Deployment Architecture
Infrastructure Setup
Network Nodes
- Distributed globally
- Auto-scaling groups
- Multi-region failover
- 99.99% uptime SLA
Subnet Infrastructure
- Kubernetes clusters
- Horizontal pod autoscaling
- Rolling deployments
- Blue-green releases
Data Storage
- PostgreSQL with replication
- Redis sentinel clusters
- IPFS pinning services
- S3-compatible object storage
Next Steps
Ready to start building? Explore these resources:
Smart Contracts - Deep dive into Protocol contracts
GraphQL API - Learn the query interface
SDK Guide - Start building applications
Deployments - Contract addresses