# Table of Contents - [Introduction | Intuition Docs](#introduction-intuition-docs) - [⛬ GraphQL API | Intuition Docs](#-graphql-api-intuition-docs) - [πŸ“š Intuition Concepts | Intuition Docs](#-intuition-concepts-intuition-docs) - [Contribution Guidelines | Intuition Docs](#contribution-guidelines-intuition-docs) - [MetaMask Snap | Intuition Docs](#metamask-snap-intuition-docs) - [Data Populator (Deprecated) | Intuition Docs](#data-populator-deprecated-intuition-docs) - [Farcaster Frames | Intuition Docs](#farcaster-frames-intuition-docs) - [MCP Server | Intuition Docs](#mcp-server-intuition-docs) - [Overview | Intuition Docs](#overview-intuition-docs) - [Developer Stack | Intuition Docs](#developer-stack-intuition-docs) - [Intuition Kits | Intuition Docs](#intuition-kits-intuition-docs) - [Why Intuition? | Intuition Docs](#why-intuition-intuition-docs) - [Choose Your Path | Intuition Docs](#choose-your-path-intuition-docs) - [Use Cases | Intuition Docs](#use-cases-intuition-docs) - [Architecture | Intuition Docs](#architecture-intuition-docs) - [Integrations | Intuition Docs](#integrations-intuition-docs) - [Create Triple | Intuition Docs](#create-triple-intuition-docs) - [Create Atom | Intuition Docs](#create-atom-intuition-docs) - [Retrieve Vault Details | Intuition Docs](#retrieve-vault-details-intuition-docs) - [Deposit & Return | Intuition Docs](#deposit-return-intuition-docs) - [Custom Queries | Intuition Docs](#custom-queries-intuition-docs) - [Intuition Mainnet | Intuition Docs](#intuition-mainnet-intuition-docs) - [System Architecture | Intuition Docs](#system-architecture-intuition-docs) - [Overview | Intuition Docs](#overview-intuition-docs) - [Local Development Setup | Intuition Docs](#local-development-setup-intuition-docs) - [powered-by-caldera | Intuition Docs](#powered-by-caldera-intuition-docs) - [Intuition Testnet | Intuition Docs](#intuition-testnet-intuition-docs) - [Remote Procedure Call (RPC) | Intuition Docs](#remote-procedure-call-rpc-intuition-docs) - [Contract Deployments | Intuition Docs](#contract-deployments-intuition-docs) - [Intuition Testnet Faucet | Intuition Docs](#intuition-testnet-faucet-intuition-docs) - [Network & Explorers | Intuition Docs](#network-explorers-intuition-docs) - [Economics | Intuition Docs](#economics-intuition-docs) - [$TRUST Tokenomics | Intuition Docs](#-trust-tokenomics-intuition-docs) - [Run on Kubernetes Cluster | Intuition Docs](#run-on-kubernetes-cluster-intuition-docs) - [rust-backend | Intuition Docs](#rust-backend-intuition-docs) - [Run an Intuition Node | Intuition Docs](#run-an-intuition-node-intuition-docs) - [Portal (Explorer) Guide | Intuition Docs](#portal-explorer-guide-intuition-docs) - [Overview | Intuition Docs](#overview-intuition-docs) - [GraphQL Generator | Intuition Docs](#graphql-generator-intuition-docs) - [Incentive Design | Intuition Docs](#incentive-design-intuition-docs) - [Bonding Curves | Intuition Docs](#bonding-curves-intuition-docs) - [Audit Reports | Intuition Docs](#audit-reports-intuition-docs) - [Fees and Rewards | Intuition Docs](#fees-and-rewards-intuition-docs) - [Configurations & Fees | Intuition Docs](#configurations-fees-intuition-docs) - [Deployments | Intuition Docs](#deployments-intuition-docs) - [TrustBonding.sol | Intuition Docs](#trustbonding-sol-intuition-docs) - [Community & Support | Intuition Docs](#community-support-intuition-docs) - [Migration Guide | Intuition Docs](#migration-guide-intuition-docs) - [Capturing Signal | Intuition Docs](#capturing-signal-intuition-docs) - [Overview | Intuition Docs](#overview-intuition-docs) - [FAQ | Intuition Docs](#faq-intuition-docs) - [Introduction | Intuition Docs](#introduction-intuition-docs) - [GraphQL NPM Package | Intuition Docs](#graphql-npm-package-intuition-docs) - [MultiVault.sol | Intuition Docs](#multivault-sol-intuition-docs) - [Triple Structuring | Intuition Docs](#triple-structuring-intuition-docs) - [Key Terms | Intuition Docs](#key-terms-intuition-docs) - [Intuition Network | Intuition Docs](#intuition-network-intuition-docs) - [Pin Person | Intuition Docs](#pin-person-intuition-docs) - [Triple Fundamentals | Intuition Docs](#triple-fundamentals-intuition-docs) - [Pin Thing | Intuition Docs](#pin-thing-intuition-docs) - [Pin Organization | Intuition Docs](#pin-organization-intuition-docs) - [Atom Structuring | Intuition Docs](#atom-structuring-intuition-docs) - [Atom Best Practices | Intuition Docs](#atom-best-practices-intuition-docs) - [Activity Feed | Intuition Docs](#activity-feed-intuition-docs) - [Client Setup | Intuition Docs](#client-setup-intuition-docs) - [Triple Events | Intuition Docs](#triple-events-intuition-docs) - [Choose Appropriate Operators | Intuition Docs](#choose-appropriate-operators-intuition-docs) - [Use Database Functions | Intuition Docs](#use-database-functions-intuition-docs) - [Trust Bonding Events | Intuition Docs](#trust-bonding-events-intuition-docs) - [Pagination Best Practices | Intuition Docs](#pagination-best-practices-intuition-docs) - [Atom with Vault | Intuition Docs](#atom-with-vault-intuition-docs) - [Efficient Filtering | Intuition Docs](#efficient-filtering-intuition-docs) - [Subscriptions vs Polling | Intuition Docs](#subscriptions-vs-polling-intuition-docs) - [Use Fragments | Intuition Docs](#use-fragments-intuition-docs) - [Complex Filtering | Intuition Docs](#complex-filtering-intuition-docs) - [Image & IPFS Operations | Intuition Docs](#image-ipfs-operations-intuition-docs) - [Overview | Intuition Docs](#overview-intuition-docs) - [Vault Events | Intuition Docs](#vault-events-intuition-docs) - [Protocol Package Overview | Intuition Docs](#protocol-package-overview-intuition-docs) - [Use Pre-Computed Statistics | Intuition Docs](#use-pre-computed-statistics-intuition-docs) - [Error Handling | Intuition Docs](#error-handling-intuition-docs) - [Trending Atoms | Intuition Docs](#trending-atoms-intuition-docs) - [Price History | Intuition Docs](#price-history-intuition-docs) - [Use Cases | Intuition Docs](#use-cases-intuition-docs) - [Wrapped Trust | Intuition Docs](#wrapped-trust-intuition-docs) - [Nested Triples | Intuition Docs](#nested-triples-intuition-docs) - [Use Variables | Intuition Docs](#use-variables-intuition-docs) - [Real-Time Subscriptions | Intuition Docs](#real-time-subscriptions-intuition-docs) - [Social Graph | Intuition Docs](#social-graph-intuition-docs) - [Upload Image | Intuition Docs](#upload-image-intuition-docs) - [Building User Activity Feeds | Intuition Docs](#building-user-activity-feeds-intuition-docs) - [Tutorials | Intuition Docs](#tutorials-intuition-docs) - [Optimizing Batch Operations | Intuition Docs](#optimizing-batch-operations-intuition-docs) - [Oracle Integration | Intuition Docs](#oracle-integration-intuition-docs) - [Epochs & Utilization | Intuition Docs](#epochs-utilization-intuition-docs) - [Configuration | Intuition Docs](#configuration-intuition-docs) - [Query Performance | Intuition Docs](#query-performance-intuition-docs) - [Triples Pagination | Intuition Docs](#triples-pagination-intuition-docs) - [User Positions | Intuition Docs](#user-positions-intuition-docs) - [Upload Image from URL | Intuition Docs](#upload-image-from-url-intuition-docs) - [Resources | Intuition Docs](#resources-intuition-docs) - [Atom Events | Intuition Docs](#atom-events-intuition-docs) - [Multi-Language Examples | Intuition Docs](#multi-language-examples-intuition-docs) - [Upload JSON to IPFS | Intuition Docs](#upload-json-to-ipfs-intuition-docs) - [Price Updates | Intuition Docs](#price-updates-intuition-docs) - [Real-Time Positions | Intuition Docs](#real-time-positions-intuition-docs) - [Finding Related Claims | Intuition Docs](#finding-related-claims-intuition-docs) - [Atom Fundamentals | Intuition Docs](#atom-fundamentals-intuition-docs) - [Signal Rewards | Intuition Docs](#signal-rewards-intuition-docs) - [Request Only Needed Fields | Intuition Docs](#request-only-needed-fields-intuition-docs) - [Vaults & Shares | Intuition Docs](#vaults-shares-intuition-docs) - [Working with Nested Triples | Intuition Docs](#working-with-nested-triples-intuition-docs) - [Balance Queries | Intuition Docs](#balance-queries-intuition-docs) - [Signal Fundamentals | Intuition Docs](#signal-fundamentals-intuition-docs) - [Reads | Intuition Docs](#reads-intuition-docs) - [Staking Operations | Intuition Docs](#staking-operations-intuition-docs) - [Event Parsing Examples | Intuition Docs](#event-parsing-examples-intuition-docs) - [Discovering Most Trusted Accounts | Intuition Docs](#discovering-most-trusted-accounts-intuition-docs) - [Installation & Setup | Intuition Docs](#installation-setup-intuition-docs) - [Subscriptions Overview | Intuition Docs](#subscriptions-overview-intuition-docs) - [Lock Queries | Intuition Docs](#lock-queries-intuition-docs) - [Glossary | Intuition Docs](#glossary-intuition-docs) - [Working with Atoms | Intuition Docs](#working-with-atoms-intuition-docs) - [Search and Discovery | Intuition Docs](#search-and-discovery-intuition-docs) - [SDK Migration V1 to V2 | Intuition Docs](#sdk-migration-v1-to-v2-intuition-docs) - [Working with Primitives | Intuition Docs](#working-with-primitives-intuition-docs) - [Epoch Management | Intuition Docs](#epoch-management-intuition-docs) - [Trust Bonding Examples | Intuition Docs](#trust-bonding-examples-intuition-docs) - [Batch Operations | Intuition Docs](#batch-operations-intuition-docs) - [Deposit & Redeem | Intuition Docs](#deposit-redeem-intuition-docs) - [Reward Calculations | Intuition Docs](#reward-calculations-intuition-docs) - [Working with Triples | Intuition Docs](#working-with-triples-intuition-docs) - [Example: Find Existing Entities | Intuition Docs](#example-find-existing-entities-intuition-docs) - [Epochs & Utilization | Intuition Docs](#epochs-utilization-intuition-docs) - [Fee Calculations | Intuition Docs](#fee-calculations-intuition-docs) - [Vault Queries | Intuition Docs](#vault-queries-intuition-docs) - [Example: Thing IPFS Pinning | Intuition Docs](#example-thing-ipfs-pinning-intuition-docs) - [Example: Batch Create Ethereum Accounts | Intuition Docs](#example-batch-create-ethereum-accounts-intuition-docs) - [Share & Asset Conversions | Intuition Docs](#share-asset-conversions-intuition-docs) - [Configuration Queries | Intuition Docs](#configuration-queries-intuition-docs) - [Fee Calculations | Intuition Docs](#fee-calculations-intuition-docs) - [Vault Operations | Intuition Docs](#vault-operations-intuition-docs) - [Finding Top Dapps on Coinbase | Intuition Docs](#finding-top-dapps-on-coinbase-intuition-docs) - [Creating Atoms & Triples | Intuition Docs](#creating-atoms-triples-intuition-docs) - [Working with Vaults | Intuition Docs](#working-with-vaults-intuition-docs) - [Trust Mechanisms Overview | Intuition Docs](#trust-mechanisms-overview-intuition-docs) - [TanStack Query Integration | Intuition Docs](#tanstack-query-integration-intuition-docs) - [Triple Functions | Intuition Docs](#triple-functions-intuition-docs) - [React Integration | Intuition Docs](#react-integration-intuition-docs) - [Using the SDK | Intuition Docs](#using-the-sdk-intuition-docs) - [Atom Functions | Intuition Docs](#atom-functions-intuition-docs) - [Writes | Intuition Docs](#writes-intuition-docs) - [Building a Non-Resolving Prediction Market | Intuition Docs](#building-a-non-resolving-prediction-market-intuition-docs) - [Building a Fraud Detection System | Intuition Docs](#building-a-fraud-detection-system-intuition-docs) - [Example: Bulk Sync with Cost Estimation | Intuition Docs](#example-bulk-sync-with-cost-estimation-intuition-docs) - [Example: Create Triple Statement | Intuition Docs](#example-create-triple-statement-intuition-docs) - [Predicate-Object Aggregations | Intuition Docs](#predicate-object-aggregations-intuition-docs) - [Database Functions | Intuition Docs](#database-functions-intuition-docs) - [List Events | Intuition Docs](#list-events-intuition-docs) - [Primitives | Intuition Docs](#primitives-intuition-docs) - [Pagination | Intuition Docs](#pagination-intuition-docs) - [Aggregations | Intuition Docs](#aggregations-intuition-docs) - [Events Queries | Intuition Docs](#events-queries-intuition-docs) - [Building Curated Lists with Community Ranking | Intuition Docs](#building-curated-lists-with-community-ranking-intuition-docs) - [Example: Global Search | Intuition Docs](#example-global-search-intuition-docs) - [Get Chart Raw SVG | Intuition Docs](#get-chart-raw-svg-intuition-docs) - [Get Chart Raw JSON | Intuition Docs](#get-chart-raw-json-intuition-docs) - [Aggregate Events | Intuition Docs](#aggregate-events-intuition-docs) - [Account Queries | Intuition Docs](#account-queries-intuition-docs) - [List Accounts | Intuition Docs](#list-accounts-intuition-docs) - [Get Chart JSON | Intuition Docs](#get-chart-json-intuition-docs) - [Get Chart SVG | Intuition Docs](#get-chart-svg-intuition-docs) - [Atom with Related Triples | Intuition Docs](#atom-with-related-triples-intuition-docs) - [Search Queries | Intuition Docs](#search-queries-intuition-docs) - [Building a Social Attestation Platform | Intuition Docs](#building-a-social-attestation-platform-intuition-docs) - [Example: Create Atom from String | Intuition Docs](#example-create-atom-from-string-intuition-docs) - [Atom with Vault Details | Intuition Docs](#atom-with-vault-details-intuition-docs) - [PnL Leaderboard | Intuition Docs](#pnl-leaderboard-intuition-docs) - [Vault Leaderboard | Intuition Docs](#vault-leaderboard-intuition-docs) - [Fee Accruals | Intuition Docs](#fee-accruals-intuition-docs) --- # Introduction | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs#__docusaurus_skipToContent_fallback) On this page **Intuition is a decentralized protocol for building the world's first open, semantic, and token-curated knowledge graph.** It provides the infrastructure for verifiable attestations, portable identity, and trustful interactions at scaleβ€”creating a universal data layer that enables information to flow freely across applications, blockchains, and AI agents. What is Intuition?[​](https://www.docs.intuition.systems/docs#what-is-intuition "Direct link to What is Intuition?") --------------------------------------------------------------------------------------------------------------------- While blockchains have historically decentralized money, **Intuition decentralizes information**β€”specifically its trust, ownership, discoverability, and monetization. By transforming unstructured, siloed data into structured, verifiable, and economically-backed attestations, Intuition creates a Semantic Web of Trust that makes knowledge programmable and interoperable. ### Core Capabilities[​](https://www.docs.intuition.systems/docs#core-capabilities "Direct link to Core Capabilities") * **Universal Identity**: Decentralized identifiers (DIDs) for people, concepts, organizations, and AI agents with portable, self-sovereign identity management * **Verifiable Attestations**: Structured claims (subject-predicate-object triples) that are signed, attributable, and economically staked * **Knowledge Graph**: A semantic layer where facts and opinions coexist with verifiable provenance and economic signals * **Economic Incentives**: Bonding curves and cryptoeconomic mechanisms that align participants toward canonical standards and high-quality data The Architecture[​](https://www.docs.intuition.systems/docs#the-architecture "Direct link to The Architecture") ---------------------------------------------------------------------------------------------------------------- Intuition consists of four foundational layers: ### 1\. Intuition Network[​](https://www.docs.intuition.systems/docs#1-intuition-network "Direct link to 1. Intuition Network") A custom Layer 3 blockchain settling to Base, built on Arbitrum Orbit with AnyTrust DA for scalability and cost-efficiencyβ€”approximately 10,000x cheaper and 100x faster than traditional alternatives. ### 2\. Intuition Protocol[​](https://www.docs.intuition.systems/docs#2-intuition-protocol "Direct link to 2. Intuition Protocol") The rules and primitives for representing, incentivizing, and monetizing knowledge through: * **Atoms**: Unique identifiers for any entity or concept * **Triples**: Structured attestations linking atoms in subject-predicate-object relationships * **Signals**: Economic stakes that weight attestations with conviction and accountability ### 3\. Rust Subnet[​](https://www.docs.intuition.systems/docs#3-rust-subnet "Direct link to 3. Rust Subnet") A high-performance indexing and query layer providing real-time APIs and GraphQL endpoints for querying the knowledge graph at scale. ### 4\. SDK[​](https://www.docs.intuition.systems/docs#4-sdk "Direct link to 4. SDK") The developer interface providing TypeScript SDKs, client libraries, and comprehensive developer tools that enable seamless integration with the Intuition stack. The SDK abstracts the complexity of working with the underlying layers, offering type-safe methods for creating atoms, triples, and signals, as well as querying the knowledge graph. Why Intuition Matters[​](https://www.docs.intuition.systems/docs#why-intuition-matters "Direct link to Why Intuition Matters") ------------------------------------------------------------------------------------------------------------------------------- Current information systems suffer from fragmentation, lack of provenance, misaligned incentives, and centralized control. Intuition addresses these challenges by: * **Making attestations portable**: Your data, identity, and reputation travel with you across platforms * **Establishing provenance**: Every claim is signed, timestamped, and attributable to its source * **Aligning incentives**: Economic mechanisms reward accuracy and discourage misinformation * **Enabling interoperability**: Shared identifiers and standards create a composable knowledge ecosystem * **Empowering creators**: Data contributors own and monetize their attestations rather than enriching platforms Use Cases[​](https://www.docs.intuition.systems/docs#use-cases "Direct link to Use Cases") ------------------------------------------------------------------------------------------- Intuition enables a wide range of applications: * **Decentralized identity and reputation systems** * **Verifiable credentials and attestations** * **AI agents with trusted context and memory** * **Collaborative knowledge curation and fact-checking** * **Information markets and data monetization** * **Cross-platform social graphs and preferences** Getting Started[​](https://www.docs.intuition.systems/docs#getting-started "Direct link to Getting Started") ------------------------------------------------------------------------------------------------------------- Whether you're building applications, contributing data, or exploring the knowledge graph, Intuition provides the tools and infrastructure you need: * **Developers**: Use our SDKs, APIs, and smart contracts to integrate attestations into your applications * **Contributors**: Create and stake attestations to build reputation and earn rewards * **Applications**: Leverage the knowledge graph for trusted context, identity, and data * **AI Systems**: Access verifiable, semantically-structured training data with provenance Learn More[​](https://www.docs.intuition.systems/docs#learn-more "Direct link to Learn More") ---------------------------------------------------------------------------------------------- * [Introduction](https://www.docs.intuition.systems/docs/getting-started/overview) β€” Understand Intuition's vision and the problems it solves * [Quickstart](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk) β€” Get started building with Intuition * [Primitives](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) β€” Deep dive into Atoms, Triples, and Signals * [Developer Tools](https://www.docs.intuition.systems/docs/getting-started/developer-stack) β€” Explore SDKs, APIs, and integration guides * [Network](https://www.docs.intuition.systems/docs/intuition-network) β€” Learn about the Intuition Network architecture * [Economics](https://www.docs.intuition.systems/docs/intuition-concepts/economics) β€” Understand the cryptoeconomic incentive model For AI Agents[​](https://www.docs.intuition.systems/docs#for-ai-agents "Direct link to For AI Agents") ------------------------------------------------------------------------------------------------------- Intuition documentation is optimized for AI agent access: * [llms.txt](https://www.docs.intuition.systems/assets/files/llms-48159f58d48b0c2430da4c6b3a842839.txt) β€” Concise documentation index for LLM consumption * [llms-full.txt](https://www.docs.intuition.systems/assets/files/llms-full-b003fd04f912dba30dda0e185288de6c.txt) β€” Complete documentation in LLM-friendly format * * * **Intuition transforms information from passive data into programmable, verifiable, and valuable attestationsβ€”building the trust layer for the decentralized web.** * [What is Intuition?](https://www.docs.intuition.systems/docs#what-is-intuition) * [Core Capabilities](https://www.docs.intuition.systems/docs#core-capabilities) * [The Architecture](https://www.docs.intuition.systems/docs#the-architecture) * [1\. Intuition Network](https://www.docs.intuition.systems/docs#1-intuition-network) * [2\. Intuition Protocol](https://www.docs.intuition.systems/docs#2-intuition-protocol) * [3\. Rust Subnet](https://www.docs.intuition.systems/docs#3-rust-subnet) * [4\. SDK](https://www.docs.intuition.systems/docs#4-sdk) * [Why Intuition Matters](https://www.docs.intuition.systems/docs#why-intuition-matters) * [Use Cases](https://www.docs.intuition.systems/docs#use-cases) * [Getting Started](https://www.docs.intuition.systems/docs#getting-started) * [Learn More](https://www.docs.intuition.systems/docs#learn-more) * [For AI Agents](https://www.docs.intuition.systems/docs#for-ai-agents) --- # ⛬ GraphQL API | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/category/-graphql-api#__docusaurus_skipToContent_fallback) [πŸ—ƒοΈ Getting Started\ -------------------\ \ 3 items](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction) [πŸ“„οΈ Overview\ ------------\ \ Introduction to the Intuition GraphQL API and its main features](https://www.docs.intuition.systems/docs/graphql-api/overview) [πŸ“„οΈ Custom Queries\ ------------------\ \ Common GraphQL query examples and patterns for the Intuition API](https://www.docs.intuition.systems/docs/graphql-api/custom-queries) [πŸ“„οΈ GraphQL Generator\ ---------------------\ \ Comprehensive guide to the Intuition GraphQL Generator](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator) [πŸ“„οΈ GraphQL NPM Package\ -----------------------\ \ Comprehensive guide to use the Intuition GraphQL NPM package](https://www.docs.intuition.systems/docs/graphql-api/npm-package) [πŸ—ƒοΈ Queries\ -----------\ \ 12 items](https://www.docs.intuition.systems/docs/graphql-api/queries/advanced/aggregations) [πŸ—ƒοΈ Mutations\ -------------\ \ 4 items](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing) [πŸ“„οΈ Writes\ ----------\ \ Guide to write data using GraphQL mutations in the Intuition API](https://www.docs.intuition.systems/docs/graphql-api/writes) [πŸ“„οΈ Reads\ ---------\ \ Guide to read data using GraphQL queries in the Intuition API](https://www.docs.intuition.systems/docs/graphql-api/reads) [πŸ—ƒοΈ Subscriptions\ -----------------\ \ 3 items](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview) [πŸ—ƒοΈ Best Practices\ ------------------\ \ 11 items](https://www.docs.intuition.systems/docs/graphql-api/best-practices/request-only-needed) [πŸ“„οΈ Migration Guide\ -------------------\ \ Migrating GraphQL from v1.5 to v2.0](https://www.docs.intuition.systems/docs/graphql-api/migration-guide) [πŸ—ƒοΈ Examples\ ------------\ \ 10 items](https://www.docs.intuition.systems/docs/graphql-api/examples/atom-with-vault) [πŸ—ƒοΈ Use Cases\ -------------\ \ 1 item](https://www.docs.intuition.systems/docs/graphql-api/use-cases/overview) --- # πŸ“š Intuition Concepts | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/category/-intuition-concepts#__docusaurus_skipToContent_fallback) [πŸ“„οΈ System Architecture\ -----------------------\ \ Overview of Intuition's technical architecture and design principles](https://www.docs.intuition.systems/docs/intuition-concepts/architecture) [πŸ“„οΈ Trust Mechanisms\ --------------------\ \ Understanding how trust and attestation work in the Intuition ecosystem](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms) [πŸ—ƒοΈ Economics\ -------------\ \ 4 items](https://www.docs.intuition.systems/docs/intuition-concepts/economics) [πŸ—ƒοΈ Primitives\ --------------\ \ 3 items](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) --- # Contribution Guidelines | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/contribution-guidelines#__docusaurus_skipToContent_fallback) On this page Thanks for your interest in contributing to 0xIntuition! We're excited to have you join our community of builders working on the trust protocol for the internet. Please take a moment to review this document before submitting your first pull request. We also strongly recommend that you check for open issues and pull requests to see if someone else is working on something similar. If you need any help, feel free to reach out to [@0xintuition](https://twitter.com/0xintuition) . General Guidelines[​](https://www.docs.intuition.systems/docs/contribution-guidelines#general-guidelines "Direct link to General Guidelines") ---------------------------------------------------------------------------------------------------------------------------------------------- These guidelines apply across all Intuition repositories. Each repository may have additional specific requirements, so be sure to check the repository-specific sections below. ### Code of Conduct[​](https://www.docs.intuition.systems/docs/contribution-guidelines#code-of-conduct "Direct link to Code of Conduct") By participating in this project, you agree to abide by our community standards. We expect all contributors to be respectful, inclusive, and constructive in their interactions. ### Getting Started[​](https://www.docs.intuition.systems/docs/contribution-guidelines#getting-started "Direct link to Getting Started") 1. **Fork the repository** you want to contribute to 2. **Clone your fork** locally 3. **Create a new branch** for your feature or fix: `git checkout -b feature/my-new-feature` 4. **Make your changes** following the repository's coding standards 5. **Test your changes** thoroughly 6. **Commit your changes** with a descriptive message 7. **Push to your fork** and **submit a pull request** ### Commit Message Guidelines[​](https://www.docs.intuition.systems/docs/contribution-guidelines#commit-message-guidelines "Direct link to Commit Message Guidelines") We largely follow conventional commit format across all repositories: * `feat: Description` - for new features * `fix: Description` - for bug fixes * `docs: Description` - for documentation updates * `refactor: Description` - for code refactoring * `test: Description` - for adding or updating tests ### Pull Request Process[​](https://www.docs.intuition.systems/docs/contribution-guidelines#pull-request-process "Direct link to Pull Request Process") Our PR process is consistent across repositories: * Provide a clear description of what your PR does * Reference any related issues * Ensure all tests pass * Be responsive to feedback during code review * Keep PRs focused and atomic when possible ### Versioning[​](https://www.docs.intuition.systems/docs/contribution-guidelines#versioning "Direct link to Versioning") We follow [Semantic Versioning](https://semver.org/) (SemVer) across all our repositories: * **MAJOR** version for incompatible API changes * **MINOR** version for backwards-compatible functionality additions * **PATCH** version for backwards-compatible bug fixes Repository-Specific Guidelines[​](https://www.docs.intuition.systems/docs/contribution-guidelines#repository-specific-guidelines "Direct link to Repository-Specific Guidelines") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- While we maintain consistent practices across all repositories, each has specific setup requirements and workflows. **Always check the individual repository's README and CONTRIBUTING.md (if present) for detailed, repo-specific instructions.** ### intuition-ts[​](https://www.docs.intuition.systems/docs/contribution-guidelines#intuition-ts "Direct link to intuition-ts") **Description**: TypeScript monorepo containing our SDK, UI components, API interactions, and core applications. **What's included**: * SDK packages for protocol and API interactions * 1ui component library with Storybook * Core applications and utilities **Contributing**: This repository has comprehensive contribution guidelines. Please read the [CONTRIBUTING.md](https://github.com/0xIntuition/intuition-ts/blob/main/CONTRIBUTING.md) file for detailed instructions on: * Monorepo structure and workspace commands * Development setup with pnpm and Nx * Testing requirements and changesets workflow * Component development guidelines ### intuition-rs[​](https://www.docs.intuition.systems/docs/contribution-guidelines#intuition-rs "Direct link to intuition-rs") **Description**: Rust workspace containing the backend infrastructure, indexing services, and data processing pipeline. **What's included**: * CLI tools and TUI client * Event consumers (raw, decoded, resolver) * Indexing services (envio-indexer, substreams-sink) * Database models and RPC proxy * Docker and Kubernetes deployment configurations **Contributing**: * Install [Rust](https://rustup.rs/) and [cargo-make](https://github.com/sagiegurari/cargo-make) * Follow the setup instructions in the [README](https://github.com/0xIntuition/intuition-rs/blob/main/README.md) * Run tests with `cargo nextest run` * Use `cargo make` commands for common development tasks * Note: This repository follows Rust-specific conventions for code style and testing ### intuition-mcp-server[​](https://www.docs.intuition.systems/docs/contribution-guidelines#intuition-mcp-server "Direct link to intuition-mcp-server") **Description**: Model Context Protocol server for interacting with the Intuition knowledge graph, enabling powerful AI integrations. **What's included**: * HTTP stream server with MCP protocol support * Tools for extracting triples and searching entities * Account and relationship management APIs * Client SDK and examples **Contributing**: * Requires Node.js 14+ and pnpm * Follow setup instructions in the [README](https://github.com/0xIntuition/intuition-mcp-server/blob/main/README.md) * Test locally with `pnpm run start:http` * See the Contributing section in the README for MCP-specific development guidelines ### intuition-contracts-v2[​](https://www.docs.intuition.systems/docs/contribution-guidelines#intuition-contracts-v2 "Direct link to intuition-contracts-v2") **Description**: Smart contracts for Intuition V2 protocol built with Foundry, handling core protocol logic and token economics. **What's included**: * Core protocol smart contracts * Deployment and migration scripts * Comprehensive test suite * Gas optimization and security features **Contributing**: * Install [Foundry](https://book.getfoundry.sh/getting-started/installation) * Install [Bun](https://bun.sh/) for Node.js package management * Follow setup instructions in the [README](https://github.com/0xIntuition/intuition-contracts-v2/blob/main/README.md) * Run tests with `forge test` * Use `forge fmt` for code formatting and `bun run lint` for linting * Follow Solidity best practices and security guidelines for smart contract development Getting Help[​](https://www.docs.intuition.systems/docs/contribution-guidelines#getting-help "Direct link to Getting Help") ---------------------------------------------------------------------------------------------------------------------------- * **GitHub Issues**: Use the Issues tab in the relevant repository for bug reports and feature requests * **Twitter**: Follow [@0xintuition](https://twitter.com/0xintuition) for updates * **Documentation**: Visit our [docs site](https://docs.intuition.systems/) for comprehensive guides What to Contribute[​](https://www.docs.intuition.systems/docs/contribution-guidelines#what-to-contribute "Direct link to What to Contribute") ---------------------------------------------------------------------------------------------------------------------------------------------- We welcome contributions of all kinds: * **Bug fixes** - Help us identify and resolve issues * **Feature development** - Build new capabilities for the protocol * **Documentation** - Improve guides, examples, and API documentation * **Testing** - Add test coverage and improve quality assurance * **Examples** - Create tutorials and sample applications * **Performance** - Optimize existing code and infrastructure Thank you for contributing to the future of decentralized trust! πŸš€ * [General Guidelines](https://www.docs.intuition.systems/docs/contribution-guidelines#general-guidelines) * [Code of Conduct](https://www.docs.intuition.systems/docs/contribution-guidelines#code-of-conduct) * [Getting Started](https://www.docs.intuition.systems/docs/contribution-guidelines#getting-started) * [Commit Message Guidelines](https://www.docs.intuition.systems/docs/contribution-guidelines#commit-message-guidelines) * [Pull Request Process](https://www.docs.intuition.systems/docs/contribution-guidelines#pull-request-process) * [Versioning](https://www.docs.intuition.systems/docs/contribution-guidelines#versioning) * [Repository-Specific Guidelines](https://www.docs.intuition.systems/docs/contribution-guidelines#repository-specific-guidelines) * [intuition-ts](https://www.docs.intuition.systems/docs/contribution-guidelines#intuition-ts) * [intuition-rs](https://www.docs.intuition.systems/docs/contribution-guidelines#intuition-rs) * [intuition-mcp-server](https://www.docs.intuition.systems/docs/contribution-guidelines#intuition-mcp-server) * [intuition-contracts-v2](https://www.docs.intuition.systems/docs/contribution-guidelines#intuition-contracts-v2) * [Getting Help](https://www.docs.intuition.systems/docs/contribution-guidelines#getting-help) * [What to Contribute](https://www.docs.intuition.systems/docs/contribution-guidelines#what-to-contribute) --- # MetaMask Snap | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#__docusaurus_skipToContent_fallback) On this page The **Intuition MetaMask Snap** extends MetaMask's functionality to seamlessly integrate with the Intuition knowledge graph. This Snap enables users to interact with Intuition's decentralized identity and reputation system directly through their MetaMask wallet, providing a familiar and secure interface for managing atoms, triples, and staking operations. Overview[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#overview "Direct link to Overview") -------------------------------------------------------------------------------------------------------------------------------- The MetaMask Snap serves as a bridge between traditional Web3 wallet functionality and Intuition's knowledge graph, enabling users to: * **Manage identities** - Create and manage Intuition atoms directly from MetaMask * **Make claims** - Create triples and assertions about entities in the knowledge graph * **Stake on content** - Participate in the Token Curated Registry by staking on atoms and triples * **Access trust networks** - View and interact with reputation and trust data * **Cross-platform integration** - Use Intuition features across any dApp that supports MetaMask Key Features[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#key-features "Direct link to Key Features") -------------------------------------------------------------------------------------------------------------------------------------------- ### πŸ†” **Identity Management**[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#-identity-management "Direct link to -identity-management") * Create and manage Intuition atoms (identities) directly from MetaMask * View your created atoms and their associated vaults * Manage atom metadata and relationships * Export and backup identity data ### πŸ“ **Claim Creation**[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#-claim-creation "Direct link to -claim-creation") * Create triples (claims) using the Subject-Predicate-Object structure * Stake on existing claims to express agreement or disagreement * View claim details and associated vault information * Manage your claim portfolio and staking positions ### πŸ’° **Staking Operations**[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#-staking-operations "Direct link to -staking-operations") * Deposit ETH into atom and triple vaults * Withdraw staked amounts and earned fees * View staking history and performance metrics * Monitor vault share prices and market dynamics ### 🀝 **Trust Network Integration**[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#-trust-network-integration "Direct link to -trust-network-integration") * View reputation scores and trust relationships * Follow other users and build your social graph * Access personalized recommendations based on your network * Verify claims and identities through the trust network Installation[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#installation "Direct link to Installation") -------------------------------------------------------------------------------------------------------------------------------------------- ### **Prerequisites**[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#prerequisites "Direct link to prerequisites") * MetaMask wallet installed in your browser * Access to the Intuition network * Understanding of basic Intuition concepts (atoms, triples, vaults) ### **Installation Steps**[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#installation-steps "Direct link to installation-steps") 1. **Open MetaMask** - Ensure you have MetaMask installed and unlocked 2. **Navigate to Snaps** - Go to the MetaMask Snaps directory or use the direct installation link 3. **Install Intuition Snap** - Click "Install" on the Intuition MetaMask Snap 4. **Grant Permissions** - Approve the necessary permissions for the Snap to function 5. **Connect to Intuition** - Link your MetaMask wallet to the Intuition network 6. **Start Using** - Begin creating identities, making claims, and staking on content Getting Started[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#getting-started "Direct link to Getting Started") ----------------------------------------------------------------------------------------------------------------------------------------------------- ### First-Time Setup[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#first-time-setup "Direct link to First-Time Setup") 1. **Create Your First Identity** - Use the Snap to create your first atom (identity) 2. **Make Your First Claim** - Create a triple to make an assertion about something 3. **Stake on Content** - Deposit ETH to signal agreement with existing claims 4. **Build Your Network** - Follow other users and build your trust network ### Basic Workflow[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#basic-workflow "Direct link to Basic Workflow") 1. **Access the Snap** - Open MetaMask and navigate to the Intuition Snap 2. **Choose an Action** - Select from Create Identity, Make Claim, or Stake 3. **Fill in Details** - Provide the necessary information for your chosen action 4. **Confirm Transaction** - Review and approve the transaction in MetaMask 5. **Monitor Results** - Track your transaction and view the results Features in Detail[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#features-in-detail "Direct link to Features in Detail") -------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Identity Creation[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#identity-creation "Direct link to Identity Creation") * **Simple Interface** - Easy-to-use forms for creating atoms * **Metadata Support** - Add rich metadata to your identities * **IPFS Integration** - Automatic upload of identity data to IPFS * **Vault Association** - Each identity gets its own vault for staking ### Claim Management[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#claim-management "Direct link to Claim Management") * **Triple Creation** - Create Subject-Predicate-Object relationships * **Claim Discovery** - Search and discover existing claims * **Staking Interface** - Easy staking on positive or negative vaults * **Claim Analytics** - View claim performance and community sentiment ### Staking Interface[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#staking-interface "Direct link to Staking Interface") * **Vault Overview** - View total assets, share prices, and your position * **Deposit/Withdraw** - Simple interface for staking and unstaking * **Fee Tracking** - Monitor earned fees and performance * **Market Data** - Real-time vault statistics and trends ### Trust Network[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#trust-network "Direct link to Trust Network") * **Reputation Scores** - View trust scores for entities and users * **Social Connections** - Follow users and build your network * **Recommendations** - Get personalized content recommendations * **Verification** - Verify claims and identities through the network Security Features[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#security-features "Direct link to Security Features") ----------------------------------------------------------------------------------------------------------------------------------------------------------- ### Wallet Integration[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#wallet-integration "Direct link to Wallet Integration") * **Secure Storage** - All Intuition data stored securely in MetaMask * **Private Keys** - Your private keys never leave MetaMask * **Transaction Signing** - All transactions signed through MetaMask's secure interface * **Permission Management** - Granular control over Snap permissions ### Network Security[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#network-security "Direct link to Network Security") * **Blockchain Verification** - All operations verified on the Intuition blockchain * **Immutable Records** - All atoms and triples permanently recorded * **Audit Trail** - Complete transaction history and provenance * **Fraud Prevention** - Built-in mechanisms to prevent malicious activity Use Cases[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#use-cases "Direct link to Use Cases") ----------------------------------------------------------------------------------------------------------------------------------- ### Content Creators[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#content-creators "Direct link to Content Creators") * Create identities for your content and brand * Make claims about your expertise and achievements * Build reputation through community staking * Monetize your knowledge and contributions ### Researchers[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#researchers "Direct link to Researchers") * Create atoms for research entities and findings * Make claims about research relationships and conclusions * Build collaborative knowledge graphs * Establish credibility through community validation ### Business Users[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#business-users "Direct link to Business Users") * Create organizational identities and relationships * Make claims about business partnerships and achievements * Build trust networks with partners and customers * Leverage reputation for business opportunities ### Developers[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#developers "Direct link to Developers") * Integrate Intuition features into your dApps * Access trust and reputation data programmatically * Build applications that leverage the knowledge graph * Contribute to the Intuition ecosystem Advanced Features[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#advanced-features "Direct link to Advanced Features") ----------------------------------------------------------------------------------------------------------------------------------------------------------- ### API Integration[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#api-integration "Direct link to API Integration") * **Programmatic Access** - Use the Snap's API for custom integrations * **Webhook Support** - Receive notifications for important events * **Data Export** - Export your Intuition data for external use * **Custom Interfaces** - Build custom interfaces using the Snap's capabilities ### Analytics and Reporting[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#analytics-and-reporting "Direct link to Analytics and Reporting") * **Performance Tracking** - Monitor your staking performance and returns * **Network Analysis** - Analyze your trust network and connections * **Claim Analytics** - Track the performance of your claims * **Reputation Metrics** - Monitor your reputation score and trends ### Automation[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#automation "Direct link to Automation") * **Automated Staking** - Set up automated staking strategies * **Claim Monitoring** - Get alerts for important claim updates * **Portfolio Management** - Automated portfolio rebalancing * **Social Automation** - Automated following and network building Troubleshooting[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#troubleshooting "Direct link to Troubleshooting") ----------------------------------------------------------------------------------------------------------------------------------------------------- ### Common Issues[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#common-issues "Direct link to Common Issues") * **Installation Problems** - Ensure MetaMask is up to date and properly configured * **Transaction Failures** - Check gas settings and network connectivity * **Permission Errors** - Review and update Snap permissions as needed * **Sync Issues** - Refresh the Snap to sync with the latest blockchain state ### Getting Help[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#getting-help "Direct link to Getting Help") * **Documentation** - Review this guide and related documentation * **Community Support** - Join the Intuition community for user support * **Technical Support** - Contact the development team for technical issues * **GitHub Issues** - Report bugs and feature requests on GitHub Development[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#development "Direct link to Development") ----------------------------------------------------------------------------------------------------------------------------------------- The MetaMask Snap is open source and welcomes contributions: * **GitHub Repository** - [https://github.com/0xIntuition/intuition-snap](https://github.com/0xIntuition/intuition-snap) * **Documentation** - Comprehensive developer documentation * **Testing** - Extensive test suite and quality assurance * **Community** - Active development community and support Related Resources[​](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#related-resources "Direct link to Related Resources") ----------------------------------------------------------------------------------------------------------------------------------------------------------- * [Portal](https://www.docs.intuition.systems/docs/portal) - Main web interface for Intuition * [Browser Extension](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap) - Chrome extension for web browsing * [Developer Tools](https://www.docs.intuition.systems/docs/getting-started/developer-stack) - Programmatic access and integration * [API Documentation](https://www.docs.intuition.systems/docs/graphql-api/overview) - Technical integration guides * [Community](https://discord.gg/0xintuition) - Join the Intuition community * [Overview](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#overview) * [Key Features](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#key-features) * [πŸ†” **Identity Management**](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#-identity-management) * [πŸ“ **Claim Creation**](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#-claim-creation) * [πŸ’° **Staking Operations**](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#-staking-operations) * [🀝 **Trust Network Integration**](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#-trust-network-integration) * [Installation](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#installation) * [**Prerequisites**](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#prerequisites) * [**Installation Steps**](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#installation-steps) * [Getting Started](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#getting-started) * [First-Time Setup](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#first-time-setup) * [Basic Workflow](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#basic-workflow) * [Features in Detail](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#features-in-detail) * [Identity Creation](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#identity-creation) * [Claim Management](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#claim-management) * [Staking Interface](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#staking-interface) * [Trust Network](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#trust-network) * [Security Features](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#security-features) * [Wallet Integration](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#wallet-integration) * [Network Security](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#network-security) * [Use Cases](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#use-cases) * [Content Creators](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#content-creators) * [Researchers](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#researchers) * [Business Users](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#business-users) * [Developers](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#developers) * [Advanced Features](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#advanced-features) * [API Integration](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#api-integration) * [Analytics and Reporting](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#analytics-and-reporting) * [Automation](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#automation) * [Troubleshooting](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#troubleshooting) * [Common Issues](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#common-issues) * [Getting Help](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#getting-help) * [Development](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#development) * [Related Resources](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap#related-resources) --- # Data Populator (Deprecated) | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#__docusaurus_skipToContent_fallback) On this page The **Intuition Data Populator** is a specialized tool designed to help users and developers efficiently populate the Intuition knowledge graph with high-quality, structured data. This application streamlines the process of creating atoms, triples, and establishing meaningful relationships within the decentralized knowledge network. Why did we create the Data Populator?[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#why-did-we-create-the-data-populator "Direct link to Why did we create the Data Populator?") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Do you have a large amount of data you want to add to the Intuition System, but not enough time or patience to manually create each data point as an atom or triple in the Portal? Look no further! The Data Populator V1 is here! What it does, in brief[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#what-it-does-in-brief "Direct link to What it does, in brief") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- You can use the Data Populator to load CSV files which contain long lists of atom data. The user interface will allow you to perform some basic proofreading of the data, and when you're ready you can submit it to the Intuition System in one fell swoop. This works by batching all of the atom data together into very large EVM transactions, after automatically pinning and filtering the metadata onto IPFS. This is very similar to the behavior in the Portal App, except it's designed to work with much larger volumes of data. Where you can access it[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#where-you-can-access-it "Direct link to Where you can access it") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ There are two deployments for the Data Populator - one for testing, which runs on Base Sepolia, and one for production which runs on Base. * **Testnet Data Populator**: [https://data-populator-dev.onrender.com](https://data-populator-dev.onrender.com/) * **Mainnet Data Populator**: [https://upload.intuition.systems](https://upload.intuition.systems/) It's strongly recommended, especially for first time users, to start off with the **Testnet** version to verify everything looks good with your data before spending real Base Ethereum on populating it. Overview[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#overview "Direct link to Overview") --------------------------------------------------------------------------------------------------------------------------------- The Data Populator serves as a bridge between traditional data sources and the Intuition ecosystem, enabling users to: * **Bulk import data** - Efficiently create multiple atoms and triples from structured datasets * **Validate data quality** - Ensure imported data meets Intuition's standards and requirements * **Establish relationships** - Create meaningful connections between imported entities * **Maintain data integrity** - Preserve the semantic structure and provenance of imported information Key Features[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#key-features "Direct link to Key Features") --------------------------------------------------------------------------------------------------------------------------------------------- ### πŸ”„ **Bulk Data Import**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-bulk-data-import "Direct link to -bulk-data-import") * Import large datasets in various formats (CSV, JSON, XML) * Automated atom and triple creation from structured data * Batch processing for efficient handling of large datasets * Progress tracking and error reporting ### βœ… **Data Validation**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-data-validation "Direct link to -data-validation") * Automatic validation of data structure and format * Quality checks for imported atoms and triples * Duplicate detection and resolution * Semantic consistency verification ### πŸ”— **Relationship Mapping**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-relationship-mapping "Direct link to -relationship-mapping") * Automatic creation of triples based on imported relationships * Support for complex relationship structures * Mapping of traditional data schemas to Intuition's semantic model * Preservation of data provenance and metadata ### 🎯 **Quality Assurance**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-quality-assurance "Direct link to -quality-assurance") * Data quality scoring and reporting * Conflict resolution for conflicting claims * Automated tagging and categorization * Integration with Intuition's trust mechanisms Use Cases[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#use-cases "Direct link to Use Cases") ------------------------------------------------------------------------------------------------------------------------------------ ### πŸŽ“ **Academic Research**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-academic-research "Direct link to -academic-research") * Import research datasets and establish connections between findings * Create atoms for research entities, methodologies, and conclusions * Build knowledge graphs for specific research domains * Enable collaborative research through shared knowledge structures ### πŸ’Ό **Business Intelligence**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-business-intelligence "Direct link to -business-intelligence") * Import organizational data and establish entity relationships * Create comprehensive knowledge graphs for business domains * Enable data-driven decision making through structured insights * Facilitate cross-organizational knowledge sharing ### πŸ“š **Content Curation**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-content-curation "Direct link to -content-curation") * Import content from various sources and establish semantic relationships * Create comprehensive knowledge graphs for specific domains * Enable content discovery and recommendation systems * Build curated collections of related information Instruction Guide[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#instruction-guide "Direct link to Instruction Guide") ------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Authentication[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#authentication "Direct link to Authentication") The first thing you will need to do, if you haven't already, is authenticate and log into the system. If you are not authenticated yet, you will be shown a **Connect** button. Click the connect button and authorize using your method of choice. Follow the prompts shown on screen to complete the log-in process. ### User Interface Overview[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#user-interface-overview "Direct link to User Interface Overview") After logging in, you'll see the main interface with: * **Top menu bar**: Contains a helpful tooltip toggle button and a history button * **Version indicator**: Shows which version of the Data Populator app you're using (TESTNET or MAINNET) * **Four main tabs**: Select Atom Type, Load CSV, Publish Atoms, and Tag Atoms ### Select Atom Type[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#select-atom-type "Direct link to Select Atom Type") As of right now, you have 3 options here. Most users can stick with the default value of **Schema.org ** to create and tag basic metadata atoms. If you want to populate **CAIP-10** atoms or **Raw URI** atoms, you can select either option from the drop-down before pressing **Continue**. #### **Schema.org **[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#schemaorg-thing "Direct link to schemaorg-thing") We currently support 1 type from schema.org, the ****. Most of the atoms in the Intuition Portal are \*\*\*\*s. The **** has 6 fields: | Field | Description | | --- | --- | | @context | This will always be [https://schema.org](https://schema.org/)
- it's used to identify where the metadata type is defined | | @type | This will always be **** - it's used to determine which metadata type is being used | | name | This is the name of your atom. This could be the name of an article, person, place, or thing | | description | A description of your atom. This is a more in-depth blob of text which helps people understand the thing being referenced | | image | A URL pointing to an image for your atom. This might point to a logo, a twitter avatar, or anything which visually demonstrates the thing being referenced | | url | A URL pointing to a website for your atom. This could be a social media profile, the website for a business, an article, or anything else on the web | #### **CAIP-10**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#caip-10 "Direct link to caip-10") A `CAIP-10` is a string of text which is used to reference smart contracts. `CAIP-10` atoms comprise of only one variable, the `CAIP-10` itself. The `CAIP-10` identifier is comprised of 4 `:` delimited values: `CAIP10` `:` `[NAMESPACE]` `:` `[CHAIN_ID]` `:` `[ADDRESS]` **Examples:** # Ethereum mainnet (canonicalized with EIP-55 checksum)CAIP10:eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb# Bitcoin mainnetCAIP10:bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6# Cosmos HubCAIP10:cosmos:cosmoshub-3:cosmos1t2uflqwqe0fsj0shcfkrvpukewcw40yjj6hdc0 You can read more about the `CAIP-10` standard here: [https://chainagnostic.org/CAIPs/caip-10](https://chainagnostic.org/CAIPs/caip-10) #### **Raw URI**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#raw-uri "Direct link to raw-uri") The `Intuition System` also uses `Raw URI`s. These cannot be proofread, and are for advanced users only. One example use case for these is the [https://schema.org/keywords](https://schema.org/keywords) `Raw URI`. The `Intuition Portal` uses this as a `Predicate` in `Semantic Triples` in order to denote that something has a `Tag Keyword`. ### Load CSV[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#load-csv "Direct link to Load CSV") The `Load CSV` box allows you to load a `.csv` file from your PC which contains numerous `Atom`s. #### **Schema.org CSV Example:**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#schemaorg-thing-csv-example "Direct link to schemaorg-thing-csv-example") @context,@type,name,url,description,imagehttps://schema.org,Thing,Google,https://www.google.com,"A website where you can search for stuff.",https://google.com/google_logo.jpghttps://schema.org,Thing,Facebook,https://www.facebook.com,"A social media website.",https://facebook.com/facebook_logo.jpg #### **CAIP-10 CSV Example:**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#caip-10-csv-example "Direct link to caip-10-csv-example") CAIP10eip155:1:0x1234567890abcdef1234567890aBcdef12345678eip155:1:0x1234567890abcfeF1234567890aBCDEf12345675eip155:1:0x1234567890aBcdeF1234567890AbcDef12345672 **Important Notes:** * The column order, capitalization, and naming is crucial - ensure it matches the specification before exporting * If there's anything weird going on with your `.csv` file, the Data Populator will show you a `Proofreading` window which flags any unusual characters or errors * The application will attempt to fix any errors on its own, and can automatically checksum Ethereum addresses ### Publish Atoms[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#publish-atoms "Direct link to Publish Atoms") The `Publish Atoms` tab shows you some basic information about the `Atoms` you have loaded. Once you've reviewed them, you can select them and `publish` them using the `Publish Selected Atoms` button. **Publishing Process:** 1. Select atoms using the checkbox on the left of their rows 2. Press `Publish Selected Atoms` 3. Confirm the transaction in the dialog 4. Approve the EVM transaction in your wallet 5. Wait for confirmation and see green "Atom Already Exists" icons ### Atoms View[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#atoms-view "Direct link to Atoms View") The `Atoms View` appears below all four tabs in the application, and displays the `Atoms` you currently have loaded. It has several features: * **Edit and Preview**: Cells can be selected and freely edited * **Sort Data**: Click on any column header to sort the data * **Duplicate Detection**: Identify partial duplicates before publishing * **Delete Rows**: Select unwanted rows and press `Delete Row` * **Save CSV**: Save a new copy to your PC after making edits * **Add New Row**: Manually enter atom data directly into the Data Populator ### Tag Atoms[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#tag-atoms "Direct link to Tag Atoms") If you want to add your newly published `Atoms` to a `List`, you can use the `Tag Atoms` feature: 1. **Create the Tag**: Fill out the tag metadata fields and press `Create Tag` 2. **Publish Tag**: The tag will be published as another `Atom` in the system 3. **Tag Selected Atoms**: Once the tag exists, press `Tag Selected Atoms` to associate your atoms with it **Important**: Be precise while entering metadata. Each `Atom's` uniqueness is determined by the exact contents of its data. ### History Window[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#history-window "Direct link to History Window") If you press the `View Your History` button near the top-right corner of the screen, a new window will appear showing: * History of all the `Atoms`, `Triples` (`Tags`), and `Requests` that you've submitted * Ability to `Save` `.csv` files that you've previously submitted * Helpful when working on multiple machines or collaborating with others Getting Started[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#getting-started "Direct link to Getting Started") ------------------------------------------------------------------------------------------------------------------------------------------------------ ### **Prerequisites**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#prerequisites "Direct link to prerequisites") * Access to the Intuition network * Structured data in supported formats * Understanding of Intuition's atom and triple concepts * Familiarity with the data you want to import ### **Installation**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#installation "Direct link to installation") The Data Populator is available as a web application and can be accessed through the Intuition ecosystem. ### **Basic Workflow**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#basic-workflow "Direct link to basic-workflow") 1. **Prepare your data** - Ensure your data is in a supported format and properly structured 2. **Validate data** - Use the built-in validation tools to check data quality 3. **Map relationships** - Define how your data relationships should be represented as triples 4. **Import data** - Execute the import process with appropriate settings 5. **Review results** - Check the imported atoms and triples for accuracy 6. **Iterate** - Refine your import process based on results Data Formats[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#data-formats "Direct link to Data Formats") --------------------------------------------------------------------------------------------------------------------------------------------- ### πŸ“„ **Supported Formats**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-supported-formats "Direct link to -supported-formats") * **CSV** - Comma-separated values with headers * **JSON** - Structured JSON objects and arrays * **XML** - Extensible Markup Language documents * **Excel** - Microsoft Excel spreadsheets ### πŸ“‹ **Data Structure Requirements**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-data-structure-requirements "Direct link to -data-structure-requirements") * Clear entity identification * Relationship definitions * Metadata and provenance information * Quality indicators and confidence scores Best Practices[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#best-practices "Direct link to Best Practices") --------------------------------------------------------------------------------------------------------------------------------------------------- ### Data Preparation[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#data-preparation "Direct link to Data Preparation") * Clean and normalize your data before import * Ensure consistent naming conventions * Validate data quality and completeness * Document data sources and transformation processes ### Relationship Mapping[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#relationship-mapping "Direct link to Relationship Mapping") * Clearly define how traditional relationships map to triples * Consider the semantic meaning of relationships * Plan for relationship validation and verification * Account for relationship confidence and uncertainty ### Quality Control[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#quality-control "Direct link to Quality Control") * Implement comprehensive validation checks * Monitor import success rates and error patterns * Establish feedback loops for continuous improvement * Maintain data provenance and audit trails Integration[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#integration "Direct link to Integration") ------------------------------------------------------------------------------------------------------------------------------------------ ### With Intuition Portal[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#with-intuition-portal "Direct link to With Intuition Portal") * Imported data appears in the Portal for user interaction * Users can stake on imported atoms and triples * Integration with Portal's tagging and list features * Support for Portal's social features and user interactions ### With Developer Tools[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#with-developer-tools "Direct link to With Developer Tools") * Programmatic access to imported data through APIs * Integration with custom applications and workflows * Support for automated data processing and analysis * Compatibility with Intuition's developer ecosystem Advanced Features[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#advanced-features "Direct link to Advanced Features") ------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Custom Mappings[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#custom-mappings "Direct link to Custom Mappings") * Define custom mapping rules for complex data structures * Support for domain-specific ontologies and schemas * Flexible relationship mapping and transformation * Integration with external data sources and APIs ### Automated Processing[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#automated-processing "Direct link to Automated Processing") * Scheduled data imports and updates * Real-time data synchronization * Automated quality monitoring and reporting * Integration with external data pipelines ### Analytics and Reporting[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#analytics-and-reporting "Direct link to Analytics and Reporting") * Import statistics and success rates * Data quality metrics and trends * Usage analytics and impact assessment * Performance monitoring and optimization Development[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#development "Direct link to Development") ------------------------------------------------------------------------------------------------------------------------------------------ The Data Populator is part of the Intuition ecosystem and follows the same development principles: * **Open source** - Available for community contribution and improvement * **Modular design** - Flexible architecture for custom extensions * **API-first** - Programmatic access for integration with other tools * **Community-driven** - Development guided by user needs and feedback Getting Help[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#getting-help "Direct link to Getting Help") --------------------------------------------------------------------------------------------------------------------------------------------- For support with the Data Populator: * Check the [Intuition documentation](https://www.docs.intuition.systems/guides) for detailed guides * Visit the [GitHub repository](https://github.com/0xIntuition) for technical details * Join the [community discussions](https://discord.gg/RgBenkX4mx) for user support * Review the [API documentation](https://www.docs.intuition.systems/docs/getting-started/developer-stack) for integration help Getting Started[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#getting-started-1 "Direct link to Getting Started") -------------------------------------------------------------------------------------------------------------------------------------------------------- ### πŸš€ **Ready to populate your data?**[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-ready-to-populate-your-data "Direct link to -ready-to-populate-your-data") **[Testnet Data Populator](https://data-populator-dev.onrender.com/) ** - Start here for testing **[Mainnet Data Populator](https://upload.intuition.systems/) ** - Production environment Related Resources[​](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#related-resources "Direct link to Related Resources") ------------------------------------------------------------------------------------------------------------------------------------------------------------ **[Portal](https://www.docs.intuition.systems/docs/portal) ** - Main interface for interacting with the knowledge graph **[Explorer](https://www.docs.intuition.systems/docs/intuition-network) ** - Network exploration and transaction monitoring **[Developer Tools](https://www.docs.intuition.systems/docs/getting-started/developer-stack) ** - Programmatic access and integration **[API Documentation](https://www.docs.intuition.systems/docs/graphql-api/overview) ** - Technical integration guides * [Why did we create the Data Populator?](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#why-did-we-create-the-data-populator) * [What it does, in brief](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#what-it-does-in-brief) * [Where you can access it](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#where-you-can-access-it) * [Overview](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#overview) * [Key Features](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#key-features) * [πŸ”„ **Bulk Data Import**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-bulk-data-import) * [βœ… **Data Validation**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-data-validation) * [πŸ”— **Relationship Mapping**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-relationship-mapping) * [🎯 **Quality Assurance**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-quality-assurance) * [Use Cases](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#use-cases) * [πŸŽ“ **Academic Research**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-academic-research) * [πŸ’Ό **Business Intelligence**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-business-intelligence) * [πŸ“š **Content Curation**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-content-curation) * [Instruction Guide](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#instruction-guide) * [Authentication](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#authentication) * [User Interface Overview](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#user-interface-overview) * [Select Atom Type](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#select-atom-type) * [Load CSV](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#load-csv) * [Publish Atoms](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#publish-atoms) * [Atoms View](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#atoms-view) * [Tag Atoms](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#tag-atoms) * [History Window](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#history-window) * [Getting Started](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#getting-started) * [**Prerequisites**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#prerequisites) * [**Installation**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#installation) * [**Basic Workflow**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#basic-workflow) * [Data Formats](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#data-formats) * [πŸ“„ **Supported Formats**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-supported-formats) * [πŸ“‹ **Data Structure Requirements**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-data-structure-requirements) * [Best Practices](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#best-practices) * [Data Preparation](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#data-preparation) * [Relationship Mapping](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#relationship-mapping) * [Quality Control](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#quality-control) * [Integration](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#integration) * [With Intuition Portal](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#with-intuition-portal) * [With Developer Tools](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#with-developer-tools) * [Advanced Features](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#advanced-features) * [Custom Mappings](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#custom-mappings) * [Automated Processing](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#automated-processing) * [Analytics and Reporting](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#analytics-and-reporting) * [Development](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#development) * [Getting Help](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#getting-help) * [Getting Started](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#getting-started-1) * [πŸš€ **Ready to populate your data?**](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#-ready-to-populate-your-data) * [Related Resources](https://www.docs.intuition.systems/docs/experimental-applications/data-populator#related-resources) --- # Farcaster Frames | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#__docusaurus_skipToContent_fallback) On this page The **Intuition Farcaster Frames** integration brings the power of Intuition's knowledge graph directly into the Farcaster social network. This integration enables users to create, verify, and interact with Intuition atoms and triples through interactive frames embedded in Farcaster posts, creating a seamless bridge between social media and decentralized knowledge. Overview[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#overview "Direct link to Overview") ----------------------------------------------------------------------------------------------------------------------------------- Farcaster Frames provide an interactive way for users to engage with Intuition's knowledge graph without leaving the Farcaster platform. Users can: * **Create identities** - Generate Intuition atoms directly from Farcaster posts * **Make claims** - Create triples and assertions through interactive frames * **Stake on content** - Participate in the Token Curated Registry via frame interactions * **Verify information** - Check the authenticity of claims and identities * **Build reputation** - Establish credibility through social interactions Key Features[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#key-features "Direct link to Key Features") ----------------------------------------------------------------------------------------------------------------------------------------------- ### Interactive Identity Creation[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#interactive-identity-creation "Direct link to Interactive Identity Creation") * Create Intuition atoms through simple frame interactions * Add metadata and descriptions to identities * Link Farcaster profiles to Intuition identities * Build reputation through social validation ### Claim Verification[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#claim-verification "Direct link to Claim Verification") * Verify claims and assertions through frame interactions * Stake on claims to express agreement or disagreement * View community sentiment and staking activity * Access detailed claim analytics and provenance ### Social Integration[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#social-integration "Direct link to Social Integration") * Seamless integration with Farcaster's social features * Cross-platform identity and reputation building * Social proof through community interactions * Viral content discovery and sharing ### Trust Network Building[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#trust-network-building "Direct link to Trust Network Building") * Connect Farcaster users through Intuition's trust network * Build reputation through social interactions * Access personalized recommendations based on your network * Establish credibility through community validation How It Works[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#how-it-works "Direct link to How It Works") ----------------------------------------------------------------------------------------------------------------------------------------------- ### Frame Structure[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-structure "Direct link to Frame Structure") Farcaster Frames are interactive HTML elements embedded in Farcaster posts that enable users to: 1. **View Information** - Display Intuition data and claims 2. **Take Actions** - Create atoms, make claims, or stake on content 3. **Get Results** - Receive confirmation and view outcomes 4. **Share Results** - Post outcomes back to Farcaster ### Integration Flow[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#integration-flow "Direct link to Integration Flow") 1. **Frame Creation** - Developers create frames with Intuition functionality 2. **User Interaction** - Users interact with frames in Farcaster posts 3. **Blockchain Action** - Frame triggers Intuition blockchain transactions 4. **Result Display** - Frame shows transaction results and next steps 5. **Social Sharing** - Users can share results back to Farcaster Use Cases[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#use-cases "Direct link to Use Cases") -------------------------------------------------------------------------------------------------------------------------------------- ### Content Creators[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#content-creators "Direct link to Content Creators") * **Create Brand Identities** - Establish verified identities for your content * **Make Claims** - Assert expertise and achievements through frames * **Build Reputation** - Earn reputation through community validation * **Monetize Content** - Stake on your own content and earn rewards ### Researchers and Academics[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#researchers-and-academics "Direct link to Researchers and Academics") * **Share Research** - Create atoms for research findings and methodologies * **Verify Claims** - Use frames to verify research claims and relationships * **Build Credibility** - Establish academic reputation through community validation * **Collaborate** - Connect with other researchers through the trust network ### Business and Organizations[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#business-and-organizations "Direct link to Business and Organizations") * **Establish Credibility** - Create verified organizational identities * **Share Achievements** - Make claims about partnerships and accomplishments * **Build Trust** - Leverage social proof for business relationships * **Network** - Connect with partners and customers through the trust network ### Developers and Builders[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#developers-and-builders "Direct link to Developers and Builders") * **Integrate Intuition** - Add Intuition functionality to your Farcaster apps * **Build Frames** - Create custom frames with Intuition features * **Access Data** - Use Intuition data in your applications * **Contribute** - Help build the Intuition ecosystem Frame Types[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-types "Direct link to Frame Types") -------------------------------------------------------------------------------------------------------------------------------------------- ### Identity Creation Frames[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#identity-creation-frames "Direct link to Identity Creation Frames") * **Simple Identity** - Basic atom creation with minimal metadata * **Rich Identity** - Detailed atom creation with extensive metadata * **Profile Linking** - Link Farcaster profiles to Intuition identities * **Verification** - Verify existing identities through social proof ### Claim Creation Frames[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#claim-creation-frames "Direct link to Claim Creation Frames") * **Simple Claim** - Basic triple creation with three atom references * **Rich Claim** - Detailed claim creation with evidence and context * **Claim Discovery** - Search and discover existing claims * **Claim Verification** - Verify claims through community validation ### Staking Frames[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#staking-frames "Direct link to Staking Frames") * **Positive Staking** - Stake on claims to express agreement * **Negative Staking** - Stake against claims to express disagreement * **Vault Overview** - View vault statistics and your position * **Performance Tracking** - Monitor staking performance and returns ### Social Frames[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#social-frames "Direct link to Social Frames") * **Follow User** - Follow other users and build your network * **Reputation Check** - View reputation scores and trust relationships * **Recommendations** - Get personalized content recommendations * **Network Analysis** - Analyze your trust network and connections Technical Implementation[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#technical-implementation "Direct link to Technical Implementation") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Frame Development[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-development "Direct link to Frame Development") Frames are built using standard web technologies: Intuition Identity Creation

Create Your Identity

### SDK Integration[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#sdk-integration "Direct link to SDK Integration") The Intuition Frame SDK provides easy integration: // Initialize the Intuition Frame SDKconst intuitionFrame = new IntuitionFrame({ network: 'mainnet', wallet: 'metamask',});// Create an atom (identity)const result = await intuitionFrame.createAtom({ name: 'Alice Johnson', description: 'Software Engineer at Tech Corp', metadata: { profession: 'Software Engineer', company: 'Tech Corp', },});// Display the resultframe.postMessage({ type: 'identity-created', atomId: result.atomId, transactionHash: result.transactionHash,}); ### Frame Validation[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-validation "Direct link to Frame Validation") All frames must meet Farcaster's validation requirements: * **Security** - Secure implementation with proper input validation * **Performance** - Fast loading and responsive interaction * **Accessibility** - Accessible to users with disabilities * **Compliance** - Follow Farcaster's content and behavior guidelines Best Practices[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#best-practices "Direct link to Best Practices") ----------------------------------------------------------------------------------------------------------------------------------------------------- ### Frame Design[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-design "Direct link to Frame Design") * **Simple Interface** - Keep frames simple and easy to use * **Clear Actions** - Make it obvious what actions users can take * **Immediate Feedback** - Provide immediate feedback for user actions * **Error Handling** - Gracefully handle errors and edge cases ### Content Strategy[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#content-strategy "Direct link to Content Strategy") * **Valuable Content** - Create frames that provide real value to users * **Social Sharing** - Encourage users to share frame results * **Community Building** - Use frames to build and engage communities * **Reputation Building** - Help users build reputation through frame interactions ### Technical Considerations[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#technical-considerations "Direct link to Technical Considerations") * **Performance** - Optimize frames for fast loading and interaction * **Security** - Implement proper security measures and input validation * **Scalability** - Design frames to handle high user volumes * **Monitoring** - Track frame usage and performance metrics Integration Examples[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#integration-examples "Direct link to Integration Examples") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Identity Verification Frame[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#identity-verification-frame "Direct link to Identity Verification Frame") // Frame for verifying user identityconst verificationFrame = { title: 'Verify Your Identity', description: 'Create a verified identity on Intuition', actions: [ { label: 'Create Identity', action: 'create-atom', parameters: { name: '{{user.name}}', description: 'Farcaster user: {{user.username}}', }, }, ],}; ### Claim Verification Frame[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#claim-verification-frame "Direct link to Claim Verification Frame") // Frame for verifying claimsconst claimFrame = { title: 'Verify This Claim', description: 'Stake on whether this claim is true', actions: [ { label: 'Agree', action: 'stake-positive', parameters: { claimId: '{{claim.id}}', amount: '0.01', }, }, { label: 'Disagree', action: 'stake-negative', parameters: { claimId: '{{claim.id}}', amount: '0.01', }, }, ],}; Analytics and Metrics[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#analytics-and-metrics "Direct link to Analytics and Metrics") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Frame Performance[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-performance "Direct link to Frame Performance") * **Usage Statistics** - Track frame views and interactions * **Conversion Rates** - Measure frame completion rates * **User Engagement** - Monitor user engagement and retention * **Social Sharing** - Track frame sharing and viral spread ### Intuition Integration[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#intuition-integration "Direct link to Intuition Integration") * **Atom Creation** - Track atoms created through frames * **Claim Activity** - Monitor claim creation and staking activity * **User Growth** - Measure user acquisition through frames * **Network Effects** - Track network growth and engagement Development Resources[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#development-resources "Direct link to Development Resources") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Documentation[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#documentation "Direct link to Documentation") * [Farcaster Frames Documentation](https://docs.farcaster.xyz/developers/frames) * [Intuition API Documentation](https://www.docs.intuition.systems/docs/graphql-api/overview) * [Frame SDK Documentation](https://github.com/0xIntuition/intuition-frame) ### Tools and SDKs[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#tools-and-sdks "Direct link to Tools and SDKs") * **Intuition Frame SDK** - Official SDK for building Intuition frames * **Frame Templates** - Pre-built templates for common use cases * **Testing Tools** - Tools for testing frames in development * **Analytics Dashboard** - Dashboard for tracking frame performance ### Community[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#community "Direct link to Community") * **Developer Community** - Join the Intuition developer community * **Frame Showcase** - Browse examples of Intuition frames * **Support Channels** - Get help with frame development * **Contribution Guidelines** - Guidelines for contributing to the ecosystem Related Resources[​](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#related-resources "Direct link to Related Resources") -------------------------------------------------------------------------------------------------------------------------------------------------------------- * [Portal](https://www.docs.intuition.systems/docs/portal) - Main web interface for Intuition * [MetaMask Snap](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap) - MetaMask integration * [Browser Extension](https://www.docs.intuition.systems/docs/experimental-applications/metamask-snap) - Chrome extension * [Developer Tools](https://www.docs.intuition.systems/docs/getting-started/developer-stack) - Programmatic access * [API Documentation](https://www.docs.intuition.systems/docs/graphql-api/overview) - Technical guides * [Community](https://discord.gg/0xintuition) - Join the Intuition community * [Overview](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#overview) * [Key Features](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#key-features) * [Interactive Identity Creation](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#interactive-identity-creation) * [Claim Verification](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#claim-verification) * [Social Integration](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#social-integration) * [Trust Network Building](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#trust-network-building) * [How It Works](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#how-it-works) * [Frame Structure](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-structure) * [Integration Flow](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#integration-flow) * [Use Cases](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#use-cases) * [Content Creators](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#content-creators) * [Researchers and Academics](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#researchers-and-academics) * [Business and Organizations](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#business-and-organizations) * [Developers and Builders](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#developers-and-builders) * [Frame Types](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-types) * [Identity Creation Frames](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#identity-creation-frames) * [Claim Creation Frames](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#claim-creation-frames) * [Staking Frames](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#staking-frames) * [Social Frames](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#social-frames) * [Technical Implementation](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#technical-implementation) * [Frame Development](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-development) * [SDK Integration](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#sdk-integration) * [Frame Validation](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-validation) * [Best Practices](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#best-practices) * [Frame Design](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-design) * [Content Strategy](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#content-strategy) * [Technical Considerations](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#technical-considerations) * [Integration Examples](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#integration-examples) * [Identity Verification Frame](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#identity-verification-frame) * [Claim Verification Frame](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#claim-verification-frame) * [Analytics and Metrics](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#analytics-and-metrics) * [Frame Performance](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#frame-performance) * [Intuition Integration](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#intuition-integration) * [Development Resources](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#development-resources) * [Documentation](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#documentation) * [Tools and SDKs](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#tools-and-sdks) * [Community](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#community) * [Related Resources](https://www.docs.intuition.systems/docs/experimental-applications/farcaster-frames#related-resources) --- # MCP Server | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#__docusaurus_skipToContent_fallback) On this page The Intuition MCP Server is an HTTP stream server designed to interact with the Intuition knowledge graph, enabling AI models and applications to query and manage data through powerful tools built on the Model Context Protocol. Overview[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#overview "Direct link to Overview") ----------------------------------------------------------------------------------------------------------------------------- The Intuition MCP Server acts as a bridge between AI applications and the Intuition protocol, providing: * **Structured data extraction** from natural language using triple extraction * **Comprehensive search** for entities (atoms), accounts, and concepts * **Social graph exploration** with followers and following relationships * **Account information** retrieval with detailed connection data * **List management** for curated entity collections This server supports both modern Streamable HTTP and legacy Server-Sent Events (SSE) transports for maximum compatibility. GitHub Repository[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#github-repository "Direct link to GitHub Repository") -------------------------------------------------------------------------------------------------------------------------------------------------------- ### Intuition MCP Server Open-source Model Context Protocol server for knowledge graph interactions [View on GitHub β†’](https://github.com/0xIntuition/intuition-mcp-server) Getting Started[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#getting-started "Direct link to Getting Started") -------------------------------------------------------------------------------------------------------------------------------------------------- ### Prerequisites[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#prerequisites "Direct link to Prerequisites") * Node.js 14+ * pnpm (install globally with `npm install -g pnpm`) ### Installation[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#installation "Direct link to Installation") 1. **Clone the repository**: git clone https://github.com/0xIntuition/intuition-mcp-servercd intuition-mcp-server 2. **Install dependencies**: pnpm install 3. **Start the server**: pnpm run start:http The server will be available at the configured host and port (e.g., [http://localhost:3001](http://localhost:3001/) ). Available Tools[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#available-tools "Direct link to Available Tools") -------------------------------------------------------------------------------------------------------------------------------------------------- The MCP Server provides several powerful tools for interacting with the Intuition knowledge graph. All tools return responses sorted by relevance and include comprehensive information. ### search\_atoms[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#search_atoms "Direct link to search_atoms") Searches for entities (accounts, concepts, people) by name, description, URL, or ENS domain. **Input Schema**: { "queries": ["ethereum", "vitalik.eth", "defi protocols"]} **Usage**: Find atoms related to your search terms with detailed information and connections. ### get\_account\_info[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#get_account_info "Direct link to get_account_info") Retrieves detailed information about an account using its address or identifier. **Input Schema**: { "identifier": "0x1234567890123456789012345678901234567890"} **Usage**: Get comprehensive account details including connections and activity. ### search\_lists[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#search_lists "Direct link to search_lists") Searches for curated lists of entities by name or description. **Input Schema**: { "query": "top defi protocols"} **Usage**: Find organized collections of related entities with ranking and metadata. ### get\_following[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#get_following "Direct link to get_following") Retrieves atoms that an account follows, optionally filtered by predicate. **Input Schema**: { "account_id": "0x3e2178cf851a0e5cbf84c0ff53f820ad7ead703b", "predicate": "recommend"} **Usage**: Explore what entities an account follows or recommends. ### get\_followers[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#get_followers "Direct link to get_followers") Retrieves followers of an account, optionally filtered by predicate. **Input Schema**: { "account_id": "0x3e2178cf851a0e5cbf84c0ff53f820ad7ead703b", "predicate": "follow"} **Usage**: See who follows or recommends a specific account. ### search\_account\_ids[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#search_account_ids "Direct link to search_account_ids") Resolves identifiers (like ENS domains) to account addresses. **Input Schema**: { "identifier": "vitalik.eth"} **Usage**: Convert ENS names or other identifiers to blockchain addresses. Client Integration[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#client-integration "Direct link to Client Integration") ----------------------------------------------------------------------------------------------------------------------------------------------------------- ### Using the MCP SDK[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#using-the-mcp-sdk "Direct link to Using the MCP SDK") The server uses the Model Context Protocol SDK for client interactions. Here's a basic client setup: import { Client } from '@modelcontextprotocol/sdk/client/index.js';import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';async function connectToMcpServer(url: string) { const client = new Client({ name: 'intuition-client', version: '1.0.0', }); const transport = new StreamableHTTPClientTransport(new URL(url)); await client.connect(transport); return client;}// Usageconst client = await connectToMcpServer('http://localhost:3001');const response = await client.callTool('search_atoms', { queries: ['ethereum']}); ### API Endpoints[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#api-endpoints "Direct link to API Endpoints") The server provides these endpoints: * `/mcp` - Streamable HTTP transport (recommended) * `/sse` - Server-Sent Events transport (legacy support) Architecture[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#architecture "Direct link to Architecture") ----------------------------------------------------------------------------------------------------------------------------------------- The MCP Server operates as an HTTP stream server, leveraging the Model Context Protocol to handle streaming requests and responses. This makes it ideal for real-time applications and large-scale data queries. ### Request Flow[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#request-flow "Direct link to Request Flow") 1. **Client Request**: Application sends request to MCP endpoint 2. **Tool Processing**: Server processes the request using appropriate tool 3. **Knowledge Graph Query**: Server queries Intuition protocol 4. **Response Streaming**: Results are streamed back to client 5. **Client Processing**: Application handles streaming response data Deployment[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#deployment "Direct link to Deployment") ----------------------------------------------------------------------------------------------------------------------------------- The repository includes deployment configuration: * **Dockerfile**: Ready for deployment to services like Render or any Docker-compatible host * **render.yaml**: Configuration for Render deployment * **Environment setup**: Configurable for different deployment environments ### Environment Variables[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#environment-variables "Direct link to Environment Variables") Configure these environment variables for your deployment: * `PORT`: Server port (default: 3001) * `HOST`: Server host (default: localhost) * API credentials and other service-specific configurations Contributing[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#contributing "Direct link to Contributing") ----------------------------------------------------------------------------------------------------------------------------------------- We welcome contributions to the Intuition MCP Server! To contribute: 1. Fork the repository 2. Create a feature branch (`git checkout -b feature/your-feature`) 3. Commit your changes (`git commit -m "Add your feature"`) 4. Push to the branch (`git push origin feature/your-feature`) 5. Open a pull request Please ensure your code follows the project's coding standards and includes tests. Support and Resources[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#support-and-resources "Direct link to Support and Resources") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- * **[GitHub Repository](https://github.com/0xIntuition/intuition-mcp-server) **: Source code, issues, and contributions * **[Model Context Protocol](https://modelcontextprotocol.io/) **: Learn more about the MCP specification * **[Intuition Protocol](https://docs.intuition.systems/) **: Comprehensive protocol documentation License[​](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#license "Direct link to License") -------------------------------------------------------------------------------------------------------------------------- The Intuition MCP Server is open-source software licensed under the MIT License. See the [LICENSE](https://github.com/0xIntuition/intuition-mcp-server/blob/main/LICENSE) file for details. * [Overview](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#overview) * [GitHub Repository](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#github-repository) * [Getting Started](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#getting-started) * [Prerequisites](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#prerequisites) * [Installation](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#installation) * [Available Tools](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#available-tools) * [search\_atoms](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#search_atoms) * [get\_account\_info](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#get_account_info) * [search\_lists](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#search_lists) * [get\_following](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#get_following) * [get\_followers](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#get_followers) * [search\_account\_ids](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#search_account_ids) * [Client Integration](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#client-integration) * [Using the MCP SDK](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#using-the-mcp-sdk) * [API Endpoints](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#api-endpoints) * [Architecture](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#architecture) * [Request Flow](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#request-flow) * [Deployment](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#deployment) * [Environment Variables](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#environment-variables) * [Contributing](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#contributing) * [Support and Resources](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#support-and-resources) * [License](https://www.docs.intuition.systems/docs/experimental-applications/mcp-server#license) --- # Overview | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/getting-started/overview#__docusaurus_skipToContent_fallback) On this page Intuition at a Glance[​](https://www.docs.intuition.systems/docs/getting-started/overview#intuition-at-a-glance "Direct link to Intuition at a Glance") -------------------------------------------------------------------------------------------------------------------------------------------------------- Intuition is a decentralized system that makes attestations viable as a meta for digital expression. A universal language for signed data. Instead of information living as unstructured, siloed, minimally-attributable data in Web2 platforms, Intuition turns information into verifiable, tokenized, and portable objects that can flow across apps, chains, and agents. **The result is a Semantic Web of Trust, powered the world's first token-curated knowledge graph** β€” a network where information isn't just stored, but structured, incentivized, and made usable for developers and AI systems alike β€” all while maintaining verifiable provenance and attribution. * * * The Three Pillars of Intuition[​](https://www.docs.intuition.systems/docs/getting-started/overview#the-three-pillars-of-intuition "Direct link to The Three Pillars of Intuition") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### 1\. Intuition Network **A custom Layer 3 blockchain** settling to Base, built on Arbitrum Orbit with AnyTrust DA for scale and low-cost interactions β€” about 10,000 cheaper and 100x faster than most of the competition. * Every attestation, Atom, and Triple is written onchain. * Bonding curves give each piece of knowledge its own market, turning information into an economic primitive. * This is the settlement layer: where all attestations live and accrue value. ### 2\. Intuition Protocol **The rules and logic** for how knowledge is represented and monetized. * **Decentralized Identifiers (DIDs):** Anyone can create a new decentralized identifier β€” for a person, concept, object, or anything else β€” permissionlessly. * **Economics Drive Convergence:** While identifiers can be created freely, bonding curves and token incentives encourage communities to converge on shared canonical Atoms, so that concepts can be referenced consistently and universally across the internet. * **Consensus on Standards:** Intuition leverages cryptoeconomic consensus mechanisms for the "state of the state" of its ledger β€” incentivizing convergence on consensus data schemas, structures, and relationships. This ensures that as the knowledge graph grows, it becomes more interoperable, not less. The Protocol is the _grammar of programmable attestations_ β€” a universal language for expressing who said what, about what, at what time, and with what conviction. ### 3\. Rust Subnet **A high-performance indexing and query layer** built for developers. * Real-time APIs for reading/writing attestations. * GraphQL and TypeScript SDKs for quick integration. * Local replication options for privacy and speed. The Subnet turns raw attestations into actionable intelligence, powering AI agents, decentralized apps, and enterprise systems. * * * Core Primitives[​](https://www.docs.intuition.systems/docs/getting-started/overview#core-primitives "Direct link to Core Primitives") -------------------------------------------------------------------------------------------------------------------------------------- Intuition is built on three simple primitives that combine to create powerful applications: ### Atoms[​](https://www.docs.intuition.systems/docs/getting-started/overview#atoms "Direct link to Atoms") Unique, persistent identifiers for any concept or entityβ€”people, objects, ideas, smart contracts, or raw data. Think of them as the "nodes" in the knowledge graph or the "words" in the Intuition dictionary. * Anyone can create them permissionlessly * Each has an on-chain vault with bonding curves * Economics drive convergence to canonical versions ### Triples[​](https://www.docs.intuition.systems/docs/getting-started/overview#triples "Direct link to Triples") Structured relationships in the form \[Subject\]-\[Predicate\]-\[Object\]. These are the "sentences" of the Intuition system, connecting atoms to express facts, claims, and relationships. * Example: `[Vitalik] - [founderOf] - [Ethereum]` * Link three atom IDs to make assertions * Support both positive and negative attestations * Form the "edges" connecting nodes in the graph * Triples can be nested as atoms in other triples ### Signals[​](https://www.docs.intuition.systems/docs/getting-started/overview#signals "Direct link to Signals") Tokenized stakes that weight attestations with economic confidence. Signals show "who is attesting to what" and create economic skin in the game. * Represents community trust through staking * Shows collective confidence levels * Creates economic incentives for accuracy * Provides the "weights" in the knowledge graph **[β†’ Deep dive into Primitives](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) ** * * * How It Fits Together[​](https://www.docs.intuition.systems/docs/getting-started/overview#how-it-fits-together "Direct link to How It Fits Together") ----------------------------------------------------------------------------------------------------------------------------------------------------- * **Network** β€” the blockchain settlement layer for attestations. * **Protocol** β€” the primitives, identifiers, and incentive systems that keep knowledge aligned. * **Subnet** β€” the developer-facing layer that makes data usable in real time. Together, they form the rails of a programmable knowledge economy where: * **Identifiers are decentralized** β€” anyone can mint them. * **Standards are incentivized** β€” economics converge toward canonical versions. * **Interoperability compounds** β€” consensus ensures the system speaks one language. * **Attestations carry weight** β€” verifiable, portable, and economically backed. * * * Why This Matters for Developers[​](https://www.docs.intuition.systems/docs/getting-started/overview#why-this-matters-for-developers "Direct link to Why This Matters for Developers") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Building on Intuition means you don't have to reinvent trust, identity, or data models from scratch. Attestations and identifiers give you: #### πŸ’Ύ Memory Agents and apps don't start from zero; they inherit context. #### πŸ” Trust Every claim is signed, staked, and auditable. #### 🎯 Alignment Incentives built into the data layer itself. #### 🌐 Portability Your users' context and reputation follow them across apps. #### πŸ”Œ Interoperability Shared identifiers and standards mean your app plugs into a larger ecosystem by default. Intuition provides the foundation. You build the apps, agents, and experiences that bring it to life. * [Intuition at a Glance](https://www.docs.intuition.systems/docs/getting-started/overview#intuition-at-a-glance) * [The Three Pillars of Intuition](https://www.docs.intuition.systems/docs/getting-started/overview#the-three-pillars-of-intuition) * [Core Primitives](https://www.docs.intuition.systems/docs/getting-started/overview#core-primitives) * [Atoms](https://www.docs.intuition.systems/docs/getting-started/overview#atoms) * [Triples](https://www.docs.intuition.systems/docs/getting-started/overview#triples) * [Signals](https://www.docs.intuition.systems/docs/getting-started/overview#signals) * [How It Fits Together](https://www.docs.intuition.systems/docs/getting-started/overview#how-it-fits-together) * [Why This Matters for Developers](https://www.docs.intuition.systems/docs/getting-started/overview#why-this-matters-for-developers) --- # Developer Stack | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/getting-started/developer-stack#__docusaurus_skipToContent_fallback) On this page Choose the right tool for your use case. SDK (Recommended for Most Developers)[​](https://www.docs.intuition.systems/docs/getting-started/developer-stack#sdk-recommended-for-most-developers "Direct link to SDK (Recommended for Most Developers)") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- High-level TypeScript SDK with React integration. **Use when:** * Building web applications * Want simplicity and speed * Need React hooks * Prefer abstraction over low-level control **[β†’ SDK Overview](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) ** Protocol Package[​](https://www.docs.intuition.systems/docs/getting-started/developer-stack#protocol-package "Direct link to Protocol Package") ------------------------------------------------------------------------------------------------------------------------------------------------ Low-level contract interactions for advanced use cases. **Use when:** * Integrating with other smart contracts * Need maximum control and flexibility * Optimizing gas costs * Building on Solidity **[β†’ Protocol Overview](https://www.docs.intuition.systems/docs/protocol/getting-started/overview) ** GraphQL API[​](https://www.docs.intuition.systems/docs/getting-started/developer-stack#graphql-api "Direct link to GraphQL API") --------------------------------------------------------------------------------------------------------------------------------- Query the knowledge graph with GraphQL. **Use when:** * Read-only queries * Building analytics dashboards * Data visualization * No wallet needed for reads **[β†’ GraphQL Overview](https://www.docs.intuition.systems/docs/graphql-api/overview) ** Smart Contracts[​](https://www.docs.intuition.systems/docs/getting-started/developer-stack#smart-contracts "Direct link to Smart Contracts") --------------------------------------------------------------------------------------------------------------------------------------------- Direct contract interactions and ABIs. **Use when:** * Building with Solidity * Need contract addresses * Verifying on-chain data * Auditing contracts **[β†’ Contracts Overview](https://www.docs.intuition.systems/docs/intuition-smart-contracts) ** Comparison[​](https://www.docs.intuition.systems/docs/getting-started/developer-stack#comparison "Direct link to Comparison") ------------------------------------------------------------------------------------------------------------------------------ | Feature | SDK | Protocol | GraphQL | Contracts | | --- | --- | --- | --- | --- | | Abstraction | High | Low | N/A | Lowest | | React Hooks | βœ… Yes | ❌ No | ❌ No | ❌ No | | TypeScript | βœ… Yes | βœ… Yes | βœ… Yes | Solidity | | Writes | βœ… Yes | βœ… Yes | Limited | βœ… Yes | | Reads | βœ… Yes | βœ… Yes | βœ… Yes | βœ… Yes | | Learning Curve | Easy | Medium | Easy | Hard | Still Unsure?[​](https://www.docs.intuition.systems/docs/getting-started/developer-stack#still-unsure "Direct link to Still Unsure?") -------------------------------------------------------------------------------------------------------------------------------------- See [Choose Your Path](https://www.docs.intuition.systems/docs/getting-started/choose-your-path) for a decision tree. * [SDK (Recommended for Most Developers)](https://www.docs.intuition.systems/docs/getting-started/developer-stack#sdk-recommended-for-most-developers) * [Protocol Package](https://www.docs.intuition.systems/docs/getting-started/developer-stack#protocol-package) * [GraphQL API](https://www.docs.intuition.systems/docs/getting-started/developer-stack#graphql-api) * [Smart Contracts](https://www.docs.intuition.systems/docs/getting-started/developer-stack#smart-contracts) * [Comparison](https://www.docs.intuition.systems/docs/getting-started/developer-stack#comparison) * [Still Unsure?](https://www.docs.intuition.systems/docs/getting-started/developer-stack#still-unsure) --- # Intuition Kits | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#__docusaurus_skipToContent_fallback) On this page Jump-start your development with our official Intuition kits and resources. These pre-configured templates and official tools provide everything you need to build Intuition-powered applications. Official Kits[​](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#official-kits "Direct link to Official Kits") -------------------------------------------------------------------------------------------------------------------------------------- ### Core Development Tools[​](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#core-development-tools "Direct link to Core Development Tools") | Resource | Description | Primary Use | | --- | --- | --- | | **[intuition-ts](https://github.com/0xIntuition/intuition-ts)
** | TypeScript SDK and tools | Main SDK for application development | | **[intuition-contracts-v2](https://github.com/0xIntuition/intuition-contracts-v2)
** | Smart contracts and protocol implementation | Core protocol and contract development | | **[intuition-rs](https://github.com/0xIntuition/intuition-rs)
** | Rust implementation | High-performance applications and services | ### Integration Tools[​](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#integration-tools "Direct link to Integration Tools") | Resource | Description | Primary Use | | --- | --- | --- | | **[intuition-mcp-server](https://github.com/0xIntuition/intuition-mcp-server)
** | MCP server implementation | AI integration and model context protocol | ### Documentation & Ecosystem[​](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#documentation--ecosystem "Direct link to Documentation & Ecosystem") | Resource | Description | | --- | --- | | **[intuition-docs](https://github.com/0xIntuition/intuition-docs)
** | Documentation and guides | Getting Started with Official Resources[​](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#getting-started-with-official-resources "Direct link to Getting Started with Official Resources") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### TypeScript SDK (intuition-ts)[​](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#typescript-sdk-intuition-ts "Direct link to TypeScript SDK (intuition-ts)") The official TypeScript SDK provides the core functionality for interacting with the Intuition protocol: # Install the SDKnpm install @0xintuition/sdk# Basic usageimport { createAtomFromString } from '@0xintuition/sdk'const config = { walletClient, publicClient, ethMultiVaultAddress}const result = await createAtomFromString(config, 'Hello World') ### Smart Contracts (intuition-contracts-v2)[​](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#smart-contracts-intuition-contracts-v2 "Direct link to Smart Contracts (intuition-contracts-v2)") The protocol implementation includes all necessary smart contracts: # Clone the contracts repositorygit clone https://github.com/0xIntuition/intuition-contracts-v2.gitcd intuition-contracts-v2# Install dependenciesnpm install# Compile contractsnpm run compile Community Kits[​](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#community-kits "Direct link to Community Kits") ----------------------------------------------------------------------------------------------------------------------------------------- ### Coming Soon[​](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#coming-soon "Direct link to Coming Soon") Community-built kits and templates will be available here soon. We're working on creating a platform for the Intuition community to share their starter kits, templates, and specialized solutions. Stay tuned for: * Community-contributed starter kits * Industry-specific templates * Specialized use case solutions * Community showcase and reviews Development Workflow[​](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#development-workflow "Direct link to Development Workflow") ----------------------------------------------------------------------------------------------------------------------------------------------------------- 1. **Choose your starting point**: SDK, contracts, or ecosystem tools 2. **Set up your environment**: Configure wallet connections and network settings 3. **Build your application**: Use the SDK to create atoms, triples, and relationships 4. **Test and deploy**: Use the provided testing frameworks and deployment scripts Next Steps[​](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#next-steps "Direct link to Next Steps") ----------------------------------------------------------------------------------------------------------------------------- * Learn about [Smart Contracts](https://www.docs.intuition.systems/docs/protocol/getting-started/overview) for advanced features * Check out the [GraphQL API](https://www.docs.intuition.systems/docs/graphql-api/overview) for data integration * Explore the [SDK Guide](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) for application development Start building with the official Intuition resources and join the community! * [Official Kits](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#official-kits) * [Core Development Tools](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#core-development-tools) * [Integration Tools](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#integration-tools) * [Documentation & Ecosystem](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#documentation--ecosystem) * [Getting Started with Official Resources](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#getting-started-with-official-resources) * [TypeScript SDK (intuition-ts)](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#typescript-sdk-intuition-ts) * [Smart Contracts (intuition-contracts-v2)](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#smart-contracts-intuition-contracts-v2) * [Community Kits](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#community-kits) * [Coming Soon](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#coming-soon) * [Development Workflow](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#development-workflow) * [Next Steps](https://www.docs.intuition.systems/docs/getting-started/intuition-kits#next-steps) --- # Why Intuition? | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/getting-started/why-intuition#__docusaurus_skipToContent_fallback) On this page > **Every interaction online is an attestation.** A review or a purchase on Amazon, a comment on Reddit, the watching of a show on Netflix, a retweet, a LinkedIn endorsement, a 'follow', a bookmark, the ordering of an Uber, even a "like" β€” all are forms of attestations: claims made by things about things. But attestations today are fragmented, unverifiable, and platform-locked. They don't move with you. They don't carry weight. They aren't semantically structured and unambiguously consumable by machines. **Intuition changes that.** We've rebuilt attestations as first-class, tokenized primitives β€” structured, portable, and economically backed. _Attestations on steroids._ Decentralizing Information with Attestations[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#decentralizing-information-with-attestations "Direct link to Decentralizing Information with Attestations") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- **Blockchains decentralized money. Intuition decentralizes information β€” by offering next-generation attestation infrastructure.** An attestation in Intuition isn't just a line of text. It's: * **Verifiable** β€” signed and attributable * **Ownable** β€” belongs to the creator, not a platform * **Discoverable** β€” structured as a Triple (subject β†’ predicate β†’ object) * **Valuable** β€” backed by economic incentives through bonding curves This turns the messy stream of human expression into a global knowledge substrate that's actually useful to developers, communities, and AI agents. Information Finance: Attestations as Assets[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#information-finance-attestations-as-assets "Direct link to Information Finance: Attestations as Assets") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Intuition pioneers **Information Finance (InfoFi)**: the idea that information can be valued and exchanged just like money. * **Ideas become assets** β€” an attestation isn't just data, it's collateralized * **Reputation becomes capital** β€” your attestations are your portfolio of credibility * **Knowledge flows freely** β€” attestations aren't siloed; they're cross-platform and composable Attestations are no longer passive byproducts of online activity β€” they're programmable building blocks for apps and agents. The $200 Trillion Problem[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#the-200-trillion-problem "Direct link to The $200 Trillion Problem") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ The global knowledge economy is worth over **$200 trillion**, yet: * Most of its value is created by individuals * Less than 1% of that value flows back to the creators * Instead, tech monopolies capture and silo it **The result:** broken rails, misinformation, and AI systems consuming oceans of low-quality data without provenance. Attestations are the missing rails. When data becomes signed, tokenized, and portable, it allows value to flow back to contributors and trust to flow into the systems that need it most. Rebuilding the Rails of Knowledge[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#rebuilding-the-rails-of-knowledge "Direct link to Rebuilding the Rails of Knowledge") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Intuition makes attestations first-class protocol objects. That means: * **Facts, claims, and perspectives** are all structured as attestations * **Credibility is collateralized** β€” good attestations earn rewards; bad ones cost you stake * **Distribution is programmatic** β€” attestations move frictionlessly across apps, chains, and agents Think of it as the Ethereum moment for knowledge: where attestations flow as freely as tokens, powering new classes of decentralized infrastructure. Programmatic Monetization and Distribution[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#programmatic-monetization-and-distribution "Direct link to Programmatic Monetization and Distribution") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Attestations aren't just portable β€” they're **monetizable**. With Intuition, every attestation can plug into programmatic distribution rails: * Censorship-resistant search and discovery * Verifiable knowledge bases * Open data marketplaces * Training sets for AI agents Each attestation carries weight, liquidity, and discoverability, ensuring no single platform can gate what's visible or valuable. From Information β†’ Intuition[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#from-information--intuition "Direct link to From Information β†’ Intuition") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Why does this matter? Because **raw information without provenance is noise.** Attestations, structured and economically backed, create a higher-resolution understanding of the world. They transform scattered data into collective intuition β€” fueling smarter AI, safer markets, and more confident human decision-making. Reviving the Semantic Web with Crypto-Economic Consensus[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#reviving-the-semantic-web-with-crypto-economic-consensus "Direct link to Reviving the Semantic Web with Crypto-Economic Consensus") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The Semantic Web failed because it required global consensus on standards without incentives to achieve it. Different organizations created competing schemas, vocabularies fragmented, and there was no mechanism to converge on shared identifiers. **Intuition solves this with crypto-economics** β€” the same force that achieves distributed consensus in blockchains now drives semantic standardization: * **Incentivized identifiers** β€” stake on canonical IDs for entities, creating economic pressure toward convergence * **Market-driven standards** β€” the most useful data structures attract the most stake and become de facto standards * **Emergent interoperability** β€” economic incentives naturally align participants toward compatible schemas * **Consensus through collateralization** β€” disagreements resolve through staking, not committees Where the Semantic Web asked the world to voluntarily agree on standards, Intuition makes consensus profitable. Attestations become the economic glue that binds distributed actors to shared semantic structures. For Developers[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#for-developers "Direct link to For Developers") ---------------------------------------------------------------------------------------------------------------------------------------- If you're building applications that need identity, reputation, trust, or structured data β€” Intuition isn't optional. It's infrastructure. πŸ—οΈ #### Data Layer Included Inherit identity, reputation, and trust systems. No rebuilding from scratch. 🌐 #### Network Effects Every attestation joins a liquid ecosystem. Your users' data compounds globally. πŸ’° #### Economic Rails Bonding curves, staking, and rewards built in. Monetization without infrastructure. πŸ€– #### AI-Ready Verifiable context for AI agents. Training data with provenance. ⚑ #### Great DX TypeScript SDK, GraphQL API, comprehensive docs. Ship fast. 🚫 #### Avoid Silos Don't rebuild isolated systems. Plug into shared infrastructure. * * * For Users[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#for-users "Direct link to For Users") ------------------------------------------------------------------------------------------------------------------------- Your data has value. Your opinions matter. Your reputation should be yours. πŸ” #### Own Your Data Your attestations belong to you, not platforms. Take them anywhere. πŸ’΅ #### Earn Value Get rewarded when your contributions prove useful to others. βœ… #### Trust What You See Know who said what, with what stake behind it. 🌍 #### One Identity Portable reputation across all apps and chains. 🧠 #### Shape Knowledge Contribute to humanity's shared knowledge graph. * * * How It Works: Skin in the Game[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#how-it-works-skin-in-the-game "Direct link to How It Works: Skin in the Game") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- On Intuition, every attestation has consequences: * **Publish a useful attestation** β†’ earn reputation and rewards * **Publish misinformation** β†’ lose your stake and credibility * **Signal strong conviction** β†’ stake more on your attestation * **Build trust** β†’ accumulate a reputation that travels with you * **Use consensus identifiers** β†’ earn more by aligning with the network * **Fork data structures** β†’ lose money by fragmenting liquidity This flips today's internet incentives: no longer "reward the loudest," but reward the most credible and interoperable attestations. ### The Fork Choice Rule for Data[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#the-fork-choice-rule-for-data "Direct link to The Fork Choice Rule for Data") Just like blockchains have fork choice rules that determine the canonical chain, Intuition creates economic pressure toward canonical identifiers and data structures. **When you use consensus identifiers, you tap into existing liquidity pools and network effects. When you create competing forks, you isolate yourself economically.** **Example:** Imagine two identifiers for "Ethereum": * **Identifier A**: Used by 10,000 attestations with $1M total stake * **Identifier B**: Used by 50 attestations with $5K total stake If you make an attestation about Ethereum: * Using **Identifier A** β†’ Your attestation joins a liquid market, benefits from network effects, earns higher rewards * Using **Identifier B** β†’ Your attestation is isolated, has minimal visibility, earns negligible rewards The economic incentive is clear: converge on consensus or pay the price. This same dynamic applies to data structures, schemas, and semantic relationships. The network naturally evolves toward maximum interoperability because **consensus literally pays.** Digital Sovereignty and Data Ownership[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#digital-sovereignty-and-data-ownership "Direct link to Digital Sovereignty and Data Ownership") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- **Your attestations are yours.** Not Facebook's, not LinkedIn's, not OpenAI's. * You **own** them * You **control** who can access them * You **capture** the value they generate * They **travel** with you across every app, chain, or agent Attestations become the backbone of digital sovereignty. The Trust Layer for AI[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#the-trust-layer-for-ai "Direct link to The Trust Layer for AI") ---------------------------------------------------------------------------------------------------------------------------------------------------------------- AI doesn't just need more data β€” it needs **verifiable attestations about data**: * Who said it * With what reputation * With what conviction Intuition provides the trust graph of attestations. AI systems can finally ground themselves in data with provenance, weights, and economic signals β€” not just raw text. This makes AI more reliable while ensuring humans share in the value of the knowledge they produce. What You Can Build[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#what-you-can-build "Direct link to What You Can Build") ---------------------------------------------------------------------------------------------------------------------------------------------------- By treating attestations as programmable primitives, you can create: * **Verifiable identity systems** * **Reputation networks** powered by attestations * **Decentralized fact-checking** with stakes * **AI agents** that reason over attestations as context * **Information markets** where attestations themselves are the assets Join the Movement[​](https://www.docs.intuition.systems/docs/getting-started/why-intuition#join-the-movement "Direct link to Join the Movement") ------------------------------------------------------------------------------------------------------------------------------------------------- Intuition is about reclaiming the internet by giving attestations real weight. Whether you're a developer, researcher, or community builder, your contributions aren't just ephemeral posts β€” they're portable, valuable attestations that strengthen the global knowledge graph. **Together, we can rebuild the web around truth, attribution, and trust.** * [Decentralizing Information with Attestations](https://www.docs.intuition.systems/docs/getting-started/why-intuition#decentralizing-information-with-attestations) * [Information Finance: Attestations as Assets](https://www.docs.intuition.systems/docs/getting-started/why-intuition#information-finance-attestations-as-assets) * [The $200 Trillion Problem](https://www.docs.intuition.systems/docs/getting-started/why-intuition#the-200-trillion-problem) * [Rebuilding the Rails of Knowledge](https://www.docs.intuition.systems/docs/getting-started/why-intuition#rebuilding-the-rails-of-knowledge) * [Programmatic Monetization and Distribution](https://www.docs.intuition.systems/docs/getting-started/why-intuition#programmatic-monetization-and-distribution) * [From Information β†’ Intuition](https://www.docs.intuition.systems/docs/getting-started/why-intuition#from-information--intuition) * [Reviving the Semantic Web with Crypto-Economic Consensus](https://www.docs.intuition.systems/docs/getting-started/why-intuition#reviving-the-semantic-web-with-crypto-economic-consensus) * [For Developers](https://www.docs.intuition.systems/docs/getting-started/why-intuition#for-developers) * [For Users](https://www.docs.intuition.systems/docs/getting-started/why-intuition#for-users) * [How It Works: Skin in the Game](https://www.docs.intuition.systems/docs/getting-started/why-intuition#how-it-works-skin-in-the-game) * [The Fork Choice Rule for Data](https://www.docs.intuition.systems/docs/getting-started/why-intuition#the-fork-choice-rule-for-data) * [Digital Sovereignty and Data Ownership](https://www.docs.intuition.systems/docs/getting-started/why-intuition#digital-sovereignty-and-data-ownership) * [The Trust Layer for AI](https://www.docs.intuition.systems/docs/getting-started/why-intuition#the-trust-layer-for-ai) * [What You Can Build](https://www.docs.intuition.systems/docs/getting-started/why-intuition#what-you-can-build) * [Join the Movement](https://www.docs.intuition.systems/docs/getting-started/why-intuition#join-the-movement) --- # Choose Your Path | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#__docusaurus_skipToContent_fallback) On this page Not sure where to start? Pick the path that matches your goal. I Want to...[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#i-want-to "Direct link to I Want to...") ---------------------------------------------------------------------------------------------------------------------------------- ### Build a Frontend App (Most Common)[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#build-a-frontend-app-most-common "Direct link to Build a Frontend App (Most Common)") **Use the SDK** - High-level TypeScript SDK with React hooks. * Best for: Web apps, dashboards, social platforms * Abstracts complexity * React integration ready * **Start here:** [SDK Quick Start](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) ### Query Data Only (No Writes)[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#query-data-only-no-writes "Direct link to Query Data Only (No Writes)") **Use GraphQL API** - Read-only queries for the knowledge graph. * Best for: Analytics, dashboards, data visualization * No wallet needed for reads * Powerful filtering and aggregation * **Start here:** [GraphQL Setup](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup) ### Build Smart Contract Integration[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#build-smart-contract-integration "Direct link to Build Smart Contract Integration") **Use Protocol Package** - Low-level contract interactions. * Best for: Other smart contracts, custom logic, gas optimization * Direct contract calls * Full control * **Start here:** [Protocol Configuration](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration) ### Understand the System First[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#understand-the-system-first "Direct link to Understand the System First") **Read Concepts** - Learn how Intuition works. * Atoms, Triples, Signals * Economics and incentives * Architecture * **Start here:** [Primitives Overview](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) ### See Complete Examples[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#see-complete-examples "Direct link to See Complete Examples") **Follow Tutorials** - Build real applications step-by-step. * Reputation system * Curated lists * Social attestations * **Start here:** [Tutorials](https://www.docs.intuition.systems/docs/tutorials/overview) Decision Tree[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#decision-tree "Direct link to Decision Tree") ---------------------------------------------------------------------------------------------------------------------------------------- ### Build a Frontend App (Most Common)[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#build-a-frontend-app-most-common-1 "Direct link to Build a Frontend App (Most Common)") **Use the SDK** - High-level TypeScript SDK with React hooks. * Best for: Web apps, dashboards, social platforms * Abstracts complexity * React integration ready [Start with SDK Quick Start β†’](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) ### Query Data Only (No Writes)[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#query-data-only-no-writes-1 "Direct link to Query Data Only (No Writes)") **Use GraphQL API** - Read-only queries for the knowledge graph. * Best for: Analytics, dashboards, data visualization * No wallet needed for reads * Powerful filtering and aggregation [Start with GraphQL Setup β†’](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup) ### Build Smart Contract Integration[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#build-smart-contract-integration-1 "Direct link to Build Smart Contract Integration") **Use Protocol Package** - Low-level contract interactions. * Best for: Other smart contracts, custom logic, gas optimization * Direct contract calls * Full control [Start with Protocol Configuration β†’](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration) ### Understand the System First[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#understand-the-system-first-1 "Direct link to Understand the System First") **Read Concepts** - Learn how Intuition works. * Atoms, Triples, Signals * Economics and incentives * Architecture [Start with Primitives Overview β†’](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) ### See Complete Examples[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#see-complete-examples-1 "Direct link to See Complete Examples") **Follow Tutorials** - Build real applications step-by-step. * Reputation system * Curated lists * Social attestations [Start with Tutorials β†’](https://www.docs.intuition.systems/docs/tutorials/overview) Comparison Table[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#comparison-table "Direct link to Comparison Table") ------------------------------------------------------------------------------------------------------------------------------------------------- | Goal | Tool | Complexity | Best For | | --- | --- | --- | --- | | Build web app | SDK | Low | Frontend developers | | Query data | GraphQL | Low | Analytics, read-only | | Contract integration | Protocol | High | Solidity developers | | Learn system | Concepts | N/A | Everyone | Still Unsure?[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#still-unsure "Direct link to Still Unsure?") --------------------------------------------------------------------------------------------------------------------------------------- Join our [Discord](https://discord.gg/RgBenkX4mx) and ask the community! Next Steps[​](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------------- Once you've chosen your path: 1. Follow the quick start guide for your chosen tool 2. Read through the [Core Concepts](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) 3. Try a [Tutorial](https://www.docs.intuition.systems/docs/tutorials/overview) 4. Join the [Community](https://www.docs.intuition.systems/docs/resources/community-and-support) * [I Want to...](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#i-want-to) * [Build a Frontend App (Most Common)](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#build-a-frontend-app-most-common) * [Query Data Only (No Writes)](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#query-data-only-no-writes) * [Build Smart Contract Integration](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#build-smart-contract-integration) * [Understand the System First](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#understand-the-system-first) * [See Complete Examples](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#see-complete-examples) * [Decision Tree](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#decision-tree) * [Build a Frontend App (Most Common)](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#build-a-frontend-app-most-common-1) * [Query Data Only (No Writes)](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#query-data-only-no-writes-1) * [Build Smart Contract Integration](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#build-smart-contract-integration-1) * [Understand the System First](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#understand-the-system-first-1) * [See Complete Examples](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#see-complete-examples-1) * [Comparison Table](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#comparison-table) * [Still Unsure?](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#still-unsure) * [Next Steps](https://www.docs.intuition.systems/docs/getting-started/choose-your-path#next-steps) --- # Use Cases | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/getting-started/use-cases#__docusaurus_skipToContent_fallback) On this page ![Use Cases](https://www.docs.intuition.systems/assets/images/use-cases-22e40abd3f162d2c8abd59482ced9151.png) This article outlines use cases that take advantage of Intuition's unique knowledge graph and claim infrastructure. There are many more ways to use Intuition (and we would love to see what you come up with!), but here are some ideas to get you started. List Curation & Ranking Systems[​](https://www.docs.intuition.systems/docs/getting-started/use-cases#list-curation--ranking-systems "Direct link to List Curation & Ranking Systems") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Intuition can be used to create permissionless, community-curated ranked lists and registries. Anyone can create a list that groups together identities with a common claim about them (such as sharing a common tag, use case, purpose, etc). The list can then be curated by the original uploader and anyone else on the platform by adding additional identities or supporting/opposing each item with a financial stake to change it’s ranking. Users can filter and sort results from that list to find what matters to them. They can see the global list of everything added by anyone, just their own contributions, or items vetted by people they follow or trust. * Web3 Ecosystem: Curate trusted smart contracts, addresses, DeFi protocols, memecoins, NFT communities, and Web3 games based on reputation formed by on-chain metadata and user attestations * AI resources: Find and orchestrate trusted AI agents based on rich metadata and on-chain reputation, know the best models based on community feedback, and train AI with validated data sources and efficiently structured knowledge * Entertainment and media: Rank top and emerging music, movies, news sources, podcasts, sports teams, and more based on staked TRUST β€œsupport” positions and attestations from users you follow who share your taste * Data and Research: Find the most reliable data sources and reports based on peer review attestations and supporting positions from trusted colleagues * Consumer Products: Find and help rank top-rated consumer products, applications, and more * Product improvements: Have your community share their top feature requests and bugs to fix so you can prioritize which to tackle first * Travel: Uncover popular travel destinations through collective recommendations Verification and Fraud Protection[​](https://www.docs.intuition.systems/docs/getting-started/use-cases#verification-and-fraud-protection "Direct link to Verification and Fraud Protection") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Intuition helps trusted experts flag potentially dangerous websites, smart contracts, products, and more using structure claims to help everyday consumers stay safe. * Decentralized Information Validation: Engage a distributed community to verify and endorse the accuracy and authenticity of any data (e.g. smart contracts, information, packaged good supply chains, images, news, etc) * Fraud Detection and Alerts: Engage a worldwide team of incentivized auditors and moderators to report potentially dangerous or fraudulent activities, including crypto scams and malicious AI agents, and alert users when they are about to engage with a threat on the Web. * Curator & Auditor Recognition: Rank individualsβ€”whether they're auditing contracts or curating newsβ€”based on their proficiency, accuracy, and community credibility. This ensures a transparent trajectory in both contract auditing and news curation. Community-Owned Social Platforms[​](https://www.docs.intuition.systems/docs/getting-started/use-cases#community-owned-social-platforms "Direct link to Community-Owned Social Platforms") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Intuition creates on-chain decentralized identities for people and concepts, and allows any account to make verifiable claims about themselves and others. These primitives can form the basis of powerful social networks, driven by publicly visible and searchable graphs of verified connections and attestations. * Portable On-Chain Identity: Each person on the social network gets a self-sovereign identity, allowing them to own their verifiable data (claims by and about them) and make it portable to any other system, instead of being locked into keeping their data with a single platform. * Advanced Signaling and Verification: Transform traditional up-vote/down-vote and/or likes/dislikes into attestations, offering richer feedback and community insights for debates, conversations, and more. * Member Credibility: Promote trust between distributed community members by highlighting verifiable achievements and certifications, providing community reputation attestations and scores, and more. Incentivized Ratings and Referrals[​](https://www.docs.intuition.systems/docs/getting-started/use-cases#incentivized-ratings-and-referrals "Direct link to Incentivized Ratings and Referrals") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Using claims, Intuition can provide on-chain ratings and referrals for media, software, travel destinations, and more. Tastemakers can earn money by being early to place support or oppose financial positions to rate promising items they know their communities will find relevant, capturing fees when subsequent reviewers follow suite. * Attestation-Backed Ratings: Transition from simplistic star ratings to attestations, ensuring each review reflects a more comprehensive and verified experience * Transparent Reviewer Profiles: Utilize attestations to validate reviewer authenticity, experience, and expertise, giving more weight to trusted community members' feedback * Community-Driven Trustworthiness: Allow community members to vouch for or against reviews, enhancing the credibility of feedback and reducing the impact of fraudulent reviews. * Simple Referrals: Businesses can request referrals for their offerings from tastemakers, rewarding those tastemakers financially when others catch on, place their own support position, and make the offering go viral. * Review Aggregation & Insights: Harness the power of structured attestation data to generate summary insights from reviews, helping customers make informed decisions faster and helping businesses understand their strengths and areas of improvement. Q&A Platforms[​](https://www.docs.intuition.systems/docs/getting-started/use-cases#qa-platforms "Direct link to Q&A Platforms") -------------------------------------------------------------------------------------------------------------------------------- Question and answer platforms can yield results from structured knowledge sharing, support/oppose positions on claims, and in-depth identity and reputation for each participant. * Claiming Expertise: Users self-attest areas of knowledge, setting the stage for their contributions and peer review. * Community Attestations: Peer validation of answers allows for real-time quality & sentiment checks. * Verification: Answer validation is reinforced by the wisdom of the crowd, balancing answer credibility. * Reputation Building: Continuous positive attestations lead to a trustworthy reputation score, distinguishing genuine experts from the crowd. Reputation scores[​](https://www.docs.intuition.systems/docs/getting-started/use-cases#reputation-scores "Direct link to Reputation scores") --------------------------------------------------------------------------------------------------------------------------------------------- Intuition facilitates both financial and social signals about identities and claims to help people construct their own sense of reputation for things they encounter. From these primitives, third-party developers can construct reputation scores that make this contextual trust easy to interpret. * Trustworthiness Index: Evaluate entities based on their past track record and overarching conduct within different contexts. * Platform Credibility: Prioritize platforms known for specific things - such as undercollateralized lending - spotlighting those with a track record for precise credit evaluations. * Credit Scoring: Harness the transparency of blockchain for decentralized credit scores, presenting a holistic and immutable snapshot of an individual's or entity's lending history. * Lending Confidence: Empower lenders to confidently engage in undercollateralized loans, underpinned by clear and transparent Web3 credit reputation metrics. Oracles[​](https://www.docs.intuition.systems/docs/getting-started/use-cases#oracles "Direct link to Oracles") --------------------------------------------------------------------------------------------------------------- Decentralized applications can use on-chain claims made by trusted accounts managed by people or secure bots (or a combination of these entities and their collective opinions) in Intuition to trigger other on-chain events. * Consensus Result Extraction: Derive a data beacon or collective answer based on the weight and credibility of aggregated attestations, and use it to provide triggers for smart contract logic. * Censorship Resistance: Define trust so that any entity that fits the criteria can support dApps with reliable information to guide actions, free of censorship. Business, Employment & Consulting Platforms[​](https://www.docs.intuition.systems/docs/getting-started/use-cases#business-employment--consulting-platforms "Direct link to Business, Employment & Consulting Platforms") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Companies and consultancies, as well as the people who work for them, can use decentralized identifiers and claims made by those that have done business with them to determine whether their potential collaborators are trustworthy and fit for the task at hand. * Professional Credibility: Evaluate the authenticity of individuals, organizations, and services based on proven credentials. * Expertise Showcase: Verify the skills, experiences, and specializations of consultants to match with appropriate projects or clients. * Credential-Based Products: Incorporate platforms enhanced with reputation systems to assess credibility and reliability in the consulting domain. * Collaborative Experiences: Attest to the quality and outcome of consulting projects and share insights from fruitful partnerships. * Consultation Metrics: Utilize advanced tools and analytics to measure the impact and effectiveness of consulting services offered. * Transparent Feedback Loop: Allow clients to provide feedback on consulting services, ensuring continual improvement and trust-building in the community. Verified Voting[​](https://www.docs.intuition.systems/docs/getting-started/use-cases#verified-voting "Direct link to Verified Voting") --------------------------------------------------------------------------------------------------------------------------------------- Verified community members can create proposals as identities, then allow other community members to make claims about those proposals with evidence, support or oppose the proposals, or rank the proposals in a list to signal what the community should handle next. * Identity Assurance: Implement mechanisms to ensure that each vote is tied to a verified identity, eliminating duplicate votes and ensuring transparency. * Hackathon Judging: Accurately capture and reflect community votes to determine hackathon winners and associated projects, fostering a fair competitive environment. * DAO Proposal Voting: Promote permissionless executions grounded in community consensus and sentiment, enabling decentralized decisions with integrity. * Vote Attestation: Allow members to vouch for or challenge voting results, adding an additional layer of community-backed verification to the process. * Reputation-Based Voting Power: Adjust the weight of votes based on the track record and credibility of members, ensuring experienced voices have a significant say. Trading Knowledge[​](https://www.docs.intuition.systems/docs/getting-started/use-cases#trading-knowledge "Direct link to Trading Knowledge") --------------------------------------------------------------------------------------------------------------------------------------------- Intuition can help surface knowledgable market voices, and even gather intelligence on bullish opportunities through curated lists of assets with support or oppose positions to signal their attractiveness as an investment. * Evaluate and ascertain the credibility of traders or investors based on historical decisions, profitability, and ethical behavior. * Assess and rank trading/investment platforms using community-driven reviews, transaction success rates, and security protocols. * Determine the trustworthiness of diverse investment assets through community ratings, feedback, and historical performance benchmarks. Verifiable Predictions, Claims & Forecasting[​](https://www.docs.intuition.systems/docs/getting-started/use-cases#verifiable-predictions-claims--forecasting "Direct link to Verifiable Predictions, Claims & Forecasting") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Intuition can help people signal what they believe will happen next or be advantageous in the future, making early verifiable claims about events or opportunities and putting financial positions behind them to communicate their certainty. These claims and commitments can be used by others who need to decide what’s most likely to happen in the future, like a perpetual, non-resolving prediction market. * Know Your Futurist: Elevate trusted voices whose foresight consistently aligns with events and who posses domain knowledge, emphasizing their expertise within the community. * Provable Track Records: Assess past predictions in the form of claims from thought leaders in Intuition, including any financial stake they placed on the prediction, to determine their likelihood of correctly predicting future events. * [List Curation & Ranking Systems](https://www.docs.intuition.systems/docs/getting-started/use-cases#list-curation--ranking-systems) * [Verification and Fraud Protection](https://www.docs.intuition.systems/docs/getting-started/use-cases#verification-and-fraud-protection) * [Community-Owned Social Platforms](https://www.docs.intuition.systems/docs/getting-started/use-cases#community-owned-social-platforms) * [Incentivized Ratings and Referrals](https://www.docs.intuition.systems/docs/getting-started/use-cases#incentivized-ratings-and-referrals) * [Q&A Platforms](https://www.docs.intuition.systems/docs/getting-started/use-cases#qa-platforms) * [Reputation scores](https://www.docs.intuition.systems/docs/getting-started/use-cases#reputation-scores) * [Oracles](https://www.docs.intuition.systems/docs/getting-started/use-cases#oracles) * [Business, Employment & Consulting Platforms](https://www.docs.intuition.systems/docs/getting-started/use-cases#business-employment--consulting-platforms) * [Verified Voting](https://www.docs.intuition.systems/docs/getting-started/use-cases#verified-voting) * [Trading Knowledge](https://www.docs.intuition.systems/docs/getting-started/use-cases#trading-knowledge) * [Verifiable Predictions, Claims & Forecasting](https://www.docs.intuition.systems/docs/getting-started/use-cases#verifiable-predictions-claims--forecasting) --- # Architecture | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/getting-started/architecture#__docusaurus_skipToContent_fallback) On this page 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#architecture-overview "Direct link to Architecture Overview") ------------------------------------------------------------------------------------------------------------------------------------------------------------ ![Intuition System Overview](https://www.docs.intuition.systems/assets/images/intuition-intro-ae559cf3fa6aaa0fc6de36480fd714e3.png) 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)[​](https://www.docs.intuition.systems/docs/getting-started/architecture#layer-1-intuition-network-base-l3 "Direct link to Layer 1: Intuition Network (Base L3)") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Overview[​](https://www.docs.intuition.systems/docs/getting-started/architecture#overview "Direct link to 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?[​](https://www.docs.intuition.systems/docs/getting-started/architecture#why-layer-3 "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#technical-specifications "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#cross-chain-interoperability "Direct link to Cross-Chain Interoperability") The Network leverages **Caldera's Metalayer and Metatoken standards** for seamless cross-chain operations: // Example: Cross-chain atom referenceinterface 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)[​](https://www.docs.intuition.systems/docs/getting-started/architecture#layer-2-intuition-protocol-on-chain-logic "Direct link to Layer 2: Intuition Protocol (On-Chain Logic)") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Overview[​](https://www.docs.intuition.systems/docs/getting-started/architecture#overview-1 "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#core-contract-architecture "Direct link to Core Contract Architecture") #### **EthMultiVault**[​](https://www.docs.intuition.systems/docs/getting-started/architecture#ethmultivault "Direct link to 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**[​](https://www.docs.intuition.systems/docs/getting-started/architecture#atomwallet "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#economic-mechanics "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#state-management "Direct link to State Management") The Protocol maintains the complete on-chain state of the knowledge graph: interface OnChainState { atoms: Map; triples: Map; signals: Map>;} Layer 3: Rust Subnet (Off-Chain Infrastructure)[​](https://www.docs.intuition.systems/docs/getting-started/architecture#layer-3-rust-subnet-off-chain-infrastructure "Direct link to Layer 3: Rust Subnet (Off-Chain Infrastructure)") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Overview[​](https://www.docs.intuition.systems/docs/getting-started/architecture#overview-2 "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#core-components "Direct link to Core Components") #### **Event Processing Pipeline**[​](https://www.docs.intuition.systems/docs/getting-started/architecture#event-processing-pipeline "Direct link to event-processing-pipeline") Processes blockchain events through multiple stages: // Consumer modes for different processing stagespub 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**[​](https://www.docs.intuition.systems/docs/getting-started/architecture#data-resolver "Direct link to data-resolver") Resolves and enriches on-chain references with off-chain data: pub struct ResolverConsumerContext { pub client: Arc, pub image_guard_url: String, pub ipfs_resolver: IPFSResolver, pub mainnet_client: Arc, RootProvider>>>, pub pg_pool: PgPool, pub reqwest_client: reqwest::Client,}impl ResolverConsumerContext { pub async fn resolve_atom_data(&self, atom_uri: &str) -> Result { 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**[​](https://www.docs.intuition.systems/docs/getting-started/architecture#database-integration "Direct link to database-integration") Processes and stores structured data for API consumption: pub struct DecodedConsumerContext { pub base_client: Arc, RootProvider>>>, 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#data-pipeline "Direct link to Data Pipeline") The Subnet implements a sophisticated data pipeline: ### API Layer[​](https://www.docs.intuition.systems/docs/getting-started/architecture#api-layer "Direct link to API Layer") The Subnet exposes multiple API interfaces: **GraphQL API** query GetAtomWithTriples($termId: String!) { atom(term_id: $termId) { label image term { vaults(where: { curve_id: { _eq: "1" } }) { total_shares current_share_price } } as_subject_triples(limit: 10) { predicate { label } object { label } } }} **REST API** GET /api/v1/atoms/123GET /api/v1/triples?subject=123POST /api/v1/searchWebSocket /ws/subscriptions **Real-time Subscriptions** subscription WatchPositions($cursor: [positions_stream_cursor_input]!) { positions_stream(cursor: $cursor, batch_size: 10) { id shares vault { current_share_price } }} Data Flow Architecture[​](https://www.docs.intuition.systems/docs/getting-started/architecture#data-flow-architecture "Direct link to Data Flow Architecture") --------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Transaction Lifecycle[​](https://www.docs.intuition.systems/docs/getting-started/architecture#transaction-lifecycle "Direct link to Transaction Lifecycle") Understanding how data flows through the system is crucial for developers: 1. **User Action** β†’ SDK creates transaction 2. **Network Processing** β†’ L3 validates and includes in block 3. **Protocol Execution** β†’ Smart contracts update state 4. **Event Emission** β†’ Contracts emit events 5. **Subnet Indexing** β†’ Events processed and indexed 6. **Data Resolution** β†’ Off-chain data fetched and cached 7. **API Response** β†’ Unified data served to applications **Average End-to-End Latency: < 2 seconds** ### State Synchronization[​](https://www.docs.intuition.systems/docs/getting-started/architecture#state-synchronization "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#performance-optimizations "Direct link to Performance Optimizations") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Caching Strategy[​](https://www.docs.intuition.systems/docs/getting-started/architecture#caching-strategy "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#query-optimization "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#security-architecture "Direct link to Security Architecture") ------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Smart Contract Security[​](https://www.docs.intuition.systems/docs/getting-started/architecture#smart-contract-security "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#api-security "Direct link to API Security") * **JWT authentication** for protected endpoints * **Rate limiting** per API key * **DDoS protection** at edge layer * **Input validation** and sanitization ### Data Integrity[​](https://www.docs.intuition.systems/docs/getting-started/architecture#data-integrity "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#development-patterns "Direct link to Development Patterns") --------------------------------------------------------------------------------------------------------------------------------------------------------- ### Recommended Integration Flow[​](https://www.docs.intuition.systems/docs/getting-started/architecture#recommended-integration-flow "Direct link to Recommended Integration Flow") For developers building on Intuition, we recommend: 1. **Use the TypeScript SDK** for all contract interactions 2. **Query via GraphQL** for complex data needs 3. **Subscribe to WebSockets** for real-time updates 4. **Cache aggressively** at the application layer 5. **Batch operations** when possible to reduce costs ### Example: Creating and Querying Atoms[​](https://www.docs.intuition.systems/docs/getting-started/architecture#example-creating-and-querying-atoms "Direct link to Example: Creating and Querying Atoms") import { createMultivaultClient } from '@0xintuition/sdk'import { GraphQLClient } from 'graphql-request'import { API_URL_PROD } from '@0xintuition/graphql'// Using the SDK to create an atomconst multivault = createMultivaultClient(walletClient)const { atomId } = await multivault.createAtom({ uri: 'ipfs://QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco'})// Querying via GraphQLconst graphqlClient = new GraphQLClient(API_URL_PROD)const data = await graphqlClient.request(` query GetAtom($termId: String!) { atom(term_id: $termId) { label image creator { label } term { vaults(where: { curve_id: { _eq: "1" } }) { total_shares current_share_price position_count } } } }`, { termId: atomId }) Deployment Architecture[​](https://www.docs.intuition.systems/docs/getting-started/architecture#deployment-architecture "Direct link to Deployment Architecture") ------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Infrastructure Setup[​](https://www.docs.intuition.systems/docs/getting-started/architecture#infrastructure-setup "Direct link to 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[​](https://www.docs.intuition.systems/docs/getting-started/architecture#next-steps "Direct link to Next Steps") --------------------------------------------------------------------------------------------------------------------------- Ready to start building? Explore these resources: **[Smart Contracts](https://www.docs.intuition.systems/docs/intuition-smart-contracts) ** - Deep dive into Protocol contracts **[GraphQL API](https://www.docs.intuition.systems/docs/graphql-api/overview) ** - Learn the query interface **[SDK Guide](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) ** - Start building applications **[Deployments](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments) ** - Contract addresses * [Architecture Overview](https://www.docs.intuition.systems/docs/getting-started/architecture#architecture-overview) * [Layer 1: Intuition Network (Base L3)](https://www.docs.intuition.systems/docs/getting-started/architecture#layer-1-intuition-network-base-l3) * [Overview](https://www.docs.intuition.systems/docs/getting-started/architecture#overview) * [Why Layer 3?](https://www.docs.intuition.systems/docs/getting-started/architecture#why-layer-3) * [Technical Specifications](https://www.docs.intuition.systems/docs/getting-started/architecture#technical-specifications) * [Cross-Chain Interoperability](https://www.docs.intuition.systems/docs/getting-started/architecture#cross-chain-interoperability) * [Layer 2: Intuition Protocol (On-Chain Logic)](https://www.docs.intuition.systems/docs/getting-started/architecture#layer-2-intuition-protocol-on-chain-logic) * [Overview](https://www.docs.intuition.systems/docs/getting-started/architecture#overview-1) * [Core Contract Architecture](https://www.docs.intuition.systems/docs/getting-started/architecture#core-contract-architecture) * [Economic Mechanics](https://www.docs.intuition.systems/docs/getting-started/architecture#economic-mechanics) * [State Management](https://www.docs.intuition.systems/docs/getting-started/architecture#state-management) * [Layer 3: Rust Subnet (Off-Chain Infrastructure)](https://www.docs.intuition.systems/docs/getting-started/architecture#layer-3-rust-subnet-off-chain-infrastructure) * [Overview](https://www.docs.intuition.systems/docs/getting-started/architecture#overview-2) * [Core Components](https://www.docs.intuition.systems/docs/getting-started/architecture#core-components) * [Data Pipeline](https://www.docs.intuition.systems/docs/getting-started/architecture#data-pipeline) * [API Layer](https://www.docs.intuition.systems/docs/getting-started/architecture#api-layer) * [Data Flow Architecture](https://www.docs.intuition.systems/docs/getting-started/architecture#data-flow-architecture) * [Transaction Lifecycle](https://www.docs.intuition.systems/docs/getting-started/architecture#transaction-lifecycle) * [State Synchronization](https://www.docs.intuition.systems/docs/getting-started/architecture#state-synchronization) * [Performance Optimizations](https://www.docs.intuition.systems/docs/getting-started/architecture#performance-optimizations) * [Caching Strategy](https://www.docs.intuition.systems/docs/getting-started/architecture#caching-strategy) * [Query Optimization](https://www.docs.intuition.systems/docs/getting-started/architecture#query-optimization) * [Security Architecture](https://www.docs.intuition.systems/docs/getting-started/architecture#security-architecture) * [Smart Contract Security](https://www.docs.intuition.systems/docs/getting-started/architecture#smart-contract-security) * [API Security](https://www.docs.intuition.systems/docs/getting-started/architecture#api-security) * [Data Integrity](https://www.docs.intuition.systems/docs/getting-started/architecture#data-integrity) * [Development Patterns](https://www.docs.intuition.systems/docs/getting-started/architecture#development-patterns) * [Recommended Integration Flow](https://www.docs.intuition.systems/docs/getting-started/architecture#recommended-integration-flow) * [Example: Creating and Querying Atoms](https://www.docs.intuition.systems/docs/getting-started/architecture#example-creating-and-querying-atoms) * [Deployment Architecture](https://www.docs.intuition.systems/docs/getting-started/architecture#deployment-architecture) * [Infrastructure Setup](https://www.docs.intuition.systems/docs/getting-started/architecture#infrastructure-setup) * [Next Steps](https://www.docs.intuition.systems/docs/getting-started/architecture#next-steps) --- # Integrations | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/getting-started/integrations#__docusaurus_skipToContent_fallback) On this page Intuition integrates with various platforms and tools to extend its capabilities beyond the core knowledge graph protocol. AI Integration[​](https://www.docs.intuition.systems/docs/getting-started/integrations#ai-integration "Direct link to AI Integration") --------------------------------------------------------------------------------------------------------------------------------------- Use Intuition's knowledge graph with AI systems and agents to create persistent, verifiable memory and context. * **AI Overview** - AI capabilities and use cases (Coming Soon) * **MCP Server** - Model Context Protocol integration (Coming Soon) **Use cases:** * **AI agents with persistent memory** - Store and retrieve agent knowledge on-chain * **LLM context enhancement** - Provide verified context to language models * **Knowledge graph reasoning** - Enable semantic reasoning over structured data * **Semantic search for AI** - Query knowledge graphs for relevant information Coming Soon[​](https://www.docs.intuition.systems/docs/getting-started/integrations#coming-soon "Direct link to Coming Soon") ------------------------------------------------------------------------------------------------------------------------------ We're working on integrations with leading platforms across multiple categories: ### Social Platforms[​](https://www.docs.intuition.systems/docs/getting-started/integrations#social-platforms "Direct link to Social Platforms") Build social experiences with verifiable attestations: * **Farcaster Frames** - Embed Intuition attestations in Farcaster * **Lens Protocol** - Integrate with decentralized social graphs * **Twitter/X** - Share and verify claims on traditional social media ### Identity & Naming[​](https://www.docs.intuition.systems/docs/getting-started/integrations#identity--naming "Direct link to Identity & Naming") Connect identity systems to atoms: * **ENS Integration** - Link ENS names to Intuition atoms * **DID Standards** - Decentralized identifier support (W3C) * **Sismo Connect** - Privacy-preserving credential verification ### Storage & Data[​](https://www.docs.intuition.systems/docs/getting-started/integrations#storage--data "Direct link to Storage & Data") Extend atom data with decentralized storage: * **IPFS/Filecoin** - Store atom metadata and large files * **Arweave** - Permanent storage for important attestations * **Ceramic Network** - Composable data streams ### DeFi & Governance[​](https://www.docs.intuition.systems/docs/getting-started/integrations#defi--governance "Direct link to DeFi & Governance") Bring attestations to DeFi and DAOs: * **Snapshot** - On-chain voting with attestation-based eligibility * **Tally** - DAO governance integration * **Safe (Gnosis)** - Multi-sig attestations and approvals ### Developer Tools[​](https://www.docs.intuition.systems/docs/getting-started/integrations#developer-tools "Direct link to Developer Tools") Enhanced developer experience: * **Hardhat Plugin** - Deploy and test Intuition contracts * **Foundry Integration** - Testing framework support * **Ethers.js Plugin** - Simplified SDK integration ### Oracles & Data[​](https://www.docs.intuition.systems/docs/getting-started/integrations#oracles--data "Direct link to Oracles & Data") Connect off-chain data to the knowledge graph: * **Chainlink** - Oracle integration for external data * **The Graph** - Subgraph integration * **API3** - First-party oracle data Request an Integration[​](https://www.docs.intuition.systems/docs/getting-started/integrations#request-an-integration "Direct link to Request an Integration") --------------------------------------------------------------------------------------------------------------------------------------------------------------- Have an integration idea? We'd love to hear from you! **Ways to get involved:** * **[Community Forum](https://atlas.discourse.group/) ** - Propose and discuss integrations * **[Discord](https://discord.gg/RgBenkX4mx) ** - Chat with the team and community * **[GitHub](https://github.com/0xIntuition) ** - Submit integration proposals Building Your Own Integration[​](https://www.docs.intuition.systems/docs/getting-started/integrations#building-your-own-integration "Direct link to Building Your Own Integration") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Intuition's open architecture makes it easy to build custom integrations: 1. **[SDK Overview](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) ** - Start with the TypeScript SDK 2. **[Protocol Overview](https://www.docs.intuition.systems/docs/protocol/getting-started/overview) ** - Direct smart contract integration 3. **[GraphQL API](https://www.docs.intuition.systems/docs/graphql-api/overview) ** - Query the knowledge graph Examples[​](https://www.docs.intuition.systems/docs/getting-started/integrations#examples "Direct link to Examples") --------------------------------------------------------------------------------------------------------------------- See these integration patterns: * **[Atoms Guide](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide) ** - Working with atoms * **[Triples Guide](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide) ** - Creating attestations * **[Vaults Guide](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide) ** - Vault operations Stay Updated[​](https://www.docs.intuition.systems/docs/getting-started/integrations#stay-updated "Direct link to Stay Updated") --------------------------------------------------------------------------------------------------------------------------------- Follow our progress on upcoming integrations: * **[Twitter](https://twitter.com/0xIntuition) ** - Integration announcements * **[Blog](https://intuition.systems/blog) ** - Deep dives and tutorials * **[Newsletter](https://intuition.systems/newsletter) ** - Monthly updates * [AI Integration](https://www.docs.intuition.systems/docs/getting-started/integrations#ai-integration) * [Coming Soon](https://www.docs.intuition.systems/docs/getting-started/integrations#coming-soon) * [Social Platforms](https://www.docs.intuition.systems/docs/getting-started/integrations#social-platforms) * [Identity & Naming](https://www.docs.intuition.systems/docs/getting-started/integrations#identity--naming) * [Storage & Data](https://www.docs.intuition.systems/docs/getting-started/integrations#storage--data) * [DeFi & Governance](https://www.docs.intuition.systems/docs/getting-started/integrations#defi--governance) * [Developer Tools](https://www.docs.intuition.systems/docs/getting-started/integrations#developer-tools) * [Oracles & Data](https://www.docs.intuition.systems/docs/getting-started/integrations#oracles--data) * [Request an Integration](https://www.docs.intuition.systems/docs/getting-started/integrations#request-an-integration) * [Building Your Own Integration](https://www.docs.intuition.systems/docs/getting-started/integrations#building-your-own-integration) * [Examples](https://www.docs.intuition.systems/docs/getting-started/integrations#examples) * [Stay Updated](https://www.docs.intuition.systems/docs/getting-started/integrations#stay-updated) --- # Create Triple | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#__docusaurus_skipToContent_fallback) On this page Creating triples in the Intuition protocol involves establishing relationships between atoms through the EthMultiVault contract. This process creates both the triple structure and its associated vaults for positive and negative positions. Prerequisites[​](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#prerequisites "Direct link to Prerequisites") --------------------------------------------------------------------------------------------------------------------------------------- This implementation guide assumes that you've completed the setup steps in the [Overview](https://www.docs.intuition.systems/docs/interaction-guide/overview) guide and have existing atoms to work with. Implementation[​](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#implementation "Direct link to Implementation") ------------------------------------------------------------------------------------------------------------------------------------------ We recommend creating a `multivault.ts` that includes the following triple creation functionality: ### Core Triple Creation Pattern // Create triple with initial deposit const createTripleConfig = { ...multiVaultContract, functionName: 'createTriple', args: \[subjectId, predicateId, objectId, initialDeposit\], } // Execute transaction const hash = await walletClient.writeContract(createTripleConfig) Key Functions[​](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#key-functions "Direct link to Key Functions") --------------------------------------------------------------------------------------------------------------------------------------- We use this pattern to create triples and manage their lifecycle: #### createTriple Creates a new triple with optional initial deposit and returns triple/vault IDs. #### validateTripleComponents Validates that subject, predicate, and object atoms exist and are valid. #### estimateTripleCost Estimates the cost of creating a triple including fees and gas costs. Usage Example[​](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#usage-example "Direct link to Usage Example") --------------------------------------------------------------------------------------------------------------------------------------- ### Basic Triple Creation // Create a new triple const subjectId = 123n // Atom ID for "Alice" const predicateId = 456n // Atom ID for "knows" const objectId = 789n // Atom ID for "Bob" const initialDeposit = parseEther("0.1") const result = await createTriple( MULTIVAULT\_CONTRACT\_ADDRESS, subjectId, predicateId, objectId, initialDeposit, walletClient, publicClient ) Vault Management[​](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#vault-management "Direct link to Vault Management") ------------------------------------------------------------------------------------------------------------------------------------------------ Each triple creates two vaults: #### Positive Vault For users who believe the triple is true. Deposits here signal agreement. #### Negative Vault For users who believe the triple is false. Deposits here signal disagreement. Best Practices[​](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#best-practices "Direct link to Best Practices") ------------------------------------------------------------------------------------------------------------------------------------------ * Validate all atom IDs before creating triples * Check for existing triples to avoid duplicates * Estimate costs before executing transactions * Implement proper error handling and user feedback * Use multicall patterns for batch operations Next Steps[​](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------------ After creating triples, explore: * [Deposit & Return](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return) - Manage vault deposits and withdrawals * [Retrieve Vault Details](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details) - Get comprehensive vault information For a full reference implementation, see the [Intuition TypeScript SDK](https://github.com/0xIntuition/intuition-ts) . * [Prerequisites](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#prerequisites) * [Implementation](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#implementation) * [Key Functions](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#key-functions) * [Usage Example](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#usage-example) * [Vault Management](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#vault-management) * [Best Practices](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#best-practices) * [Next Steps](https://www.docs.intuition.systems/docs/interaction-guide/create-triple#next-steps) --- # Create Atom | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#__docusaurus_skipToContent_fallback) On this page Creating atoms in the Intuition protocol involves interacting with the EthMultiVault contract to establish new entities in the knowledge graph. This process includes creating the atom itself and managing its associated vault. Prerequisites[​](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#prerequisites "Direct link to Prerequisites") ------------------------------------------------------------------------------------------------------------------------------------- This implementation guide assumes that you've completed the setup steps in the [Overview](https://www.docs.intuition.systems/docs/interaction-guide/overview) guide. Steps for creating the `createMultivaultContract` and the `publicClient` referenced in this implementation example can be found in the overview. Implementation[​](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#implementation "Direct link to Implementation") ---------------------------------------------------------------------------------------------------------------------------------------- We recommend creating a `multivault.ts` that includes the following atom creation functionality: ### Core Atom Creation Pattern // Create atom with initial deposit const createAtomConfig = { ...multiVaultContract, functionName: 'createAtom', args: \[atomData, initialDeposit\], } // Execute transaction const hash = await walletClient.writeContract(createAtomConfig) // Wait for confirmation const receipt = await publicClient.waitForTransactionReceipt({ hash }) Complete Example[​](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#complete-example "Direct link to Complete Example") ---------------------------------------------------------------------------------------------------------------------------------------------- Here is a full example of the atom creation pattern used in the `createAtom` function: ### Full Implementation export async function createAtom( contract: string, atomData: string, initialDeposit: bigint, walletClient: WalletClient, publicClient: PublicClient ) { const multiVaultContract = createMultiVaultContract(contract) // Prepare atom creation transaction const createAtomConfig = { ...multiVaultContract, functionName: 'createAtom', args: \[atomData, initialDeposit\], } try { // Execute the transaction const hash = await walletClient.writeContract(createAtomConfig) // Wait for transaction confirmation const receipt = await publicClient.waitForTransactionReceipt({ hash }) // Parse events to get atom ID const atomCreatedEvent = receipt.logs.find( log => log.eventName === 'AtomCreated' ) if (!atomCreatedEvent) { throw new Error('Atom creation event not found') } const atomId = atomCreatedEvent.args.atomId const vaultId = atomCreatedEvent.args.vaultId return { success: true, atomId, vaultId, transactionHash: hash, receipt } } catch (error) { return { success: false, error: error.message } } } Key Functions[​](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#key-functions "Direct link to Key Functions") ------------------------------------------------------------------------------------------------------------------------------------- We use this pattern to create atoms and manage their lifecycle: #### createAtom Creates a new atom with optional initial deposit and returns atom/vault IDs. #### validateAtomData Validates atom data format and ensures it meets protocol requirements. #### estimateAtomCost Estimates the cost of creating an atom including fees and gas costs. Usage Example[​](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#usage-example "Direct link to Usage Example") ------------------------------------------------------------------------------------------------------------------------------------- ### Basic Atom Creation // Create a new atom const atomData = "did:ethr:mainnet:0x1234567890abcdef" const initialDeposit = parseEther("0.1") const result = await createAtom( MULTIVAULT\_CONTRACT\_ADDRESS, atomData, initialDeposit, walletClient, publicClient ) if (result.success) { console.log({ atomId: result.atomId, vaultId: result.vaultId, transactionHash: result.transactionHash }) } else { console.error('Atom creation failed:', result.error) } Error Handling[​](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#error-handling "Direct link to Error Handling") ---------------------------------------------------------------------------------------------------------------------------------------- ### Common Error Scenarios #### Insufficient Funds Ensure wallet has sufficient ETH for gas and deposit amount. #### Invalid Atom Data Validate atom data format before submission. #### Network Issues Handle RPC failures and network connectivity issues. Best Practices[​](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#best-practices "Direct link to Best Practices") ---------------------------------------------------------------------------------------------------------------------------------------- * Always validate atom data before submission * Estimate costs before executing transactions * Implement proper error handling and user feedback * Use multicall patterns for batch operations * Monitor transaction status and provide confirmation feedback Next Steps[​](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#next-steps "Direct link to Next Steps") ---------------------------------------------------------------------------------------------------------------------------- After creating atoms, explore: * [Create Triple](https://www.docs.intuition.systems/docs/interaction-guide/create-triple) - Learn how to create relationships between atoms * [Deposit & Return](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return) - Manage vault deposits and withdrawals * [Retrieve Vault Details](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details) - Get comprehensive vault information For a full reference implementation, see the [Intuition TypeScript SDK](https://github.com/0xIntuition/intuition-ts) . * [Prerequisites](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#prerequisites) * [Implementation](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#implementation) * [Complete Example](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#complete-example) * [Key Functions](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#key-functions) * [Usage Example](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#usage-example) * [Error Handling](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#error-handling) * [Best Practices](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#best-practices) * [Next Steps](https://www.docs.intuition.systems/docs/interaction-guide/create-atom#next-steps) --- # Retrieve Vault Details | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#__docusaurus_skipToContent_fallback) On this page The Intuition protocol's EthMultiVault contract manages complex state involving Atoms, Triples, and their associated vaults. When interacting with these primitives, we recommend retrieving the state data directly from the EthMultiVault contract. We utilize multicall operations that batch multiple read-only contract calls into a single request. This approach significantly reduces RPC calls and provides data you'll need for contract interactions, such as the `atomCost` that is referenced in the contract interaction guides. Implementation[​](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#implementation "Direct link to Implementation") --------------------------------------------------------------------------------------------------------------------------------------------------- This implementation guide assumes that you've completed the steps in the [Overview](https://www.docs.intuition.systems/docs/interaction-guide/overview) guide. Steps for creating the `createMultivaultContract` and the `publicClient` referenced in this implementation example can be found in the overview. We recommend creating a `multivault.ts` that includes the following: ### Core Multicall Configuration // createMultiVaultcontract const multiVaultContract = createMultiVaultContract(contract) // Core multicall configuration const coreContractConfigs = \[\ {\ ...multiVaultContract,\ functionName: 'vaults',\ args: \[vid\],\ },\ {\ ...multiVaultContract, \ functionName: 'currentSharePrice',\ args: \[vid\],\ },\ // ... additional calls\ \] // Execute multicall const resp: MulticallResponse\[\] = await publicClient.multicall({ contracts: coreContractConfigs, }) Complete Example[​](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#complete-example "Direct link to Complete Example") --------------------------------------------------------------------------------------------------------------------------------------------------------- Here is a full example of the multicall pattern used in the `getMultivaultConfig` function: ### Full Implementation export async function getMultiVaultConfig(contract: string) { const multiVaultContract = createMultiVaultContract(contract) const coreContractConfigs = \[\ {\ ...multiVaultContract,\ functionName: 'generalConfig',\ args: \[\],\ },\ {\ ...multiVaultContract,\ functionName: 'vaultFees',\ args: \[0\],\ },\ {\ ...multiVaultContract,\ functionName: 'atomConfig',\ args: \[\],\ },\ \] const resp: MulticallResponse\[\] = await publicClient.multicall({ contracts: coreContractConfigs, }) const admin = resp\[0\].result\[0\] as \`0x${string}\` const protocol\_vault = resp\[0\].result\[1\] as \`0x${string}\` const fee\_denominator = resp\[0\].result\[2\] as bigint const formatted\_fee\_denominator = formatUnits(fee\_denominator, 18) const min\_deposit = resp\[0\].result\[3\] as bigint const formatted\_min\_deposit = formatUnits(min\_deposit, 18) const min\_share = resp\[0\].result\[4\] as bigint const formatted\_min\_share = formatUnits(min\_share, 18) const entry\_fee = resp\[1\].result\[0\] as bigint const formatted\_entry\_fee = formatUnits(entry\_fee, 18) const exit\_fee = resp\[1\].result\[1\] as bigint const formatted\_exit\_fee = formatUnits(exit\_fee, 18) const protocol\_fee = resp\[1\].result\[2\] as bigint const formatted\_protocol\_fee = formatUnits(protocol\_fee, 18) const atom\_cost = resp\[2\].result\[0\] as bigint const formatted\_atom\_cost = formatUnits(atom\_cost, 18) const atom\_creation\_fee = resp\[2\].result\[1\] as bigint const formatted\_atom\_creation\_fee = formatUnits(atom\_creation\_fee, 18) return { admin, protocol\_vault, fee\_denominator: fee\_denominator.toString(), formatted\_fee\_denominator, min\_deposit: min\_deposit.toString(), formatted\_min\_deposit, min\_share: min\_share.toString(), formatted\_min\_share, entry\_fee: entry\_fee.toString(), formatted\_entry\_fee, exit\_fee: exit\_fee.toString(), formatted\_exit\_fee, protocol\_fee: protocol\_fee.toString(), formatted\_protocol\_fee, atom\_cost: atom\_cost.toString(), formatted\_atom\_cost, atom\_creation\_fee: atom\_creation\_fee.toString(), formatted\_atom\_creation\_fee, } as MultivaultConfig } Key Functions[​](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#key-functions "Direct link to Key Functions") ------------------------------------------------------------------------------------------------------------------------------------------------ We use this multicall pattern to retrieve configuration that we're able to use throughout the app: #### getVaultDetails Retrieves comprehensive vault information including total assets, conviction, current share price, fee configurations, user-specific positions, and counter-vault details. #### getMultiVaultConfig Retrieves global protocol configuration including fee structures, minimum deposits, and protocol admin addresses. Usage Example[​](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#usage-example "Direct link to Usage Example") ------------------------------------------------------------------------------------------------------------------------------------------------ The full `getVaultDetails` function follows the same pattern used in the `getMultiVaultConfig` example but is too large to include in the docs. We recommend looking at the [Intuition TypeScript SDK](https://github.com/0xIntuition/intuition-ts/blob/main/apps/portal/app/.server/multivault.ts) for a full reference implementation. ### Basic Usage // Fetch vault and countervault details with user positions: const vaultDetails = await getVaultDetails( MULTIVAULT\_CONTRACT\_ADDRESS, vaultId, userWallet, counterVaultId ) // Access formatted values such as atom\_cost and triple\_cost console.log({ atomCost: vaultDetails.atom\_cost, tripleCost: vaultDetails.triple\_cost, }) Reference Implementation[​](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#reference-implementation "Direct link to Reference Implementation") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- For a full example of how we implement all of our EthMultiVault multicalls, you can look at a reference implementation in our monorepo: * [https://github.com/0xIntuition/intuition-ts/blob/main/apps/portal/app/.server/multivault.ts](https://github.com/0xIntuition/intuition-ts/blob/main/apps/portal/app/.server/multivault.ts) Best Practices[​](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#best-practices "Direct link to Best Practices") --------------------------------------------------------------------------------------------------------------------------------------------------- * Use multicall patterns to reduce RPC calls and improve performance * Always handle errors gracefully when retrieving vault data * Cache vault details when possible to reduce redundant calls * Validate returned data before using it in your application * Monitor vault state changes and update your UI accordingly Next Steps[​](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#next-steps "Direct link to Next Steps") --------------------------------------------------------------------------------------------------------------------------------------- After retrieving vault details, explore: * [Create Atom](https://www.docs.intuition.systems/docs/interaction-guide/create-atom) - Create atoms and manage their vaults * [Create Triple](https://www.docs.intuition.systems/docs/interaction-guide/create-triple) - Create triples with associated vaults * [Deposit & Return](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return) - Manage vault deposits and withdrawals For a full reference implementation, see the [Intuition TypeScript SDK](https://github.com/0xIntuition/intuition-ts) . * [Implementation](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#implementation) * [Complete Example](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#complete-example) * [Key Functions](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#key-functions) * [Usage Example](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#usage-example) * [Reference Implementation](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#reference-implementation) * [Best Practices](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#best-practices) * [Next Steps](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details#next-steps) --- # Deposit & Return | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#__docusaurus_skipToContent_fallback) On this page Managing deposits and withdrawals from vaults in the Intuition protocol involves interacting with the EthMultiVault contract to stake and unstake tokens. This process includes proper fee handling and share price calculations. Prerequisites[​](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#prerequisites "Direct link to Prerequisites") ---------------------------------------------------------------------------------------------------------------------------------------- This implementation guide assumes that you've completed the setup steps in the [Overview](https://www.docs.intuition.systems/docs/interaction-guide/overview) guide. Steps for creating the `createMultivaultContract` and the `publicClient` referenced in this implementation example can be found in the overview. Implementation[​](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#implementation "Direct link to Implementation") ------------------------------------------------------------------------------------------------------------------------------------------- We recommend creating a `multivault.ts` that includes the following deposit and withdrawal functionality: ### Core Deposit Pattern // Deposit into vault const depositConfig = { ...multiVaultContract, functionName: 'deposit', args: \[vaultId, amount\], } // Execute transaction const hash = await walletClient.writeContract(depositConfig) Key Functions[​](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#key-functions "Direct link to Key Functions") ---------------------------------------------------------------------------------------------------------------------------------------- We use these patterns to manage vault deposits and withdrawals: #### deposit Deposit tokens into a vault and receive shares based on current share price. #### withdraw Withdraw tokens from a vault by burning shares at current share price. #### estimateDeposit Estimate the number of shares received for a given deposit amount. Usage Examples[​](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#usage-examples "Direct link to Usage Examples") ------------------------------------------------------------------------------------------------------------------------------------------- ### Basic Deposit // Deposit into vault const vaultId = 123n const amount = parseEther("0.1") const result = await deposit( MULTIVAULT\_CONTRACT\_ADDRESS, vaultId, amount, walletClient, publicClient ) ### Basic Withdrawal // Withdraw from vault const vaultId = 123n const shares = parseEther("10") const result = await withdraw( MULTIVAULT\_CONTRACT\_ADDRESS, vaultId, shares, walletClient, publicClient ) Fee Structure[​](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#fee-structure "Direct link to Fee Structure") ---------------------------------------------------------------------------------------------------------------------------------------- ### Understanding Fees #### Entry Fee Fee charged when depositing into a vault, calculated as a percentage of deposit. #### Exit Fee Fee charged when withdrawing from a vault, calculated as a percentage of withdrawal. #### Protocol Fee Fee collected by the protocol for maintaining the system and infrastructure. Share Price Dynamics[​](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#share-price-dynamics "Direct link to Share Price Dynamics") ------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Bonding Curve Mechanics #### Price Discovery Share price increases as more tokens are deposited into the vault. #### Early Adopter Advantage Early depositors receive more shares for the same token amount. #### Liquidity Provision Vaults provide continuous liquidity for depositors and withdrawers. Best Practices[​](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#best-practices "Direct link to Best Practices") ------------------------------------------------------------------------------------------------------------------------------------------- * Always estimate fees before executing transactions * Consider share price impact when depositing large amounts * Implement proper error handling for failed transactions * Monitor vault state and share prices before transactions * Use multicall patterns for batch operations * Provide clear feedback to users about fee structures Next Steps[​](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------------- After managing deposits and withdrawals, explore: * [Retrieve Vault Details](https://www.docs.intuition.systems/docs/interaction-guide/retrieve-vault-details) - Get comprehensive vault information * [Create Atom](https://www.docs.intuition.systems/docs/interaction-guide/create-atom) - Create atoms to deposit into * [Create Triple](https://www.docs.intuition.systems/docs/interaction-guide/create-triple) - Create triples with associated vaults For a full reference implementation, see the [Intuition TypeScript SDK](https://github.com/0xIntuition/intuition-ts) . * [Prerequisites](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#prerequisites) * [Implementation](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#implementation) * [Key Functions](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#key-functions) * [Usage Examples](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#usage-examples) * [Fee Structure](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#fee-structure) * [Share Price Dynamics](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#share-price-dynamics) * [Best Practices](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#best-practices) * [Next Steps](https://www.docs.intuition.systems/docs/interaction-guide/deposit-return#next-steps) --- # Custom Queries | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#__docusaurus_skipToContent_fallback) On this page This page provides practical examples of common GraphQL queries for the Intuition API. Best Practices[​](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#best-practices "Direct link to Best Practices") ------------------------------------------------------------------------------------------------------------------------------------- 1. **Use Fragments**: Create reusable fragments for common fields 2. **Optimize Queries**: Only request the fields you need 3. **Handle Errors**: Always implement proper error handling 4. **Cache Strategically**: Use React Query's caching capabilities 5. **Type Safety**: Leverage generated types for better development experience Basic Queries[​](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#basic-queries "Direct link to Basic Queries") ---------------------------------------------------------------------------------------------------------------------------------- ### Fetching a Single Atom[​](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#fetching-a-single-atom "Direct link to Fetching a Single Atom") Use the primary key lookup for fetching a single atom by its `term_id`: query GetAtom($term_id: String!) { atom(term_id: $term_id) { term_id label image type created_at creator { id label } value { thing { name description url } person { name description url } organization { name description url } } }} ### Fetching Triples[​](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#fetching-triples "Direct link to Fetching Triples") Query triples with Hasura's `where` filtering: query GetTriples($subjectId: String, $predicateLabel: String, $limit: Int = 20) { triples( where: { subject_id: { _eq: $subjectId } predicate: { label: { _ilike: $predicateLabel } } } order_by: { created_at: desc } limit: $limit ) { term_id subject { term_id label } predicate { term_id label } object { term_id label } created_at }} ### Fetching Signals[​](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#fetching-signals "Direct link to Fetching Signals") Query signal events for a specific atom or account: query GetSignals($accountId: String!, $limit: Int = 20) { signals( where: { account_id: { _eq: $accountId } } order_by: { created_at: desc } limit: $limit ) { id delta atom_id triple_id created_at account { label } }} Advanced Queries[​](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#advanced-queries "Direct link to Advanced Queries") ------------------------------------------------------------------------------------------------------------------------------------------- ### Search[​](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#search "Direct link to Search") Use the `search_term` database function for text search: query SearchAtoms($query: String!, $limit: Int = 20) { search_term(args: { query: $query }, limit: $limit) { id type atom { label image creator { id label } } }} ### Pagination[​](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#pagination "Direct link to Pagination") Hasura uses offset-based pagination with `limit` and `offset`: query GetAtomsPaginated($limit: Int!, $offset: Int!) { atoms_aggregate { aggregate { count } } atoms( limit: $limit offset: $offset order_by: { created_at: desc } ) { term_id label image type created_at }} React Query Hooks[​](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#react-query-hooks "Direct link to React Query Hooks") ---------------------------------------------------------------------------------------------------------------------------------------------- ### Using Generated Hooks[​](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#using-generated-hooks "Direct link to Using Generated Hooks") import { useGetAtomQuery } from '@0xintuition/graphql'function AtomViewer({ atomId }: { atomId: string }) { const { data, isLoading, error } = useGetAtomQuery({ variables: { termId: atomId } }) if (isLoading) return
Loading...
if (error) return
Error: {error.message}
return (

{data?.atom?.label}

{data?.atom?.label}

Type: {data?.atom?.type}

)} ### Custom Hooks[​](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#custom-hooks "Direct link to Custom Hooks") import { useQuery } from '@tanstack/react-query'import { GraphQLClient } from 'graphql-request'import { API_URL_PROD } from '@0xintuition/graphql'const client = new GraphQLClient(API_URL_PROD)function useCustomAtomQuery(termId: string) { return useQuery({ queryKey: ['atom', termId], queryFn: () => client.request(` query GetAtom($term_id: String!) { atom(term_id: $term_id) { term_id label image type } } `, { term_id: termId }), enabled: !!termId })} * [Best Practices](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#best-practices) * [Basic Queries](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#basic-queries) * [Fetching a Single Atom](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#fetching-a-single-atom) * [Fetching Triples](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#fetching-triples) * [Fetching Signals](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#fetching-signals) * [Advanced Queries](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#advanced-queries) * [Search](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#search) * [Pagination](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#pagination) * [React Query Hooks](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#react-query-hooks) * [Using Generated Hooks](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#using-generated-hooks) * [Custom Hooks](https://www.docs.intuition.systems/docs/graphql-api/custom-queries#custom-hooks) --- # Intuition Mainnet | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-network/mainnet#__docusaurus_skipToContent_fallback) On this page Welcome to the Intuition Mainnet - your development and testing environment for building on the Intuition Network. Intuition leverages **Caldera's Metalayer** infrastructure to provide seamless cross-chain bridging capabilities. As part of Caldera's **Internet of Chains**, we benefit from a robust, interconnected ecosystem of blockchain networks. Network Configuration[​](https://www.docs.intuition.systems/docs/intuition-network/mainnet#network-configuration "Direct link to Network Configuration") --------------------------------------------------------------------------------------------------------------------------------------------------------- | Parameter | Value | | --- | --- | | **Network Name** | Intuition Mainnet | | **Chain ID** | 1155 | | **Native Token** | $TRUST | | **RPC URL** | `https://rpc.intuition.systems/http` | | **WebSocket URL** | `wss://rpc.intuition.systems/ws` | | **Block Explorer** | [https://explorer.intuition.systems](https://explorer.intuition.systems/) | Bridging & Hub[​](https://www.docs.intuition.systems/docs/intuition-network/mainnet#bridging--hub "Direct link to Bridging & Hub") ----------------------------------------------------------------------------------------------------------------------------------- Vist the Intuition Testnet Hub at: * [https://hub.intuition.systems](https://hub.intuition.systems/) * [https://intuition.hub.caldera.xyz/](https://intuition.hub.caldera.xyz/) The hub creates essential information about the network plus actions like easily adding network details to a wallet and bridging assets between Intuition Mainnet and Base Mainnet. **You can bridge assets between Intuition Mainnet and Base Mainnet using the hub.** Explorer[​](https://www.docs.intuition.systems/docs/intuition-network/mainnet#explorer "Direct link to Explorer") ------------------------------------------------------------------------------------------------------------------ Access the Intuition Testnet Explorer directly at: * [https://explorer.intuition.systems](https://explorer.intuition.systems/) The Intuition Explorer is a comprehensive blockchain explorer built on Blockscout, providing detailed insights into all network activity on the Intuition testnet. Monitor transactions, explore blocks, and analyze network performance with this powerful exploration tool. RPC[​](https://www.docs.intuition.systems/docs/intuition-network/mainnet#rpc "Direct link to RPC") --------------------------------------------------------------------------------------------------- Access the Intuition Testnet RPC directly at: * [https://rpc.intuition.systems/http](https://rpc.intuition.systems/http) The Intuition RPC accepts JSON-RPC requests and returns JSON-RPC responses. It provides programmatic access to the Intuition network. * [Network Configuration](https://www.docs.intuition.systems/docs/intuition-network/mainnet#network-configuration) * [Bridging & Hub](https://www.docs.intuition.systems/docs/intuition-network/mainnet#bridging--hub) * [Explorer](https://www.docs.intuition.systems/docs/intuition-network/mainnet#explorer) * [RPC](https://www.docs.intuition.systems/docs/intuition-network/mainnet#rpc) --- # System Architecture | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#__docusaurus_skipToContent_fallback) On this page This guide provides an overview of Intuition's technical architecture and how the various components work together. High-Level Architecture[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#high-level-architecture "Direct link to High-Level Architecture") --------------------------------------------------------------------------------------------------------------------------------------------------------------------- Intuition is built as a multi-layer system: ### Layer 1: On-Chain Primitives[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#layer-1-on-chain-primitives "Direct link to Layer 1: On-Chain Primitives") * **Smart Contracts**: Core protocol logic * **MultiVault System**: Atom and Triple vaults * **Bonding Curves**: Price discovery mechanisms * **ERC-1155 Tokens**: Atom and Triple representations ### Layer 2: Off-Chain Data[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#layer-2-off-chain-data "Direct link to Layer 2: Off-Chain Data") * **IPFS/Arweave**: Decentralized storage for Atom data * **DIDs**: Decentralized identifier resolution * **Metadata**: Rich context and descriptions ### Layer 3: Indexing & Query[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#layer-3-indexing--query "Direct link to Layer 3: Indexing & Query") * **GraphQL API**: Efficient data querying * **PostgreSQL**: Indexed on-chain data * **Real-time Subscriptions**: Live updates * **Aggregation Tables**: Pre-computed statistics ### Layer 4: Application Layer[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#layer-4-application-layer "Direct link to Layer 4: Application Layer") * **SDK**: Developer-friendly abstractions * **React Hooks**: Frontend integrations * **UI Components**: Reusable interface elements Core Components[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#core-components "Direct link to Core Components") --------------------------------------------------------------------------------------------------------------------------------------------- ### MultiVault Contract[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#multivault-contract "Direct link to MultiVault Contract") Central smart contract managing: * Atom creation and storage * Triple creation and validation * Vault deposits and redemptions * Fee distribution * Share calculations Key functions: createAtom(bytes atomData)createTriple(uint256 subject, uint256 predicate, uint256 object)deposit(uint256 vaultId, uint256 amount)redeem(uint256 vaultId, uint256 shares) ### Trust Bonding Contract[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#trust-bonding-contract "Direct link to Trust Bonding Contract") Manages staking and rewards: * Epoch-based rewards * Lock mechanisms * Utilization tracking * APY calculations ### Atom Warden[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#atom-warden "Direct link to Atom Warden") Controls Atom wallets: * Grants agency to Atoms * Manages Atom-owned assets * Executes transactions on behalf of Atoms Data Flow[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#data-flow "Direct link to Data Flow") --------------------------------------------------------------------------------------------------------------------------- ### Creating an Atom[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#creating-an-atom "Direct link to Creating an Atom") 1. User submits atomData 2. Data hashed to generate unique ID 3. Check for existing Atom with same ID 4. If new, mint ERC-1155 token 5. Create associated vault 6. Emit AtomCreated event 7. Optional: Initial deposit to signal ### Creating a Triple[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#creating-a-triple "Direct link to Creating a Triple") 1. Verify subject, predicate, object Atoms exist 2. Generate Triple ID from component hashes 3. Create Triple vault (for) 4. Create counter-triple vault (against) 5. Emit TripleCreated event 6. Optional: Initial deposit to signal ### Staking/Signaling[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#stakingsignaling "Direct link to Staking/Signaling") 1. User deposits tokens into vault 2. Bonding curve calculates shares to mint 3. Distribute fees to existing shareholders 4. Mint shares to depositor 5. Update vault TVL 6. Emit Deposited event 7. Index in GraphQL database Event System[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#event-system "Direct link to Event System") ------------------------------------------------------------------------------------------------------------------------------------ ### Key Events[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#key-events "Direct link to Key Events") event AtomCreated(uint256 indexed vaultId, bytes atomData)event TripleCreated(uint256 indexed vaultId, uint256 subject, uint256 predicate, uint256 object)event Deposited(uint256 indexed vaultId, address indexed depositor, uint256 amount, uint256 shares)event Redeemed(uint256 indexed vaultId, address indexed redeemer, uint256 shares, uint256 amount)event FeeTransfer(uint256 indexed vaultId, address indexed recipient, uint256 amount) ### Event Processing[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#event-processing "Direct link to Event Processing") 1. Smart contract emits event 2. Indexer catches event 3. Parse event data 4. Update PostgreSQL tables 5. Trigger GraphQL subscriptions 6. Notify connected clients Security Model[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#security-model "Direct link to Security Model") ------------------------------------------------------------------------------------------------------------------------------------------ ### Access Control[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#access-control "Direct link to Access Control") * Permissionless Atom/Triple creation * Wallet-controlled deposits/redemptions * Protocol-controlled fee distribution * Governance-controlled parameters ### Economic Security[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#economic-security "Direct link to Economic Security") * Bonding curves prevent manipulation * Fees deter spam and abuse * Staking aligns incentives * Slashing for malicious behavior (potential) ### Data Integrity[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#data-integrity "Direct link to Data Integrity") * Deterministic Atom IDs prevent duplicates * IPFS ensures data availability * On-chain proofs of existence * DIDs provide verifiable credentials Scalability Considerations[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#scalability-considerations "Direct link to Scalability Considerations") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### On-Chain Efficiency[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#on-chain-efficiency "Direct link to On-Chain Efficiency") * Batch operations where possible * Optimized storage patterns * Event-based indexing * Layer 2 compatibility planned ### Off-Chain Scaling[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#off-chain-scaling "Direct link to Off-Chain Scaling") * GraphQL for efficient queries * Aggregation tables for statistics * Caching strategies * CDN for static content ### Future Optimizations[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#future-optimizations "Direct link to Future Optimizations") * ZK-proofs for privacy * Optimistic rollups for throughput * Sharding for data distribution * Cross-chain bridges * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------------ * [Protocol Overview](https://www.docs.intuition.systems/docs/protocol/getting-started/overview) - Detailed contract documentation * [SDK Overview](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) - Using the SDK * [GraphQL API](https://www.docs.intuition.systems/docs/graphql-api/overview) - Querying the system * [High-Level Architecture](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#high-level-architecture) * [Layer 1: On-Chain Primitives](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#layer-1-on-chain-primitives) * [Layer 2: Off-Chain Data](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#layer-2-off-chain-data) * [Layer 3: Indexing & Query](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#layer-3-indexing--query) * [Layer 4: Application Layer](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#layer-4-application-layer) * [Core Components](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#core-components) * [MultiVault Contract](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#multivault-contract) * [Trust Bonding Contract](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#trust-bonding-contract) * [Atom Warden](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#atom-warden) * [Data Flow](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#data-flow) * [Creating an Atom](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#creating-an-atom) * [Creating a Triple](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#creating-a-triple) * [Staking/Signaling](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#stakingsignaling) * [Event System](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#event-system) * [Key Events](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#key-events) * [Event Processing](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#event-processing) * [Security Model](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#security-model) * [Access Control](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#access-control) * [Economic Security](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#economic-security) * [Data Integrity](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#data-integrity) * [Scalability Considerations](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#scalability-considerations) * [On-Chain Efficiency](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#on-chain-efficiency) * [Off-Chain Scaling](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#off-chain-scaling) * [Future Optimizations](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#future-optimizations) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/architecture#next-steps) --- # Overview | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/interaction-guide/overview#__docusaurus_skipToContent_fallback) On this page The Intuition protocol's smart contracts manage complex state involving Atoms, Triples, and their associated vaults. When interacting with these primitives, we recommend retrieving state data directly from the EthMultiVault contract. Key Concepts[​](https://www.docs.intuition.systems/docs/interaction-guide/overview#key-concepts "Direct link to Key Concepts") ------------------------------------------------------------------------------------------------------------------------------- #### Multicall Operations Batch multiple read-only contract calls into a single request to reduce RPC calls and improve performance. #### State Management Retrieve comprehensive vault information including assets, share prices, and user positions. #### Configuration Access Access global protocol configuration including fee structures and minimum deposits. Implementation Approach[​](https://www.docs.intuition.systems/docs/interaction-guide/overview#implementation-approach "Direct link to Implementation Approach") ---------------------------------------------------------------------------------------------------------------------------------------------------------------- We utilize multicall operations that batch multiple read-only contract calls into a single request. This approach significantly reduces RPC calls and provides data you'll need for contract interactions, such as the `atomCost` that is referenced in the contract interaction guides. ### Core Multicall Pattern // Core multicall configuration const coreContractConfigs = \[\ {\ ...multiVaultContract,\ functionName: 'vaults',\ args: \[vid\],\ },\ {\ ...multiVaultContract, \ functionName: 'currentSharePrice',\ args: \[vid\],\ },\ // ... additional calls\ \] // Execute multicall const resp: MulticallResponse\[\] = await publicClient.multicall({ contracts: coreContractConfigs, }) Available Interactions[​](https://www.docs.intuition.systems/docs/interaction-guide/overview#available-interactions "Direct link to Available Interactions") ------------------------------------------------------------------------------------------------------------------------------------------------------------- #### Create Atom Learn how to create new atoms and manage their associated vaults. #### Create Triple Understand how to create triples and manage their relationships. #### Deposit & Return Manage deposits and withdrawals from vaults with proper fee handling. #### Retrieve Vault Details Get comprehensive vault information including assets, prices, and positions. Prerequisites[​](https://www.docs.intuition.systems/docs/interaction-guide/overview#prerequisites "Direct link to Prerequisites") ---------------------------------------------------------------------------------------------------------------------------------- Before diving into contract interactions, ensure you have: * Basic understanding of Intuition's core concepts (Atoms, Triples, Vaults) * Familiarity with Ethereum development and smart contract interactions * Knowledge of multicall patterns and batch operations * Access to the Intuition SDK and development environment Next Steps[​](https://www.docs.intuition.systems/docs/interaction-guide/overview#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------- Explore the specific interaction guides to learn how to: * Create and manage atoms and triples * Handle deposits and withdrawals * Retrieve vault state information * Implement proper error handling and validation Each guide provides detailed implementation examples and best practices for working with Intuition's smart contracts. * [Key Concepts](https://www.docs.intuition.systems/docs/interaction-guide/overview#key-concepts) * [Implementation Approach](https://www.docs.intuition.systems/docs/interaction-guide/overview#implementation-approach) * [Available Interactions](https://www.docs.intuition.systems/docs/interaction-guide/overview#available-interactions) * [Prerequisites](https://www.docs.intuition.systems/docs/interaction-guide/overview#prerequisites) * [Next Steps](https://www.docs.intuition.systems/docs/interaction-guide/overview#next-steps) --- # Local Development Setup | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-node/local-setup#__docusaurus_skipToContent_fallback) On this page Set up your local environment for developing and testing Intuition node services. ### Using Local Ethereum Node[​](https://www.docs.intuition.systems/docs/intuition-node/local-setup#using-local-ethereum-node "Direct link to Using Local Ethereum Node") Add to your `.env` file: INTUITION_CONTRACT_ADDRESS=0xB92EA1B47E4ABD0a520E9138BB59dBd1bC6C475BSTART_BLOCK=0 Create local test data: cd integration-testsnpm installnpm run create-predicates ### Manual Service Management[​](https://www.docs.intuition.systems/docs/intuition-node/local-setup#manual-service-management "Direct link to Manual Service Management") # Start all servicesdocker-compose -f docker/docker-compose-apps.yml up -d# Stop all services./scripts/stop.sh# View logsdocker-compose -f docker/docker-compose-apps.yml logs -f * [Using Local Ethereum Node](https://www.docs.intuition.systems/docs/intuition-node/local-setup#using-local-ethereum-node) * [Manual Service Management](https://www.docs.intuition.systems/docs/intuition-node/local-setup#manual-service-management) --- # powered-by-caldera | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#__docusaurus_skipToContent_fallback) On this page ### Intuition is Powered by Caldera's Metalayer[​](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#intuition-is-powered-by-calderas-metalayer "Direct link to Intuition is Powered by Caldera's Metalayer") The Intuition Network is powered by Caldera's Metalayer, a cross-chain infrastructure that enables seamless asset transfers between different blockchain networks. ### What is Caldera's Metalayer?[​](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#what-is-calderas-metalayer "Direct link to What is Caldera's Metalayer?") The Metalayer is Caldera's innovative cross-chain infrastructure that enables: * **Unified Bridging**: A single interface for transferring assets across multiple chains in the Caldera ecosystem * **Shared Security**: Leveraging collective security models across interconnected chains * **Interoperability**: Native communication between different blockchain networks without complex integrations * **Simplified UX**: One-click bridging experiences that abstract away technical complexity ### The Internet of Chains[​](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#the-internet-of-chains "Direct link to The Internet of Chains") Caldera's Internet of Chains represents a new paradigm in blockchain connectivity: * **Network Effects**: Each new chain added to the ecosystem increases the value for all participants * **Composability**: Applications can seamlessly interact across different chains without friction * **Shared Liquidity**: Assets can flow freely between chains, improving capital efficiency * **Unified Standards**: Common protocols and standards across all connected chains ### Benefits for Intuition Users[​](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#benefits-for-intuition-users "Direct link to Benefits for Intuition Users") By being part of this ecosystem, Intuition users gain: * **Access to Multiple Networks**: Bridge assets from any chain in the Caldera network * **Lower Costs**: Shared infrastructure reduces operational costs * **Enhanced Security**: Battle-tested bridge infrastructure used by multiple production networks * **Future Connectivity**: Automatic access to new chains as they join the ecosystem ### How It Works[​](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#how-it-works "Direct link to How It Works") The Metalayer uses advanced cryptographic techniques and consensus mechanisms to ensure: 1. **Asset Security**: Multi-signature validation and fraud proofs protect bridged assets 2. **Fast Finality**: Optimized confirmation times for cross-chain transfers 3. **Reliability**: Redundant infrastructure ensures high availability 4. **Transparency**: All bridge operations are verifiable on-chain ### Learn More[​](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#learn-more "Direct link to Learn More") * [Caldera Documentation](https://docs.caldera.xyz/) * [Internet of Chains Overview](https://caldera.xyz/internet-of-chains) * [Bridge Technical Specifications](https://docs.caldera.xyz/metalayer) Support[​](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#support "Direct link to Support") -------------------------------------------------------------------------------------------------------------------------- Need help? Join our [Discord](https://discord.gg/RgBenkX4mx) community for support. * [Intuition is Powered by Caldera's Metalayer](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#intuition-is-powered-by-calderas-metalayer) * [What is Caldera's Metalayer?](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#what-is-calderas-metalayer) * [The Internet of Chains](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#the-internet-of-chains) * [Benefits for Intuition Users](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#benefits-for-intuition-users) * [How It Works](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#how-it-works) * [Learn More](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#learn-more) * [Support](https://www.docs.intuition.systems/docs/intuition-network/powered-by-caldera#support) --- # Intuition Testnet | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-network/testnet#__docusaurus_skipToContent_fallback) On this page Welcome to the Intuition Testnet - your development and testing environment for building on the Intuition Network. Intuition leverages **Caldera's Metalayer** infrastructure to provide seamless cross-chain bridging capabilities. As part of Caldera's **Internet of Chains**, we benefit from a robust, interconnected ecosystem of blockchain networks. Network Configuration[​](https://www.docs.intuition.systems/docs/intuition-network/testnet#network-configuration "Direct link to Network Configuration") --------------------------------------------------------------------------------------------------------------------------------------------------------- | Parameter | Value | | --- | --- | | **Network Name** | Intuition Testnet | | **Chain ID** | 13579 | | **Native Token** | $TTRUST | | **RPC URL** | `https://testnet.rpc.intuition.systems/http` | | **WebSocket URL** | `wss://testnet.rpc.intuition.systems/ws` | | **Block Explorer** | [https://explorer.intuition.systems](https://explorer.intuition.systems/) | Bridging & Hub[​](https://www.docs.intuition.systems/docs/intuition-network/testnet#bridging--hub "Direct link to Bridging & Hub") ----------------------------------------------------------------------------------------------------------------------------------- Vist the Intuition Testnet Hub at: * [https://testnet.hub.intuition.systems](https://testnet.hub.intuition.systems/) * [https://intuition-testnet.hub.caldera.xyz/](https://intuition-testnet.hub.caldera.xyz/) The hub creates essential information about the network plus actions like easily adding network details to a wallet and bridging assets between Intuition Testnet and Base Sepolia. Explorer[​](https://www.docs.intuition.systems/docs/intuition-network/testnet#explorer "Direct link to Explorer") ------------------------------------------------------------------------------------------------------------------ Access the Intuition Testnet Explorer directly at: * [https://testnet.explorer.intuition.systems](https://testnet.explorer.intuition.systems/) * [https://testnet.rpc.intuition.systems](https://testnet.rpc.intuition.systems/) The Intuition Explorer is a comprehensive blockchain explorer built on Blockscout, providing detailed insights into all network activity on the Intuition testnet. Monitor transactions, explore blocks, and analyze network performance with this powerful exploration tool. RPC[​](https://www.docs.intuition.systems/docs/intuition-network/testnet#rpc "Direct link to RPC") --------------------------------------------------------------------------------------------------- Access the Intuition Testnet RPC directly at: * [https://testnet.rpc.intuition.systems/http](https://testnet.rpc.intuition.systems/http) The Intuition RPC accepts JSON-RPC requests and returns JSON-RPC responses. It provides programmatic access to the Intuition network. * [Network Configuration](https://www.docs.intuition.systems/docs/intuition-network/testnet#network-configuration) * [Bridging & Hub](https://www.docs.intuition.systems/docs/intuition-network/testnet#bridging--hub) * [Explorer](https://www.docs.intuition.systems/docs/intuition-network/testnet#explorer) * [RPC](https://www.docs.intuition.systems/docs/intuition-network/testnet#rpc) --- # Remote Procedure Call (RPC) | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-network/rpc#__docusaurus_skipToContent_fallback) On this page The Intuition RPC (Remote Procedure Call) service provides programmatic access to the Intuition network. RPC endpoints allow developers and applications to: * Query blockchain data * Submit transactions * Monitor network state * Access historical data * Interact with smart contracts Available Endpoints[​](https://www.docs.intuition.systems/docs/intuition-network/rpc#available-endpoints "Direct link to Available Endpoints") ----------------------------------------------------------------------------------------------------------------------------------------------- ### Core RPC Methods[​](https://www.docs.intuition.systems/docs/intuition-network/rpc#core-rpc-methods "Direct link to Core RPC Methods") * **eth\_getBalance**: Get account balance * **eth\_getBlockByNumber**: Retrieve block information * **eth\_getTransactionByHash**: Get transaction details * **eth\_sendRawTransaction**: Submit signed transactions * **eth\_call**: Execute contract calls * **eth\_getLogs**: Retrieve event logs Usage Examples[​](https://www.docs.intuition.systems/docs/intuition-network/rpc#usage-examples "Direct link to Usage Examples") -------------------------------------------------------------------------------------------------------------------------------- Using the `viem` library: import { createPublicClient, http } from 'viem'import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http('https://1.rpc.thirdweb.com/...'), }) Using the `ethers` library: import ethers from 'ethers';// Connect to Intuition RPCconst provider = new ethers.providers.JsonRpcProvider( 'https://rpc.intuition.network');// Query account balanceconst balance = await provider.getBalance(address);// Get latest blockconst block = await provider.getBlock('latest'); Authentication[​](https://www.docs.intuition.systems/docs/intuition-network/rpc#authentication "Direct link to Authentication") -------------------------------------------------------------------------------------------------------------------------------- RPC access requires authentication for production use: **Wallet Authentication**: Secure access with wallet-based authentication **Rate Limiting**: Fair usage policies **WebSocket Support**: Real-time data streaming **HTTPS Only**: Secure connections required * [Available Endpoints](https://www.docs.intuition.systems/docs/intuition-network/rpc#available-endpoints) * [Core RPC Methods](https://www.docs.intuition.systems/docs/intuition-network/rpc#core-rpc-methods) * [Usage Examples](https://www.docs.intuition.systems/docs/intuition-network/rpc#usage-examples) * [Authentication](https://www.docs.intuition.systems/docs/intuition-network/rpc#authentication) --- # Contract Deployments | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/quick-start/deployments#__docusaurus_skipToContent_fallback) On this page The Intuition protocol contracts are deployed on both the Base Mainnet and the Intuition Layer 3 network, as well as their respective testnets. Below are the details of the deployed contracts, including their addresses and network configurations. Mainnet[​](https://www.docs.intuition.systems/docs/quick-start/deployments#mainnet "Direct link to Mainnet") ------------------------------------------------------------------------------------------------------------- ### Base Mainnet[​](https://www.docs.intuition.systems/docs/quick-start/deployments#base-mainnet "Direct link to Base Mainnet") | Contract | Address | | --- | --- | | Trust (ERC20) | 0x6cd905dF2Ed214b22e0d48FF17CD4200C1C6d8A3 | ### Intuition Mainnet (L3)[​](https://www.docs.intuition.systems/docs/quick-start/deployments#intuition-mainnet-l3 "Direct link to Intuition Mainnet (L3)") | Contract Name | Address | | --- | --- | | WrappedTrust | 0x81cFb09cb44f7184Ad934C09F82000701A4bF672 | | Upgrades TimelockController | 0x321e5d4b20158648dFd1f360A79CAFc97190bAd1 | | Parameters TimelockController | 0x71b0F1ABebC2DaA0b7B5C3f9b72FAa1cd9F35FEA | | MultiVault | 0x6E35cF57A41fA15eA0EaE9C33e751b01A784Fe7e | | AtomWalletFactory | 0x33827373a7D1c7C78a01094071C2f6CE74253B9B | | AtomWalletBeacon | 0xC23cD55CF924b3FE4b97deAA0EAF222a5082A1FF | | AtomWarden | 0x98C9BCecf318d0D1409Bf81Ea3551b629fAEC165 | | SatelliteEmissionsController | 0x73B8819f9b157BE42172E3866fB0Ba0d5fA0A5c6 | | TrustBonding | 0x635bBD1367B66E7B16a21D6E5A63C812fFC00617 | | BondingCurveRegistry | 0xd0E488Fb32130232527eedEB72f8cE2BFC0F9930 | | LinearCurve | 0xc3eFD5471dc63d74639725f381f9686e3F264366 | | OffsetProgressiveCurve | 0x23afF95153aa88D28B9B97Ba97629E05D5fD335d | | Multicall3 | 0xcA11bde05977b3631167028862bE2a173976CA11 | | EntryPoint | 0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108 | | SafeSingletonFactory | 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 | Testnet[​](https://www.docs.intuition.systems/docs/quick-start/deployments#testnet "Direct link to Testnet") ------------------------------------------------------------------------------------------------------------- ### Base Sepolia Testnet[​](https://www.docs.intuition.systems/docs/quick-start/deployments#base-sepolia-testnet "Direct link to Base Sepolia Testnet") | Contract Name | Address | | --- | --- | | TestTrust | 0xA54b4E6e356b963Ee00d1C947f478d9194a1a210 | | Upgrades TimelockController | 0x9099BC9fd63B01F94528B60CEEB336C679eb6d52 | | BaseEmissionsController | 0xC14773Aae24aA60CB8F261995405C28f6D742DCf | ### Intuition Testnet (L3)[​](https://www.docs.intuition.systems/docs/quick-start/deployments#intuition-testnet-l3 "Direct link to Intuition Testnet (L3)") | Contract Name | Address | | --- | --- | | WrappedTrust | 0xDE80b6EE63f7D809427CA350e30093F436A0fe35 | | Upgrades TimelockController | 0x59B7EaB1cFA47F8E61606aDf79a6b7B5bBF1aF26 | | Parameters TimelockController | 0xcCB113bfFf493d80F32Fb799Dca23686a04302A7 | | MultiVault | 0x2Ece8D4dEdcB9918A398528f3fa4688b1d2CAB91 | | AtomWalletFactory | 0xa4e96c6dB8Dd3314c64bF9d0E845A4905a8705d4 | | AtomWalletBeacon | 0x4B0aC884843576dBA0B0fda925f202aB8b546E33 | | AtomWarden | 0x040B7760EFDEd7e933CFf419224b57DFB9Eb4488 | | SatelliteEmissionsController | 0xD3be4d1E56866b98f30Ae6C326F14EF9c6ffBBDF | | TrustBonding | 0x75dD32b522c89566265eA32ecb50b4Fc4d00ADc7 | | BondingCurveRegistry | 0x2AFC4949Dd3664219AA2c20133771658E93892A1 | | LinearCurve | 0x6df5eecd9B14E31C98A027b8634876E4805F71B0 | | OffsetProgressiveCurve | 0xE65EcaAF5964aC0d94459A66A59A8B9eBCE42CbB | | Multicall3 | 0xcA11bde05977b3631167028862bE2a173976CA11 | | EntryPoint | 0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108 | Network Details[​](https://www.docs.intuition.systems/docs/quick-start/deployments#network-details "Direct link to Network Details") ------------------------------------------------------------------------------------------------------------------------------------- ### Intuition Mainnet Configuration[​](https://www.docs.intuition.systems/docs/quick-start/deployments#intuition-mainnet-configuration "Direct link to Intuition Mainnet Configuration") * **Chain ID**: 1155 * **RPC URL**: `https://rpc.intuition.systems` * **WebSocket**: `wss://rpc.intuition.systems` * **Explorer**: `https://explorer.intuition.systems/` * **Native Token**: $TRUST ### Intuition Testnet Configuration[​](https://www.docs.intuition.systems/docs/quick-start/deployments#intuition-testnet-configuration "Direct link to Intuition Testnet Configuration") * **Chain ID**: 13579 * **RPC URL**: `https://testnet.rpc.intuition.systems` * **WebSocket**: `wss://testnet.rpc.intuition.systems` * **Explorer**: `https://testnet.explorer.intuition.systems/` * **Native Token**: $tTRUST ### Base Sepolia Configuration[​](https://www.docs.intuition.systems/docs/quick-start/deployments#base-sepolia-configuration "Direct link to Base Sepolia Configuration") * **Chain ID**: 84532 * **RPC URL**: `https://sepolia.base.org` * **Explorer**: `https://sepolia.basescan.org` * **Native Token**: ETH ### Base Sepolia Configuration[​](https://www.docs.intuition.systems/docs/quick-start/deployments#base-sepolia-configuration-1 "Direct link to Base Sepolia Configuration") * **Chain ID**: 8453 * **RPC URL**: `https://mainnet.base.org` * **Explorer**: `https://basescan.org` * **Native Token**: ETH Verified Contracts[​](https://www.docs.intuition.systems/docs/quick-start/deployments#verified-contracts "Direct link to Verified Contracts") ---------------------------------------------------------------------------------------------------------------------------------------------- All deployed contracts are verified on their respective block explorers. You can view the source code and interact with the contracts directly through the explorer interfaces. Contract ABIs[​](https://www.docs.intuition.systems/docs/quick-start/deployments#contract-abis "Direct link to Contract ABIs") ------------------------------------------------------------------------------------------------------------------------------- Contract ABIs can be found in the following locations: * **npm package**: `@0xintuition/protocol` * **GitHub**: [0xIntuition/intuition-contracts-v2](https://github.com/0xIntuition/intuition-contracts-v2/tree/main/abis) * **Block Explorer**: Available on verified contract pages * [Mainnet](https://www.docs.intuition.systems/docs/quick-start/deployments#mainnet) * [Base Mainnet](https://www.docs.intuition.systems/docs/quick-start/deployments#base-mainnet) * [Intuition Mainnet (L3)](https://www.docs.intuition.systems/docs/quick-start/deployments#intuition-mainnet-l3) * [Testnet](https://www.docs.intuition.systems/docs/quick-start/deployments#testnet) * [Base Sepolia Testnet](https://www.docs.intuition.systems/docs/quick-start/deployments#base-sepolia-testnet) * [Intuition Testnet (L3)](https://www.docs.intuition.systems/docs/quick-start/deployments#intuition-testnet-l3) * [Network Details](https://www.docs.intuition.systems/docs/quick-start/deployments#network-details) * [Intuition Mainnet Configuration](https://www.docs.intuition.systems/docs/quick-start/deployments#intuition-mainnet-configuration) * [Intuition Testnet Configuration](https://www.docs.intuition.systems/docs/quick-start/deployments#intuition-testnet-configuration) * [Base Sepolia Configuration](https://www.docs.intuition.systems/docs/quick-start/deployments#base-sepolia-configuration) * [Base Sepolia Configuration](https://www.docs.intuition.systems/docs/quick-start/deployments#base-sepolia-configuration-1) * [Verified Contracts](https://www.docs.intuition.systems/docs/quick-start/deployments#verified-contracts) * [Contract ABIs](https://www.docs.intuition.systems/docs/quick-start/deployments#contract-abis) --- # Intuition Testnet Faucet | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/quick-start/testnet-faucet#__docusaurus_skipToContent_fallback) You can visit the [Intuition Testnet faucet](https://testnet.hub.intuition.systems/) to get some $tTRUST tokens for testing. **[https://testnet.hub.intuition.systems](https://testnet.hub.intuition.systems/) ** **Each day you can claim 0.1 $tTRUST tokens.** You can claim as many times as you want. If you have any questions visit the [Intuition Discord](https://discord.gg/RgBenkX4mx) developers channel. **[https://discord.gg/RgBenkX4mx](https://discord.gg/RgBenkX4mx) ** --- # Network & Explorers | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/quick-start/network-details#__docusaurus_skipToContent_fallback) On this page Interacting with the Intuition protocol requires connecting to the Intuition network - an L3 network that posts to [Base](https://base.org/) . Explorers[​](https://www.docs.intuition.systems/docs/quick-start/network-details#explorers "Direct link to Explorers") ----------------------------------------------------------------------------------------------------------------------- ### Intuition Mainnet Explorers[​](https://www.docs.intuition.systems/docs/quick-start/network-details#intuition-mainnet-explorers "Direct link to Intuition Mainnet Explorers") * Network Explorer: [https://explorer.intuition.systems/](https://explorer.intuition.systems/) * Protocol Explorer: [https://portal.intuition.systems/explore/](https://portal.intuition.systems/explore/) ### Intuition Testnet Explorers[​](https://www.docs.intuition.systems/docs/quick-start/network-details#intuition-testnet-explorers "Direct link to Intuition Testnet Explorers") * Network Explorer: [https://testnet.explorer.intuition.systems/](https://testnet.explorer.intuition.systems/) * Protocol Explorer: [https://testnet.portal.intuition.systems/explore/](https://testnet.portal.intuition.systems/explore/) ### Base Sepolia Explorer (Deprecated)[​](https://www.docs.intuition.systems/docs/quick-start/network-details#base-sepolia-explorer-deprecated "Direct link to Base Sepolia Explorer (Deprecated)") * [https://sepolia.basescan.org](https://sepolia.basescan.org/) ### Base Mainnet Explorer (Deprecated)[​](https://www.docs.intuition.systems/docs/quick-start/network-details#base-mainnet-explorer-deprecated "Direct link to Base Mainnet Explorer (Deprecated)") * [https://basescan.org](https://basescan.org/) Faucets[​](https://www.docs.intuition.systems/docs/quick-start/network-details#faucets "Direct link to Faucets") ----------------------------------------------------------------------------------------------------------------- ### Intuition Testnet Faucet[​](https://www.docs.intuition.systems/docs/quick-start/network-details#intuition-testnet-faucet "Direct link to Intuition Testnet Faucet") You can visit the [Intuition Testnet faucet](https://testnet.hub.intuition.systems/) to get some $tTRUST tokens for testing. * [https://testnet.hub.intuition.systems/](https://testnet.hub.intuition.systems/) Network Details =============== ### Intuition Mainnet Configuration[​](https://www.docs.intuition.systems/docs/quick-start/network-details#intuition-mainnet-configuration "Direct link to Intuition Mainnet Configuration") * **Chain ID**: 1155 * **RPC URL**: `https://rpc.intuition.systems` * **WebSocket**: `wss://rpc.intuition.systems` * **Explorer**: `https://explorer.intuition.systems/` * **Native Token**: $TRUST ### Intuition Testnet Configuration[​](https://www.docs.intuition.systems/docs/quick-start/network-details#intuition-testnet-configuration "Direct link to Intuition Testnet Configuration") * **Chain ID**: 13579 * **RPC URL**: `https://testnet.rpc.intuition.systems` * **WebSocket**: `wss://testnet.rpc.intuition.systems` * **Explorer**: `https://testnet.explorer.intuition.systems/` * **Native Token**: $tTRUST ### Base Sepolia Configuration (Deprecated)[​](https://www.docs.intuition.systems/docs/quick-start/network-details#base-sepolia-configuration-deprecated "Direct link to Base Sepolia Configuration (Deprecated)") * **Chain ID**: 84532 * **RPC URL**: `https://sepolia.base.org` * **Explorer**: `https://sepolia.basescan.org` * **Native Token**: ETH ### Base Mainnet Configuration (Deprecated)[​](https://www.docs.intuition.systems/docs/quick-start/network-details#base-mainnet-configuration-deprecated "Direct link to Base Mainnet Configuration (Deprecated)") * **Chain ID**: 8453 * **RPC URL**: `https://mainnet.base.org` * **Explorer**: `https://basescan.org` * **Native Token**: ETH * [Explorers](https://www.docs.intuition.systems/docs/quick-start/network-details#explorers) * [Intuition Mainnet Explorers](https://www.docs.intuition.systems/docs/quick-start/network-details#intuition-mainnet-explorers) * [Intuition Testnet Explorers](https://www.docs.intuition.systems/docs/quick-start/network-details#intuition-testnet-explorers) * [Base Sepolia Explorer (Deprecated)](https://www.docs.intuition.systems/docs/quick-start/network-details#base-sepolia-explorer-deprecated) * [Base Mainnet Explorer (Deprecated)](https://www.docs.intuition.systems/docs/quick-start/network-details#base-mainnet-explorer-deprecated) * [Faucets](https://www.docs.intuition.systems/docs/quick-start/network-details#faucets) * [Intuition Testnet Faucet](https://www.docs.intuition.systems/docs/quick-start/network-details#intuition-testnet-faucet) * [Intuition Mainnet Configuration](https://www.docs.intuition.systems/docs/quick-start/network-details#intuition-mainnet-configuration) * [Intuition Testnet Configuration](https://www.docs.intuition.systems/docs/quick-start/network-details#intuition-testnet-configuration) * [Base Sepolia Configuration (Deprecated)](https://www.docs.intuition.systems/docs/quick-start/network-details#base-sepolia-configuration-deprecated) * [Base Mainnet Configuration (Deprecated)](https://www.docs.intuition.systems/docs/quick-start/network-details#base-mainnet-configuration-deprecated) --- # Economics | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/economics#__docusaurus_skipToContent_fallback) On this page Intuition is built on the idea that information deserves its own decentralized distribution and financial rails. Just as blockchains turned money into programmable assets, Intuition turns information into tokenized, ownable, and composable units that anyone can create and monetize in. At the core are Atoms (entities) and Triples (relationships). As users publish, curate, and stake on these objects, they generate a token-curated knowledge graph where ownership weights are represented by positions in $TRUST β€” the native token of the Intuition Network and Protocol. The Vision[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics#the-vision "Direct link to The Vision") --------------------------------------------------------------------------------------------------------------------------- The economics of Intuition transform every digital interaction into an economic opportunity. Every like, comment, review, connection, and action you take across the web becomes an economic bet, allowing you to buy meaningful ownership in any piece of data. The goal is not to tokenize data just for the sake of a token. The economics of Intuition are designed to: ### 1\. Incentivize Expression * Users are rewarded for making useful, verifiable attestations * First movers capture outsized rewards for creating identifiers or relationships that prove valuable * The system pays people to contribute knowledge, not just consume it ### 2\. Incentivize Convergence on Canonical Identifiers * Anyone can permissionlessly create a decentralized identifier (DID) for anything * Instead of fragmenting into infinite duplicates, bonding curves and network effects encourage participants to converge on shared canonical identifiers * This makes Intuition's knowledge graph globally referenceable and interoperable ### 3\. Incentivize Consensus on Standards and Structures * Communities can propose schemas and data formats (e.g., predicates like `foundedBy`, `headquarteredIn`) * Rewards flow toward attestations that align with commonly adopted standards * Over time, the protocol nudges participants into consensus-driven data structures, so the web of knowledge doesn't just grow β€” it grows in a structured, interoperable way * * * $TRUST Token[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics#trust-token "Direct link to $TRUST Token") -------------------------------------------------------------------------------------------------------------------------------- The native token $TRUST enables users to: * Accumulate stake in the information you believe in * Retain true ownership of what you create * Earn as that data gains traction and value across the network ### External Resources[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics#external-resources "Direct link to External Resources") For deeper understanding of Intuition's economic foundations: * **[Trust Whitepaper](https://cdn.prod.website-files.com/65cdf366e68587fd384547f0/68316bdfe42a265d3dc45498_trust-whitepaper.pdf) ** - Comprehensive overview of the economic model and theoretical foundations * **[$TRUST Tokenomics Dashboard](https://app.forgd.com/share/trust/9837b0d0-e11f-410f-80e6-62a0b6fe13ff/public) ** - Detailed token economics, distribution, and utility * * * Example Flow: How the Incentives Work[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics#example-flow-how-the-incentives-work "Direct link to Example Flow: How the Incentives Work") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### 1\. Expression[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics#1-expression "Direct link to 1. Expression") **Alice creates a new Atom: a DID for Tesla, Inc.** * She publishes an attestation: `[Tesla] – [foundedBy] – [Elon Musk]`, staking $TRUST behind it * Because she was first, she captures the early-mover rewards ### 2\. Convergence[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics#2-convergence "Direct link to 2. Convergence") **Bob considers creating his own identifier for Tesla** * But Alice's Atom already has traction, with value flowing into its bonding curve * The economics reward Bob for using the existing canonical DID instead of fragmenting the graph ### 3\. Consensus on Standards[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics#3-consensus-on-standards "Direct link to 3. Consensus on Standards") **Carol proposes that `foundedBy` and `headquarteredIn` should be standard predicates for corporate entities** * The network's incentive structure rewards attestations that align with these schemas * As more users adopt them, `foundedBy` becomes a consensus-backed data standard ### 4\. Ongoing Rewards[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics#4-ongoing-rewards "Direct link to 4. Ongoing Rewards") **As developers and AI agents query Tesla-related data, fees flow back to the identifiers and attestations that power those queries** * Alice, Bob, and Carol all share in the economic upside of having built durable, widely used pieces of the graph * * * Reward Dynamics[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics#reward-dynamics "Direct link to Reward Dynamics") ------------------------------------------------------------------------------------------------------------------------------------------ To maximize engagement and data quality, the system favors contributions that are: ### New or Early First-mover advantages for valuable identifiers and attestations ### Widely Useful Network effects amplify rewards for commonly referenced knowledge ### Standards-Aligned Stronger incentives for adopting schemas and canonical identifiers ### Future-Facing Forward-looking value assessment ensures durable contributions * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics#next-steps "Direct link to Next Steps") --------------------------------------------------------------------------------------------------------------------------- Explore the specific mechanisms that power Intuition's economics: * [Tokenomics](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics) - Deep dive into $TRUST token distribution and utility * [Bonding Curves](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves) - How dynamic pricing creates markets for knowledge * [Fees & Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards) - Understanding the fee structure and reward mechanisms * [Incentive Design](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design) - How economics drive consensus and reduce fragmentation * [The Vision](https://www.docs.intuition.systems/docs/intuition-concepts/economics#the-vision) * [$TRUST Token](https://www.docs.intuition.systems/docs/intuition-concepts/economics#trust-token) * [External Resources](https://www.docs.intuition.systems/docs/intuition-concepts/economics#external-resources) * [Example Flow: How the Incentives Work](https://www.docs.intuition.systems/docs/intuition-concepts/economics#example-flow-how-the-incentives-work) * [1\. Expression](https://www.docs.intuition.systems/docs/intuition-concepts/economics#1-expression) * [2\. Convergence](https://www.docs.intuition.systems/docs/intuition-concepts/economics#2-convergence) * [3\. Consensus on Standards](https://www.docs.intuition.systems/docs/intuition-concepts/economics#3-consensus-on-standards) * [4\. Ongoing Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/economics#4-ongoing-rewards) * [Reward Dynamics](https://www.docs.intuition.systems/docs/intuition-concepts/economics#reward-dynamics) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/economics#next-steps) --- # $TRUST Tokenomics | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#__docusaurus_skipToContent_fallback) On this page $TRUST is the native token of the Intuition Network and Protocol, designed to enable economic participation in the decentralized knowledge graph. Token Purpose[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#token-purpose "Direct link to Token Purpose") ----------------------------------------------------------------------------------------------------------------------------------------------- The $TRUST token serves as the fundamental economic unit within Intuition, enabling: * **Ownership in Data**: Stake $TRUST to acquire ownership shares in Atoms and Triples * **Reward Mechanism**: Earn rewards as your contributed data gains traction and usage * **Economic Signaling**: Express confidence in specific data points through token deposits * **Network Incentives**: Align participant behavior with network growth and data quality Token Utility[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#token-utility "Direct link to Token Utility") ----------------------------------------------------------------------------------------------------------------------------------------------- ### Staking and Ownership[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#staking-and-ownership "Direct link to Staking and Ownership") When you deposit $TRUST into an Atom or Triple vault: * You receive shares representing ownership in that data point * Your ownership percentage determines your share of future rewards * Early stakers benefit from lower prices on the bonding curve * Ownership grants you economic exposure to data usage and popularity ### Earning Mechanisms[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#earning-mechanisms "Direct link to Earning Mechanisms") $TRUST holders can earn through: * **Protocol Fees**: Distributed proportionally to data owners when others interact with their data * **Network Effects**: More valuable data generates more fees for stakeholders * **Early Adoption**: First movers capture outsized rewards for creating valuable identifiers * **Compound Growth**: Reinvest rewards to increase ownership stakes ### Governance and Participation[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#governance-and-participation "Direct link to Governance and Participation") While initially focused on economic participation, $TRUST may evolve to include: * Protocol parameter governance * Standards and schema proposals * Community-driven ecosystem development * Treasury allocation decisions Distribution Model[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#distribution-model "Direct link to Distribution Model") -------------------------------------------------------------------------------------------------------------------------------------------------------------- The $TRUST token distribution is designed to: * Reward early contributors and builders * Incentivize long-term network participation * Support sustainable ecosystem growth * Align stakeholder incentives with protocol success Staking Mechanisms[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#staking-mechanisms "Direct link to Staking Mechanisms") -------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Vault Deposits[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#vault-deposits "Direct link to Vault Deposits") Depositing $TRUST into vaults involves: 1. Selecting an Atom or Triple to stake on 2. Choosing deposit amount 3. Paying protocol fees (which reward existing stakeholders) 4. Receiving shares based on bonding curve pricing 5. Earning proportional rewards from future deposits ### Redemption[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#redemption "Direct link to Redemption") When withdrawing $TRUST: * Redeem shares for underlying assets * Price determined by bonding curve at redemption time * May incur exit fees to stabilize vaults * Reduces your ownership percentage in that data Economic Security[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#economic-security "Direct link to Economic Security") ----------------------------------------------------------------------------------------------------------------------------------------------------------- The token model provides security through: * **Economic Disincentives**: Fees deter spam and malicious activity * **Stake-Weighted Reputation**: Larger stakes signal stronger conviction * **Attack Resistance**: Attacks inadvertently benefit the system through fee payments * **Sustainable Incentives**: Self-funding model supports long-term viability External Resources[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#external-resources "Direct link to External Resources") -------------------------------------------------------------------------------------------------------------------------------------------------------------- For comprehensive information about $TRUST tokenomics: * **[Trust Whitepaper](https://cdn.prod.website-files.com/65cdf366e68587fd384547f0/68316bdfe42a265d3dc45498_trust-whitepaper.pdf) ** - Full technical and economic specification * **[$TRUST Tokenomics Dashboard](https://app.forgd.com/share/trust/9837b0d0-e11f-410f-80e6-62a0b6fe13ff/public) ** - Live tokenomics data, distribution details, and analytics * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#next-steps "Direct link to Next Steps") -------------------------------------------------------------------------------------------------------------------------------------- * [Bonding Curves](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves) - Understand how $TRUST pricing works * [Fees & Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards) - Learn how rewards are distributed * [Incentive Design](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design) - Explore economic incentive mechanisms * [Token Purpose](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#token-purpose) * [Token Utility](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#token-utility) * [Staking and Ownership](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#staking-and-ownership) * [Earning Mechanisms](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#earning-mechanisms) * [Governance and Participation](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#governance-and-participation) * [Distribution Model](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#distribution-model) * [Staking Mechanisms](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#staking-mechanisms) * [Vault Deposits](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#vault-deposits) * [Redemption](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#redemption) * [Economic Security](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#economic-security) * [External Resources](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#external-resources) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics#next-steps) --- # Run on Kubernetes Cluster | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#__docusaurus_skipToContent_fallback) On this page A comprehensive Kubernetes-based deployment infrastructure for blockchain indexing and data services, managed with ArgoCD and Terraform. Architecture Overview[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#architecture-overview "Direct link to Architecture Overview") --------------------------------------------------------------------------------------------------------------------------------------------------------- This project deploys a complete blockchain indexing platform on Google Cloud Platform (GCP) using: * **GKE Cluster**: Multi-node pool Kubernetes cluster * **ArgoCD**: GitOps-based continuous deployment * **Terraform**: Infrastructure as Code for GCP resources * **Kustomize**: Kubernetes manifest management Core Services[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#core-services "Direct link to Core Services") --------------------------------------------------------------------------------------------------------------------------------- ### Data Layer[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#data-layer "Direct link to Data Layer") * **TimescaleDB**: Time-series database with PostgreSQL extensions and AI capabilities * **Indexer Database**: Dedicated database for blockchain indexing operations ### Application Services[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#application-services "Direct link to Application Services") * **GraphQL Engine**: Hasura GraphQL API for data access * **IPFS Node**: InterPlanetary File System for decentralized storage * **Safe Content Service**: Content validation and processing * **TimescaleDB Vectorizer Worker**: Vector processing for AI/ML workloads * **Histocrawler**: Historical data crawling and indexing service * **Image Guard**: Image validation and security service * **RPC Proxy**: Blockchain RPC request routing and caching ### Consumer Services[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#consumer-services "Direct link to Consumer Services") * **Decoded Consumer**: Blockchain event decoding and processing * **IPFS Upload Consumer**: IPFS content upload and management * **Resolver Consumer**: Data resolution and lookup services ### Management Tools[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#management-tools "Direct link to Management Tools") * **pgAdmin**: PostgreSQL administration interface * **Ingress Controller**: Traffic routing and load balancing Infrastructure Components[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#infrastructure-components "Direct link to Infrastructure Components") --------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### GKE Cluster Suggested Configuration[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#gke-cluster-suggested-configuration "Direct link to GKE Cluster Suggested Configuration") * **Region**: `us-west2` * **Project**: `be-cluster` * **Network**: Custom VPC with private/public subnets * **Node Pools**: * `db-pool`: n2-standard-16 (dedicated for databases) * `app-pool`: e2-standard-2 (application services) * `consumer-pool`: custom-4-8192 (data processing) ### Storage[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#storage "Direct link to Storage") * **Persistent Volumes**: GCP Persistent Disk with resizable storage class * **IPFS Storage**: 50Gi persistent volume for IPFS data * **Database Storage**: 50Gi for TimescaleDB Project Structure[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#project-structure "Direct link to Project Structure") --------------------------------------------------------------------------------------------------------------------------------------------- gcp-deployment/β”œβ”€β”€ apps/ # Kubernetes applicationsβ”‚ β”œβ”€β”€ consumers/ # Data processing consumersβ”‚ β”‚ β”œβ”€β”€ decoded/ # Blockchain event decoderβ”‚ β”‚ β”œβ”€β”€ ipfs-upload/ # IPFS upload processorβ”‚ β”‚ └── resolver/ # Data resolver serviceβ”‚ β”œβ”€β”€ graphql/ # Hasura GraphQL engineβ”‚ β”œβ”€β”€ histocrawler/ # Historical data crawlerβ”‚ β”œβ”€β”€ image-guard/ # Image validation serviceβ”‚ β”œβ”€β”€ indexer-db/ # Indexer databaseβ”‚ β”œβ”€β”€ ipfs/ # IPFS nodeβ”‚ β”œβ”€β”€ pgadmin/ # PostgreSQL adminβ”‚ β”œβ”€β”€ rpc-proxy/ # RPC request proxyβ”‚ β”œβ”€β”€ safe-content/ # Content validation serviceβ”‚ β”œβ”€β”€ timescale_db/ # TimescaleDB instanceβ”‚ β”œβ”€β”€ timescale_db_vectorizer/ # Vector processingβ”‚ └── ingress/ # Ingress configurationβ”œβ”€β”€ argocd/ # ArgoCD configurationβ”‚ β”œβ”€β”€ coreapps/ # Core application definitionsβ”‚ β”œβ”€β”€ namespacedapps/ # Namespace-specific appsβ”‚ β”œβ”€β”€ projects/ # ArgoCD project definitionsβ”‚ └── repos/ # Repository secretsβ”œβ”€β”€ terraform/ # Infrastructure as Codeβ”‚ └── debug-gke/ # GKE cluster provisioning└── test-kustomize/ # Kustomize testing Quick Start[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#quick-start "Direct link to Quick Start") --------------------------------------------------------------------------------------------------------------------------- ### Prerequisites[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#prerequisites "Direct link to Prerequisites") * Google Cloud SDK * Terraform >= 1.0 * kubectl * ArgoCD CLI ### 1\. Deploy Infrastructure[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#1-deploy-infrastructure "Direct link to 1. Deploy Infrastructure") cd terraform/debug-gketerraform initterraform planterraform apply ### 2\. Configure ArgoCD[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#2-configure-argocd "Direct link to 2. Configure ArgoCD") # Get GKE credentialsgcloud container clusters get-credentials debug-cluster --region us-west2# Install ArgoCDkubectl create namespace argocdkubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml# Apply ArgoCD configurationkubectl apply -f argocd/ ### 3\. Deploy Applications[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#3-deploy-applications "Direct link to 3. Deploy Applications") Applications are automatically deployed via ArgoCD GitOps. The system monitors the Git repository and applies changes automatically. Configuration[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#configuration "Direct link to Configuration") --------------------------------------------------------------------------------------------------------------------------------- ### Environment Variables[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#environment-variables "Direct link to Environment Variables") Key services require environment-specific configuration: * **GraphQL Engine**: Database connection, CORS settings * **TimescaleDB**: PostgreSQL credentials, AI extensions * **IPFS**: Storage paths, network configuration * **Safe Content**: Content validation rules * **Histocrawler**: Blockchain endpoints, indexing parameters * **Image Guard**: Image scanning policies, security rules * **RPC Proxy**: Upstream RPC endpoints, caching configuration * **Consumers**: Event processing queues, database connections ### Secrets Management[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#secrets-management "Direct link to Secrets Management") Secrets are managed through Kubernetes secrets and external secret providers: * Database credentials * API keys * Service account tokens Monitoring & Observability[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#monitoring--observability "Direct link to Monitoring & Observability") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Health Checks[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#health-checks "Direct link to Health Checks") * Liveness probes configured for all services * Readiness probes for database services * Custom health endpoints for GraphQL and IPFS ### Logging[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#logging "Direct link to Logging") * Structured logging enabled for GraphQL engine * Query logging for debugging * WebSocket and HTTP request logging Security[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#security "Direct link to Security") ------------------------------------------------------------------------------------------------------------------ ### Network Security[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#network-security "Direct link to Network Security") * Private GKE cluster with private nodes * VPC-native networking * NAT gateway for outbound internet access * Ingress controller for external access ### Access Control[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#access-control "Direct link to Access Control") * Workload Identity for GCP service accounts * Kubernetes RBAC * ArgoCD project-based access control Development[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#development "Direct link to Development") --------------------------------------------------------------------------------------------------------------------------- ### Local Development[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#local-development "Direct link to Local Development") # Test Kustomize configurationscd test-kustomizekubectl kustomize . | kubectl apply --dry-run=client# Validate manifestskubectl kustomize apps/graphql/ | kubectl apply --dry-run=client ### Adding New Services[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#adding-new-services "Direct link to Adding New Services") 1. Create service directory in `apps/` 2. Add Kubernetes manifests (deployment, service, etc.) 3. Create ArgoCD application definition 4. Update project permissions if needed CI/CD Pipeline[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#cicd-pipeline "Direct link to CI/CD Pipeline") ----------------------------------------------------------------------------------------------------------------------------------- The deployment follows GitOps principles: 1. Code changes pushed to Git repository 2. ArgoCD detects changes automatically 3. Applications updated in Kubernetes cluster 4. Health checks validate deployment Scaling[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#scaling "Direct link to Scaling") --------------------------------------------------------------------------------------------------------------- ### Horizontal Scaling[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#horizontal-scaling "Direct link to Horizontal Scaling") * Application services can scale horizontally via HPA * Database services use StatefulSets for data persistence * IPFS and GraphQL support multiple replicas ### Vertical Scaling[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#vertical-scaling "Direct link to Vertical Scaling") * Node pools can be resized via Terraform * Storage volumes support online resizing * Resource limits configured per service Troubleshooting[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#troubleshooting "Direct link to Troubleshooting") --------------------------------------------------------------------------------------------------------------------------------------- ### Common Issues[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#common-issues "Direct link to Common Issues") 1. **Database Connection**: Check TimescaleDB service and secrets 2. **IPFS Storage**: Verify PVC and storage class 3. **GraphQL Health**: Check liveness probe and database connectivity 4. **ArgoCD Sync**: Verify repository access and permissions 5. **Consumer Processing**: Check event queue connectivity and processing status 6. **Histocrawler**: Verify blockchain endpoint accessibility 7. **Image Guard**: Check image scanning service health 8. **RPC Proxy**: Validate upstream RPC endpoint connectivity ### Debug Commands[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#debug-commands "Direct link to Debug Commands") # Check pod statuskubectl get pods -A# View logskubectl logs -f deployment/graphql-engine# Check ArgoCD applicationsargocd app list# Validate Terraform stateterraform plan Additional Resources[​](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#additional-resources "Direct link to Additional Resources") ------------------------------------------------------------------------------------------------------------------------------------------------------ * [GKE Documentation](https://cloud.google.com/kubernetes-engine/docs) * [ArgoCD User Guide](https://argo-cd.readthedocs.io/) * [TimescaleDB Documentation](https://docs.timescale.com/) * [Hasura GraphQL Engine](https://hasura.io/docs/) * [Hasura Documentation](https://hasura.io/docs/) * [Alchemy Dashboard](https://dashboard.alchemy.com/) * [Pinata Documentation](https://docs.pinata.cloud/) * [Architecture Overview](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#architecture-overview) * [Core Services](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#core-services) * [Data Layer](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#data-layer) * [Application Services](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#application-services) * [Consumer Services](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#consumer-services) * [Management Tools](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#management-tools) * [Infrastructure Components](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#infrastructure-components) * [GKE Cluster Suggested Configuration](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#gke-cluster-suggested-configuration) * [Storage](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#storage) * [Project Structure](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#project-structure) * [Quick Start](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#quick-start) * [Prerequisites](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#prerequisites) * [1\. Deploy Infrastructure](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#1-deploy-infrastructure) * [2\. Configure ArgoCD](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#2-configure-argocd) * [3\. Deploy Applications](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#3-deploy-applications) * [Configuration](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#configuration) * [Environment Variables](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#environment-variables) * [Secrets Management](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#secrets-management) * [Monitoring & Observability](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#monitoring--observability) * [Health Checks](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#health-checks) * [Logging](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#logging) * [Security](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#security) * [Network Security](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#network-security) * [Access Control](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#access-control) * [Development](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#development) * [Local Development](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#local-development) * [Adding New Services](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#adding-new-services) * [CI/CD Pipeline](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#cicd-pipeline) * [Scaling](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#scaling) * [Horizontal Scaling](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#horizontal-scaling) * [Vertical Scaling](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#vertical-scaling) * [Troubleshooting](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#troubleshooting) * [Common Issues](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#common-issues) * [Debug Commands](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#debug-commands) * [Additional Resources](https://www.docs.intuition.systems/docs/intuition-node/kubernetes#additional-resources) --- # rust-backend | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#__docusaurus_skipToContent_fallback) On this page The Intuition Rust Monorepo[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#the-intuition-rust-monorepo "Direct link to The Intuition Rust Monorepo") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The `intuition-rs` repository is organized as a Rust workspace, which provides several key benefits: ### Monorepo Architecture[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#monorepo-architecture "Direct link to Monorepo Architecture") A monorepo (monolithic repository) consolidates all backend services and shared code in a single repository, offering: * **Code sharing**: Common utilities and models shared across all services * **Unified versioning**: All services stay in sync with compatible versions * **Atomic changes**: Update multiple services in a single commit * **Simplified dependencies**: Internal dependencies managed through workspace * **Consistent tooling**: Shared build, test, and lint configurations ### Workspace Organization[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#workspace-organization "Direct link to Workspace Organization") The workspace is structured into logical layers: #### Applications Layer (`apps/`)[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#applications-layer-apps "Direct link to applications-layer-apps") Independent services that can be deployed separately: * Each app has its own binary * Shared dependencies managed at workspace level * Services communicate through well-defined interfaces #### Infrastructure Layer[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#infrastructure-layer "Direct link to Infrastructure Layer") Supporting services for data storage and APIs: * Database migrations and schema management * GraphQL API configuration * Monitoring and observability tools #### Shared Libraries[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#shared-libraries "Direct link to Shared Libraries") Common code used across multiple services: * Domain models * Utility functions * Shared business logic ### Development Benefits[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#development-benefits "Direct link to Development Benefits") * **Faster builds**: Cargo caches dependencies and only rebuilds what changed * **Type safety across services**: Shared types ensure compatibility * **Easier refactoring**: Changes to shared code immediately show impact * **Consistent testing**: Run all tests with a single command Project Structure[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#project-structure "Direct link to Project Structure") ----------------------------------------------------------------------------------------------------------------------------------------------- intuition-rs/β”œβ”€β”€ apps/ # Custom Rust applicationsβ”‚ β”œβ”€β”€ cli/ # Terminal UI clientβ”‚ β”œβ”€β”€ consumer/ # Event processing pipeline (Redis Streams)β”‚ β”œβ”€β”€ histocrawler/ # Historical data crawlerβ”‚ β”œβ”€β”€ image-guard/ # Image processing serviceβ”‚ β”œβ”€β”€ models/ # Domain models & data structuresβ”‚ β”œβ”€β”€ rpc-proxy/ # RPC proxy with cachingβ”‚ └── shared-utils/ # Common utilitiesβ”œβ”€β”€ infrastructure/ # Infrastructure componentsβ”‚ β”œβ”€β”€ hasura/ # GraphQL API & migrationsβ”‚ β”œβ”€β”€ blockscout/ # Blockchain explorerβ”‚ β”œβ”€β”€ drizzle/ # Database schema managementβ”‚ β”œβ”€β”€ geth/ # Local Ethereum node configβ”‚ β”œβ”€β”€ indexer-and-cache-migrations/ # Database migrationsβ”‚ β”œβ”€β”€ migration-scripts/ # Migration utilitiesβ”‚ └── prometheus/ # Monitoring configurationβ”œβ”€β”€ docker/ # Docker configurationβ”‚ β”œβ”€β”€ docker-compose-apps.yml # Application servicesβ”‚ β”œβ”€β”€ docker-compose-shared.yml # Shared infrastructureβ”‚ └── Dockerfile # Multi-stage buildβ”œβ”€β”€ scripts/ # Shell scriptsβ”‚ β”œβ”€β”€ start.sh # System startupβ”‚ β”œβ”€β”€ stop.sh # System shutdownβ”‚ β”œβ”€β”€ cli.sh # CLI runnerβ”‚ β”œβ”€β”€ init-dbs.sh # Database initializationβ”œβ”€β”€ integration-tests/ # End-to-end tests└── README.md # Project documentation ### Core Applications[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#core-applications "Direct link to Core Applications") ### CLI Terminal UI client for interacting with the Intuition system * Interactive command-line interface * Real-time data verification * Development and debugging tool ### Consumer Event processing pipeline using Redis Streams * **RAW Consumer**: Ingests raw blockchain events * **DECODED Consumer**: Decodes and parses events * **RESOLVER Consumer**: Resolves and enriches data * **IPFS-UPLOAD Consumer**: Manages IPFS content uploads ### Histocrawler Historical data crawler for blockchain indexing * Fetches historical blockchain data * Processes past events * Builds complete data history ### Image Guard Image processing and validation service * Image validation and security scanning * Format conversion and optimization * Content moderation ### RPC Proxy RPC call proxy with intelligent caching * Caches eth\_call method results * Reduces load on upstream RPC providers * Improves query performance ### Models Domain models and data structures * Shared data types * Business logic models * Database entity definitions ### Shared Utils Common utilities used across services * Helper functions * Shared configurations * Reusable components ### Infrastructure Components[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#infrastructure-components "Direct link to Infrastructure Components") The infrastructure layer provides essential services: * **Hasura**: GraphQL API engine with database migrations * **Blockscout**: Blockchain explorer for network transparency * **Drizzle**: Type-safe database schema management * **Geth**: Local Ethereum node for development * **Prometheus**: Metrics collection and monitoring ### Development Tools[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#development-tools "Direct link to Development Tools") The repository includes comprehensive tooling: * **Docker Compose**: Orchestrates all services for local development * **Cargo Make**: Task automation and build scripts * **Integration Tests**: End-to-end testing with pnpm * **Shell Scripts**: Quick commands for common operations Why Rust?[​](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#why-rust "Direct link to Why Rust?") ---------------------------------------------------------------------------------------------------------------------- The Intuition backend is built with Rust, a systems programming language that offers unique advantages for blockchain infrastructure: ### Performance and Efficiency **Zero-cost abstractions**: Write high-level code without runtime overhead **Memory efficiency**: Minimal memory footprint compared to garbage-collected languages **Concurrent processing**: Built-in support for safe concurrent operations **Native performance**: Compiles to machine code for maximum speed ### Safety and Reliability **Memory safety**: Eliminates entire classes of bugs (null pointer dereferences, buffer overflows, data races) **Type safety**: Strong static typing catches errors at compile time **Error handling**: Explicit error handling through Result types **No runtime crashes**: Memory safety guarantees prevent unexpected crashes ### Developer Experience **Modern tooling**: Cargo package manager and build system **Rich ecosystem**: Growing library ecosystem for blockchain and web services **Documentation**: Built-in documentation tools and testing framework **Community**: Active and supportive open-source community ### Blockchain-Specific Benefits **Predictable performance**: No garbage collection pauses during critical operations **Resource optimization**: Efficient resource usage for indexing large amounts of blockchain data **WebAssembly support**: Can compile to WASM for cross-platform compatibility **Security**: Memory safety is crucial when handling financial transactions and user data * [The Intuition Rust Monorepo](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#the-intuition-rust-monorepo) * [Monorepo Architecture](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#monorepo-architecture) * [Workspace Organization](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#workspace-organization) * [Development Benefits](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#development-benefits) * [Project Structure](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#project-structure) * [Core Applications](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#core-applications) * [Infrastructure Components](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#infrastructure-components) * [Development Tools](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#development-tools) * [Why Rust?](https://www.docs.intuition.systems/docs/intuition-node/rust-backend#why-rust) --- # Run an Intuition Node | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#__docusaurus_skipToContent_fallback) On this page Running the System[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#running-the-system "Direct link to Running the System") ----------------------------------------------------------------------------------------------------------------------------------------------------------- ### Option 1: Using Published Docker Images (Recommended)[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#option-1-using-published-docker-images-recommended "Direct link to Option 1: Using Published Docker Images (Recommended)") # Start with local Ethereum nodecargo make start-local ### Option 2: Building from Source[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#option-2-building-from-source "Direct link to Option 2: Building from Source") # Build all Docker images from sourcecargo make build-docker-images# Start the systemcargo make start-local ### Option 3: Running with Integration Tests[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#option-3-running-with-integration-tests "Direct link to Option 3: Running with Integration Tests") # Start with tests enabledcargo make start-local test Testing[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#testing "Direct link to Testing") -------------------------------------------------------------------------------------------------------------------------- ### Run All Tests[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#run-all-tests "Direct link to Run All Tests") cargo nextest run ### Run Integration Tests[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#run-integration-tests "Direct link to Run Integration Tests") cd integration-testsexport VITE_INTUITION_CONTRACT_ADDRESS=0x....pnpm test src/follow.test.ts ### Run Specific Test Suites[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#run-specific-test-suites "Direct link to Run Specific Test Suites") # Test account operationspnpm test src/create-person.test.ts# Test vault operationspnpm test src/vaults.test.ts# Test AI agentspnpm test src/ai-agents.test.ts ### Development Testing[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#development-testing "Direct link to Development Testing") #### CLI Tool[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#cli-tool "Direct link to CLI Tool") # Run the CLI to verify latest data./scripts/cli.sh #### Code Quality[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#code-quality "Direct link to Code Quality") # Format codecargo make fmt# Run lintercargo make clippy# Run all checkscargo make check #### Database Operations[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#database-operations "Direct link to Database Operations") # Start services and run migrationscargo make start-docker-and-migrate# Manual migration (if needed)cp .env.sample .envsource .env Monitoring and Observability[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#monitoring-and-observability "Direct link to Monitoring and Observability") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Logging[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#logging "Direct link to Logging") The system includes comprehensive logging capabilities: **Features:** * **Structured JSON Logging**: All services output machine-readable logs * **Container Logs**: Direct access to service logs via Docker * **Log Filtering**: Easy filtering by log level and service **Benefits:** * **Debugging**: Quickly find and analyze issues across services * **Performance Monitoring**: Track service performance and bottlenecks * **Audit Trail**: Complete visibility into system operations **Getting Started:** 1. Start the system: `cargo make start-local` 2. View logs: `docker logs ` 3. Filter logs: `docker logs | grep '"level":"INFO"'` **JSON Logging:** All consumer services output structured JSON logs with the following fields: * `timestamp`: ISO 8601 timestamp * `level`: Log level (INFO, WARN, ERROR, DEBUG) * `fields.message`: Log message content * `target`: Module path * `filename`: Source file name * `line_number`: Line number in source file * `threadId`: Thread identifier **Viewing Logs:** # View container logs directlydocker logs decoded_consumer | grep '"level":"INFO"'docker logs resolver_consumer | grep '"level":"ERROR"'docker logs ipfs_upload_consumer | grep '"level":"WARN"' Troubleshooting[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#troubleshooting "Direct link to Troubleshooting") -------------------------------------------------------------------------------------------------------------------------------------------------- ### Common Issues[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#common-issues "Direct link to Common Issues") 1. **Database connection errors**: Ensure PostgreSQL is running and credentials are correct 2. **RPC endpoint issues**: Verify your Alchemy endpoints are valid and have sufficient quota 3. **Docker resource limits**: Ensure Docker has sufficient memory and CPU allocation ### Getting Help[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#getting-help "Direct link to Getting Help") * Check the [intuition-rs repository](https://github.com/0xIntuition/intuition-rs) for latest updates * Review the [DeepWiki documentation](https://deepwiki.com/0xIntuition/intuition-rs) for detailed technical information * Join the Intuition community for support Next Steps[​](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#next-steps "Direct link to Next Steps") ----------------------------------------------------------------------------------------------------------------------------------- Once your node is running successfully: 1. **Monitor the logs** to ensure all services are healthy 2. **Test the CLI tool** to verify data ingestion 3. **Configure monitoring** for production deployments 4. **Join the network** and start contributing to the Intuition ecosystem The node implementation is under active development, so check the repository regularly for updates and new features. * [Running the System](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#running-the-system) * [Option 1: Using Published Docker Images (Recommended)](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#option-1-using-published-docker-images-recommended) * [Option 2: Building from Source](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#option-2-building-from-source) * [Option 3: Running with Integration Tests](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#option-3-running-with-integration-tests) * [Testing](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#testing) * [Run All Tests](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#run-all-tests) * [Run Integration Tests](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#run-integration-tests) * [Run Specific Test Suites](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#run-specific-test-suites) * [Development Testing](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#development-testing) * [Monitoring and Observability](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#monitoring-and-observability) * [Logging](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#logging) * [Troubleshooting](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#troubleshooting) * [Common Issues](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#common-issues) * [Getting Help](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#getting-help) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-node/run-an-intuition-node#next-steps) --- # Portal (Explorer) Guide | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/portal#__docusaurus_skipToContent_fallback) On this page The Portal is Intuition's first Explorer (akin to a block explorer), which provides users with easy access to the social and knowledge graph. Positioned at the application layer, the Portal offers an intuitive interface for users to create, manage, and interact with Identities (Atoms) and Claims (Triples). It serves as the gateway for creating decentralized identities, making claims, and managing your stake, transforming the exploration of the knowledge graph into an accessible and user-friendly experience. While most explorers are only meant for exploring, The Portal also provides a user interface for easily interacting with the Intuition Graph in its entirety. ### πŸ“‹ **Covered in this guide:**[​](https://www.docs.intuition.systems/docs/portal#-covered-in-this-guide "Direct link to -covered-in-this-guide") This guide provides step-by-step instructions for The Portal's core features: * **Creating Identities** - Build your digital presence * **Creating Claims** - Make assertions and statements * **Staking on Identities and Claims** - Participate in the Token Curated Registry * **Using Tags** - Organize and discover content * **Organizing Lists** - Create curated collections * **Following Users** - Build your social network 1\. Creating and Managing Identities (Atoms)[​](https://www.docs.intuition.systems/docs/portal#1-creating-and-managing-identities-atoms "Direct link to 1. Creating and Managing Identities (Atoms)") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Identities, also known as **Atoms**, are the fundamental building blocks in the Intuition system. Each Atom represents a concept, such as a person, organization, or product, and comes with a unique decentralized identifier, structured data, and an associated Vault for signaling its relevancy. ### **How to Create an Identity**[​](https://www.docs.intuition.systems/docs/portal#how-to-create-an-identity "Direct link to how-to-create-an-identity") 1. **Click the "Create" action button** in the bottom left section of the menu panel 2. **Select "Create Identity"** from the dropdown menu 3. **Input data** to describe the Identity you are creating 4. **Optionally deposit ETH** to stake on your newly created Identity ### **What Happens After Creation?**[​](https://www.docs.intuition.systems/docs/portal#what-happens-after-creation "Direct link to what-happens-after-creation") When you create an Identity, the data is uploaded to IPFS, generating an IPFS CID that is used to create an Atom in the Intuition contracts. This Atom can now be referenced universally across the web. 2\. Making Claims (Triples)[​](https://www.docs.intuition.systems/docs/portal#2-making-claims-triples "Direct link to 2. Making Claims (Triples)") --------------------------------------------------------------------------------------------------------------------------------------------------- **What are Claims?** Claims, or **Triples**, allow you to assert statements about anything using a **\[Subject\]\[Predicate\]\[Object\]** structure. For example, **\[Alice\]\[is\]\[trustworthy\]**. Creating a Claim does not automatically express agreement with the claim; you must stake on the Claim to do so. ### **How to Create a Claim:**[​](https://www.docs.intuition.systems/docs/portal#how-to-create-a-claim "Direct link to how-to-create-a-claim") 1. **Click the "Create" action button** in the bottom left section of the menu panel 2. **Select "Create Claim"** from the dropdown menu 3. **Choose three Atoms/Identities** to form your Claim ### **Helpful Tips:**[​](https://www.docs.intuition.systems/docs/portal#helpful-tips "Direct link to helpful-tips") * **Existing Claims**: If a claim already exists, simply stake on the existing claim to express your agreement with it * **Prerequisites**: To create a claim, Atoms must already exist for the subject, predicate and object. If any one of the 3 required Atoms does not exist, you will first need to follow step 1 above to create the necessary identities before composing your claim 3\. Staking (Signal Conviction)[​](https://www.docs.intuition.systems/docs/portal#3-staking-signal-conviction "Direct link to 3. Staking (Signal Conviction)") --------------------------------------------------------------------------------------------------------------------------------------------------------------- **What is Staking?** Staking in Intuition allows you to signal what is important or what you believe to be true by staking ETH on Identities (Atoms) or Claims (Triples). This process contributes to a **Token Curated Registry (TCR)**, where the most relevant information rises to the top. ### **Staking on an Identity:**[​](https://www.docs.intuition.systems/docs/portal#staking-on-an-identity "Direct link to staking-on-an-identity") * **Signals the relevancy** of the Identity * **Grants you shares** in the Identity, earning fees from future stakes ### **Staking on a Claim:**[​](https://www.docs.intuition.systems/docs/portal#staking-on-a-claim "Direct link to staking-on-a-claim") * Claims have a **Positive Vault** (for supporting the Claim) and a **Negative Vault** (for opposing the Claim) * Staking on a Claim also stakes on the Claim's underlying Identities ### **Unstaking:**[​](https://www.docs.intuition.systems/docs/portal#unstaking "Direct link to unstaking") You can unstake your ETH at any time to retrieve your deposit (minus fees). ### **Staking Economics:**[​](https://www.docs.intuition.systems/docs/portal#staking-economics "Direct link to staking-economics") Staking grants you shares that provide a proportionate amount of fee revenue accumulated by the Identity or Claim, incentivizing you to stake on high-traction items. 4\. Using Tags[​](https://www.docs.intuition.systems/docs/portal#4-using-tags "Direct link to 4. Using Tags") -------------------------------------------------------------------------------------------------------------- **What are Tags?** Tags are shortcuts to organizing and finding relevant information. Tagging is achieved by creating a Claim using the **\[has tag\]** Atom as the Predicate. The ability to create tags is one of the first features to leverage "special predicates" and demonstrates how functionality can be built around specific types of claims. In this case, tags are the foundation on which users can create and manage Lists. ### **Creating and Using Tags:**[​](https://www.docs.intuition.systems/docs/portal#creating-and-using-tags "Direct link to creating-and-using-tags") * **New Tag Creation**: To create a new Tag, you must create a new Identity for the tag you want to use if it doesn't already exist. Just like any other claim, Identities (Atoms) must exist for the Subject, Predicate, and Object of your **\[has tag\]** claim. When adding a new tag, we know the Subject and Predicate exist, so users only need to ensure an Object Atom exists (which represents the tag to be added) * **Tagging Process**: Tag something by searching through "Existing Tags" or creating a new one * **Benefits**: Tagging enhances discoverability and adds items to relevant Lists 5\. Organizing with Lists[​](https://www.docs.intuition.systems/docs/portal#5-organizing-with-lists "Direct link to 5. Organizing with Lists") ----------------------------------------------------------------------------------------------------------------------------------------------- **What are Lists?** Lists allow you to group related items or data in a way that makes sense to you, helping others discover, save, and provide feedback. Lists are constructed through deterministic queries, making it easy to organize and navigate complex data. ### **Creating a List:**[​](https://www.docs.intuition.systems/docs/portal#creating-a-list "Direct link to creating-a-list") * Lists are formed by Claims with the **\[has tag\]** Predicate * Tag an Identity to include it in a specific List ### **Adding to and Managing Lists:**[​](https://www.docs.intuition.systems/docs/portal#adding-to-and-managing-lists "Direct link to adding-to-and-managing-lists") * Use the **"Add to list"** and **"Save list"** buttons to manage your Lists * Lists are **Token Curated Registries (TCR)**, where you can stake ETH to order entries within a List 6\. Following Users[​](https://www.docs.intuition.systems/docs/portal#6-following-users "Direct link to 6. Following Users") ----------------------------------------------------------------------------------------------------------------------------- **What is Following?** Following in Intuition is a contextual statement made by staking on the Claim **\[I\]\[am following\]\[User\]**. This staking process reflects the strength of your connection and is part of the open data available for developers to use in building a social graph. ### **How to Follow/Unfollow:**[​](https://www.docs.intuition.systems/docs/portal#how-to-followunfollow "Direct link to how-to-followunfollow") * **To follow**: Click on a user's profile and select "Follow," then optionally stake ETH * **To unfollow**: Click "Following" on the user's profile and select "Unfollow." Unfollowing also redeems your staked ETH Getting Started[​](https://www.docs.intuition.systems/docs/portal#getting-started "Direct link to Getting Started") -------------------------------------------------------------------------------------------------------------------- ### πŸš€ **Ready to begin your journey?**[​](https://www.docs.intuition.systems/docs/portal#-ready-to-begin-your-journey "Direct link to -ready-to-begin-your-journey") Visit **[portal.intuition.systems](https://portal.intuition.systems/) ** to start creating identities, making claims, and building your presence in the Intuition knowledge graph. Related Resources[​](https://www.docs.intuition.systems/docs/portal#related-resources "Direct link to Related Resources") -------------------------------------------------------------------------------------------------------------------------- **[Explorer](https://www.docs.intuition.systems/docs/intuition-network) ** - Network exploration tools **[Bridge](https://www.docs.intuition.systems/docs/intuition-network) ** - Cross-chain functionality **[RPC](https://www.docs.intuition.systems/docs/intuition-network/rpc) ** - Network connectivity options * [πŸ“‹ **Covered in this guide:**](https://www.docs.intuition.systems/docs/portal#-covered-in-this-guide) * [1\. Creating and Managing Identities (Atoms)](https://www.docs.intuition.systems/docs/portal#1-creating-and-managing-identities-atoms) * [**How to Create an Identity**](https://www.docs.intuition.systems/docs/portal#how-to-create-an-identity) * [**What Happens After Creation?**](https://www.docs.intuition.systems/docs/portal#what-happens-after-creation) * [2\. Making Claims (Triples)](https://www.docs.intuition.systems/docs/portal#2-making-claims-triples) * [**How to Create a Claim:**](https://www.docs.intuition.systems/docs/portal#how-to-create-a-claim) * [**Helpful Tips:**](https://www.docs.intuition.systems/docs/portal#helpful-tips) * [3\. Staking (Signal Conviction)](https://www.docs.intuition.systems/docs/portal#3-staking-signal-conviction) * [**Staking on an Identity:**](https://www.docs.intuition.systems/docs/portal#staking-on-an-identity) * [**Staking on a Claim:**](https://www.docs.intuition.systems/docs/portal#staking-on-a-claim) * [**Unstaking:**](https://www.docs.intuition.systems/docs/portal#unstaking) * [**Staking Economics:**](https://www.docs.intuition.systems/docs/portal#staking-economics) * [4\. Using Tags](https://www.docs.intuition.systems/docs/portal#4-using-tags) * [**Creating and Using Tags:**](https://www.docs.intuition.systems/docs/portal#creating-and-using-tags) * [5\. Organizing with Lists](https://www.docs.intuition.systems/docs/portal#5-organizing-with-lists) * [**Creating a List:**](https://www.docs.intuition.systems/docs/portal#creating-a-list) * [**Adding to and Managing Lists:**](https://www.docs.intuition.systems/docs/portal#adding-to-and-managing-lists) * [6\. Following Users](https://www.docs.intuition.systems/docs/portal#6-following-users) * [**How to Follow/Unfollow:**](https://www.docs.intuition.systems/docs/portal#how-to-followunfollow) * [Getting Started](https://www.docs.intuition.systems/docs/portal#getting-started) * [πŸš€ **Ready to begin your journey?**](https://www.docs.intuition.systems/docs/portal#-ready-to-begin-your-journey) * [Related Resources](https://www.docs.intuition.systems/docs/portal#related-resources) --- # Overview | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-node/overview#__docusaurus_skipToContent_fallback) On this page 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?[​](https://www.docs.intuition.systems/docs/intuition-node/overview#what-is-an-intuition-node "Direct link to 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. Node Requirements 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[​](https://www.docs.intuition.systems/docs/intuition-node/overview#supported-contract-versions "Direct link to Supported Contract Versions") * Multivault v2.0 Why Run a Node?[​](https://www.docs.intuition.systems/docs/intuition-node/overview#why-run-a-node "Direct link to 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[​](https://www.docs.intuition.systems/docs/intuition-node/overview#architecture "Direct link to 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 CLIConsumerModels ### 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 GraphQLProxy ### Supporting Services **Histocrawler:** Historical data crawler **Shared Utils:** Common utilities and shared code **Migration Scripts:** Database migration utilities CrawlerUtils ### Event Processing Pipeline[​](https://www.docs.intuition.systems/docs/intuition-node/overview#event-processing-pipeline "Direct link to Event Processing Pipeline") The system processes blockchain events through multiple stages: 1. **RAW** - Raw event ingestion from blockchain 2. **DECODED** - Event decoding and parsing 3. **RESOLVER** - Data resolution and enrichment 4. **IPFS-UPLOAD** - Upload images to IPFS and track them in the local DB Prerequisites[​](https://www.docs.intuition.systems/docs/intuition-node/overview#prerequisites "Direct link to Prerequisites") ------------------------------------------------------------------------------------------------------------------------------- ### Required Tools[​](https://www.docs.intuition.systems/docs/intuition-node/overview#required-tools "Direct link to Required Tools") **Rust toolchain:** Install with `curl --proto '=https' --tlsv1.2 -sSf [https://sh.rustup.rs](https://sh.rustup.rs/) | sh` **cargo-make:** Install with `cargo install --force cargo-make` **Hasura CLI:** Install with `curl -L [https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh](https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh) | bash` **Node.js:** For integration tests (install pnpm dependencies) ### Environment Configuration[​](https://www.docs.intuition.systems/docs/intuition-node/overview#environment-configuration "Direct link to Environment 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](https://platform.openai.com/api-keys) | | `PINATA_GATEWAY_TOKEN` | Pinata gateway token for IPFS | [Pinata Dashboard](https://app.pinata.cloud/developers/gateway-settings) | | `PINATA_API_JWT` | Pinata API JWT for IPFS uploads | [Pinata Dashboard](https://app.pinata.cloud/developers/api-keys) | | `BASE_MAINNET_RPC_URL` | Base mainnet RPC endpoint | [Alchemy Dashboard](https://dashboard.alchemy.com/apps) | | `BASE_SEPOLIA_RPC_URL` | Base sepolia testnet RPC endpoint | [Alchemy Dashboard](https://dashboard.alchemy.com/apps) | | `ETHEREUM_MAINNET_RPC_URL` | Ethereum mainnet RPC endpoint | [Alchemy Dashboard](https://dashboard.alchemy.com/apps) | | `LINEA_MAINNET_RPC_URL` | Linea mainnet RPC endpoint | [Alchemy Dashboard](https://dashboard.alchemy.com/apps) | | `LINEA_SEPOLIA_RPC_URL` | Linea sepolia testnet RPC endpoint | [Alchemy Dashboard](https://dashboard.alchemy.com/apps) | | `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[​](https://www.docs.intuition.systems/docs/intuition-node/overview#next-steps "Direct link to Next Steps") ---------------------------------------------------------------------------------------------------------------------- Once you understand the architecture and have the prerequisites ready: 1. Learn about [why we chose Rust](https://www.docs.intuition.systems/docs/intuition-node/rust-backend) for the backend implementation 2. Explore [Local Development Setup](https://www.docs.intuition.systems/docs/intuition-node/local-setup) for development workflows 3. Check [Kubernetes Deployment](https://www.docs.intuition.systems/docs/intuition-node/kubernetes) for production deployments * [What is an Intuition Node?](https://www.docs.intuition.systems/docs/intuition-node/overview#what-is-an-intuition-node) * [Supported Contract Versions](https://www.docs.intuition.systems/docs/intuition-node/overview#supported-contract-versions) * [Why Run a Node?](https://www.docs.intuition.systems/docs/intuition-node/overview#why-run-a-node) * [Architecture](https://www.docs.intuition.systems/docs/intuition-node/overview#architecture) * [Event Processing Pipeline](https://www.docs.intuition.systems/docs/intuition-node/overview#event-processing-pipeline) * [Prerequisites](https://www.docs.intuition.systems/docs/intuition-node/overview#prerequisites) * [Required Tools](https://www.docs.intuition.systems/docs/intuition-node/overview#required-tools) * [Environment Configuration](https://www.docs.intuition.systems/docs/intuition-node/overview#environment-configuration) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-node/overview#next-steps) --- # GraphQL Generator | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#__docusaurus_skipToContent_fallback) On this page The Intuition GraphQL package can be used as a GraphQL generator for your custom queries. It provides a type-safe interface for interacting with the Intuition API. It functions as the core data fetching layer, supplying generated types and React Query hooks for easy integration with the semantic knowledge graph. Key Features[​](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#key-features "Direct link to Key Features") ---------------------------------------------------------------------------------------------------------------------------------- * Type-safe GraphQL operations leveraging code gen * React Query hooks for data fetching * Reusable GraphQL fragments * Easy to customize to your specific needs * Supports real-time updates from the Intuition GraphQL API through GraphQL subscriptions Installation[​](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#installation "Direct link to Installation") ---------------------------------------------------------------------------------------------------------------------------------- The source code for the GraphQL generator is available on GitHub, which you can copy and paste into your own project to use as a GraphQL generator: [`intuition-ts/packages/graphql`](https://github.com/0xIntuition/intuition-ts/tree/main/packages/graphql) Schema Management[​](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#schema-management "Direct link to Schema Management") ------------------------------------------------------------------------------------------------------------------------------------------------- The package uses a local-first approach for schema management: * Local `schema.graphql` as source of truth * Remote schema fallback for resilience * Automatic schema generation during builds * Version controlled schema for team consistency Package Structure[​](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#package-structure "Direct link to Package Structure") ------------------------------------------------------------------------------------------------------------------------------------------------- graphql/β”œβ”€β”€ src/β”‚ β”œβ”€β”€ client.ts # Client configurationβ”‚ β”œβ”€β”€ fragments/ # Reusable fragmentsβ”‚ β”œβ”€β”€ queries/ # GraphQL queriesβ”‚ β”œβ”€β”€ mutations/ # GraphQL mutationsβ”‚ └── generated/ # Generated typesβ”œβ”€β”€ schema.graphql # Schema definition└── codegen.ts # Codegen config Although this package does not include a subscriptions folder, you can easily add one to the generator because the GraphQL API allows subscriptions for real-time updates. Package Approach[​](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#package-approach "Direct link to Package Approach") ---------------------------------------------------------------------------------------------------------------------------------------------- 1. **Schema Updates** * Uses the local schema committed in the repository as the source for codegen and uses the remote URL as a fallback 2. **Query Organization** * Uses fragments for reusable fields * Includes use-case specific queries as well as general purpose queries 3. **Type Safety** * Leverages generated types from our schema * Generates React Query hooks as well as document queries that can be used in a server context (or with another client such as Apollo) 4. **Client Configuration** * Default client configuration can be overridden in each consumer app * Supports environment-specific API URLs Craft your own custom queries[​](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#craft-your-own-custom-queries "Direct link to Craft your own custom queries") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- We advise drafting and testing your queries, mutations, and subscriptions before implementing them into code. You should also use a GraphQL explorer to explore the Intuition GraphQL API schema. For this, you can use [Apollo Explorer](https://studio.apollographql.com/sandbox/explorer) and input the URL of the Intuition testnet GraphQL API: `https://testnet.intuition.sh/v1/graphql`. Development Workflow[​](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#development-workflow "Direct link to Development Workflow") ---------------------------------------------------------------------------------------------------------------------------------------------------------- 1. **Code Generation** * `pnpm codegen:build # Generate types` * `pnpm codegen:watch # Watch mode for development` 2. **Building** * `pnpm build # Full build with codegen` * `pnpm dev # Development mode with watch` 3. **Testing** * `pnpm test` Use your custom React Query hooks[​](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#use-your-custom-react-query-hooks "Direct link to Use your custom React Query hooks") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Once you have run the codegen, you can use your custom React Query Hooks in your own components. import { useCustomTriplesQuery } from 'graphql/generated/hooks'function MyComponent() { // Query triples based on your custom needs const { data: triples, isLoading: triplesLoading } = useCustomTriplesQuery({ variables: { limit: 10 } }) return (

Triples ({triples?.triples?.length || 0})

{triples?.triples?.map(triple => (
{triple.subject.label} - {triple.predicate.label} - {triple.object.label}
))}
)} The GraphQL API provides the foundation for building powerful applications on Intuition. Related Resources[​](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#related-resources "Direct link to Related Resources") ------------------------------------------------------------------------------------------------------------------------------------------------- * [GraphQL Code Generator](https://the-guild.dev/graphql/codegen) * [React Query Documentation](https://tanstack.com/query) * [Intuition GraphQL Package Source](https://github.com/0xIntuition/intuition-ts/tree/main/packages/graphql) * [Key Features](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#key-features) * [Installation](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#installation) * [Schema Management](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#schema-management) * [Package Structure](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#package-structure) * [Package Approach](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#package-approach) * [Craft your own custom queries](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#craft-your-own-custom-queries) * [Development Workflow](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#development-workflow) * [Use your custom React Query hooks](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#use-your-custom-react-query-hooks) * [Related Resources](https://www.docs.intuition.systems/docs/graphql-api/graphql-generator#related-resources) --- # Incentive Design | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#__docusaurus_skipToContent_fallback) On this page Intuition's economic model is carefully designed to solve fundamental challenges in decentralized knowledge systems: fragmentation, quality control, and consensus formation. Reducing Fragmentation[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#reducing-fragmentation "Direct link to Reducing Fragmentation") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- In many systems, user-generated tags and classifications, known as **folksonomies**, can lead to fragmented and disorganized data. Different people might use different labels for the same thing, making it hard to gather or analyze information effectively. Intuition solves this by encouraging users to converge on a common set of identifiers. Intuition acts as a consensus mechanism not just for identifiers, but also for data structuresβ€”it is essentially a consensus mechanism for the 'state of the state' of decentralized systems, where participants are economically incentivized to converge on consensus identifiers and data structures. Market-Driven Consensus[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#market-driven-consensus "Direct link to Market-Driven Consensus") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Intuition uses a **market-driven consensus** model inspired by blockchain technology. In systems like Proof of Work (PoW) and Proof of Stake (PoS), participants are economically incentivized to act in ways that benefit the network. Users are motivated to use established and widely recognized identifiers because doing so increases their potential rewards from future interactions. Market-Driven Example This model mirrors the behavior of **prediction markets** and **automated market makers (AMMs)**, where participants align with the most trusted and valuable options due to market incentives. Token-Curated Graph (TCG)[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#token-curated-graph-tcg "Direct link to Token-Curated Graph (TCG)") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- As users interact with and endorse certain identifiers, Intuition naturally creates a **token-curated graph (TCG)**β€”a graph of popular, widely used identifiers and data structures. These identifiers become the standard, and the system self-regulates based on user interactions and rewards, ensuring only the most valuable data structures rise to prominence. ### How TCG Works[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#how-tcg-works "Direct link to How TCG Works") 1. **Network Effects**: Popular identifiers attract more usage 2. **Economic Signals**: Staking patterns reveal community preferences 3. **Quality Filtering**: Valuable data naturally accumulates more stake 4. **Emergent Standards**: Consensus forms organically through market forces Keynesian Beauty Contest Application[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#keynesian-beauty-contest-application "Direct link to Keynesian Beauty Contest Application") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Intuition also applies the **Keynesian Beauty Contest** concept, where users are rewarded for choosing options they believe others will choose. This drives consensus on data structures and identifiers, as users are motivated to align their actions with the choices of the broader community, ensuring the most popular and widely accepted options become the standard. ### Strategic Behavior[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#strategic-behavior "Direct link to Strategic Behavior") * Users predict which identifiers will become canonical * Early adoption of future standards yields higher rewards * Community alignment is incentivized over fragmentation * Consensus emerges from collective intelligence Early Adopter Advantage[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#early-adopter-advantage "Direct link to Early Adopter Advantage") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Users who are quick to interact with new dataβ€”whether it's creating or endorsing an identity or claimβ€”are rewarded more as the data gains traction. This system encourages users to contribute and adopt important data early, creating a race to establish high-quality, valuable information that others will rely on. Key Insight The earlier you participate, the more rewards you can earn over time as others use the same data. Early contributors receive ongoing distributions from all future interactions with their contributed data. ### Reward Mechanisms for Early Adopters[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#reward-mechanisms-for-early-adopters "Direct link to Reward Mechanisms for Early Adopters") * **Better Pricing**: Lower entry costs on bonding curves * **Larger Ownership**: Higher percentage of total shares * **Ongoing Fees**: Continuous rewards from future participants * **Compound Growth**: Reinvestment opportunities multiply returns Convergence Incentives[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#convergence-incentives "Direct link to Convergence Incentives") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The economic model creates powerful incentives for convergence: ### For Data Creators[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#for-data-creators "Direct link to For Data Creators") * First-mover advantage for valuable identifiers * Ongoing rewards as usage grows * Reputation building through quality contributions * Economic exposure to data success ### For Data Consumers[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#for-data-consumers "Direct link to For Data Consumers") * Lower costs when using established identifiers * Access to higher quality, verified data * Network effects increase data utility * Confidence in widely-adopted standards Consensus Mechanisms[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#consensus-mechanisms "Direct link to Consensus Mechanisms") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Social Consensus[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#social-consensus "Direct link to Social Consensus") Unlike traditional blockchain consensus (PoW, PoS), Intuition enables consensus on: * Data structures and schemas * Canonical identifiers for entities * Standard predicates and relationships * Quality and accuracy of information ### Economic Alignment[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#economic-alignment "Direct link to Economic Alignment") The system aligns economic incentives with consensus goals: * Rewards for standardization over fragmentation * Penalties (higher costs) for creating duplicates * Benefits for early identification of winning standards * Sustainable model for long-term participation Anti-Fragmentation Design[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#anti-fragmentation-design "Direct link to Anti-Fragmentation Design") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Traditional Problems[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#traditional-problems "Direct link to Traditional Problems") Without economic incentives: * Multiple competing identifiers for same entity * Inconsistent data structures and formats * Low-quality, unverified information * Difficulty achieving agreement on standards ### Intuition's Solutions[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#intuitions-solutions "Direct link to Intuition's Solutions") Economic mechanisms that: * Make convergence more profitable than fragmentation * Reward early adopters of canonical identifiers * Create network effects around quality data * Enable market-driven quality control Summary[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#summary "Direct link to Summary") ----------------------------------------------------------------------------------------------------------------------------------- Economic Vision By integrating these economic principles, Intuition creates a dynamic, decentralized ecosystem where users are continuously rewarded for valuable contributions, and the community naturally converges on high-quality, standardized data structures. This economic framework ensures sustainable growth while maintaining the platform's security and reliability, creating a virtuous cycle of value creation and distribution that benefits all participants in the Intuition ecosystem. * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#next-steps "Direct link to Next Steps") -------------------------------------------------------------------------------------------------------------------------------------------- * [Tokenomics](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics) - Understand $TRUST token utility * [Bonding Curves](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves) - Learn about dynamic pricing * [Fees & Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards) - See how rewards flow * [Reducing Fragmentation](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#reducing-fragmentation) * [Market-Driven Consensus](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#market-driven-consensus) * [Token-Curated Graph (TCG)](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#token-curated-graph-tcg) * [How TCG Works](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#how-tcg-works) * [Keynesian Beauty Contest Application](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#keynesian-beauty-contest-application) * [Strategic Behavior](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#strategic-behavior) * [Early Adopter Advantage](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#early-adopter-advantage) * [Reward Mechanisms for Early Adopters](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#reward-mechanisms-for-early-adopters) * [Convergence Incentives](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#convergence-incentives) * [For Data Creators](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#for-data-creators) * [For Data Consumers](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#for-data-consumers) * [Consensus Mechanisms](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#consensus-mechanisms) * [Social Consensus](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#social-consensus) * [Economic Alignment](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#economic-alignment) * [Anti-Fragmentation Design](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#anti-fragmentation-design) * [Traditional Problems](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#traditional-problems) * [Intuition's Solutions](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#intuitions-solutions) * [Summary](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#summary) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design#next-steps) --- # Bonding Curves | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#__docusaurus_skipToContent_fallback) On this page Bonding curves are a core economic primitive in Intuition, determining how the price of shares changes as more users stake tokens in Atom and Triple vaults. What is a Bonding Curve?[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#what-is-a-bonding-curve "Direct link to What is a Bonding Curve?") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- A bonding curve is a mathematical function that defines the relationship between the supply of tokens and their price. In Intuition: * Price increases as more tokens are staked * Price decreases as tokens are withdrawn * Creates continuous liquidity * Eliminates need for order books How Bonding Curves Work[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#how-bonding-curves-work "Direct link to How Bonding Curves Work") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Basic Mechanics[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#basic-mechanics "Direct link to Basic Mechanics") 1. **Initial Price**: First stake gets shares at base price 2. **Progressive Pricing**: Each subsequent stake pays slightly more 3. **Continuous Market**: No waiting for buyers/sellers 4. **Deterministic**: Price is always calculable from supply ### Example Progression[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#example-progression "Direct link to Example Progression") Stake 1: 100 tokens β†’ 100 shares (price: 1.00)Stake 2: 100 tokens β†’ 95 shares (price: 1.05)Stake 3: 100 tokens β†’ 91 shares (price: 1.10)Stake 4: 100 tokens β†’ 87 shares (price: 1.15) Curve Types in Intuition[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#curve-types-in-intuition "Direct link to Curve Types in Intuition") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Linear Curve[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#linear-curve "Direct link to Linear Curve") Simple linear progression: * Price = basePrice + (supply \* slope) * Predictable, straightforward * Used for most standard vaults ### Offset Progressive Curve[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#offset-progressive-curve "Direct link to Offset Progressive Curve") More complex pricing with offset: * Allows for custom curve shapes * Can have different growth rates * Used for specialized vaults Bonding Curve Demo[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#bonding-curve-demo "Direct link to Bonding Curve Demo") ------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Bonding Curve Interactive Demo #### Parameters Curve TypeLinear CurveOffset Progressive Curve Current Supply: 100 Purchase Amount (ETH): 10 #### Results Current Price (ETH per share):1.0000 ETH Purchase Cost:10.0000 ETH Shares Received:10.0000 New Price (ETH per share):0.9091 ETH Price Impact:\-9.09% **Linear Curve Note:** Initial deposits are 1:1 (ETH deposited = shares received). Subsequent deposits use the conversion formula: shares = (assets Γ— totalShares) / totalAssets. Dynamic Pricing Benefits[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#dynamic-pricing-benefits "Direct link to Dynamic Pricing Benefits") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Intuition uses bonding curves to create dynamic pricing mechanisms that automatically adjust based on supply and demand. This sophisticated approach provides multiple benefits: ### Automated Market Making Liquidity is provided automatically through mathematical curves, eliminating the need for traditional order books or manual market makers. LiquidityAutomated ### Early Incentives Early participants get better prices, encouraging adoption and rewarding pioneers who identify valuable data structures before they become widely recognized. Early BirdAdoption ### Supply Control Prices increase as more tokens are minted, preventing inflation while ensuring scarcity creates value for established data structures. ScarcityControl ### Economic Alignment Pricing automatically reflects the value of underlying assets, ensuring market mechanisms accurately represent the true worth of data and relationships. ValueAlignment Economic Implications[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#economic-implications "Direct link to Economic Implications") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### For Early Stakers[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#for-early-stakers "Direct link to For Early Stakers") **Advantages:** * Get shares at lower prices * Earn fees from all future stakers * Benefit from price appreciation * Higher ownership percentage **Risks:** * May not attract later stakers * TVL could remain low * Limited fee generation if unused ### For Later Stakers[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#for-later-stakers "Direct link to For Later Stakers") **Advantages:** * Join proven, popular data * Higher confidence in value * More established signal **Disadvantages:** * Pay premium prices * Lower ownership percentage * Less potential upside Liquidity Benefits[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#liquidity-benefits "Direct link to Liquidity Benefits") ------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Always Available[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#always-available "Direct link to Always Available") * No need to find counterparty * Instant stake/unstake * Deterministic pricing * No slippage from order books ### Price Discovery[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#price-discovery "Direct link to Price Discovery") * Continuous price updates * Reflects real demand * Self-balancing mechanism * Market-driven valuations Curve Parameters[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#curve-parameters "Direct link to Curve Parameters") ------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Configurable Elements[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#configurable-elements "Direct link to Configurable Elements") 1. **Base Price**: Starting price for first share 2. **Curve Slope**: Rate of price increase 3. **Curve Type**: Linear vs progressive 4. **Reserve Ratio**: Backing percentage ### Governance[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#governance "Direct link to Governance") * Curve parameters may be adjustable * Community governance controls changes * Different curves for different vault types * Balances accessibility and sustainability * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------------------------ * [Fees & Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards) - Understanding the fee structure * [Tokenomics](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics) - Learn about $TRUST token utility * [Incentive Design](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design) - How economics drive consensus * [What is a Bonding Curve?](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#what-is-a-bonding-curve) * [How Bonding Curves Work](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#how-bonding-curves-work) * [Basic Mechanics](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#basic-mechanics) * [Example Progression](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#example-progression) * [Curve Types in Intuition](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#curve-types-in-intuition) * [Linear Curve](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#linear-curve) * [Offset Progressive Curve](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#offset-progressive-curve) * [Bonding Curve Demo](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#bonding-curve-demo) * [Dynamic Pricing Benefits](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#dynamic-pricing-benefits) * [Economic Implications](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#economic-implications) * [For Early Stakers](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#for-early-stakers) * [For Later Stakers](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#for-later-stakers) * [Liquidity Benefits](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#liquidity-benefits) * [Always Available](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#always-available) * [Price Discovery](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#price-discovery) * [Curve Parameters](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#curve-parameters) * [Configurable Elements](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#configurable-elements) * [Governance](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#governance) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves#next-steps) --- # Audit Reports | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#__docusaurus_skipToContent_fallback) On this page Overview[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#overview "Direct link to Overview") -------------------------------------------------------------------------------------------------------------------------------- This page contains security audit reports for Intuition smart contracts. All contracts undergo rigorous security assessments before deployment. ### Intuition TRUST Token, Bonding and Emissions Audit | Diligence[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#intuition-trust-token-bonding-and-emissions-audit--diligence "Direct link to Intuition TRUST Token, Bonding and Emissions Audit | Diligence") #### September 2025[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#september-2025 "Direct link to September 2025") * [Diligence Audit Report - 1](https://github.com/0xIntuition/intuition-contracts-v2/blob/main/audits/Diligence-Audit-Report-1.pdf) ### Intuition MultiVault Audit | Diligence[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#intuition-multivault-audit--diligence "Direct link to Intuition MultiVault Audit | Diligence") #### September 2025[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#september-2025-1 "Direct link to September 2025") * [Diligence Audit Report - 2](https://github.com/0xIntuition/intuition-contracts-v2/blob/main/audits/Diligence-Audit-Report-2.pdf) ### Intuition Smart Contracts | Trail of Bits[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#intuition-smart-contracts--trail-of-bits "Direct link to Intuition Smart Contracts | Trail of Bits") #### March 2024[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#march-2024 "Direct link to March 2024") * [Intuition Smart Contracts](https://github.com/0xIntuition/intuition-contracts-v0.1/blob/main/audits/tob/Intuition%20Summary%20Report%20-%20ToB%20Audit%201.pdf) * [Overview](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#overview) * [Intuition TRUST Token, Bonding and Emissions Audit | Diligence](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#intuition-trust-token-bonding-and-emissions-audit--diligence) * [Intuition MultiVault Audit | Diligence](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#intuition-multivault-audit--diligence) * [Intuition Smart Contracts | Trail of Bits](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports#intuition-smart-contracts--trail-of-bits) --- # Fees and Rewards | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#__docusaurus_skipToContent_fallback) On this page In the Intuition system, interactions incur fees similar to gas costs in blockchain transactions. These fees serve critical roles in maintaining system integrity, incentivizing contributions, and fostering high-quality data. Purpose of Fees[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#purpose-of-fees "Direct link to Purpose of Fees") ----------------------------------------------------------------------------------------------------------------------------------------------------------- ### Preventing Abuse and Attacks[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#preventing-abuse-and-attacks "Direct link to Preventing Abuse and Attacks") Decentralized systems face risks such as Sybil and DoS attacks. Intuition mitigates these through economic disincentives: * Fees deter malicious activity by imposing costs * Network resilience: attacks inadvertently benefit the system through fee payments * Similar to how Ethereum benefits from all transaction fees ### Encouraging Active Participation[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#encouraging-active-participation "Direct link to Encouraging Active Participation") Economic incentives motivate meaningful contributions: * Historical challenge: Web2 platforms (Amazon, Yelp, Wikipedia) struggle with participation * Intuition mirrors blockchain block rewards model * Tangible incentives for creating valuable data ### Promoting High-Quality Data[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#promoting-high-quality-data "Direct link to Promoting High-Quality Data") Shifts focus from quantity to quality: * Economic mechanisms discourage irrelevant data * Rewards align with data quality and usage * Reduces "junk data" proliferation ### Establishing Standards Through Incentives[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#establishing-standards-through-incentives "Direct link to Establishing Standards Through Incentives") Traditional standards creation is challenging ("standards hell"): * Applies blockchain consensus principles to social consensus * Financial rewards for distributed agreement * Extends to data structures, schemas, formats, identifiers Fee Types[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#fee-types "Direct link to Fee Types") ----------------------------------------------------------------------------------------------------------------------------------------- Every interaction with the knowledge graph involves two types of fees: * **Gas fees**: Network transaction fees paid to the maintainers of the Intuition Network for processing transactions * **Protocol fees**: Fees that flow through the Intuition protocol to reward data contributors and maintain the ecosystem Because Intuition breaks data down into discrete, tokenized units, the system is aware of 'who owns what data' at any given point in time. Because of this, the system is able to programmatically flow value β€” such as these fees β€” through data as that data is interacted with. Fee Allocation[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#fee-allocation "Direct link to Fee Allocation") -------------------------------------------------------------------------------------------------------------------------------------------------------- When users interact with or create data, these combined fees support both network operations and data contributor rewards through the following mechanisms: ### Purchasing Equity in the Data To purchase tokens of an Atom or Triple, users deposit $TRUST (the native token of the Intuition Network and Protocol) into the Vault of the respective Atom or Triple. You pay a protocol fee proportional to your deposit amount. In return, you receive tokens of that specific Atom or Triple, entitling you to rewards generated by that data point proportional to your ownership percentage. $TRUSTOwnershipEquity ### Rewarding Prior Contributors When interacting with data, part of the protocol fee is distributed to all existing shareholders (prior contributors). This encourages early, meaningful contributions, as users who add valuable data will continue to be rewarded over time through protocol fees, while gas fees go to network validators. DistributionRewards ### Protocol Maintenance A portion of the protocol fee is paid to the Intuition protocol for platform maintenance and development. This ensures Intuition can be self-sustaining and exist in perpetuity, without risk of shutting down. DevelopmentDAO Fee Structure Details[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#fee-structure-details "Direct link to Fee Structure Details") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Entry Fees[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#entry-fees "Direct link to Entry Fees") * Charged when depositing into vaults * Distributed to existing shareholders * Incentivizes early discovery * Amount varies by bonding curve position ### Exit Fees[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#exit-fees "Direct link to Exit Fees") * May be charged on withdrawal * Helps stabilize vaults * Prevents rapid speculation * Protects remaining stakers ### Protocol Fees[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#protocol-fees "Direct link to Protocol Fees") * Portion goes to protocol treasury * Funds development and maintenance * Supports ecosystem growth * Governed by community ### Atom Deposit Fraction[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#atom-deposit-fraction "Direct link to Atom Deposit Fraction") * Special fee for Atom interactions * Ensures Atom owners benefit when used in Triples * Aligns incentives across primitives * Creates value flow through graph structure Fractals Data Structure Incentives[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#fractals-data-structure-incentives "Direct link to Fractals Data Structure Incentives") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The data model (Atoms, Triples, Signal) enables programmatic value distribution: ### Example: YouTube Video Like[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#example-youtube-video-like "Direct link to Example: YouTube Video Like") 1. User creates Triple: `[User] [likes] [YouTube Video]` 2. Creation fee rewards owners of component Atoms 3. Initial deposit grants Triple ownership 4. Future deposits reward this user 5. Value flows through entire structure This ensures: * High-quality data remains prominent * Incentives align with accuracy * Meaningful contributions rewarded * Natural quality filtering Reward Distribution[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#reward-distribution "Direct link to Reward Distribution") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Share-Proportional Rewards[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#share-proportional-rewards "Direct link to Share-Proportional Rewards") Rewards distributed based on ownership: yourReward = totalFees * (yourShares / totalShares) ### Temporal Advantages[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#temporal-advantages "Direct link to Temporal Advantages") Early participants benefit more: * Better share prices * Longer fee accumulation period * Compound growth effects ### Usage-Based Generation[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#usage-based-generation "Direct link to Usage-Based Generation") More useful data generates more fees: * Popular Atoms referenced frequently * Valuable Triples queried often * Infrastructure data constantly used Aligning Incentives with Data Structure[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#aligning-incentives-with-data-structure "Direct link to Aligning Incentives with Data Structure") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Economic model motivates users to: * **Converge on Entities**: Consensus on key data points * **Adopt Effective References**: Best ways to structure data * **Support Quality**: Back accurate, useful information * **Create Standards**: Emerge organically through use Drives fractal consensus from individual Atoms to complex nested Triples. Self-Regulating Ecosystem[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#self-regulating-ecosystem "Direct link to Self-Regulating Ecosystem") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Economic integration achieves: * **System Security**: Fees deter attacks * **Meaningful Contributions**: Rewards motivate quality * **Structured Consensus**: Incentive-driven standardization * **Sustainable Growth**: Value flows support development * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#next-steps "Direct link to Next Steps") -------------------------------------------------------------------------------------------------------------------------------------------- * [Bonding Curves](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves) - Understand pricing mechanics * [Tokenomics](https://www.docs.intuition.systems/docs/intuition-concepts/economics/tokenomics) - Learn about $TRUST token * [Incentive Design](https://www.docs.intuition.systems/docs/intuition-concepts/economics/incentive-design) - How economics drive consensus * [Purpose of Fees](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#purpose-of-fees) * [Preventing Abuse and Attacks](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#preventing-abuse-and-attacks) * [Encouraging Active Participation](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#encouraging-active-participation) * [Promoting High-Quality Data](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#promoting-high-quality-data) * [Establishing Standards Through Incentives](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#establishing-standards-through-incentives) * [Fee Types](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#fee-types) * [Fee Allocation](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#fee-allocation) * [Fee Structure Details](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#fee-structure-details) * [Entry Fees](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#entry-fees) * [Exit Fees](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#exit-fees) * [Protocol Fees](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#protocol-fees) * [Atom Deposit Fraction](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#atom-deposit-fraction) * [Fractals Data Structure Incentives](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#fractals-data-structure-incentives) * [Example: YouTube Video Like](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#example-youtube-video-like) * [Reward Distribution](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#reward-distribution) * [Share-Proportional Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#share-proportional-rewards) * [Temporal Advantages](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#temporal-advantages) * [Usage-Based Generation](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#usage-based-generation) * [Aligning Incentives with Data Structure](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#aligning-incentives-with-data-structure) * [Self-Regulating Ecosystem](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#self-regulating-ecosystem) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-and-rewards#next-steps) --- # Configurations & Fees | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#__docusaurus_skipToContent_fallback) On this page The Intuition protocol smart contracts utilize a configuration system that allows for dynamic adjustment of various parameters effecting the behavior of the protocol. This document outlines the key configuration parameters and fees associated with the **mainnet Intuition protocol** deployment. The smart contract configurations and parameters can be adjusted by governance through onchain proposals, allowing for flexibility and adaptability as the protocol evolves. MultiVault[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#multivault "Direct link to MultiVault") -------------------------------------------------------------------------------------------------------------------------------------- ### Atom & Triple Creation Fees[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#atom--triple-creation-fees "Direct link to Atom & Triple Creation Fees") The following fixed fees are applied when creating atoms and triples within the MultiVault: * **Atom Creation Fee:** 0.1 TRUST (1e17) * **Triple Creation Fee:** 0.1 TRUST (1e17) ### Deposit & Withdrawal Fees & Minimums[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#deposit--withdrawal-fees--minimums "Direct link to Deposit & Withdrawal Fees & Minimums") When depositing into an atom or triple, a minimum amount of TRUST is required: * **Minimum Deposit:** 0.01 TRUST (1e16) The percentage-based fees are applied to the total TRUST being deposited/withdrawn after accounting for fixed costs: * **Entry Fee:** 50 (0.5% of deposit) * **Exit Fee:** 75 (0.75% of deposit) * **Protocol Fee:** 125 (1.25% of deposit) * **Atom Deposit Fraction Fee:** 90 (0.9% of deposit into atom from triple)\* \* _This fee is only applied when depositing into a triple, and a portion of the deposit is allocated to the underlying atoms._ **The percentage fees are calculated using a denominator of 10,000.** For example, if a user deposits 100 TRUST into an atom, the entry fee would be calculated as follows: * `Entry Fee = (50 / 10,000) * 100 TRUST = 0.5 TRUST` * `Protocol Fee = (125 / 10,000) * 100 TRUST = 1.25 TRUST` The total fees for 100 TRUST deposit would be 0.5 TRUST (entry fee) + 1.25 TRUST (protocol fee) = 1.75 TRUST. ### Low-Level Configuration Parameters[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#low-level-configuration-parameters "Direct link to Low-Level Configuration Parameters") The Intuition Smart Contracts also include several low-level configuration parameters that can be adjusted by governance to fine-tune the protocol's behavior. These parameters include: * **Fee Denominator:** 10000 * **Minimum Shares** : 1e6 (1,000,000 WEI) * **Atom Data Max Length:** 1000 TrustBonding & EmissionsController[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#trustbonding--emissionscontroller "Direct link to TrustBonding & EmissionsController") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The TrustBonding, BaseEmissionsController and SatelliteEmissionsController all share the same configuration parameters for emissions. This allows for a consistent emission schedule across the protocol, even though new TRUST tokens are minted on the Base (8453) network and released on the Intuition (1155) network. * **Emissions Per Epoch:** 2,884,615.3846 (approx 2.88 million TRUST every two weeks for the first year) * **Emissions Start Timestamp:** 1762268400 (Tues November 4, 2025 10:00:00 EST) * **Emissions Length:** 1209600 (Two Weeks) * **Emissions Reduction Points:** 1000 (10%) * **Emissions Reduction Cliff:** 26 (1 year i.e. two weeks x 26)\* \* _The emissions reduction cliff indicates that after every 26 emission periods (i.e. every year), the emissions will reduce by the specified reduction points (10%). For example, if the initial emissions are 1000 TRUST per period, after one year (26 periods), the emissions will reduce to 900 TRUST per period._ OffsetProgressiveCurve[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#offsetprogressivecurve "Direct link to OffsetProgressiveCurve") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The Offset Progressive Curve is used to calculate the amount of shares minted when a user deposits. The curve is defined by the following parameters: * **Offset:** 1e17 * **Slope:** 3e19 The OffsetProgressiveCurve parameters are fixed and cannot be changed by governance. * [MultiVault](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#multivault) * [Atom & Triple Creation Fees](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#atom--triple-creation-fees) * [Deposit & Withdrawal Fees & Minimums](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#deposit--withdrawal-fees--minimums) * [Low-Level Configuration Parameters](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#low-level-configuration-parameters) * [TrustBonding & EmissionsController](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#trustbonding--emissionscontroller) * [OffsetProgressiveCurve](https://www.docs.intuition.systems/docs/intuition-smart-contracts/configuration#offsetprogressivecurve) --- # Deployments | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#__docusaurus_skipToContent_fallback) On this page The Intuition protocol contracts are deployed on both the Base Mainnet and the Intuition Layer 3 network, as well as their respective testnets. Below are the details of the deployed contracts, including their addresses and network configurations. Mainnet[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#mainnet "Direct link to Mainnet") --------------------------------------------------------------------------------------------------------------------------- ### Base Mainnet[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#base-mainnet "Direct link to Base Mainnet") | Contract | Address | | --- | --- | | Trust (ERC20) | 0x6cd905dF2Ed214b22e0d48FF17CD4200C1C6d8A3 | ### Intuition Mainnet (L3)[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#intuition-mainnet-l3 "Direct link to Intuition Mainnet (L3)") | Contract Name | Address | | --- | --- | | WrappedTrust | 0x81cFb09cb44f7184Ad934C09F82000701A4bF672 | | Upgrades TimelockController | 0x321e5d4b20158648dFd1f360A79CAFc97190bAd1 | | Parameters TimelockController | 0x71b0F1ABebC2DaA0b7B5C3f9b72FAa1cd9F35FEA | | MultiVault | 0x6E35cF57A41fA15eA0EaE9C33e751b01A784Fe7e | | AtomWalletFactory | 0x33827373a7D1c7C78a01094071C2f6CE74253B9B | | AtomWalletBeacon | 0xC23cD55CF924b3FE4b97deAA0EAF222a5082A1FF | | AtomWarden | 0x98C9BCecf318d0D1409Bf81Ea3551b629fAEC165 | | SatelliteEmissionsController | 0x73B8819f9b157BE42172E3866fB0Ba0d5fA0A5c6 | | TrustBonding | 0x635bBD1367B66E7B16a21D6E5A63C812fFC00617 | | BondingCurveRegistry | 0xd0E488Fb32130232527eedEB72f8cE2BFC0F9930 | | LinearCurve | 0xc3eFD5471dc63d74639725f381f9686e3F264366 | | OffsetProgressiveCurve | 0x23afF95153aa88D28B9B97Ba97629E05D5fD335d | | Multicall3 | 0xcA11bde05977b3631167028862bE2a173976CA11 | | EntryPoint | 0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108 | | SafeSingletonFactory | 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 | Testnet[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#testnet "Direct link to Testnet") --------------------------------------------------------------------------------------------------------------------------- ### Base Sepolia Testnet[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#base-sepolia-testnet "Direct link to Base Sepolia Testnet") | Contract Name | Address | | --- | --- | | TestTrust | 0xA54b4E6e356b963Ee00d1C947f478d9194a1a210 | | Upgrades TimelockController | 0x9099BC9fd63B01F94528B60CEEB336C679eb6d52 | | BaseEmissionsController | 0xC14773Aae24aA60CB8F261995405C28f6D742DCf | ### Intuition Testnet (L3)[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#intuition-testnet-l3 "Direct link to Intuition Testnet (L3)") | Contract Name | Address | | --- | --- | | WrappedTrust | 0xDE80b6EE63f7D809427CA350e30093F436A0fe35 | | Upgrades TimelockController | 0x59B7EaB1cFA47F8E61606aDf79a6b7B5bBF1aF26 | | Parameters TimelockController | 0xcCB113bfFf493d80F32Fb799Dca23686a04302A7 | | MultiVault | 0x2Ece8D4dEdcB9918A398528f3fa4688b1d2CAB91 | | AtomWalletFactory | 0xa4e96c6dB8Dd3314c64bF9d0E845A4905a8705d4 | | AtomWalletBeacon | 0x4B0aC884843576dBA0B0fda925f202aB8b546E33 | | AtomWarden | 0x040B7760EFDEd7e933CFf419224b57DFB9Eb4488 | | SatelliteEmissionsController | 0xD3be4d1E56866b98f30Ae6C326F14EF9c6ffBBDF | | TrustBonding | 0x75dD32b522c89566265eA32ecb50b4Fc4d00ADc7 | | BondingCurveRegistry | 0x2AFC4949Dd3664219AA2c20133771658E93892A1 | | LinearCurve | 0x6df5eecd9B14E31C98A027b8634876E4805F71B0 | | OffsetProgressiveCurve | 0xE65EcaAF5964aC0d94459A66A59A8B9eBCE42CbB | | Multicall3 | 0xcA11bde05977b3631167028862bE2a173976CA11 | | EntryPoint | 0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108 | Network Details[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#network-details "Direct link to Network Details") --------------------------------------------------------------------------------------------------------------------------------------------------- ### Intuition Mainnet Configuration[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#intuition-mainnet-configuration "Direct link to Intuition Mainnet Configuration") * **Chain ID**: 1155 * **RPC URL**: `https://rpc.intuition.systems` * **WebSocket**: `wss://rpc.intuition.systems` * **Explorer**: `https://explorer.intuition.systems/` * **Native Token**: $TRUST ### Intuition Testnet Configuration[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#intuition-testnet-configuration "Direct link to Intuition Testnet Configuration") * **Chain ID**: 13579 * **RPC URL**: `https://testnet.rpc.intuition.systems` * **WebSocket**: `wss://testnet.rpc.intuition.systems` * **Explorer**: `https://testnet.explorer.intuition.systems/` * **Native Token**: $tTRUST ### Base Sepolia Configuration[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#base-sepolia-configuration "Direct link to Base Sepolia Configuration") * **Chain ID**: 84532 * **RPC URL**: `https://sepolia.base.org` * **Explorer**: `https://sepolia.basescan.org` * **Native Token**: ETH ### Base Sepolia Configuration[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#base-sepolia-configuration-1 "Direct link to Base Sepolia Configuration") * **Chain ID**: 8453 * **RPC URL**: `https://mainnet.base.org` * **Explorer**: `https://basescan.org` * **Native Token**: ETH Verified Contracts[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#verified-contracts "Direct link to Verified Contracts") ------------------------------------------------------------------------------------------------------------------------------------------------------------ All deployed contracts are verified on their respective block explorers. You can view the source code and interact with the contracts directly through the explorer interfaces. Contract ABIs[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#contract-abis "Direct link to Contract ABIs") --------------------------------------------------------------------------------------------------------------------------------------------- Contract ABIs can be found in the following locations: * **npm package**: `@0xintuition/protocol` * **GitHub**: [0xIntuition/intuition-contracts-v2](https://github.com/0xIntuition/intuition-contracts-v2/tree/main/abis) * **Block Explorer**: Available on verified contract pages * [Mainnet](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#mainnet) * [Base Mainnet](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#base-mainnet) * [Intuition Mainnet (L3)](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#intuition-mainnet-l3) * [Testnet](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#testnet) * [Base Sepolia Testnet](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#base-sepolia-testnet) * [Intuition Testnet (L3)](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#intuition-testnet-l3) * [Network Details](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#network-details) * [Intuition Mainnet Configuration](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#intuition-mainnet-configuration) * [Intuition Testnet Configuration](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#intuition-testnet-configuration) * [Base Sepolia Configuration](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#base-sepolia-configuration) * [Base Sepolia Configuration](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#base-sepolia-configuration-1) * [Verified Contracts](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#verified-contracts) * [Contract ABIs](https://www.docs.intuition.systems/docs/intuition-smart-contracts/deployments#contract-abis) --- # TrustBonding.sol | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#__docusaurus_skipToContent_fallback) On this page The TrustBonding contract is the primary smart contract for bonding/staking of TRUST tokens within the Intuition protocol. Responsible for managing emissions of new TRUST tokens for various stakeholders, including atom creators, triple creators, and other participants in the ecosystem. ### Wrapped Trust (wTRUST)[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#wrapped-trust-wtrust "Direct link to Wrapped Trust (wTRUST)") The TrustBonding contract requires users to wrap their TRUST tokens into Wrapped TRUST (wTRUST) before locking them in the voting escrow. This wrapping process is handled by the `WrappedTrust` contract, which allows users to deposit TRUST tokens and receive an equivalent amount of wTRUST tokens. ### Voting Escrow (veTRUST)[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#voting-escrow-vetrust "Direct link to Voting Escrow (veTRUST)") The TrustBonding contract inherits from the popular Voting Escrow mechanism, allowing users to lock their TRUST tokens for a specified period in exchange for veTRUST tokens. These veTRUST tokens represent voting power and can be used to influence governance decisions within the Intuition protocol. The voting escrow mechanism is implemented using the `VotingEscrow` contract, which provides functions for creating locks, increasing lock amounts, and extending lock durations. Originated from Curve Finance's veCRV model, originally written in Vyper, the Voting Escrow contract has been adapted to Solidity for use in the Intuition protocol and forked from the Stargate DAO's [implementation](https://github.com/stargate-protocol/stargate-dao/blob/main/contracts/VotingEscrow.sol) . Smart Contract Writes[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#smart-contract-writes "Direct link to Smart Contract Writes") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Creating Locks[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#creating-locks "Direct link to Creating Locks") Users can create a new lock by calling the `create_lock` function, specifying the amount of Wrapped TRUST tokens to lock and the duration of the lock. function create_lock(uint256 _value, uint256 _unlock_time) external nonReentrant onlyUserOrWhitelist notUnlocked { // Lock creation logic} ### Increasing Lock Amount[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#increasing-lock-amount "Direct link to Increasing Lock Amount") Users can increase the amount of Wrapped TRUST tokens in an existing lock by calling the `increase_amount` function. function increase_amount(uint256 _value) external nonReentrant onlyUserOrWhitelist notUnlocked { // Lock amount increase logic} ### Increasing Lock Duration[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#increasing-lock-duration "Direct link to Increasing Lock Duration") Users can extend the duration of an existing lock by calling the `increase_unlock_time` function. function increase_unlock_time(uint256 _unlock_time) external nonReentrant onlyUserOrWhitelist notUnlocked { // Lock duration extension logic} ### Increase Amount and Duration[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#increase-amount-and-duration "Direct link to Increase Amount and Duration") Users can simultaneously increase the amount of Wrapped TRUST tokens and extend the duration of an existing lock by calling the `increase_amount_and_duration` function. function increase_amount_and_duration(uint256 _value, uint256 _unlock_time) external nonRentrant onlyUserOrWhitelist notUnlocked { // Lock amount and duration increase logic} ### Withdraw[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#withdraw "Direct link to Withdraw") Once the lock period has expired, users can withdraw their locked Wrapped TRUST tokens by calling the `withdraw` function. function withdraw() external nonReentrant onlyUserOrWhitelist { // Withdrawal logic} Smart Contract Reads[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#smart-contract-reads "Direct link to Smart Contract Reads") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Balance Of[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#balance-of "Direct link to Balance Of") The `balanceOf` function returns the voting power of a specific address at a given timestamp. function balanceOf(address _addr) external view returns (uint256) { // Balance calculation logic} ### Balance Of At Timestamp[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#balance-of-at-timestamp "Direct link to Balance Of At Timestamp") The `balanceOfAtT` function returns the voting power of a specific address at a given timestamp. function balanceOfAt(address _addr, uint256 _t) external view returns (uint256) { // Balance calculation logic} ### Total Supply[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#total-supply "Direct link to Total Supply") The `totalSupply` function returns the total voting power in the system at a given timestamp. function totalSupply() external view returns (uint256) { // Total supply calculation logic} ### Total Supply At Timestamp[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#total-supply-at-timestamp "Direct link to Total Supply At Timestamp") The `totalSupplyAtT` function returns the total voting power in the system at a given timestamp. function totalSupplyAtT(uint256 t) external view returns (uint256) { // Total supply calculation logic} Events[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#events "Direct link to Events") -------------------------------------------------------------------------------------------------------------------------- ### Rewards Claimed[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#rewards-claimed "Direct link to Rewards Claimed") The `RewardsClaimed` event is emitted when a user claims their rewards. event RewardsClaimed(address indexed user, address indexed recipient, uint256 amount); Additional Resources[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#additional-resources "Direct link to Additional Resources") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- For more detailed information on the MultiVault contract and its functions, please refer to the [Intuition Smart Contract V2 repository](https://github.com/0xIntuition/intuition-contracts-v2) . * [Wrapped Trust (wTRUST)](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#wrapped-trust-wtrust) * [Voting Escrow (veTRUST)](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#voting-escrow-vetrust) * [Smart Contract Writes](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#smart-contract-writes) * [Creating Locks](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#creating-locks) * [Increasing Lock Amount](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#increasing-lock-amount) * [Increasing Lock Duration](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#increasing-lock-duration) * [Increase Amount and Duration](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#increase-amount-and-duration) * [Withdraw](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#withdraw) * [Smart Contract Reads](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#smart-contract-reads) * [Balance Of](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#balance-of) * [Balance Of At Timestamp](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#balance-of-at-timestamp) * [Total Supply](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#total-supply) * [Total Supply At Timestamp](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#total-supply-at-timestamp) * [Events](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#events) * [Rewards Claimed](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#rewards-claimed) * [Additional Resources](https://www.docs.intuition.systems/docs/intuition-smart-contracts/trust-bonding#additional-resources) --- # Community & Support | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/resources/community-and-support#__docusaurus_skipToContent_fallback) On this page Connect with the Intuition community, get help, and stay updated with the latest developments. Official Channels[​](https://www.docs.intuition.systems/docs/resources/community-and-support#official-channels "Direct link to Official Channels") --------------------------------------------------------------------------------------------------------------------------------------------------- [Follow us on X for real-time updates, announcements, and community highlights.](https://x.com/0xintuition) [Join our Discord community for discussions, support, and real-time collaboration.](https://discord.com/invite/0xintuition) [Watch video recordings, tutorials, and community content on our YouTube channel.](https://www.youtube.com/@0xIntuition) [Read our latest articles, insights, and technical deep-dives on Medium.](https://medium.com/0xintuition) Support Channels[​](https://www.docs.intuition.systems/docs/resources/community-and-support#support-channels "Direct link to Support Channels") ------------------------------------------------------------------------------------------------------------------------------------------------ [### General Support\ \ Get general support and assistance for questions about Intuition.](mailto:support@intuition.systems) [### Website\ \ Visit our official website for the latest updates, information, and resources.](https://www.intuition.systems/) Feedback & Improvement[​](https://www.docs.intuition.systems/docs/resources/community-and-support#feedback--improvement "Direct link to Feedback & Improvement") ----------------------------------------------------------------------------------------------------------------------------------------------------------------- [### GitHub\ \ Contribute to our open-source projects, report issues, and suggest improvements.](https://github.com/0xintuition) [### Feedback\ \ Share your feedback, suggestions, and ideas to help improve Intuition.](mailto:feedback@intuition.systems) * [Official Channels](https://www.docs.intuition.systems/docs/resources/community-and-support#official-channels) * [Support Channels](https://www.docs.intuition.systems/docs/resources/community-and-support#support-channels) * [Feedback & Improvement](https://www.docs.intuition.systems/docs/resources/community-and-support#feedback--improvement) --- # Migration Guide | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#__docusaurus_skipToContent_fallback) On this page Overview[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#overview "Direct link to Overview") -------------------------------------------------------------------------------------------------------------------- | Environment | Endpoint | | --- | --- | | **Intuition Testnet** | `https://testnet.intuition.sh/v1/graphql` | ⚠️ Breaking Changes[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#%EF%B8%8F-breaking-changes "Direct link to ⚠️ Breaking Changes") ------------------------------------------------------------------------------------------------------------------------------------------------------------ ### 1\. ID Field Type Changes: Numeric β†’ String[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#1-id-field-type-changes-numeric--string "Direct link to 1. ID Field Type Changes: Numeric β†’ String") **CRITICAL IMPACT** - All existing queries and mutations using these fields will break. #### Core Entity ID Changes[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#core-entity-id-changes "Direct link to Core Entity ID Changes") | Entity | Field | Old Type | New Type | | --- | --- | --- | --- | | `accounts` | `atom_id` | `numeric` | `String` | | `atoms` | `term_id` | `numeric!` | `String!` | | `atoms` | `value_id` | `numeric` | `String` | | `atom_values` | `id` | `numeric!` | `String!` | | `atom_values` | `book_id` | `numeric` | `String` | | `atom_values` | `byte_object_id` | `numeric` | `String` | | `atom_values` | `json_object_id` | `numeric` | `String` | | `atom_values` | `organization_id` | `numeric` | `String` | | `atom_values` | `person_id` | `numeric` | `String` | | `atom_values` | `text_object_id` | `numeric` | `String` | | `atom_values` | `thing_id` | `numeric` | `String` | | `vaults` | `term_id` | `numeric!` | `String!` | #### Entity Primary ID Changes[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#entity-primary-id-changes "Direct link to Entity Primary ID Changes") All primary `id` fields changed from `numeric!` to `String!`: * `books` * `byte_object` * `caip10` * `json_objects` * `organizations` * `persons` * `text_objects` * `things` * `terms` ### 2\. Removed Aggregate Fields[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#2-removed-aggregate-fields "Direct link to 2. Removed Aggregate Fields") **MEDIUM IMPACT** - Statistical queries will break for entities with String IDs. Removed aggregate field types (no longer available for statistical operations): * `*_avg_fields` for: accounts, atom\_values, books, byte\_object, json\_objects, organizations, persons, text\_objects, things * `*_stddev_fields`, `*_stddev_pop_fields`, `*_stddev_samp_fields` * `*_sum_fields`, `*_var_pop_fields`, `*_var_samp_fields`, `*_variance_fields` πŸ†• New Features[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#-new-features "Direct link to πŸ†• New Features") --------------------------------------------------------------------------------------------------------------------------------------- ### 1\. New Optional Fields[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#1-new-optional-fields "Direct link to 1. New Optional Fields") #### atom\_values[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#atom_values "Direct link to atom_values") * `caip10_id: String` - Link to CAIP-10 identifiers ### 2\. New Entity Types[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#2-new-entity-types "Direct link to 2. New Entity Types") Statistics and analytics entities: * `statHours` - Hourly statistics aggregation * `term_total_state_changes` - Term state change tracking * `term_total_state_change_stats_daily` - Daily aggregated statistics * `term_total_state_change_stats_hourly` - Hourly aggregated statistics * `term_total_state_change_stats_monthly` - Monthly aggregated statistics * `term_total_state_change_stats_weekly` - Weekly aggregated statistics ### 3\. New Scalar Types[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#3-new-scalar-types "Direct link to 3. New Scalar Types") * `atom_resolving_status` - Custom scalar for atom resolution states * `vault_type` - Custom scalar for vault type definitions πŸ”§ Migration Checklist[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#-migration-checklist "Direct link to πŸ”§ Migration Checklist") ------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Client Application Updates[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#client-application-updates "Direct link to Client Application Updates") #### 1\. Query/Mutation Updates[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#1-querymutation-updates "Direct link to 1. Query/Mutation Updates") * [ ] Update all numeric ID field references to String * [ ] Remove or update queries using deprecated aggregate fields * [ ] Test all existing GraphQL operations #### 2\. Code Generation Updates[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#2-code-generation-updates "Direct link to 2. Code Generation Updates") * [ ] Regenerate TypeScript types * [ ] Update GraphQL codegen configuration * [ ] Verify generated types match new schema #### 3\. Variable Updates[​](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#3-variable-updates "Direct link to 3. Variable Updates") # OLDquery GetAtom($termId: numeric!) { atoms(where: { term_id: { _eq: $termId } }) { term_id value_id }}# NEWquery GetAtom($termId: String!) { atoms(where: { term_id: { _eq: $termId } }) { term_id value_id raw_data resolving_status }} * [Overview](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#overview) * [⚠️ Breaking Changes](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#%EF%B8%8F-breaking-changes) * [1\. ID Field Type Changes: Numeric β†’ String](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#1-id-field-type-changes-numeric--string) * [2\. Removed Aggregate Fields](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#2-removed-aggregate-fields) * [πŸ†• New Features](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#-new-features) * [1\. New Optional Fields](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#1-new-optional-fields) * [2\. New Entity Types](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#2-new-entity-types) * [3\. New Scalar Types](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#3-new-scalar-types) * [πŸ”§ Migration Checklist](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#-migration-checklist) * [Client Application Updates](https://www.docs.intuition.systems/docs/graphql-api/migration-guide#client-application-updates) --- # Capturing Signal | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#__docusaurus_skipToContent_fallback) On this page This guide covers advanced techniques for capturing signal from users and interpreting signal data within the Intuition ecosystem. Signal Capture Mechanisms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#signal-capture-mechanisms "Direct link to Signal Capture Mechanisms") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Direct Staking[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#direct-staking "Direct link to Direct Staking") Users explicitly deposit tokens to signal support or opposition: // Deposit into an Atom vaultawait deposit(atomVaultId, amount)// Deposit into a Triple vault (positive side)await deposit(tripleVaultIdFor, amount)// Deposit into counter-triple vault (negative side)await deposit(counterTripleVaultIdAgainst, amount) ### Continuous Markets[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#continuous-markets "Direct link to Continuous Markets") Staking is not a one-time vote but a continuous market: * Add more stake to increase your signal * Withdraw stake (with potential rewards or penalties) * Counter-stake on opposite sides for Triples * Market "odds" constantly adjust to reflect aggregated beliefs Interpreting Signal Strength[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#interpreting-signal-strength "Direct link to Interpreting Signal Strength") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Analyzing TVL (Total Value Locked)[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#analyzing-tvl-total-value-locked "Direct link to Analyzing TVL (Total Value Locked)") Higher TVL generally indicates: * Greater community interest * More economic backing * Higher perceived relevance or truth * Stronger consensus (for Triples) ### Consensus Metrics[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#consensus-metrics "Direct link to Consensus Metrics") For Triples, analyze the balance between positive and negative vaults: const consensusScore = positiveStake / (positiveStake + negativeStake)// Result between 0 and 1// > 0.5 = net positive consensus// < 0.5 = net negative consensus// β‰ˆ 0.5 = disputed/uncertain ### Attestor Quality[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#attestor-quality "Direct link to Attestor Quality") Consider not just the amount staked, but who is staking: * Number of unique attestors * Reputation of attestors * Historical accuracy of attestors * Domain expertise of attestors Advanced Applications[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#advanced-applications "Direct link to Advanced Applications") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Following Lists[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#following-lists "Direct link to Following Lists") Instead of creating 1,000 separate "following" claims, use a single Triple: [User X] - [following] - [Creator Y] Multiple users adjust their balances on this Triple to express following. To see all followers, examine who has positive balances. ### Tiered Preferences[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#tiered-preferences "Direct link to Tiered Preferences") Users can express varying levels of interest by staking different amounts: // Strong supportawait deposit(tripleVaultId, 100)// Moderate support await deposit(tripleVaultId, 10)// Weak supportawait deposit(tripleVaultId, 1) ### Prediction Markets[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#prediction-markets "Direct link to Prediction Markets") Signal can function as a prediction market mechanism where: * Early accurate signals are rewarded * Later participants pay premium prices * Market prices reflect collective probability assessment Economic Dynamics[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#economic-dynamics "Direct link to Economic Dynamics") ------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Fee Distribution[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#fee-distribution "Direct link to Fee Distribution") When someone stakes on an Atom or Triple: * Existing stakers earn fees from the new deposit * Fee amount depends on bonding curve position * Creates incentive to identify valuable data early ### Self-Refinement[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#self-refinement "Direct link to Self-Refinement") The economic model drives system improvement: 1. Stakers who identify valuable data earn more rewards 2. Stakers on unused data earn less 3. Useful information becomes economically advantageous to support 4. Irrelevant claims naturally receive less stake * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#next-steps "Direct link to Next Steps") ---------------------------------------------------------------------------------------------------------------------------------------------- * [Signal Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards) - Understand fee and reward calculations * [Signal Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) - Review signal basics * [Signal Capture Mechanisms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#signal-capture-mechanisms) * [Direct Staking](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#direct-staking) * [Continuous Markets](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#continuous-markets) * [Interpreting Signal Strength](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#interpreting-signal-strength) * [Analyzing TVL (Total Value Locked)](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#analyzing-tvl-total-value-locked) * [Consensus Metrics](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#consensus-metrics) * [Attestor Quality](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#attestor-quality) * [Advanced Applications](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#advanced-applications) * [Following Lists](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#following-lists) * [Tiered Preferences](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#tiered-preferences) * [Prediction Markets](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#prediction-markets) * [Economic Dynamics](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#economic-dynamics) * [Fee Distribution](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#fee-distribution) * [Self-Refinement](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#self-refinement) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing#next-steps) --- # Overview | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-smart-contracts#__docusaurus_skipToContent_fallback) Intuition's smart contracts are central to the user experience, handling critical onchain activities such as the creation of Atoms (also known as Identities) and Triples (also known as Claims), as well as the staking and rewards. MultiVault ========== The MultiVault contract is the core component of Intuition's architecture, responsible for managing the creation of Atoms/Triples and handling deposits, redemptions, and share distributions. It supports multiple bonding curve implementations through a registry system. * **Creation**: Users can create Atoms and Triples * **Deposits**: Users can deposit ETH to receive shares in atoms/triples * **Redemptions**: Users can redeem shares for ETH * **Multi-Vault**: Supports multiple bonding curve implementations * **Share Distribution**: Manages the minting and burning of shares * **Fee Collection**: Collects small fees to maintain the system Trust Token =========== The Trust Token contract is an ERC-20 compliant token that serves as the native utility token within the Intuition ecosystem. It is used for deposits, staking, governance, and accessing various features of the platform. * **ERC-20 Compliance**: Fully compliant with the ERC-20 standard * **Minting and Burning**: Controlled minting and burning of tokens * **Transfers**: Standard token transfer functionality The Trust Token contract is **deployed on Base** and is the **native gas token on the Intuition Network L3 chain**. Wrapped Trust ============= The Wrapped Trust contract is an ERC-20 compliant token that lives on the Intuition Network L3 chain. After users bridge their Trust tokens from Base to the Intuition Network L3 chain, they can receive Wrapped Trust tokens by depositing Trust tokens into the Wrapped Trust contract. **Wrapped Trust tokens can be used for staking in the Trust Bonding contract.** Trust Bonding ============= The Trust Bonding contract is a smart contract introduced in V2. Inheriting from the Curve VotingEscrow contract, it enables staking of Wrapped Trust to earn rewards and participate in governance. Key features include: * **Staking**: Users can stake Wrapped Trust to earn rewards * **Locking**: Users can lock their stake for a specified duration to increase voting power * **Rewards**: Users earn rewards based on their stake and lock duration * **Governance**: Stakers can participate in governance decisions Bonding Curve Registry ====================== The Bonding Curve Registry contract is a registry for bonding curve implementations. It allows the MultiVault contract to look up and use different bonding curve implementations. Key features include: * **Registration**: Developers can register new bonding curve implementations * **Lookup**: The MultiVault contract can look up bonding curve implementations by ID * **Management**: The registry can be managed by the contract owner BaseEmissionsController ======================= The BaseEmissionsController contract is responsible for managing the emissions of Trust tokens. It controls the rate at which new Trust tokens are minted and distributed to stakers in the Trust Bonding contract. Key features include: * **Emission Rate**: Controls the rate of Trust token emissions * **Distribution**: Distributes newly minted Trust tokens to the SatelliteEmissionsController * **Bridging**: Uses the Caldera MetaLayer protocol to bridge emissions to the Intuition Network L3 chain SatelliteEmissionsController ============================ The SatelliteEmissionsController contract is responsible for managing the emissions of Trust tokens on the Intuition Network L3 chain. It receives emissions from the BaseEmissionsController and distributes them to stakers via the Trust Bonding contract. Key features include: * **Receiving Emissions**: Receives Trust token emissions from the BaseEmissionsController * **Distribution**: Distributes Trust tokens to stakers via the Trust Bonding contract * **Bridging/Burning**: Uses the Caldera MetaLayer protocol to bridge/burn emissions back to Base --- # FAQ | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/resources/faq#__docusaurus_skipToContent_fallback) On this page This page is organized into expandable sections for easy navigation. Click on any section below to explore the questions within that category. **Getting Started** - Basic information about Intuition and how to begin Getting Started[​](https://www.docs.intuition.systems/docs/resources/faq#getting-started "Direct link to Getting Started") --------------------------------------------------------------------------------------------------------------------------- ### What is Intuition?[​](https://www.docs.intuition.systems/docs/resources/faq#what-is-intuition "Direct link to What is Intuition?") Intuition is a decentralized protocol that enables the creation of trustful interactions through atomic primitives. It provides a foundation for building decentralized applications that can establish and maintain trust between parties without centralized intermediaries. The protocol uses atomic primitives (atoms, triples, signals, and bonding curves) to create trustful interactions. These primitives can be combined to build complex decentralized applications that maintain trust through cryptographic proofs and economic incentives. ### How do I get started with Intuition?[​](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-get-started-with-intuition "Direct link to How do I get started with Intuition?") **Step 1: Read the Documentation** Start with the [Getting Started](https://www.docs.intuition.systems/docs/getting-started/overview) guides to understand the core concepts. **Step 2: Connect to Testnet** Visit the [Intuition Hub](https://intuition-testnet.hub.caldera.xyz/) to access the testnet and get your development environment set up. **Step 3: Set up Development Environment** Install the necessary SDKs and tools for your preferred programming language. **Step 4: Build Your First App** Follow the tutorials to create a simple application using Intuition primitives. **Step 5: Join the Community** Connect with other developers and get support through our community channels. ### What are the main components of Intuition?[​](https://www.docs.intuition.systems/docs/resources/faq#what-are-the-main-components-of-intuition "Direct link to What are the main components of Intuition?") **Atoms**: The basic units of trust and reputation - unique identifiers for any entity (people, concepts, products) **Triples**: Relationships between atoms that encode trust - structured as Subject β†’ Predicate β†’ Object **Signals**: Mechanisms for updating trust relationships - actions that express intent, belief, or support **Bonding Curves**: Economic models for token pricing and liquidity - automated market making for application tokens **Development & Integration** - Programming languages, integration, and deployment Development & Integration[​](https://www.docs.intuition.systems/docs/resources/faq#development--integration "Direct link to Development & Integration") -------------------------------------------------------------------------------------------------------------------------------------------------------- ### What programming languages are supported?[​](https://www.docs.intuition.systems/docs/resources/faq#what-programming-languages-are-supported "Direct link to What programming languages are supported?") Intuition supports multiple programming languages through various SDKs: * **JavaScript/TypeScript**: Official SDK with full feature support * **Python**: Python SDK for backend development * **Rust**: Low-level SDK for performance-critical applications * **Go**: Go SDK for server-side applications ### How do I connect to the Intuition testnet?[​](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-connect-to-the-intuition-testnet "Direct link to How do I connect to the Intuition testnet?") **Step 1: Access the Hub** Visit the [Intuition Hub](https://intuition-testnet.hub.caldera.xyz/) for centralized access to all Intuition L3 network services. **Step 2: Configure Your Wallet** Add the Intuition testnet to your wallet using the network details provided in the hub dashboard. The hub will display the current Chain ID and RPC URL. **Step 3: Get Test Tokens** Use the built-in faucet available in the hub to obtain test tokens for development and testing. **Step 4: Explore Services** Access the Bridge for cross-chain transfers, Explorer for blockchain exploration, and monitor network status through the status page. ### How do I integrate Intuition into my existing app?[​](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-integrate-intuition-into-my-existing-app "Direct link to How do I integrate Intuition into my existing app?") **Step 1: Install SDK** Add the appropriate Intuition SDK to your project using your package manager. **Step 2: Configure Connection** Set up connection to the Intuition testnet first using the network details from the [Hub](https://intuition-testnet.hub.caldera.xyz/) . **Step 3: Implement Primitives** Use atoms, triples, signals, and bonding curves in your application logic. **Step 4: Test Integration** Thoroughly test your integration on testnet before production deployment. ### How do I deploy an application?[​](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-deploy-an-application "Direct link to How do I deploy an application?") **Step 1: Develop Your App** Build your application using Intuition primitives and follow best practices. **Step 2: Test on Testnet** Use the [Intuition testnet](https://intuition-testnet.hub.caldera.xyz/) to thoroughly test your application before mainnet deployment. Access all testnet services through the hub. **Step 3: Deploy Contracts** Deploy your smart contracts to the network using the appropriate deployment tools. Start with testnet deployment first. **Step 4: Launch Application** Make your application available to users and monitor its performance using the network monitoring tools. ### What are the best practices for building with Intuition?[​](https://www.docs.intuition.systems/docs/resources/faq#what-are-the-best-practices-for-building-with-intuition "Direct link to What are the best practices for building with Intuition?") **Start Simple**: Begin with basic primitives before building complex systems to understand the fundamentals. **Test Extensively**: Use the [Intuition testnet](https://intuition-testnet.hub.caldera.xyz/) for all development and testing to avoid costly mistakes. Access the full testing infrastructure through the hub. **Follow Security Guidelines**: Implement proper security measures and follow established patterns. **Document Your Code**: Maintain clear documentation for your applications to help other developers. **Monitor Applications**: Use the network monitoring tools to track your application's performance and catch issues early. **Economics & Rewards** - Token economics, bonding curves, and earning rewards Economics & Rewards[​](https://www.docs.intuition.systems/docs/resources/faq#economics--rewards "Direct link to Economics & Rewards") -------------------------------------------------------------------------------------------------------------------------------------- ### How does the token economics work?[​](https://www.docs.intuition.systems/docs/resources/faq#how-does-the-token-economics-work "Direct link to How does the token economics work?") Intuition uses a dual-token system: **INTUITION**: The main network token used for staking, governance, and network security. **Application Tokens**: Specific to individual applications for their economic models and bonding curves. The system provides automated market making and liquidity for application tokens, enabling dynamic pricing and efficient token distribution through bonding curves. ### How can I earn rewards?[​](https://www.docs.intuition.systems/docs/resources/faq#how-can-i-earn-rewards "Direct link to How can I earn rewards?") **Staking**: Stake INTUITION tokens to earn rewards and participate in network security. **Running Nodes**: Operate network nodes to earn block rewards and contribute to decentralization. **Building Applications**: Create successful applications that generate fees and provide value to users. **Contributing**: Participate in governance and development to help shape the protocol's future. ### What are bonding curves?[​](https://www.docs.intuition.systems/docs/resources/faq#what-are-bonding-curves "Direct link to What are bonding curves?") Bonding curves are mathematical functions that determine token pricing based on supply and demand. They provide: * **Automated Market Making**: Continuous liquidity without traditional market makers * **Dynamic Pricing**: Token prices that automatically adjust based on supply and demand * **Efficient Distribution**: Fair token distribution through mathematical models * **Liquidity Provision**: Built-in liquidity for application tokens **Troubleshooting & Support** - Common issues and getting help Troubleshooting & Support[​](https://www.docs.intuition.systems/docs/resources/faq#troubleshooting--support "Direct link to Troubleshooting & Support") -------------------------------------------------------------------------------------------------------------------------------------------------------- ### How do I handle errors and edge cases?[​](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-handle-errors-and-edge-cases "Direct link to How do I handle errors and edge cases?") **Implement Error Handling**: Add comprehensive error handling to your applications to gracefully handle failures. **Use Fallback Mechanisms**: Implement fallbacks for critical operations to ensure reliability. **Monitor Applications**: Set up monitoring and alerting for your applications to catch issues early. **Plan for Upgrades**: Design your applications to be upgradeable as the protocol evolves. ### What if I can't connect to the testnet?[​](https://www.docs.intuition.systems/docs/resources/faq#what-if-i-cant-connect-to-the-testnet "Direct link to What if I can't connect to the testnet?") If you're having trouble connecting to the Intuition testnet, try these troubleshooting steps: **Check Network Configuration** Verify that your wallet is configured with the correct network details from the [Hub dashboard](https://intuition-testnet.hub.caldera.xyz/) . The Chain ID and RPC URL should match exactly. **Check Network Status** Visit the network status page to see if there are any ongoing issues with the testnet services. **Clear Wallet Cache** Try clearing your wallet's cache or switching to a different RPC endpoint if multiple are available in the hub. **Check Firewall/VPN** Ensure your firewall or VPN isn't blocking connections to the testnet endpoints. ### What if my transaction fails?[​](https://www.docs.intuition.systems/docs/resources/faq#what-if-my-transaction-fails "Direct link to What if my transaction fails?") If your transaction fails, check your wallet to confirm whether your tokens have been returned. In most cases, failed transactions automatically result in the tokens being returned to your wallet. Common causes of transaction failures: * **Insufficient Gas**: Ensure you have enough gas for the transaction * **Network Congestion**: Try again during less busy periods * **Incorrect Parameters**: Double-check all transaction parameters before signing * **Network Issues**: Check the Hub for any ongoing L3 network problems ### How do I get help and support?[​](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-get-help-and-support "Direct link to How do I get help and support?") **Community Support**: Join our [Discord](https://discord.com/invite/0xintuition) for real-time help from the community. **Documentation**: Check our comprehensive [documentation](https://www.docs.intuition.systems/docs) for detailed guides and tutorials. **GitHub**: Report issues and contribute to the project on [GitHub](https://github.com/0xintuition) . **Email Support**: Contact us directly at [support@intuition.systems](mailto:support@intuition.systems) for technical assistance. **Use Cases & Contributing** - Applications and ecosystem participation Use Cases & Contributing[​](https://www.docs.intuition.systems/docs/resources/faq#use-cases--contributing "Direct link to Use Cases & Contributing") ----------------------------------------------------------------------------------------------------------------------------------------------------- ### What are the main use cases for Intuition?[​](https://www.docs.intuition.systems/docs/resources/faq#what-are-the-main-use-cases-for-intuition "Direct link to What are the main use cases for Intuition?") **Knowledge Curation**: Build applications that help users discover and verify information through community consensus. **Social Platforms**: Create decentralized social networks with built-in reputation and trust systems. **Trust & Reputation**: Develop verifiable reputation systems that work across platforms and applications. **Verification & QA**: Use collective intelligence to verify and validate any type of information or claim. **Prediction Markets**: Build prediction markets with built-in verification and community consensus. **Business & Professional Platforms**: Create platforms that verify professional credentials and facilitate trusted business relationships. ### How do I contribute to the Intuition ecosystem?[​](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-contribute-to-the-intuition-ecosystem "Direct link to How do I contribute to the Intuition ecosystem?") **Develop Applications**: Build applications that leverage Intuition's primitives and contribute to the ecosystem. **Improve Documentation**: Help improve our documentation by suggesting edits or contributing new guides. **Participate in Governance**: Stake tokens and participate in protocol governance decisions. **Report Issues**: Help improve the protocol by reporting bugs and suggesting improvements. **Community Building**: Help grow the community by answering questions and mentoring new developers. Need More Help?[​](https://www.docs.intuition.systems/docs/resources/faq#need-more-help "Direct link to Need More Help?") -------------------------------------------------------------------------------------------------------------------------- ### Can't find what you're looking for? We're here to help! Reach out to our community or support team for assistance. [Join Community](https://www.docs.intuition.systems/docs/resources/community-and-support) [Contact Support](mailto:support@intuition.systems) * [Getting Started](https://www.docs.intuition.systems/docs/resources/faq#getting-started) * [What is Intuition?](https://www.docs.intuition.systems/docs/resources/faq#what-is-intuition) * [How do I get started with Intuition?](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-get-started-with-intuition) * [What are the main components of Intuition?](https://www.docs.intuition.systems/docs/resources/faq#what-are-the-main-components-of-intuition) * [Development & Integration](https://www.docs.intuition.systems/docs/resources/faq#development--integration) * [What programming languages are supported?](https://www.docs.intuition.systems/docs/resources/faq#what-programming-languages-are-supported) * [How do I connect to the Intuition testnet?](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-connect-to-the-intuition-testnet) * [How do I integrate Intuition into my existing app?](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-integrate-intuition-into-my-existing-app) * [How do I deploy an application?](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-deploy-an-application) * [What are the best practices for building with Intuition?](https://www.docs.intuition.systems/docs/resources/faq#what-are-the-best-practices-for-building-with-intuition) * [Economics & Rewards](https://www.docs.intuition.systems/docs/resources/faq#economics--rewards) * [How does the token economics work?](https://www.docs.intuition.systems/docs/resources/faq#how-does-the-token-economics-work) * [How can I earn rewards?](https://www.docs.intuition.systems/docs/resources/faq#how-can-i-earn-rewards) * [What are bonding curves?](https://www.docs.intuition.systems/docs/resources/faq#what-are-bonding-curves) * [Troubleshooting & Support](https://www.docs.intuition.systems/docs/resources/faq#troubleshooting--support) * [How do I handle errors and edge cases?](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-handle-errors-and-edge-cases) * [What if I can't connect to the testnet?](https://www.docs.intuition.systems/docs/resources/faq#what-if-i-cant-connect-to-the-testnet) * [What if my transaction fails?](https://www.docs.intuition.systems/docs/resources/faq#what-if-my-transaction-fails) * [How do I get help and support?](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-get-help-and-support) * [Use Cases & Contributing](https://www.docs.intuition.systems/docs/resources/faq#use-cases--contributing) * [What are the main use cases for Intuition?](https://www.docs.intuition.systems/docs/resources/faq#what-are-the-main-use-cases-for-intuition) * [How do I contribute to the Intuition ecosystem?](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-contribute-to-the-intuition-ecosystem) * [Need More Help?](https://www.docs.intuition.systems/docs/resources/faq#need-more-help) --- # Introduction | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#__docusaurus_skipToContent_fallback) On this page The Intuition GraphQL API provides comprehensive access to the Intuition knowledge graph, including atoms (entities), triples (relationships), vaults (asset pools), and user positions. The API is powered by Hasura and offers rich querying capabilities with filtering, sorting, pagination, and aggregations. Public Endpoints[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#public-endpoints "Direct link to Public Endpoints") --------------------------------------------------------------------------------------------------------------------------------------------------------- No authentication required to access the GraphQL API: * **Mainnet**: `https://mainnet.intuition.sh/v1/graphql` * **Testnet**: `https://testnet.intuition.sh/v1/graphql` Interactive Explorers[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#interactive-explorers "Direct link to Interactive Explorers") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Explore the API interactively with Apollo Studio Sandbox: * [Mainnet Explorer](https://studio.apollographql.com/sandbox/explorer?endpoint=https%3A%2F%2Fmainnet.intuition.sh%2Fv1%2Fgraphql) * [Testnet Explorer](https://studio.apollographql.com/sandbox/explorer?endpoint=https%3A%2F%2Ftestnet.intuition.sh%2Fv1%2Fgraphql) Core Concepts[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#core-concepts "Direct link to Core Concepts") ------------------------------------------------------------------------------------------------------------------------------------------------ ### Atoms[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#atoms "Direct link to Atoms") **Atoms** are the fundamental entities in the Intuition knowledge graph. Each atom represents an identity, concept, or piece of data (e.g., a person, organization, tag, or blockchain address). ### Triples[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#triples "Direct link to Triples") **Triples** are statements that connect atoms in subject-predicate-object relationships. For example: `(Alice, knows, Bob)` or `(Document, hasTag, TypeScript)`. ### Vaults[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#vaults "Direct link to Vaults") **Vaults** are asset pools associated with atoms and triples. Users deposit assets into vaults and receive shares based on bonding curves. ### Positions[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#positions "Direct link to Positions") **Positions** represent user ownership (shares) in vaults. Each position tracks an account's shares in a specific vault. ### Accounts[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#accounts "Direct link to Accounts") **Accounts** are blockchain addresses participating in the protocol, including: * User wallets * Atom wallets (smart contract wallets for atoms) * Protocol vaults ### Deposits & Redemptions[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#deposits--redemptions "Direct link to Deposits & Redemptions") **Deposits** are transactions where users add assets to vaults and receive shares. **Redemptions** are the reverse: users burn shares to withdraw assets. ### Events[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#events "Direct link to Events") **Events** capture the complete on-chain event history, including deposits, redemptions, atom creation, triple creation, and more. ### Stats[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#stats "Direct link to Stats") **Stats** provide protocol-wide statistics and aggregated metrics. Key Features[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#key-features "Direct link to Key Features") --------------------------------------------------------------------------------------------------------------------------------------------- The Hasura-powered GraphQL schema provides: ### Powerful Filtering[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#powerful-filtering "Direct link to Powerful Filtering") Use boolean expressions to filter results with operators like `_eq`, `_neq`, `_gt`, `_gte`, `_lt`, `_lte`, `_in`, `_nin`, `_like`, `_ilike`, `_is_null`, `_and`, `_or`, and `_not`. ### Flexible Sorting[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#flexible-sorting "Direct link to Flexible Sorting") Sort results by multiple fields in ascending or descending order using the `order_by` parameter. ### Pagination[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#pagination "Direct link to Pagination") Efficiently paginate through large result sets using `limit` and `offset` parameters. ### Aggregations[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#aggregations "Direct link to Aggregations") Compute statistics like count, sum, average, min, max, standard deviation, and variance without fetching all nodes. ### Relationships[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#relationships "Direct link to Relationships") Navigate the knowledge graph through nested queries that follow relationships between atoms, triples, vaults, and positions. ### Primary Key Lookups[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#primary-key-lookups "Direct link to Primary Key Lookups") Directly fetch individual records by primary key for optimal performance. ### Real-time Subscriptions[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#real-time-subscriptions "Direct link to Real-time Subscriptions") Subscribe to real-time updates using cursor-based streaming for live data feeds. ### Database Functions[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#database-functions "Direct link to Database Functions") Leverage backend functions for complex queries like social graph traversal, semantic search, and position filtering. Use Cases[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#use-cases "Direct link to Use Cases") ------------------------------------------------------------------------------------------------------------------------------------ The GraphQL API enables a wide range of applications: * **Knowledge Graph Exploration**: Discover atoms, triples, and their relationships * **Social Feed Building**: Track positions and activities from followed accounts * **Analytics Dashboards**: Analyze trends, volumes, and statistics over time * **Position Monitoring**: Track user positions and vault performance * **Search Interfaces**: Implement global search across accounts, atoms, and triples * **Real-time Applications**: Build live dashboards with subscription-based updates Next Steps[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#next-steps "Direct link to Next Steps") --------------------------------------------------------------------------------------------------------------------------------------- * [Client Setup](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup) - Configure a GraphQL client in your preferred language * [Schema Reference](https://www.docs.intuition.systems/docs/graphql-api/getting-started/schema-reference) - Learn about schema features and introspection * [Query Patterns](https://www.docs.intuition.systems/docs/graphql-api/queries/atoms/single-atom) - Explore common query patterns Resources[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#resources "Direct link to Resources") ------------------------------------------------------------------------------------------------------------------------------------ * **GraphQL Official Docs**: [https://graphql.org/learn/](https://graphql.org/learn/) * **Hasura GraphQL Docs**: [https://hasura.io/docs/latest/queries/postgres/index/](https://hasura.io/docs/latest/queries/postgres/index/) * **Intuition Protocol Docs**: [https://docs.intuition.systems](https://docs.intuition.systems/) * [Public Endpoints](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#public-endpoints) * [Interactive Explorers](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#interactive-explorers) * [Core Concepts](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#core-concepts) * [Atoms](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#atoms) * [Triples](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#triples) * [Vaults](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#vaults) * [Positions](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#positions) * [Accounts](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#accounts) * [Deposits & Redemptions](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#deposits--redemptions) * [Events](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#events) * [Stats](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#stats) * [Key Features](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#key-features) * [Powerful Filtering](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#powerful-filtering) * [Flexible Sorting](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#flexible-sorting) * [Pagination](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#pagination) * [Aggregations](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#aggregations) * [Relationships](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#relationships) * [Primary Key Lookups](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#primary-key-lookups) * [Real-time Subscriptions](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#real-time-subscriptions) * [Database Functions](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#database-functions) * [Use Cases](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#use-cases) * [Next Steps](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#next-steps) * [Resources](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction#resources) --- # GraphQL NPM Package | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/npm-package#__docusaurus_skipToContent_fallback) On this page The Intuition GraphQL package provides a type-safe interface for interacting with the Intuition API. It functions as the core data fetching layer, supplying generated types and React Query hooks for easy integration with the semantic knowledge graph. Key Features[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#key-features "Direct link to Key Features") ---------------------------------------------------------------------------------------------------------------------------- * React Query hooks for data fetching * Type-safe data fetching * Error handling * Loading state * Pagination * Sorting * Filtering Installation[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#installation "Direct link to Installation") ---------------------------------------------------------------------------------------------------------------------------- Install the package using your preferred package manager: * npm * pnpm * yarn * bun npm install @0xintuition/graphql pnpm install @0xintuition/graphql yarn add @0xintuition/graphql bun install @0xintuition/graphql Quick Start[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#quick-start "Direct link to Quick Start") ------------------------------------------------------------------------------------------------------------------------- ### 1\. Client Configuration (Optional)[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#1-client-configuration-optional "Direct link to 1. Client Configuration (Optional)") Configure the GraphQL client at the root of your application: import { configureClient, API_URL_DEV, API_URL_PROD, API_URL_LOCAL } from '@0xintuition/graphql'// Configure the GraphQL client with desired API URLconfigureClient({ apiUrl: API_URL_LOCAL, // For local development}) **Available API URLs:** * `API_URL_PROD`: `https://testnet.intuition.sh/v1/graphql` (default) * `API_URL_DEV`: `https://testnet.intuition.sh/v1/graphql` * `API_URL_LOCAL`: `http://localhost:8080/v1/graphql` If you omit this configuration, the package defaults to `API_URL_PROD`. ### 2\. Server Client Usage[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#2-server-client-usage "Direct link to 2. Server Client Usage") For server-side operations: import { createServerClient } from '@0xintuition/graphql'// Basic usage (most common)const client = createServerClient({})// With optional authentication token (rarely needed)const clientWithAuth = createServerClient({ token: 'your-auth-token'}) ### 3\. Using Generated Hooks[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#3-using-generated-hooks "Direct link to 3. Using Generated Hooks") Import and use the generated React Query hooks: import { useGetStatsQuery } from '@0xintuition/graphql'function StatsComponent() { const { data, isLoading, error } = useGetStatsQuery() if (isLoading) return
Loading...
if (error) return
Error: {error.message}
return
{/* Render stats data */}
} import { useAtomsQuery, useTriplesQuery, useUserPositionsQuery } from '@0xintuition/graphql'function MyComponent() { // Query atoms const { data: atoms, isLoading: atomsLoading } = useAtomsQuery({ variables: { limit: 10 } }) // Query triples const { data: triples, isLoading: triplesLoading } = useTriplesQuery({ variables: { limit: 10 } }) // Query user positions const { data: positions } = useUserPositionsQuery({ variables: { userAddress: '0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6' } }) if (atomsLoading || triplesLoading) { return
Loading...
} return (

Atoms ({atoms?.atoms?.length || 0})

{atoms?.atoms?.map(atom => (
{atom.label} - {atom.type}
))}

Triples ({triples?.triples?.length || 0})

{triples?.triples?.map(triple => (
{triple.subject.label} - {triple.predicate.label} - {triple.object.label}
))}
)} Available React Hooks[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#available-react-hooks "Direct link to Available React Hooks") ------------------------------------------------------------------------------------------------------------------------------------------------------- The following groups correspond to the query documents in the `src/queries` subdirectory of the package. Hook names are generated from each document and follow the `useQuery` convention. The complete and canonical list may be found in the directory: [`packages/graphql/src/queries`](https://github.com/0xIntuition/intuition-ts/tree/main/packages/graphql/src/queries) ### Accounts[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#accounts "Direct link to Accounts") #### Get by ID * `useAccountByIdQuery` #### Search & Filter * `useAccountsQuery` ### Atoms[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#atoms "Direct link to Atoms") #### Get by ID * `useAtomByIdQuery` * `useGetAtomQuery` #### Search & Filter * `useAtomsQuery` * `useGetAtomsQuery` ### Claims[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#claims "Direct link to Claims") #### Get by ID * `useClaimByIdQuery` #### Search & Filter * `useClaimsQuery` ### Events[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#events "Direct link to Events") #### Get by ID * `useEventByIdQuery` #### Search & Filter * `useEventsQuery` ### Follows[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#follows "Direct link to Follows") #### Get by ID * `useFollowByIdQuery` #### Search & Filter * `useFollowsQuery` ### Lists[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#lists "Direct link to Lists") #### Get by ID * `useListByIdQuery` #### Search & Filter * `useListsQuery` ### Points[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#points "Direct link to Points") #### Get by ID * `usePointByIdQuery` #### Search & Filter * `usePointsQuery` ### Positions[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#positions "Direct link to Positions") #### Get by ID * `usePositionByIdQuery` #### Search & Filter * `usePositionsQuery` * `useUserPositionsQuery` ### Signals[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#signals "Direct link to Signals") #### Get by ID * `useSignalByIdQuery` #### Search & Filter * `useSignalsQuery` * `useGetSignalsQuery` ### Stats[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#stats "Direct link to Stats") #### Get * `useGetStatsQuery` #### Search & Filter * `useStatsQuery` ### Tags[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#tags "Direct link to Tags") #### Get by ID * `useTagByIdQuery` #### Search & Filter * `useTagsQuery` ### Triples[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#triples "Direct link to Triples") #### Get by ID * `useTripleByIdQuery` #### Search & Filter * `useTriplesQuery` ### Vaults[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#vaults "Direct link to Vaults") #### Get by ID * `useVaultByIdQuery` #### Search & Filter * `useVaultsQuery` These hooks are generated via GraphQL Code Generator and may expand over time as new documents are added. See the package source below for the current and authoritative list. Source Code[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#source-code "Direct link to Source Code") ------------------------------------------------------------------------------------------------------------------------- The GraphQL package source code is available on GitHub: [`intuition-ts/packages/graphql`](https://github.com/0xIntuition/intuition-ts/tree/main/packages/graphql) Related Resources[​](https://www.docs.intuition.systems/docs/graphql-api/npm-package#related-resources "Direct link to Related Resources") ------------------------------------------------------------------------------------------------------------------------------------------- * [GraphQL Code Generator](https://the-guild.dev/graphql/codegen) * [React Query Documentation](https://tanstack.com/query) * [Key Features](https://www.docs.intuition.systems/docs/graphql-api/npm-package#key-features) * [Installation](https://www.docs.intuition.systems/docs/graphql-api/npm-package#installation) * [Quick Start](https://www.docs.intuition.systems/docs/graphql-api/npm-package#quick-start) * [1\. Client Configuration (Optional)](https://www.docs.intuition.systems/docs/graphql-api/npm-package#1-client-configuration-optional) * [2\. Server Client Usage](https://www.docs.intuition.systems/docs/graphql-api/npm-package#2-server-client-usage) * [3\. Using Generated Hooks](https://www.docs.intuition.systems/docs/graphql-api/npm-package#3-using-generated-hooks) * [Available React Hooks](https://www.docs.intuition.systems/docs/graphql-api/npm-package#available-react-hooks) * [Accounts](https://www.docs.intuition.systems/docs/graphql-api/npm-package#accounts) * [Atoms](https://www.docs.intuition.systems/docs/graphql-api/npm-package#atoms) * [Claims](https://www.docs.intuition.systems/docs/graphql-api/npm-package#claims) * [Events](https://www.docs.intuition.systems/docs/graphql-api/npm-package#events) * [Follows](https://www.docs.intuition.systems/docs/graphql-api/npm-package#follows) * [Lists](https://www.docs.intuition.systems/docs/graphql-api/npm-package#lists) * [Points](https://www.docs.intuition.systems/docs/graphql-api/npm-package#points) * [Positions](https://www.docs.intuition.systems/docs/graphql-api/npm-package#positions) * [Signals](https://www.docs.intuition.systems/docs/graphql-api/npm-package#signals) * [Stats](https://www.docs.intuition.systems/docs/graphql-api/npm-package#stats) * [Tags](https://www.docs.intuition.systems/docs/graphql-api/npm-package#tags) * [Triples](https://www.docs.intuition.systems/docs/graphql-api/npm-package#triples) * [Vaults](https://www.docs.intuition.systems/docs/graphql-api/npm-package#vaults) * [Source Code](https://www.docs.intuition.systems/docs/graphql-api/npm-package#source-code) * [Related Resources](https://www.docs.intuition.systems/docs/graphql-api/npm-package#related-resources) --- # MultiVault.sol | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#__docusaurus_skipToContent_fallback) On this page The MultiVault contract is the core economic engine of the Intuition protocol, managing deposits, redemptions, and creation of atoms and triples. It implements a sophisticated vault system that supports multiple bonding curves and provides the foundation for the protocol's economic incentives. The MultiVault is the primary interface for users to interact with the economic aspects of atoms and triples: ### Atom IDs[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#atom-ids "Direct link to Atom IDs") Atom IDs are generated using a hash function that hashes the Atom's data. function calculateAtomId(bytes memory data) public pure returns (bytes32 id) { return keccak256(abi.encodePacked(data));} ### Triple IDs[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#triple-ids "Direct link to Triple IDs") Triple IDs are generated using a hash function that hashes the subject, predicate, and object Atom IDs. function calculateTripleId( bytes32 subjectId, bytes32 predicateId, bytes32 objectId) public pure returns (bytes32 id) { return keccak256(abi.encodePacked(subjectId, predicateId, objectId));} Smart Contract Writes[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#smart-contract-writes "Direct link to Smart Contract Writes") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- The MultiVault contract allows users to create new terms, plus deposit and redeem assets. ### Creating Atoms[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#creating-atoms "Direct link to Creating Atoms") An Atom represents an entity within the Intuition ecosystem and is identified by a unique `bytes32` identifier. Atoms can represent objects, individuals, organizations, or any other entity type. Atom data is stored onchain and also emitted for caching/indexing using the `AtomCreated` event. Any user can create an Atom by calling the `createAtoms` function on the MultiVault contract. function createAtoms( bytes[] calldata data, uint256[] calldata assets ) external payable returns (bytes32[] memory) { // Atom creation logic} The function accepts an array of Atom data and an array of asset amounts, allowing for the creation of multiple Atoms in a single transaction. Creating an Atom requires a fee payment, which is paid in the native blockchain currency (e.g., TRUST on the Intuition Network). In addition to the fee, users can also deposit TRUST tokens when creating an Atom. This deposit acts as a signal, ensuring that users have a vested interest in the integrity of the Atom they are creating. ### Creating Triples[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#creating-triples "Direct link to Creating Triples") A Triple represents a claim or statement. A triple is structured using a **subject-predicate-object** relationship. For example, in the triple "Alice is a friend of Bob", "Alice" is the subject, "is a friend of" is the predicate, and "Bob" is the object. function createTriples( bytes32[] calldata subjectIds, bytes32[] calldata predicateIds, bytes32[] calldata objectIds, uint256[] calldata assets) external payable whenNotPaused nonReentrant returns (bytes32[] memory){ // Triple creation logic} ### Deposit[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#deposit "Direct link to Deposit") Deposits are made in the native blockchain currency (e.g., TRUST). Users can also batch multiple deposits or redemptions into a single transaction for efficiency. The `deposit` function allows users to deposit assets into a specific term and bonding curve. The user specifies the receiver address, term ID, curve ID, and minimum shares they expect to receive. The `msg.value` sent with the transaction represents the amount of assets being deposited. function deposit( address receiver, bytes32 termId, uint256 curveId, uint256 minShares) external payable whenNotPaused nonReentrant returns (uint256){ /// Deposit logic} ### Batch Deposit[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#batch-deposit "Direct link to Batch Deposit") The `depositBatch` function allows users to make multiple deposits in a single transaction. The user provides arrays of receiver addresses, term IDs, curve IDs, and minimum shares for each deposit. The `msg.value` sent with the transaction represents the total amount of assets being deposited across all specified deposits. The sum of `assets` must equal `msg.value`. function depositBatch( address receiver, bytes32[] calldata termIds, uint256[] calldata curveIds, uint256[] calldata assets, uint256[] calldata minShares) external payable whenNotPaused nonReentrant returns (uint256[] memory shares){ /// Batch deposit logic} ### Redeem[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#redeem "Direct link to Redeem") The `redeem` function allows users to redeem their shares for the underlying assets. The user specifies the receiver address, term ID, curve ID, and the number of shares they want to redeem. function redeem( address receiver, bytes32 termId, uint256 curveId, uint256 shares, uint256 minAssets) external whenNotPaused nonReentrant returns (uint256){ /// Redemption logic} ### Batch Redeem[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#batch-redeem "Direct link to Batch Redeem") The `redeemBatch` function allows users to redeem shares from multiple terms and curves in a single transaction. The user provides arrays of term IDs, curve IDs, shares to redeem, and minimum assets they expect to receive for each redemption. function redeemBatch( address receiver, bytes32[] calldata termIds, uint256[] calldata curveIds, uint256[] calldata shares, uint256[] calldata minAssets) external whenNotPaused nonReentrant returns (uint256[] memory received){ /// Batch redemption logic} Smart Contract Reads[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#smart-contract-reads "Direct link to Smart Contract Reads") ----------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Is Term Created[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#is-term-created "Direct link to Is Term Created") The `isTermCreated` function checks if a specific term has been created in the MultiVault. function isTermCreated(bytes32 termId) external view returns (bool) { // Term existence logic} ### Current Share Price[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#current-share-price "Direct link to Current Share Price") The `currentSharePrice` function returns the current share price for a given term and bonding curve. function currentSharePrice(bytes32 termId, uint256 curveId) external view returns (uint256) { // Share price calculation logic} ### Preview Atom Create[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#preview-atom-create "Direct link to Preview Atom Create") The `previewAtomCreate` function allows users to preview the cost of creating an Atom with a given set of data. function previewAtomCreate( bytes32 termId, uint256 curveId, uint256 assets) external view returns (uint256 shares, uint256 assetsAfterFixedFees, uint256 assetsAfterFees){ // Atom creation cost preview logic} ### Preview Triple Create[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#preview-triple-create "Direct link to Preview Triple Create") The `previewTripleCreate` function allows users to preview the cost of creating a Triple with given subject, predicate, and object IDs. function previewTripleCreate( bytes32 termId, uint256 curveId, uint256 assets) external view returns (uint256 shares, uint256 assetsAfterFixedFees, uint256 assetsAfterFees){ // Triple creation cost preview logic} ### Preview Deposit[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#preview-deposit "Direct link to Preview Deposit") The `previewDeposit` function allows users to preview the number of shares they would receive for a deposit of a given amount of assets into a specific term and bonding curve. function previewDeposit( bytes32 termId, uint256 curveId, uint256 assets) public view returns (uint256 shares, uint256 assetsAfterFees){ // Deposit preview logic} ### Preview Redeem[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#preview-redeem "Direct link to Preview Redeem") The `previewRedeem` function allows users to preview the amount of assets they would receive for redeeming a given number of shares from a specific term and bonding curve. function previewRedeem( bytes32 termId, uint256 curveId, uint256 shares) public view returns (uint256 assetsAfterFees, uint256 sharesUsed){ // Redemption preview logic} Events[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#events "Direct link to Events") ----------------------------------------------------------------------------------------------------------------------- The MultiVault contract emits a number of different events to track key actions: * `AtomCreated`: Emitted when a new Atom is created. * `TripleCreated`: Emitted when a new Triple is created. * `Deposited`: Emitted when a deposit is made. * `Redeemed`: Emitted when shares are redeemed for assets. * `SharePriceChanged`: Emitted when the share price for a term and curve changes. ### AtomCreated[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#atomcreated "Direct link to AtomCreated") event AtomCreated( address indexed creator, bytes32 indexed termId, bytes data); ### TripleCreated[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#triplecreated "Direct link to TripleCreated") event TripleCreated( address indexed creator, bytes32 indexed tripleId, bytes32 subjectId, bytes32 predicateId, bytes32 objectId); ### Deposited[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#deposited "Direct link to Deposited") event Deposited( address indexed sender, address indexed receiver, bytes32 indexed termId, uint256 curveId, uint256 assets, uint256 assetsAfterFees, uint256 shares, uint256 totalShares, VaultType vaultType); ### Redeemed[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#redeemed "Direct link to Redeemed") event Redeemed( address indexed sender, address indexed receiver, bytes32 indexed termId, uint256 curveId, uint256 shares, uint256 totalShares, uint256 assets, uint256 fees, VaultType vaultType); ### SharePriceChanged[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#sharepricechanged "Direct link to SharePriceChanged") event SharePriceChanged( bytes32 indexed termId, uint256 indexed curveId, uint256 sharePrice, uint256 totalAssets, uint256 totalShares, VaultType vaultType); Additional Resources[​](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#additional-resources "Direct link to Additional Resources") ----------------------------------------------------------------------------------------------------------------------------------------------------------------- For more detailed information on the MultiVault contract and its functions, please refer to the [Intuition Smart Contract V2 repository](https://github.com/0xIntuition/intuition-contracts-v2) . * [Atom IDs](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#atom-ids) * [Triple IDs](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#triple-ids) * [Smart Contract Writes](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#smart-contract-writes) * [Creating Atoms](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#creating-atoms) * [Creating Triples](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#creating-triples) * [Deposit](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#deposit) * [Batch Deposit](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#batch-deposit) * [Redeem](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#redeem) * [Batch Redeem](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#batch-redeem) * [Smart Contract Reads](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#smart-contract-reads) * [Is Term Created](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#is-term-created) * [Current Share Price](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#current-share-price) * [Preview Atom Create](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#preview-atom-create) * [Preview Triple Create](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#preview-triple-create) * [Preview Deposit](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#preview-deposit) * [Preview Redeem](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#preview-redeem) * [Events](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#events) * [AtomCreated](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#atomcreated) * [TripleCreated](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#triplecreated) * [Deposited](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#deposited) * [Redeemed](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#redeemed) * [SharePriceChanged](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#sharepricechanged) * [Additional Resources](https://www.docs.intuition.systems/docs/intuition-smart-contracts/multivault#additional-resources) --- # Triple Structuring | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#__docusaurus_skipToContent_fallback) On this page Understanding how to properly structure Triples is essential for building rich, queryable knowledge graphs. This guide covers techniques for creating well-designed semantic relationships. Basic Triple Structure[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#basic-triple-structure "Direct link to Basic Triple Structure") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ { "id": "did:ethr:mainnet:0x...", "subject": "did:ethr:mainnet:0x...", "predicate": "did:ethr:mainnet:0x...", "object": "did:ethr:mainnet:0x...", "metadata": { "created": "2024-01-15T10:30:00Z", "creator": "did:ethr:mainnet:0x...", "confidence": 0.95 }} Triple Categories[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#triple-categories "Direct link to Triple Categories") --------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### 1\. Property Triples[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#1-property-triples "Direct link to 1. Property Triples") Describe attributes or characteristics of entities. **Example**: "Ethereum is decentralized" { "subject": "did:ethr:mainnet:0x...", // Ethereum "predicate": "did:ethr:mainnet:0x...", // is "object": "did:ethr:mainnet:0x...", // decentralized "type": "property"} ### 2\. Relationship Triples[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#2-relationship-triples "Direct link to 2. Relationship Triples") Connect entities through specific relationships. **Example**: "Vitalik Buterin created Ethereum" { "subject": "did:ethr:mainnet:0x...", // Vitalik Buterin "predicate": "did:ethr:mainnet:0x...", // created "object": "did:ethr:mainnet:0x...", // Ethereum "type": "relationship"} ### 3\. Classification Triples[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#3-classification-triples "Direct link to 3. Classification Triples") Establish hierarchical or categorical relationships. **Example**: "Machine Learning is a subset of AI" { "subject": "did:ethr:mainnet:0x...", // Machine Learning "predicate": "did:ethr:mainnet:0x...", // is a subset of "object": "did:ethr:mainnet:0x...", // AI "type": "classification"} Creating Triples Programmatically[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#creating-triples-programmatically "Direct link to Creating Triples Programmatically") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Using the SDK[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#using-the-sdk "Direct link to Using the SDK") import { createAtomFromString, createTripleStatement } from '@0xintuition/sdk'import { createPublicClient, createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { sepolia } from 'viem/chains'import { getEthMultiVaultAddressFromChainId } from '@0xintuition/sdk'// Configure viem clientsconst account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)const walletClient = createWalletClient({ account, chain: sepolia, transport: http() })const publicClient = createPublicClient({ chain: sepolia, transport: http() })// Get MultiVault addressconst multivaultAddress = getEthMultiVaultAddressFromChainId(sepolia.id)// Create a Tripleconst result = await createTripleStatement( { walletClient, publicClient, address: multivaultAddress }, subjectVaultId, predicateVaultId, objectVaultId) Best Practices[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#best-practices "Direct link to Best Practices") ------------------------------------------------------------------------------------------------------------------------------------------------------------ ### 1\. Use Atomic Components[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#1-use-atomic-components "Direct link to 1. Use Atomic Components") * Each component (subject, predicate, object) should be a focused Atom * Avoid embedding complex data in individual components * Leverage reusable Atoms for common concepts ### 2\. Choose Clear Predicates[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#2-choose-clear-predicates "Direct link to 2. Choose Clear Predicates") * Use widely understood relationship terms * Be specific but not overly verbose * Consider standardizing on common predicates ### 3\. Maintain Consistency[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#3-maintain-consistency "Direct link to 3. Maintain Consistency") * Follow naming conventions across related Triples * Use consistent data types * Align with community standards ### 4\. Enable Composability[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#4-enable-composability "Direct link to 4. Enable Composability") * Design Triples that can combine with others * Consider how Triples might be queried together * Think about nested Triple possibilities * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------------------------------ * [Nested Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples) - Learn how to create meta-claims and context * [Signal Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/signals/fundamentals) - Understand how to validate Triples * [Basic Triple Structure](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#basic-triple-structure) * [Triple Categories](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#triple-categories) * [1\. Property Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#1-property-triples) * [2\. Relationship Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#2-relationship-triples) * [3\. Classification Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#3-classification-triples) * [Creating Triples Programmatically](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#creating-triples-programmatically) * [Using the SDK](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#using-the-sdk) * [Best Practices](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#best-practices) * [1\. Use Atomic Components](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#1-use-atomic-components) * [2\. Choose Clear Predicates](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#2-choose-clear-predicates) * [3\. Maintain Consistency](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#3-maintain-consistency) * [4\. Enable Composability](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#4-enable-composability) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring#next-steps) --- # Key Terms | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/resources/key-terms#__docusaurus_skipToContent_fallback) On this page This page defines the essential terminology and concepts you need to understand the Intuition protocol. Terms are organized by category to help you quickly find what you're looking for. Quick Navigation[​](https://www.docs.intuition.systems/docs/resources/key-terms#quick-navigation "Direct link to Quick Navigation") ------------------------------------------------------------------------------------------------------------------------------------ This page is organized into expandable sections for easy navigation. Click on any section below to explore the terms within that category. **Core Primitives** - Fundamental building blocks of the Intuition protocol Core Primitives[​](https://www.docs.intuition.systems/docs/resources/key-terms#core-primitives "Direct link to Core Primitives") --------------------------------------------------------------------------------------------------------------------------------- ### **Atoms**[​](https://www.docs.intuition.systems/docs/resources/key-terms#atoms "Direct link to atoms") **Atoms** are the fundamental building blocks of the Intuition knowledge graph. Each atom represents a unique entity or concept and points to arbitrary data via a URI. **Key Characteristics:** * **Universal Identifiers**: Each atom has a unique identifier across the entire system * **URI References**: Atoms point to any arbitrary URI (web pages, IPFS hashes, etc.) * **Economic Units**: Atoms can have economic value through bonding curves * **Composable**: Atoms can be combined to create more complex structures **Examples:** * A person's profile (points to their social media or personal website) * A smart contract address (points to the contract's metadata) * A piece of content (points to the actual content file) * An organization (points to their official website) ### **Triples**[​](https://www.docs.intuition.systems/docs/resources/key-terms#triples "Direct link to triples") **Triples** represent relationships between atoms, forming the edges of the knowledge graph. Each triple consists of three atoms: a subject, predicate, and object. **Structure:** Subject β†’ Predicate β†’ Object **Key Characteristics:** * **Semantic Relationships**: Express meaningful connections between entities * **Economic Value**: Triples can have economic value through bonding curves * **Verifiable**: All relationships are cryptographically verifiable * **Composable**: Triples can be combined to create complex knowledge structures **Examples:** * **Subject**: Alice (atom) * **Predicate**: "works for" (atom) * **Object**: Intuition Systems (atom) This creates the statement: "Alice works for Intuition Systems" ### **Signals**[​](https://www.docs.intuition.systems/docs/resources/key-terms#signals "Direct link to signals") **Signals** represent user attestations or endorsements of atoms and triples. They indicate the strength of belief or support for a particular piece of information. **Key Characteristics:** * **Economic Weight**: Signals have economic value and can be traded * **Subjective**: Represent personal beliefs and opinions * **Aggregatable**: Multiple signals can be combined to show collective sentiment * **Time-Bound**: Signals can change over time as opinions evolve **Types of Signals:** * **Positive Signals**: Endorsements or agreements * **Negative Signals**: Disagreements or refutations * **Neutral Signals**: Acknowledgment without taking a position **Economic Components** - Financial and incentive mechanisms Economic Components[​](https://www.docs.intuition.systems/docs/resources/key-terms#economic-components "Direct link to Economic Components") --------------------------------------------------------------------------------------------------------------------------------------------- ### **Bonding Curves**[​](https://www.docs.intuition.systems/docs/resources/key-terms#bonding-curves "Direct link to bonding-curves") **Bonding curves** are mathematical functions that determine the price of shares in atoms and triples based on supply and demand. They create economic incentives for information quality. **Key Functions:** * **Price Discovery**: Automatically determine fair market value * **Incentive Alignment**: Reward early adopters of valuable information * **Liquidity**: Provide continuous trading opportunities * **Anti-Speculation**: Prevent manipulation through mathematical constraints **Curve Types:** * **Pro-Rata Curves**: Linear pricing for stable assets * **Bonding Curves**: Dynamic pricing that rewards early adopters * **Custom Curves**: Specialized functions for specific use cases ### **Vaults**[​](https://www.docs.intuition.systems/docs/resources/key-terms#vaults "Direct link to vaults") **Vaults** are smart contracts that hold the economic value associated with atoms and triples. They manage deposits, redemptions, and share distribution. **Key Functions:** * **Asset Management**: Safely store and manage user deposits * **Share Distribution**: Mint and burn shares based on economic activity * **Fee Collection**: Collect small fees to maintain the system * **Liquidity Provision**: Enable users to enter and exit positions **Vault Types:** * **Pro-Rata Vaults**: Traditional vaults with stable pricing * **Bonding Curve Vaults**: Dynamic vaults with variable pricing * **Multi-Curve Vaults**: Vaults supporting multiple pricing models ### **Terms**[​](https://www.docs.intuition.systems/docs/resources/key-terms#terms "Direct link to terms") **Terms** are the conceptual representations of atoms and triples that contain multiple vaults. They represent the underlying semantic meaning regardless of economic implementation. **Key Characteristics:** * **Semantic Identity**: Maintains the core meaning across different vaults * **Economic Flexibility**: Can have multiple vaults with different curves * **Market Cap Aggregation**: Combines value across all associated vaults * **Universal Reference**: Provides a stable identifier for the concept **Network Components** - Protocol infrastructure and governance Network Components[​](https://www.docs.intuition.systems/docs/resources/key-terms#network-components "Direct link to Network Components") ------------------------------------------------------------------------------------------------------------------------------------------ ### **Trust Protocol**[​](https://www.docs.intuition.systems/docs/resources/key-terms#trust-protocol "Direct link to trust-protocol") The **Trust Protocol** is the foundational mechanism that enables trustful interactions through cryptoeconomic incentives. It rewards users for contributing valuable information. **Core Principles:** * **Economic Incentives**: Users are rewarded for valuable contributions * **Quality Signals**: Economic activity indicates information quality * **Decentralized Curation**: No central authority controls information * **Transparent Rules**: All mechanisms are open and verifiable ### **Knowledge Graph**[​](https://www.docs.intuition.systems/docs/resources/key-terms#knowledge-graph "Direct link to knowledge-graph") The **Knowledge Graph** is the collective network of atoms, triples, and signals that represents humanity's shared knowledge. It grows organically through user contributions. **Key Features:** * **Permissionless**: Anyone can contribute information * **Verifiable**: All contributions are cryptographically verifiable * **Composable**: Information can be combined and reused * **Economic**: Valuable information is economically rewarded ### **Attestations**[​](https://www.docs.intuition.systems/docs/resources/key-terms#attestations "Direct link to attestations") **Attestations** are user statements about atoms and triples that contribute to the collective knowledge. They can be positive, negative, or neutral. **Types of Attestations:** * **Factual Claims**: Statements about objective reality * **Opinions**: Subjective beliefs and preferences * **Endorsements**: Support for existing information * **Refutations**: Disagreements with existing information **Technical Components** - Developer tools and APIs Technical Components[​](https://www.docs.intuition.systems/docs/resources/key-terms#technical-components "Direct link to Technical Components") ------------------------------------------------------------------------------------------------------------------------------------------------ ### **GraphQL API**[​](https://www.docs.intuition.systems/docs/resources/key-terms#graphql-api "Direct link to graphql-api") The **GraphQL API** provides a unified interface for querying and interacting with the Intuition knowledge graph. It enables efficient data retrieval and real-time updates. **Key Features:** * **Real-Time Queries**: Get live data from the knowledge graph * **Flexible Schema**: Query exactly the data you need * **Subscription Support**: Receive updates as data changes * **Batch Operations**: Efficiently process multiple requests ### **SDKs**[​](https://www.docs.intuition.systems/docs/resources/key-terms#sdks "Direct link to sdks") **Software Development Kits (SDKs)** provide pre-built tools and libraries for integrating with the Intuition protocol. They simplify common development tasks. **Available SDKs:** * **JavaScript/TypeScript SDK**: For web applications * **React Components**: Pre-built UI components * **GraphQL Client**: Optimized for Intuition's GraphQL API * **Smart Contract Interfaces**: For direct blockchain interaction ### **Smart Contracts**[​](https://www.docs.intuition.systems/docs/resources/key-terms#smart-contracts "Direct link to smart-contracts") **Smart contracts** are the on-chain components that handle the economic and governance aspects of the Intuition protocol. They ensure transparency and immutability. **Core Contracts:** * **EthMultiVault**: Manages deposits, redemptions, and share distribution * **AtomWallet**: Handles atom and triple creation * **BondingCurveRegistry**: Manages different curve implementations * **TrustBonding**: Implements trust-based economic mechanisms **User Roles** - Different ways to participate in the ecosystem User Roles[​](https://www.docs.intuition.systems/docs/resources/key-terms#user-roles "Direct link to User Roles") ------------------------------------------------------------------------------------------------------------------ ### **Attestors**[​](https://www.docs.intuition.systems/docs/resources/key-terms#attestors "Direct link to attestors") **Attestors** are users who contribute information to the knowledge graph by creating atoms, triples, and signals. They are rewarded for valuable contributions. **Responsibilities:** * **Information Creation**: Add new atoms and triples to the graph * **Quality Assurance**: Provide signals to indicate information quality * **Community Building**: Participate in knowledge curation * **Economic Participation**: Engage with bonding curves and vaults ### **Curators**[​](https://www.docs.intuition.systems/docs/resources/key-terms#curators "Direct link to curators") **Curators** are users who specialize in organizing and validating information within the knowledge graph. They help maintain quality and coherence. **Activities:** * **Signal Provision**: Provide economic signals for information quality * **Relationship Mapping**: Create meaningful triples between atoms * **Quality Assessment**: Evaluate and endorse valuable information * **Community Leadership**: Guide discussions and resolve disputes ### **Developers**[​](https://www.docs.intuition.systems/docs/resources/key-terms#developers "Direct link to developers") **Developers** build applications and tools that interact with the Intuition protocol. They create the interfaces and experiences that make the knowledge graph accessible. **Development Areas:** * **Frontend Applications**: User interfaces for interacting with the graph * **Data Analytics**: Tools for analyzing knowledge graph data * **Integration Services**: APIs and services that connect to Intuition * **Mobile Applications**: Native mobile experiences **Economic Terms** - Financial metrics and market concepts Economic Terms[​](https://www.docs.intuition.systems/docs/resources/key-terms#economic-terms "Direct link to Economic Terms") ------------------------------------------------------------------------------------------------------------------------------ ### **Market Cap**[​](https://www.docs.intuition.systems/docs/resources/key-terms#market-cap "Direct link to market-cap") **Market cap** represents the total theoretical value of all shares in a term (atom or triple). It is calculated as the product of total shares and current share price. **Calculation:** Market Cap = Total Shares Γ— Current Share Price **Significance:** * **Value Indicator**: Shows the perceived value of information * **Comparison Metric**: Allows comparison between different terms * **Investment Guide**: Helps users make informed decisions * **Quality Signal**: Higher market caps often indicate higher quality ### **Share Price**[​](https://www.docs.intuition.systems/docs/resources/key-terms#share-price "Direct link to share-price") **Share price** is the current cost to purchase one share of a term. It is determined by the bonding curve function based on supply and demand. **Factors Affecting Price:** * **Supply**: Number of shares currently in circulation * **Demand**: User interest and willingness to pay * **Curve Function**: Mathematical relationship between supply and price * **Market Activity**: Recent trading volume and patterns ### **Liquidity**[​](https://www.docs.intuition.systems/docs/resources/key-terms#liquidity "Direct link to liquidity") **Liquidity** refers to the ease with which shares can be bought or sold without significantly affecting the price. High liquidity enables efficient trading. **Liquidity Factors:** * **Trading Volume**: Amount of shares traded regularly * **Market Depth**: Number of buy and sell orders * **Price Stability**: How much price changes with large trades * **Accessibility**: How easy it is for users to participate **Governance Terms** - Protocol governance and decision-making Governance Terms[​](https://www.docs.intuition.systems/docs/resources/key-terms#governance-terms "Direct link to Governance Terms") ------------------------------------------------------------------------------------------------------------------------------------ ### **Proposals**[​](https://www.docs.intuition.systems/docs/resources/key-terms#proposals "Direct link to proposals") **Proposals** are suggested changes to the Intuition protocol that are voted on by the community. They can include parameter changes, new features, or governance updates. **Proposal Types:** * **Parameter Changes**: Adjusting bonding curve parameters * **Feature Additions**: Adding new functionality to the protocol * **Governance Updates**: Changing how decisions are made * **Emergency Actions**: Responding to critical issues ### **Voting**[​](https://www.docs.intuition.systems/docs/resources/key-terms#voting "Direct link to voting") **Voting** is the process by which the community makes decisions about the protocol. Votes are weighted by economic stake and participation. **Voting Mechanisms:** * **Token Weighted**: Votes are proportional to token holdings * **Time Locked**: Some proposals require time delays * **Multi-Sig**: Critical decisions require multiple approvals * **Emergency Powers**: Special procedures for urgent situations * * * > **Ready to dive deeper?** Explore our [Architecture Guide](https://www.docs.intuition.systems/docs/getting-started/architecture) > to understand how these components work together, or check out our [Quick Start Guide](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk) > to begin building with Intuition. * [Quick Navigation](https://www.docs.intuition.systems/docs/resources/key-terms#quick-navigation) * [Core Primitives](https://www.docs.intuition.systems/docs/resources/key-terms#core-primitives) * [**Atoms**](https://www.docs.intuition.systems/docs/resources/key-terms#atoms) * [**Triples**](https://www.docs.intuition.systems/docs/resources/key-terms#triples) * [**Signals**](https://www.docs.intuition.systems/docs/resources/key-terms#signals) * [Economic Components](https://www.docs.intuition.systems/docs/resources/key-terms#economic-components) * [**Bonding Curves**](https://www.docs.intuition.systems/docs/resources/key-terms#bonding-curves) * [**Vaults**](https://www.docs.intuition.systems/docs/resources/key-terms#vaults) * [**Terms**](https://www.docs.intuition.systems/docs/resources/key-terms#terms) * [Network Components](https://www.docs.intuition.systems/docs/resources/key-terms#network-components) * [**Trust Protocol**](https://www.docs.intuition.systems/docs/resources/key-terms#trust-protocol) * [**Knowledge Graph**](https://www.docs.intuition.systems/docs/resources/key-terms#knowledge-graph) * [**Attestations**](https://www.docs.intuition.systems/docs/resources/key-terms#attestations) * [Technical Components](https://www.docs.intuition.systems/docs/resources/key-terms#technical-components) * [**GraphQL API**](https://www.docs.intuition.systems/docs/resources/key-terms#graphql-api) * [**SDKs**](https://www.docs.intuition.systems/docs/resources/key-terms#sdks) * [**Smart Contracts**](https://www.docs.intuition.systems/docs/resources/key-terms#smart-contracts) * [User Roles](https://www.docs.intuition.systems/docs/resources/key-terms#user-roles) * [**Attestors**](https://www.docs.intuition.systems/docs/resources/key-terms#attestors) * [**Curators**](https://www.docs.intuition.systems/docs/resources/key-terms#curators) * [**Developers**](https://www.docs.intuition.systems/docs/resources/key-terms#developers) * [Economic Terms](https://www.docs.intuition.systems/docs/resources/key-terms#economic-terms) * [**Market Cap**](https://www.docs.intuition.systems/docs/resources/key-terms#market-cap) * [**Share Price**](https://www.docs.intuition.systems/docs/resources/key-terms#share-price) * [**Liquidity**](https://www.docs.intuition.systems/docs/resources/key-terms#liquidity) * [Governance Terms](https://www.docs.intuition.systems/docs/resources/key-terms#governance-terms) * [**Proposals**](https://www.docs.intuition.systems/docs/resources/key-terms#proposals) * [**Voting**](https://www.docs.intuition.systems/docs/resources/key-terms#voting) --- # Intuition Network | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-network#__docusaurus_skipToContent_fallback) On this page Intuition Network is a specialized Layer 3 blockchain built on Arbitrum Orbit, optimized for knowledge graph operations and decentralized attestations. Architecture[​](https://www.docs.intuition.systems/docs/intuition-network#architecture "Direct link to Architecture") ---------------------------------------------------------------------------------------------------------------------- Intuition leverages a multi-layer architecture designed for performance, cost-efficiency, and scalability: * **Layer 3 on Base** - Built using Arbitrum Orbit technology * **AnyTrust DA** - Arbitrum's data availability solution for scalability * **Specialized for Knowledge Graphs** - Optimized for semantic triple operations * **EVM Compatible** - Full Ethereum smart contract compatibility ### Performance Benefits[​](https://www.docs.intuition.systems/docs/intuition-network#performance-benefits "Direct link to Performance Benefits") * **~10,000x cheaper** than Ethereum mainnet * **~100x faster** transaction times * **Block time:** ~2 seconds * **Transaction finality:** Less than 10 seconds * **Throughput:** 1000+ TPS Network Details[​](https://www.docs.intuition.systems/docs/intuition-network#network-details "Direct link to Network Details") ------------------------------------------------------------------------------------------------------------------------------- **For developer setup and configuration, see:** [Network Configuration](https://www.docs.intuition.systems/docs/quick-start/network-details) ### Testnet[​](https://www.docs.intuition.systems/docs/intuition-network#testnet "Direct link to Testnet") The Intuition testnet is currently active for development and testing. * **Chain ID:** 13579 * **RPC URL:** [https://testnet.rpc.intuition.systems/](https://testnet.rpc.intuition.systems/) * **Explorer:** [https://testnet.explorer.intuition.systems](https://testnet.explorer.intuition.systems/) * **Currency:** tTRUST (testnet TRUST) **Testnet Tools:** * **Portal** - Web interface for creating atoms and triples * **Bridge** - Token bridge from Base Sepolia * **Explorer** - Blockchain explorer at [https://testnet.explorer.intuition.systems](https://testnet.explorer.intuition.systems/) * **RPC Endpoints** - API access via [https://testnet.rpc.intuition.systems/](https://testnet.rpc.intuition.systems/) ### Mainnet[​](https://www.docs.intuition.systems/docs/intuition-network#mainnet "Direct link to Mainnet") > Coming soon! Testnet is currently active for development. Running a Node[​](https://www.docs.intuition.systems/docs/intuition-network#running-a-node "Direct link to Running a Node") ---------------------------------------------------------------------------------------------------------------------------- Want to run your own Intuition node for indexing and querying the knowledge graph? **Node Setup** - Contact support for node setup information Running a node provides: * **Full data access** - Complete knowledge graph indexing * **Custom queries** - Direct database access * **GraphQL API** - Self-hosted query capabilities * **Privacy** - No reliance on third-party infrastructure Infrastructure Components[​](https://www.docs.intuition.systems/docs/intuition-network#infrastructure-components "Direct link to Infrastructure Components") ------------------------------------------------------------------------------------------------------------------------------------------------------------- ### RPC Endpoints[​](https://www.docs.intuition.systems/docs/intuition-network#rpc-endpoints "Direct link to RPC Endpoints") Managed infrastructure providing API access to the network: * **HTTP RPC:** For standard web3 calls * **WebSocket RPC:** For real-time subscriptions * **Rate limiting:** Fair usage policies apply Use the RPC endpoint at [https://testnet.rpc.intuition.systems/](https://testnet.rpc.intuition.systems/) for development. ### Indexing Layer[​](https://www.docs.intuition.systems/docs/intuition-network#indexing-layer "Direct link to Indexing Layer") The Rust-based indexing subnet provides: * **Fast queries** - Optimized database for knowledge graph traversal * **GraphQL API** - Flexible query language for complex graph operations * **Real-time updates** - Live data synchronization * **Semantic search** - Full-text search across atoms and triples Learn more: [GraphQL API](https://www.docs.intuition.systems/docs/graphql-api/overview) ### Settlement Layer[​](https://www.docs.intuition.systems/docs/intuition-network#settlement-layer "Direct link to Settlement Layer") Transactions settle to Base (via Base Sepolia for testnet): * **Security inheritance** - Leverages Ethereum's security * **Data availability** - AnyTrust committee ensures data availability * **Fraud proofs** - Optimistic rollup security model Network Economics[​](https://www.docs.intuition.systems/docs/intuition-network#network-economics "Direct link to Network Economics") ------------------------------------------------------------------------------------------------------------------------------------- ### Gas Costs[​](https://www.docs.intuition.systems/docs/intuition-network#gas-costs "Direct link to Gas Costs") Gas costs on Intuition are dramatically lower than Ethereum: * **Atom creation:** ~1/10,000th the cost * **Triple creation:** ~1/10,000th the cost * **Vault operations:** ~1/10,000th the cost ### Native Token[​](https://www.docs.intuition.systems/docs/intuition-network#native-token "Direct link to Native Token") **$TRUST** is the native token of Intuition Network: * **Gas fees** - Pay for transactions * **Staking** - Signal on atoms and triples * **Governance** - (Coming soon) See [Signals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) for information about staking and token usage. Getting Started[​](https://www.docs.intuition.systems/docs/intuition-network#getting-started "Direct link to Getting Started") ------------------------------------------------------------------------------------------------------------------------------- ### For Users[​](https://www.docs.intuition.systems/docs/intuition-network#for-users "Direct link to For Users") 1. **[Connect to Testnet](https://www.docs.intuition.systems/docs/resources/faq#how-do-i-connect-to-the-intuition-testnet) ** - Setup your wallet 2. **[Get Test Tokens](https://intuition-testnet.hub.caldera.xyz/) ** - Use the faucet 3. **Explore Tools** - Use Portal and Explorer to interact with the network ### For Developers[​](https://www.docs.intuition.systems/docs/intuition-network#for-developers "Direct link to For Developers") 1. **[Network Configuration](https://www.docs.intuition.systems/docs/quick-start/network-details) ** - Configure your environment 2. **[SDK Setup](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup) ** - Install development tools 3. **[Quickstart Guide](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk) ** - Build something! ### For Node Operators[​](https://www.docs.intuition.systems/docs/intuition-network#for-node-operators "Direct link to For Node Operators") Contact support for node setup and deployment information. Support & Monitoring[​](https://www.docs.intuition.systems/docs/intuition-network#support--monitoring "Direct link to Support & Monitoring") --------------------------------------------------------------------------------------------------------------------------------------------- * **[Network Status](https://status.intuition.systems/) ** - Real-time status monitoring * **[Community Support](https://www.docs.intuition.systems/docs/resources/community-and-support) ** - Get help * **[FAQ](https://www.docs.intuition.systems/docs/resources/faq) ** - Common questions Next Steps[​](https://www.docs.intuition.systems/docs/intuition-network#next-steps "Direct link to Next Steps") ---------------------------------------------------------------------------------------------------------------- ### Configure Development Set up your development environment to start building on Intuition. [Network Configuration β†’](https://www.docs.intuition.systems/docs/quick-start/network-details) ### Run a Node Self-host the indexing layer for direct database access and GraphQL API. [Contact Support β†’](https://www.docs.intuition.systems/docs/resources/community-and-support) ### Use Testnet Tools Access Portal, Bridge, Explorer, and other testnet services. [Testnet Explorer β†’](https://testnet.explorer.intuition.systems/) * [Architecture](https://www.docs.intuition.systems/docs/intuition-network#architecture) * [Performance Benefits](https://www.docs.intuition.systems/docs/intuition-network#performance-benefits) * [Network Details](https://www.docs.intuition.systems/docs/intuition-network#network-details) * [Testnet](https://www.docs.intuition.systems/docs/intuition-network#testnet) * [Mainnet](https://www.docs.intuition.systems/docs/intuition-network#mainnet) * [Running a Node](https://www.docs.intuition.systems/docs/intuition-network#running-a-node) * [Infrastructure Components](https://www.docs.intuition.systems/docs/intuition-network#infrastructure-components) * [RPC Endpoints](https://www.docs.intuition.systems/docs/intuition-network#rpc-endpoints) * [Indexing Layer](https://www.docs.intuition.systems/docs/intuition-network#indexing-layer) * [Settlement Layer](https://www.docs.intuition.systems/docs/intuition-network#settlement-layer) * [Network Economics](https://www.docs.intuition.systems/docs/intuition-network#network-economics) * [Gas Costs](https://www.docs.intuition.systems/docs/intuition-network#gas-costs) * [Native Token](https://www.docs.intuition.systems/docs/intuition-network#native-token) * [Getting Started](https://www.docs.intuition.systems/docs/intuition-network#getting-started) * [For Users](https://www.docs.intuition.systems/docs/intuition-network#for-users) * [For Developers](https://www.docs.intuition.systems/docs/intuition-network#for-developers) * [For Node Operators](https://www.docs.intuition.systems/docs/intuition-network#for-node-operators) * [Support & Monitoring](https://www.docs.intuition.systems/docs/intuition-network#support--monitoring) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-network#next-steps) --- # Pin Person | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-person#__docusaurus_skipToContent_fallback) On this page Pin a Person entity to IPFS for use in atom creation. Mutation Structure[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-person#mutation-structure "Direct link to Mutation Structure") ------------------------------------------------------------------------------------------------------------------------------------------------------- mutation PinPerson($person: PinPersonInput!) { pinPerson(person: $person) { uri }} Variables[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-person#variables "Direct link to Variables") ---------------------------------------------------------------------------------------------------------------------------- { "person": { "name": "Vitalik Buterin", "description": "Co-founder of Ethereum", "email": "vitalik@ethereum.org", "identifier": "vitalik.eth", "image": "ipfs://QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy", "url": "https://vitalik.ca" }} Best Practices[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-person#best-practices "Direct link to Best Practices") ------------------------------------------------------------------------------------------------------------------------------------------- 1. **Include identifier** (ENS, username, etc.) 2. **Add image** for visual representation 3. **Provide description** for context 4. **Use person-specific fields** for rich metadata * [Mutation Structure](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-person#mutation-structure) * [Variables](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-person#variables) * [Best Practices](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-person#best-practices) --- # Triple Fundamentals | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#__docusaurus_skipToContent_fallback) On this page If Atoms are the words in Intuition's global dictionary, Triples are the sentences we create from those words. A Triple connects three Atoms to assert a relationship or fact in the form **\[Subject\] – \[Predicate\] – \[Object\]**. Understanding Triples[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#understanding-triples "Direct link to Understanding Triples") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- A Triple is a fundamental data structure that expresses relationships between Atoms, following the classic RDF triple format used in semantic web technologies. This makes Intuition's data inherently machine-readable and structured. With discrete units of data established through Atoms, defining relationships between these units to form higher-order structures is essential. Intuition achieves this by employing Semantic Triples, ensuring a uniform and discrete structure that can be prescribed a decentralized identifier and have some associated agent-centric state. Triple Structure[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#triple-structure "Direct link to Triple Structure") ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Triples consist of three elements: Subject, Predicate, and Object, with each element represented as an Atom. This Subject-Predicate-Object format allows users to clearly and explicitly define relationships between Atoms. ### Subject The entity or concept being described in the relationship. ### Predicate The relationship or attribute that connects the subject to the object. ### Object The value or characteristic attributed to the subject through the predicate. Every Triple represents a claimβ€”it asserts that a Subject has some relationship (Predicate) to an Object. For example: [Alice] -- [lives In] --> [Paris] This Triple asserts a fact about Alice's location, where: * **Alice** is the subject Atom * **livesIn** is the predicate Atom (describing the type of relationship) * **Paris** is the object Atom Each component of a Triple is an Atom ID under the hood. The system doesn't store free-form text "Alice" or "Paris" but rather pointers to those Atom records, which might contain rich data, alternate labels, and additional metadata. Example Triples[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#example-triples "Direct link to Example Triples") ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Simple Triple Example[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#simple-triple-example "Direct link to Simple Triple Example") Subject: "Bob"Predicate: "age"Object: "34" In this example, each componentβ€”Subject, Predicate, and Object is an Atom, and the Triple expresses a specific relationship between these Atoms. ### Professional Credential[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#professional-credential "Direct link to Professional Credential") [Dr. Smith] β€” [has degree] β€” [Harvard Medical School] Expressing educational credentials as structured data. ### Smart Contract Deployment[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#smart-contract-deployment "Direct link to Smart Contract Deployment") [UniswapV3] β€” [was deployed on] β€” [2021-05-05] Recording blockchain events as semantic relationships. Fractal Data Representations[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#fractal-data-representations "Direct link to Fractal Data Representations") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Triples offer a flexible yet structured method for representing data relationships. By allowing Triples to act as Atoms within other Triples, Intuition facilitates the expression, storage, and usage of arbitrarily complex data models that can scale and evolve over time. This flexibility is crucial for capturing intricate relationships and dynamics within data, enabling users to construct sophisticated applications and services on the Intuition framework. This approach maintains discrete, referenceable units for data at every layer of the structure, ensuring scalability and precision in data representation. The Graph Structure[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#the-graph-structure "Direct link to The Graph Structure") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Triples naturally form a graph of nodes and links. You can visualize: * **Atoms as nodes** in the graph * **Triples as directed edges** from subject to object, labeled by the predicate This graph structure enables powerful capabilities: * Deterministic queries like "find all objects that Alice is connected to via livesIn" * Traversal of relationships to discover indirect connections * Pattern matching across the knowledge graph Triple Ownership and Token Curated Registries[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#triple-ownership-and-token-curated-registries "Direct link to Triple Ownership and Token Curated Registries") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Akin to the process outlined for Atoms, the structure of Triples allows users to gain fractional ownership of Triples through interaction. Each interaction generates interaction fees, which are distributed to the owners of each respective Triple, creating an incentivized Token Curated Registry (TCR) for data structures. The TCR encourages system participants to adopt common ways of structuring data by offering economic rewards. This approach promotes an organic, incentive-driven structuring of data, contrasting with more rigid and traditional methods such as standards committees, which often struggle to achieve effective standardization. Integration with Other Primitives[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#integration-with-other-primitives "Direct link to Integration with Other Primitives") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### With Atoms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#with-atoms "Direct link to With Atoms") * Triples connect Atoms into meaningful relationships * Atoms gain context through Triple connections * Triple predicates can themselves be Atoms for maximum flexibility ### With Signals[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#with-signals "Direct link to With Signals") * Signals add weight to Triple claims through staking * Community validates Triples through Signal attestations * Signal strength directly affects Triple credibility and consensus Summary[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#summary "Direct link to Summary") ---------------------------------------------------------------------------------------------------------------------------------------- Triples allow Intuition to form a living, searchable web of knowledge. When adding Triples, the goal is to make each claim as clear and verifiable as possible, selecting the right words (Atoms) from the global dictionary, and then letting the network of users and their Signals determine validity. With Atoms as the words in our global dictionary and Triples as the sentences we construct from them, we can express any arbitrarily-complex concept while maintaining discrete, referenceable structure. * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------------------------------- * [Triple Structuring](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring) - Learn advanced techniques for creating effective Triples * [Nested Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples) - Understand how to build complex, layered claims * [Signal Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/signals/fundamentals) - Discover how the community validates Triples * [Understanding Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#understanding-triples) * [Triple Structure](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#triple-structure) * [Example Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#example-triples) * [Simple Triple Example](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#simple-triple-example) * [Professional Credential](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#professional-credential) * [Smart Contract Deployment](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#smart-contract-deployment) * [Fractal Data Representations](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#fractal-data-representations) * [The Graph Structure](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#the-graph-structure) * [Triple Ownership and Token Curated Registries](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#triple-ownership-and-token-curated-registries) * [Integration with Other Primitives](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#integration-with-other-primitives) * [With Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#with-atoms) * [With Signals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#with-signals) * [Summary](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#summary) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals#next-steps) --- # Pin Thing | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing#__docusaurus_skipToContent_fallback) On this page Pin a "Thing" object (general entity) to IPFS for use in atom creation. Mutation Structure[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing#mutation-structure "Direct link to Mutation Structure") ------------------------------------------------------------------------------------------------------------------------------------------------------ mutation PinThing($thing: PinThingInput!) { pinThing(thing: $thing) { uri }} Variables[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing#variables "Direct link to Variables") --------------------------------------------------------------------------------------------------------------------------- { "thing": { "name": "TypeScript Programming Language", "description": "A strongly typed programming language that builds on JavaScript", "image": "ipfs://QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy", "url": "https://www.typescriptlang.org" }} Response[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing#response "Direct link to Response") ------------------------------------------------------------------------------------------------------------------------ { "data": { "pinThing": { "uri": "ipfs://QmYx8C3kNN1sFSx5b..." } }} Workflow[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing#workflow "Direct link to Workflow") ------------------------------------------------------------------------------------------------------------------------ 1. **Pin metadata** using `pinThing` mutation 2. **Get IPFS URI** from response 3. **Create atom on-chain** using the URI 4. **Query the atom** via GraphQL API Best Practices[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing#best-practices "Direct link to Best Practices") ------------------------------------------------------------------------------------------------------------------------------------------ 1. **Upload images first** if needed using `uploadImage` 2. **Include all metadata** fields for rich display 3. **Store IPFS URI** for future reference 4. **Wait for indexing** before querying the atom * [Mutation Structure](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing#mutation-structure) * [Variables](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing#variables) * [Response](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing#response) * [Workflow](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing#workflow) * [Best Practices](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing#best-practices) --- # Pin Organization | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-organization#__docusaurus_skipToContent_fallback) On this page Pin an Organization entity to IPFS for use in atom creation. Mutation Structure[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-organization#mutation-structure "Direct link to Mutation Structure") ------------------------------------------------------------------------------------------------------------------------------------------------------------- mutation PinOrganization($organization: PinOrganizationInput!) { pinOrganization(organization: $organization) { uri }} Variables[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-organization#variables "Direct link to Variables") ---------------------------------------------------------------------------------------------------------------------------------- { "organization": { "name": "Ethereum Foundation", "description": "Non-profit organization supporting Ethereum development", "email": "info@ethereum.org", "image": "ipfs://QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy", "url": "https://ethereum.foundation" }} Best Practices[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-organization#best-practices "Direct link to Best Practices") ------------------------------------------------------------------------------------------------------------------------------------------------- 1. **Include official name** of organization 2. **Add logo image** for branding 3. **Provide website URL** for reference 4. **Include contact email** if available * [Mutation Structure](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-organization#mutation-structure) * [Variables](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-organization#variables) * [Best Practices](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-organization#best-practices) --- # Atom Structuring | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#__docusaurus_skipToContent_fallback) On this page Understanding how to properly structure Atoms is crucial for building effective applications on the Intuition protocol. This guide covers advanced techniques and patterns for creating well-designed, reusable Atoms. Design Principles: Atomic Granularity[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#design-principles-atomic-granularity "Direct link to Design Principles: Atomic Granularity") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ The Power of Flat Data A crucial best practice is keeping information modular and atomic. You are economically incentivized to create "flatter" Atoms – each representing a single, minimal concept – rather than packing composite information into one Atom. ### Why Granularity Matters[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#why-granularity-matters "Direct link to Why Granularity Matters") Consider representing the statement: **"Tiger Research was founded in 2021"** #### Monolithic Approach (Not Recommended)[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#monolithic-approach-not-recommended "Direct link to Monolithic Approach (Not Recommended)") // One Atom containing all informationconst statementAtom = { data: "Tiger Research was founded in 2021"} Problems with this approach: * Hard to verify which part might be incorrect if disputed * Cannot reuse individual components * Difficult to update or correct specific elements * Less composable with other data #### Atomic Approach (Best Practice)[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#atomic-approach-best-practice "Direct link to Atomic Approach (Best Practice)") // Three separate Atomsconst tigerResearchAtom = { data: "Tiger Research" }const foundedInAtom = { data: "founded in" }const year2021Atom = { data: "2021" }// Connected via a Tripleconst foundingTriple = { subject: tigerResearchAtom, predicate: foundedInAtom, object: year2021Atom} Benefits of this approach: * Each piece can be independently verified and traced * Individual components are reusable (the `[2021]` Atom can be used in countless other triples) * Corrections can be made to specific elements without discarding everything * Trust accrued by each Atom benefits all its usages Economic Incentives for Granularity[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#economic-incentives-for-granularity "Direct link to Economic Incentives for Granularity") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Intuition's economic model naturally guides users toward optimal granularity: * **Reusable Atoms** accumulate more Signal as they're referenced in multiple Triples * **High-Signal Atoms** attract more stakes, increasing their network gravity * **Composite Atoms** with embedded data are less likely to be reused or staked * **Modular Design** maximizes potential for community adoption and value accrual Atom Structure Components[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#atom-structure-components "Direct link to Atom Structure Components") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Basic Structure[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#basic-structure "Direct link to Basic Structure") An Atom consists of three core components: 1. **Decentralized Identifier (DID)** - Unique identifier for the atom 2. **Data Content** - The actual information being represented 3. **Metadata** - Additional context and properties ### Example Atom Structure[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#example-atom-structure "Direct link to Example Atom Structure") { "id": "did:ethr:mainnet:0x3b0bc51ab9de1e5b7b6e34e5b960285805c41736", "data": { "type": "concept", "content": "Machine Learning", "description": "A subset of artificial intelligence that enables systems to learn and improve from experience", "tags": ["AI", "technology", "computing"] }, "metadata": { "created": "2024-01-15T10:30:00Z", "creator": "did:ethr:mainnet:0x123...", "version": "1.0" }} Atom Categories[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#atom-categories "Direct link to Atom Categories") ------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Concept Atoms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#concept-atoms "Direct link to Concept Atoms") Represent abstract ideas, categories, or classifications. { "type": "concept", "content": "Blockchain Technology", "category": "technology"} ### Entity Atoms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#entity-atoms "Direct link to Entity Atoms") Represent specific people, places, or things. { "type": "entity", "content": "Ethereum", "category": "blockchain", "properties": { "founded": "2015", "creator": "Vitalik Buterin" }} ### Attribute Atoms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#attribute-atoms "Direct link to Attribute Atoms") Represent characteristics or properties. { "type": "attribute", "content": "Decentralized", "category": "property", "appliesTo": ["blockchain", "governance"]} Flexibility and Scope[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#flexibility-and-scope "Direct link to Flexibility and Scope") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Atoms are not limited to static concepts. They can represent: * **Dynamic entities**: User-generated content, evolving documents * **Abstract concepts**: Tags, categories, classifications * **Data structures**: JSON schemas, configuration templates * **Content chunks**: Text snippets, code fragments (via IPFS CID) Regardless of what an Atom represents, the principles remain consistent: 1. Give it a clear, unique identity 2. Include relevant data in the atomData field 3. Keep its scope narrow for maximum verifiability and reusability Creating Atoms Programmatically[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#creating-atoms-programmatically "Direct link to Creating Atoms Programmatically") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Using the SDK[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#using-the-sdk "Direct link to Using the SDK") import { createAtomFromString, getEthMultiVaultAddressFromChainId,} from '@0xintuition/sdk'import { createPublicClient, createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { sepolia } from 'viem/chains'// 1) Configure viem clientsconst account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)const walletClient = createWalletClient({ account, chain: sepolia, transport: http() })const publicClient = createPublicClient({ chain: sepolia, transport: http() })// 2) Resolve MultiVault address for the current chainconst multivaultAddress = getEthMultiVaultAddressFromChainId(sepolia.id)// 3) Create an Atom from a simple string labelconst result = await createAtomFromString( { walletClient, publicClient, address: multivaultAddress }, 'Machine Learning',)console.log('Created atom vaultId:', result.state.vaultId) Validation Guidelines[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#validation-guidelines "Direct link to Validation Guidelines") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Ensure your atoms follow these validation rules: * **Required Fields**: `id`, `data.content`, `metadata.created` * **Content Length**: Minimum 1 character, maximum 10,000 characters * **Tag Count**: Maximum 20 tags per atom * **Metadata**: Must include creator DID and timestamp Atom Relationships[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#atom-relationships "Direct link to Atom Relationships") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Direct References[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#direct-references "Direct link to Direct References") { "content": "Deep Learning", "relatedAtoms": [ "did:ethr:mainnet:0x...", // Machine Learning atom "did:ethr:mainnet:0x..." // Neural Networks atom ]} ### Hierarchical Structure[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#hierarchical-structure "Direct link to Hierarchical Structure") { "content": "Artificial Intelligence", "children": [ "did:ethr:mainnet:0x...", // Machine Learning "did:ethr:mainnet:0x..." // Expert Systems ]} Quality Guidelines[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#quality-guidelines "Direct link to Quality Guidelines") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Content Quality[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#content-quality "Direct link to Content Quality") * Ensure accuracy and verifiability * Use clear, concise language * Provide sufficient context * Avoid redundant or duplicate atoms ### Technical Quality[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#technical-quality "Direct link to Technical Quality") * Follow proper DID standards * Include comprehensive metadata * Use consistent data formats * Implement proper versioning ### Community Standards[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#community-standards "Direct link to Community Standards") * Respect intellectual property * Avoid misleading or false information * Contribute to the ecosystem's growth * Engage with the community constructively * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#next-steps "Direct link to Next Steps") ---------------------------------------------------------------------------------------------------------------------------------------------- * [Atom Best Practices](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices) - Detailed guidelines for effective Atom design * [Triple Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/triples/fundamentals) - Learn how to connect Atoms into relationships * [Signal Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/signals/fundamentals) - Understand how to measure Atom usage and relevance * [Design Principles: Atomic Granularity](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#design-principles-atomic-granularity) * [Why Granularity Matters](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#why-granularity-matters) * [Economic Incentives for Granularity](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#economic-incentives-for-granularity) * [Atom Structure Components](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#atom-structure-components) * [Basic Structure](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#basic-structure) * [Example Atom Structure](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#example-atom-structure) * [Atom Categories](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#atom-categories) * [Concept Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#concept-atoms) * [Entity Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#entity-atoms) * [Attribute Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#attribute-atoms) * [Flexibility and Scope](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#flexibility-and-scope) * [Creating Atoms Programmatically](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#creating-atoms-programmatically) * [Using the SDK](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#using-the-sdk) * [Validation Guidelines](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#validation-guidelines) * [Atom Relationships](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#atom-relationships) * [Direct References](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#direct-references) * [Hierarchical Structure](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#hierarchical-structure) * [Quality Guidelines](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#quality-guidelines) * [Content Quality](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#content-quality) * [Technical Quality](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#technical-quality) * [Community Standards](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#community-standards) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring#next-steps) --- # Atom Best Practices | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#__docusaurus_skipToContent_fallback) On this page This guide provides comprehensive best practices for creating effective, reusable Atoms that contribute to a high-quality Intuition knowledge graph. Creating Effective Atoms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#creating-effective-atoms "Direct link to Creating Effective Atoms") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### 1\. Leverage Deterministic IDs[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#1-leverage-deterministic-ids "Direct link to 1. Leverage Deterministic IDs") Remember that identical atomData will always produce the same Atom ID. This ensures: * No duplicate Atoms for the same data * Predictable, verifiable identifiers * Consistent references across the network // Same data = same Atom IDconst atom1 = createAtom({ data: "Ethereum" })const atom2 = createAtom({ data: "Ethereum" })// atom1.id === atom2.id (always true) ### 2\. Check for Similar Atoms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#2-check-for-similar-atoms "Direct link to 2. Check for Similar Atoms") Before creating new Atoms, search for existing canonical Atoms: * Reduces fragmentation * Leverages existing Signal * Improves data consistency * Benefits from accumulated trust ### 3\. Use Clear, Descriptive Data[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#3-use-clear-descriptive-data "Direct link to 3. Use Clear, Descriptive Data") Choose unambiguous, descriptive data values: **Good:** { "data": "Machine Learning" }{ "data": "Vitalik Buterin" }{ "data": "2024-01-15T10:00:00Z" } **Avoid:** { "data": "ML" } // Ambiguous{ "data": "VB" } // Unclear{ "data": "today" } // Not specific ### 4\. Maintain Single Purpose[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#4-maintain-single-purpose "Direct link to 4. Maintain Single Purpose") Each Atom should represent one thing: **Good:** const ethereum = { data: "Ethereum" }const blockchain = { data: "blockchain" }const platform = { data: "platform" }// Combine via Triple[Ethereum] - [is a] - [blockchain platform] **Avoid:** // Too much packed into one Atomconst composite = { data: "Ethereum is a blockchain platform founded in 2015" } ### 5\. Consider Reusability[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#5-consider-reusability "Direct link to 5. Consider Reusability") Design Atoms that others will want to reference: * Use common terminology * Follow domain conventions * Keep scope focused * Think composably Atom Design Patterns[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#atom-design-patterns "Direct link to Atom Design Patterns") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Think of Atoms as **words in the Intuition dictionary**: * They are the lego-like pieces that snap into many contexts * Community Signal concentrates on the words that matter most * Triples form the "sentences" that connect these dictionary words together ### Pattern: Universal Concepts[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#pattern-universal-concepts "Direct link to Pattern: Universal Concepts") Create Atoms for widely-applicable concepts: [true][false][yes][no][member of][created by][owns] ### Pattern: Domain-Specific Terms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#pattern-domain-specific-terms "Direct link to Pattern: Domain-Specific Terms") Use precise domain language: [smart contract][ERC-20 token][liquidity pool][validator node] ### Pattern: Temporal Markers[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#pattern-temporal-markers "Direct link to Pattern: Temporal Markers") Include specific timestamps or dates: [2024-01-15][Q1 2024][2024-01-15T10:30:00Z] Integration with Triples[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#integration-with-triples "Direct link to Integration with Triples") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Atoms gain their true power when connected via Triples: ### Subject Atoms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#subject-atoms "Direct link to Subject Atoms") The entity being described: [Alice][Ethereum][USDC Token] ### Predicate Atoms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#predicate-atoms "Direct link to Predicate Atoms") The relationship or property: [owns][created][member of][deployed on] ### Object Atoms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#object-atoms "Direct link to Object Atoms") The value or target: [Bob][blockchain][Ethereum network][2024-01-15] This separation allows each component to be independently verified, updated, and trusted. Naming Conventions[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#naming-conventions "Direct link to Naming Conventions") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Consistency Rules[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#consistency-rules "Direct link to Consistency Rules") 1. **Use camelCase for property names** in structured data 2. **Maintain consistent terminology** across related atoms 3. **Follow established domain conventions** 4. **Use singular form** unless specifically plural ### Examples[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#examples "Direct link to Examples") **Good:** { "type": "concept", "content": "Smart Contract", "category": "blockchain"} **Consistent:** { "type": "entity", "content": "Uniswap Protocol", "category": "defi"} Metadata Best Practices[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#metadata-best-practices "Direct link to Metadata Best Practices") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Required Metadata[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#required-metadata "Direct link to Required Metadata") Always include: * Creation timestamps * Creator's DID * Version information for mutable atoms { "metadata": { "created": "2024-01-15T10:30:00Z", "creator": "did:ethr:mainnet:0x123...", "version": "1.0", "lastModified": "2024-01-15T10:30:00Z" }} ### Optional but Recommended[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#optional-but-recommended "Direct link to Optional but Recommended") { "metadata": { "description": "Brief description of the Atom", "tags": ["relevant", "keywords"], "category": "domain-category", "source": "https://source-url.com", "license": "CC-BY-4.0" }} Scalable Design[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#scalable-design "Direct link to Scalable Design") ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Design for Composability[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#design-for-composability "Direct link to Design for Composability") Create Atoms that can be combined in multiple ways: // Reusable building blocksconst alice = { data: "Alice" }const bob = { data: "Bob" }const friendOf = { data: "friend of" }const knows = { data: "knows" }// Multiple compositions[Alice] - [friend of] - [Bob][Alice] - [knows] - [Bob] ### Consider Future Extensibility[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#consider-future-extensibility "Direct link to Consider Future Extensibility") Design with growth in mind: * Use versioning * Include extension points * Maintain backward compatibility * Document changes ### Maintain Backward Compatibility[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#maintain-backward-compatibility "Direct link to Maintain Backward Compatibility") When updating Atoms: * Preserve existing fields * Add new fields carefully * Document breaking changes * Consider migration paths Common Pitfalls to Avoid[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#common-pitfalls-to-avoid "Direct link to Common Pitfalls to Avoid") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### 1\. Overly Broad Atoms[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#1-overly-broad-atoms "Direct link to 1. Overly Broad Atoms") **Avoid:** { "data": "Technology" } // Too broad **Better:** { "data": "Blockchain Technology" }{ "data": "AI Technology" } ### 2\. Redundant Information[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#2-redundant-information "Direct link to 2. Redundant Information") **Avoid:** { "data": "Ethereum blockchain cryptocurrency"} **Better:** // Separate Atoms connected via Triples[Ethereum] - [is a] - [blockchain][Ethereum] - [is a] - [cryptocurrency] ### 3\. Time-Sensitive Data Without Timestamps[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#3-time-sensitive-data-without-timestamps "Direct link to 3. Time-Sensitive Data Without Timestamps") **Avoid:** { "data": "Current CEO" } **Better:** [Company X] - [has CEO] - [Person Y]// Add temporal context via Triple metadata ### 4\. Ambiguous References[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#4-ambiguous-references "Direct link to 4. Ambiguous References") **Avoid:** { "data": "Paris" } // City or person? **Better:** { "data": "Paris, France" }{ "data": "Paris Hilton" } Performance Considerations[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#performance-considerations "Direct link to Performance Considerations") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Optimize for Queries[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#optimize-for-queries "Direct link to Optimize for Queries") * Use indexed fields * Keep data structures flat when possible * Minimize nested complexity * Consider query patterns ### Balance Detail and Size[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#balance-detail-and-size "Direct link to Balance Detail and Size") * Include necessary context * Avoid bloat * Use references for large data * Store heavy content off-chain (IPFS) Quality Checklist[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#quality-checklist "Direct link to Quality Checklist") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Before creating an Atom, verify: * [ ] Clear, unambiguous data * [ ] Single, focused purpose * [ ] Follows naming conventions * [ ] Includes required metadata * [ ] Checked for existing similar Atoms * [ ] Designed for reusability * [ ] Appropriate granularity * [ ] Verifiable content * [ ] Respects community standards * [ ] Documented if complex * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------------------------------- * [Triple Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/triples/fundamentals) - Learn how to connect Atoms into meaningful relationships * [Signal Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/signals/fundamentals) - Understand how to build trust in your Atoms * [Atom Structuring](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring) - Review advanced structuring techniques * [Creating Effective Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#creating-effective-atoms) * [1\. Leverage Deterministic IDs](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#1-leverage-deterministic-ids) * [2\. Check for Similar Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#2-check-for-similar-atoms) * [3\. Use Clear, Descriptive Data](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#3-use-clear-descriptive-data) * [4\. Maintain Single Purpose](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#4-maintain-single-purpose) * [5\. Consider Reusability](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#5-consider-reusability) * [Atom Design Patterns](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#atom-design-patterns) * [Pattern: Universal Concepts](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#pattern-universal-concepts) * [Pattern: Domain-Specific Terms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#pattern-domain-specific-terms) * [Pattern: Temporal Markers](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#pattern-temporal-markers) * [Integration with Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#integration-with-triples) * [Subject Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#subject-atoms) * [Predicate Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#predicate-atoms) * [Object Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#object-atoms) * [Naming Conventions](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#naming-conventions) * [Consistency Rules](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#consistency-rules) * [Examples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#examples) * [Metadata Best Practices](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#metadata-best-practices) * [Required Metadata](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#required-metadata) * [Optional but Recommended](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#optional-but-recommended) * [Scalable Design](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#scalable-design) * [Design for Composability](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#design-for-composability) * [Consider Future Extensibility](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#consider-future-extensibility) * [Maintain Backward Compatibility](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#maintain-backward-compatibility) * [Common Pitfalls to Avoid](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#common-pitfalls-to-avoid) * [1\. Overly Broad Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#1-overly-broad-atoms) * [2\. Redundant Information](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#2-redundant-information) * [3\. Time-Sensitive Data Without Timestamps](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#3-time-sensitive-data-without-timestamps) * [4\. Ambiguous References](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#4-ambiguous-references) * [Performance Considerations](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#performance-considerations) * [Optimize for Queries](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#optimize-for-queries) * [Balance Detail and Size](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#balance-detail-and-size) * [Quality Checklist](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#quality-checklist) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices#next-steps) --- # Activity Feed | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/examples/activity-feed#__docusaurus_skipToContent_fallback) On this page Build an activity feed showing recent protocol activity. Query[​](https://www.docs.intuition.systems/docs/graphql-api/examples/activity-feed#query "Direct link to Query") ------------------------------------------------------------------------------------------------------------------ #### Query β–Ά Run Query query GetRecentActivity($limit: Int!) { deposits( order\_by: { created\_at: desc } limit: $limit ) { id sender\_id assets\_after\_fees created\_at vault { term { atom { label } } } } redemptions( order\_by: { created\_at: desc } limit: $limit ) { id receiver\_id assets created\_at } } #### Variables Click "Run Query" to execute the GraphQL query and see results * [Query](https://www.docs.intuition.systems/docs/graphql-api/examples/activity-feed#query) --- # Client Setup | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#__docusaurus_skipToContent_fallback) On this page The Intuition GraphQL API works with any GraphQL client in any language. This guide provides setup examples for popular clients across different languages. JavaScript / TypeScript[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#javascript--typescript "Direct link to JavaScript / TypeScript") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- For JavaScript/TypeScript projects, import endpoints from the package instead of hardcoding them: import { API_URL_PROD, API_URL_DEV } from '@0xintuition/graphql'// API_URL_PROD = 'https://mainnet.intuition.sh/v1/graphql'// API_URL_DEV = 'https://testnet.intuition.sh/v1/graphql' ### graphql-request[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#graphql-request "Direct link to graphql-request") Lightweight and simple GraphQL client: import { GraphQLClient } from 'graphql-request'import { API_URL_PROD } from '@0xintuition/graphql'const client = new GraphQLClient(API_URL_PROD)const query = ` query GetAtom($id: String!) { atom(term_id: $id) { term_id label image } }`const data = await client.request(query, { id: '0x...' })console.log(data.atom) **Installation**: npm install graphql-request graphql [graphql-request documentation](https://github.com/jasonkuhrt/graphql-request) ### Apollo Client[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#apollo-client "Direct link to Apollo Client") Full-featured GraphQL client with caching and React integration: import { ApolloClient, InMemoryCache, gql } from '@apollo/client'import { API_URL_PROD } from '@0xintuition/graphql'const client = new ApolloClient({ uri: API_URL_PROD, cache: new InMemoryCache()})const { data } = await client.query({ query: gql` query GetAtom($id: String!) { atom(term_id: $id) { term_id label image } } `, variables: { id: '0x...' }})console.log(data.atom) **Installation**: npm install @apollo/client graphql [@apollo/client documentation](https://www.apollographql.com/docs/react/) ### urql[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#urql "Direct link to urql") Highly customizable and lightweight GraphQL client: import { createClient } from 'urql'import { API_URL_PROD } from '@0xintuition/graphql'const client = createClient({ url: API_URL_PROD})const query = ` query GetAtom($id: String!) { atom(term_id: $id) { term_id label } }`const result = await client.query(query, { id: '0x...' }).toPromise()console.log(result.data.atom) **Installation**: npm install urql graphql [urql documentation](https://formidable.com/open-source/urql/docs/) ### Plain fetch[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#plain-fetch "Direct link to Plain fetch") No dependencies required: import { API_URL_PROD } from '@0xintuition/graphql'const response = await fetch(API_URL_PROD, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ query: ` query GetAtom($id: String!) { atom(term_id: $id) { term_id label } } `, variables: { id: '0x...' } })})const { data } = await response.json()console.log(data.atom) Python[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#python "Direct link to Python") --------------------------------------------------------------------------------------------------------------------------- ### gql[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#gql "Direct link to gql") Type-safe Python GraphQL client: from gql import gql, Clientfrom gql.transport.requests import RequestsHTTPTransporttransport = RequestsHTTPTransport(url='https://mainnet.intuition.sh/v1/graphql')client = Client(transport=transport)query = gql(''' query GetAtom($id: String!) { atom(term_id: $id) { term_id label image } }''')result = client.execute(query, variable_values={'id': '0x...'})print(result['atom']) **Installation**: pip install gql[requests] [gql documentation](https://gql.readthedocs.io/) ### python-graphql-client[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#python-graphql-client "Direct link to python-graphql-client") Simple and lightweight GraphQL client: from python_graphql_client import GraphqlClientclient = GraphqlClient(endpoint='https://mainnet.intuition.sh/v1/graphql')query = ''' query GetAtom($id: String!) { atom(term_id: $id) { term_id label image } }'''data = client.execute(query=query, variables={'id': '0x...'})print(data['data']['atom']) **Installation**: pip install python-graphql-client [python-graphql-client documentation](https://github.com/prisma-labs/python-graphql-client) Go[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#go "Direct link to Go") --------------------------------------------------------------------------------------------------------------- ### machinebox/graphql[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#machineboxgraphql "Direct link to machinebox/graphql") Simple Go GraphQL client: package mainimport ( "context" "fmt" "log" "github.com/machinebox/graphql")func main() { client := graphql.NewClient("https://mainnet.intuition.sh/v1/graphql") req := graphql.NewRequest(` query GetAtom($id: String!) { atom(term_id: $id) { term_id label image } } `) req.Var("id", "0x...") var response struct { Atom struct { TermID string `json:"term_id"` Label string `json:"label"` Image string `json:"image"` } `json:"atom"` } if err := client.Run(context.Background(), req, &response); err != nil { log.Fatal(err) } fmt.Printf("Atom: %+v\n", response.Atom)} **Installation**: go get github.com/machinebox/graphql [machinebox/graphql documentation](https://github.com/machinebox/graphql) Rust[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#rust "Direct link to Rust") --------------------------------------------------------------------------------------------------------------------- ### graphql-client[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#graphql-client "Direct link to graphql-client") Type-safe GraphQL client for Rust: use graphql_client::{GraphQLQuery, Response};use reqwest;#[derive(GraphQLQuery)]#[graphql( schema_path = "schema.graphql", query_path = "get_atom.graphql",)]struct GetAtom;#[tokio::main]async fn main() -> Result<(), Box> { let client = reqwest::Client::new(); let variables = get_atom::Variables { id: "0x...".to_string(), }; let response = client .post("https://mainnet.intuition.sh/v1/graphql") .json(&GetAtom::build_query(variables)) .send() .await? .json::>() .await?; if let Some(data) = response.data { println!("Atom: {:?}", data.atom); } Ok(())} **Installation**: [dependencies]graphql_client = "0.13"reqwest = { version = "0.11", features = ["json"] }tokio = { version = "1", features = ["full"] } [graphql-client documentation](https://github.com/graphql-rust/graphql-client) Error Handling[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#error-handling "Direct link to Error Handling") --------------------------------------------------------------------------------------------------------------------------------------------------- All GraphQL responses follow the standard error format: { "data": null, "errors": [ { "message": "Field 'nonexistent_field' not found in type 'atoms'", "extensions": { "path": "$.selectionSet.atoms.selectionSet.nonexistent_field", "code": "validation-failed" } } ]} **Common error types**: * **validation-failed**: Query syntax or schema validation error * **constraint-violation**: Database constraint violated * **permission-denied**: Access to restricted field (not applicable for public API) * **unexpected**: Internal server error **Best practices for error handling**: // Example with graphql-requestimport { GraphQLClient, ClientError } from 'graphql-request'try { const data = await client.request(query, variables) console.log('Success:', data)} catch (error) { if (error instanceof ClientError) { console.error('GraphQL errors:', error.response.errors) console.error('Status:', error.response.status) } else { console.error('Network error:', error) }} Next Steps[​](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#next-steps "Direct link to Next Steps") --------------------------------------------------------------------------------------------------------------------------------------- * [Schema Reference](https://www.docs.intuition.systems/docs/graphql-api/getting-started/schema-reference) - Learn about schema features * [Query Patterns](https://www.docs.intuition.systems/docs/graphql-api/queries/atoms/single-atom) - Explore common queries * [Best Practices](https://www.docs.intuition.systems/docs/graphql-api/best-practices/request-only-needed) - Optimize your queries * [JavaScript / TypeScript](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#javascript--typescript) * [graphql-request](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#graphql-request) * [Apollo Client](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#apollo-client) * [urql](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#urql) * [Plain fetch](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#plain-fetch) * [Python](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#python) * [gql](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#gql) * [python-graphql-client](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#python-graphql-client) * [Go](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#go) * [machinebox/graphql](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#machineboxgraphql) * [Rust](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#rust) * [graphql-client](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#graphql-client) * [Error Handling](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#error-handling) * [Next Steps](https://www.docs.intuition.systems/docs/graphql-api/getting-started/client-setup#next-steps) --- # Triple Events | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/events/triple-events#__docusaurus_skipToContent_fallback) On this page Functions for parsing triple-related events from transaction receipts. eventParseTripleCreated[​](https://www.docs.intuition.systems/docs/protocol/events/triple-events#eventparsetriplecreated "Direct link to eventParseTripleCreated") ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Parse TripleCreated events from a transaction. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/events/triple-events#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | publicClient | `PublicClient` | Viem public client | Yes | | txHash | `Hash` | Transaction hash | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/events/triple-events#returns "Direct link to Returns") Promise> ### Example[​](https://www.docs.intuition.systems/docs/protocol/events/triple-events#example "Direct link to Example") import { eventParseTripleCreated } from '@0xintuition/protocol'const events = await eventParseTripleCreated(publicClient, txHash)events.forEach((event) => { console.log('Triple ID:', event.args.tripleId) console.log('Subject:', event.args.subjectId) console.log('Predicate:', event.args.predicateId) console.log('Object:', event.args.objectId) console.log('Counter vault:', event.args.counterVaultId)}) * * * eventParseTripleDepositCreated[​](https://www.docs.intuition.systems/docs/protocol/events/triple-events#eventparsetripledepositcreated "Direct link to eventParseTripleDepositCreated") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Parse TripleDepositCreated events. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/events/triple-events#returns-1 "Direct link to Returns") Promise> ### Example[​](https://www.docs.intuition.systems/docs/protocol/events/triple-events#example-1 "Direct link to Example") import { eventParseTripleDepositCreated } from '@0xintuition/protocol'const events = await eventParseTripleDepositCreated(publicClient, txHash)events.forEach((event) => { console.log('Triple ID:', event.args.tripleId) console.log('Deposit:', formatEther(event.args.assets)) console.log('Shares:', formatEther(event.args.shares))}) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/events/triple-events#see-also "Direct link to See Also") ---------------------------------------------------------------------------------------------------------------------- * [Atom Events](https://www.docs.intuition.systems/docs/protocol/events/atom-events) * [Vault Events](https://www.docs.intuition.systems/docs/protocol/events/vault-events) * [eventParseTripleCreated](https://www.docs.intuition.systems/docs/protocol/events/triple-events#eventparsetriplecreated) * [Parameters](https://www.docs.intuition.systems/docs/protocol/events/triple-events#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/events/triple-events#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/events/triple-events#example) * [eventParseTripleDepositCreated](https://www.docs.intuition.systems/docs/protocol/events/triple-events#eventparsetripledepositcreated) * [Returns](https://www.docs.intuition.systems/docs/protocol/events/triple-events#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/events/triple-events#example-1) * [See Also](https://www.docs.intuition.systems/docs/protocol/events/triple-events#see-also) --- # Choose Appropriate Operators | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/best-practices/comparison-operators#__docusaurus_skipToContent_fallback) On this page Use the right comparison operator for better performance. Anti-Pattern[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/comparison-operators#anti-pattern "Direct link to Anti-Pattern") ---------------------------------------------------------------------------------------------------------------------------------------------------- # BAD: Using _ilike for exact matchesquery GetAccount($address: String!) { accounts(where: { id: { _ilike: $address } }) { id label }} Best Practice[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/comparison-operators#best-practice "Direct link to Best Practice") ------------------------------------------------------------------------------------------------------------------------------------------------------- # GOOD: Use _eq or primary key lookupquery GetAccount($address: String!) { account(id: $address) { id label }} Operator Guidelines[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/comparison-operators#operator-guidelines "Direct link to Operator Guidelines") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * **\_eq**: Exact matches (fastest) * **\_ilike**: Case-insensitive pattern matching (slower) * **\_in**: Multiple values * **\_gt/\_lt**: Comparisons * **Primary key lookup**: Most efficient (when possible) * [Anti-Pattern](https://www.docs.intuition.systems/docs/graphql-api/best-practices/comparison-operators#anti-pattern) * [Best Practice](https://www.docs.intuition.systems/docs/graphql-api/best-practices/comparison-operators#best-practice) * [Operator Guidelines](https://www.docs.intuition.systems/docs/graphql-api/best-practices/comparison-operators#operator-guidelines) --- # Use Database Functions | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/best-practices/database-functions#__docusaurus_skipToContent_fallback) On this page Use backend functions for complex queries instead of client-side filtering. Anti-Pattern[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/database-functions#anti-pattern "Direct link to Anti-Pattern") -------------------------------------------------------------------------------------------------------------------------------------------------- # BAD: Manual filtering for social queriesquery GetFollowingManually($address: String!) { my_positions: positions(where: { account_id: { _eq: $address } }) { vault { term { triple { # Complex filtering in application code... } } } }} Best Practice[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/database-functions#best-practice "Direct link to Best Practice") ----------------------------------------------------------------------------------------------------------------------------------------------------- # GOOD: Using database functionsquery GetFollowingEfficiently($address: String!) { following(args: { address: $address }) { id label atom { term_id label } }} Available Functions[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/database-functions#available-functions "Direct link to Available Functions") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- * `following`: Get accounts a user follows * `positions_from_following`: Social feed of positions * `search_term`: Semantic search * `signals_from_following`: Activity from followed accounts Benefits[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/database-functions#benefits "Direct link to Benefits") -------------------------------------------------------------------------------------------------------------------------------------- 1. **Faster execution**: Runs in database 2. **Less data transfer**: Filtered server-side 3. **More maintainable**: Logic in one place * [Anti-Pattern](https://www.docs.intuition.systems/docs/graphql-api/best-practices/database-functions#anti-pattern) * [Best Practice](https://www.docs.intuition.systems/docs/graphql-api/best-practices/database-functions#best-practice) * [Available Functions](https://www.docs.intuition.systems/docs/graphql-api/best-practices/database-functions#available-functions) * [Benefits](https://www.docs.intuition.systems/docs/graphql-api/best-practices/database-functions#benefits) --- # Trust Bonding Events | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/events/trust-bonding-events#__docusaurus_skipToContent_fallback) On this page Functions for parsing Trust Bonding events from transaction receipts. eventParseRewardsClaimed[​](https://www.docs.intuition.systems/docs/protocol/events/trust-bonding-events#eventparserewardsclaimed "Direct link to eventParseRewardsClaimed") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Parse RewardsClaimed events from a transaction. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/events/trust-bonding-events#returns "Direct link to Returns") Promise> ### Example[​](https://www.docs.intuition.systems/docs/protocol/events/trust-bonding-events#example "Direct link to Example") import { eventParseRewardsClaimed } from '@0xintuition/protocol'const events = await eventParseRewardsClaimed(publicClient, txHash)events.forEach((event) => { console.log('User:', event.args.user) console.log('Rewards claimed:', formatEther(event.args.amount)) console.log('Epoch:', event.args.epoch)}) * * * Generic Event Parser[​](https://www.docs.intuition.systems/docs/protocol/events/trust-bonding-events#generic-event-parser "Direct link to Generic Event Parser") ----------------------------------------------------------------------------------------------------------------------------------------------------------------- For parsing any event from protocol contracts: import { eventParse, MultiVaultAbi, TrustBondingAbi } from '@0xintuition/protocol'// Parse any MultiVault eventconst events = await eventParse( publicClient, txHash, MultiVaultAbi, 'EventName')// Parse any TrustBonding eventconst bondingEvents = await eventParse( publicClient, txHash, TrustBondingAbi, 'EventName') * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/events/trust-bonding-events#see-also "Direct link to See Also") ----------------------------------------------------------------------------------------------------------------------------- * [Atom Events](https://www.docs.intuition.systems/docs/protocol/events/atom-events) * [Vault Events](https://www.docs.intuition.systems/docs/protocol/events/vault-events) * [Examples: Event Parsing](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing) * [eventParseRewardsClaimed](https://www.docs.intuition.systems/docs/protocol/events/trust-bonding-events#eventparserewardsclaimed) * [Returns](https://www.docs.intuition.systems/docs/protocol/events/trust-bonding-events#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/events/trust-bonding-events#example) * [Generic Event Parser](https://www.docs.intuition.systems/docs/protocol/events/trust-bonding-events#generic-event-parser) * [See Also](https://www.docs.intuition.systems/docs/protocol/events/trust-bonding-events#see-also) --- # Pagination Best Practices | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pagination#__docusaurus_skipToContent_fallback) On this page Always use limit and offset for efficient pagination with consistent ordering. Best Practice[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pagination#best-practice "Direct link to Best Practice") --------------------------------------------------------------------------------------------------------------------------------------------- query GetAtomsPage($limit: Int!, $offset: Int!) { total: atoms_aggregate { aggregate { count } } atoms( limit: $limit offset: $offset order_by: { created_at: desc } ) { term_id label }} Key Points[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pagination#key-points "Direct link to Key Points") ------------------------------------------------------------------------------------------------------------------------------------ 1. **Always include order\_by** for consistent results 2. **Fetch total count** using aggregates 3. **Use reasonable limits** (10-100 items per page) 4. **Calculate offset** as `(page - 1) * limit` * [Best Practice](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pagination#best-practice) * [Key Points](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pagination#key-points) --- # Atom with Vault | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/examples/atom-with-vault#__docusaurus_skipToContent_fallback) On this page Fetch atom metadata along with vault statistics. Use Case[​](https://www.docs.intuition.systems/docs/graphql-api/examples/atom-with-vault#use-case "Direct link to Use Case") ----------------------------------------------------------------------------------------------------------------------------- Display atom information with market data on a detail page. Query[​](https://www.docs.intuition.systems/docs/graphql-api/examples/atom-with-vault#query "Direct link to Query") -------------------------------------------------------------------------------------------------------------------- #### Query β–Ά Run Query query GetAtomWithVault($atomId: String!, $curveId: numeric!) { atom(term\_id: $atomId) { term\_id label image type created\_at creator { id label } term { vaults(where: { curve\_id: { \_eq: $curveId } }) { curve\_id total\_shares total\_assets current\_share\_price market\_cap position\_count } } } } #### Variables Click "Run Query" to execute the GraphQL query and see results Implementation[​](https://www.docs.intuition.systems/docs/graphql-api/examples/atom-with-vault#implementation "Direct link to Implementation") ----------------------------------------------------------------------------------------------------------------------------------------------- import { GraphQLClient } from 'graphql-request'import { API_URL_PROD } from '@0xintuition/graphql'const client = new GraphQLClient(API_URL_PROD)const query = ` query GetAtomWithVault($atomId: String!, $curveId: numeric!) { atom(term_id: $atomId) { term_id label image term { vaults(where: { curve_id: { _eq: $curveId } }) { total_shares market_cap position_count } } } }`const data = await client.request(query, { atomId: '0x...', curveId: '1'}) * [Use Case](https://www.docs.intuition.systems/docs/graphql-api/examples/atom-with-vault#use-case) * [Query](https://www.docs.intuition.systems/docs/graphql-api/examples/atom-with-vault#query) * [Implementation](https://www.docs.intuition.systems/docs/graphql-api/examples/atom-with-vault#implementation) --- # Efficient Filtering | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/best-practices/filtering#__docusaurus_skipToContent_fallback) On this page Filter early and use indexed fields for better performance. Best Practice[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/filtering#best-practice "Direct link to Best Practice") -------------------------------------------------------------------------------------------------------------------------------------------- query GetFilteredAtoms($type: atom_type!, $since: timestamptz!) { atoms( where: { type: { _eq: $type } created_at: { _gte: $since } } limit: 100 ) { term_id label }} Indexed Fields[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/filtering#indexed-fields "Direct link to Indexed Fields") ----------------------------------------------------------------------------------------------------------------------------------------------- These fields have database indexes: * `term_id` (primary key) * `creator_id` * `type` * `created_at` Operator Selection[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/filtering#operator-selection "Direct link to Operator Selection") ----------------------------------------------------------------------------------------------------------------------------------------------------------- * Use `_eq` for exact matches (not `_ilike`) * Use `_ilike` only for pattern matching * Use `_in` for multiple values * Combine filters with `_and` for specificity * [Best Practice](https://www.docs.intuition.systems/docs/graphql-api/best-practices/filtering#best-practice) * [Indexed Fields](https://www.docs.intuition.systems/docs/graphql-api/best-practices/filtering#indexed-fields) * [Operator Selection](https://www.docs.intuition.systems/docs/graphql-api/best-practices/filtering#operator-selection) --- # Subscriptions vs Polling | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/best-practices/subscriptions-vs-polling#__docusaurus_skipToContent_fallback) On this page Choose the right approach for your data update needs. Use Subscriptions When[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/subscriptions-vs-polling#use-subscriptions-when "Direct link to Use Subscriptions When") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * Building real-time dashboards * Monitoring live protocol activity * Data changes frequently (multiple times per minute) * User expects immediate updates * Creating notification systems **Example:** subscription WatchMyPositions($cursor: [positions_stream_cursor_input]!) { positions_stream(cursor: $cursor, batch_size: 10) { id shares vault { current_share_price } }} Use Polling When[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/subscriptions-vs-polling#use-polling-when "Direct link to Use Polling When") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- * Data updates infrequently (e.g., daily statistics) * Real-time updates aren't critical for UX * Minimizing server connections is important * Building static reports or analytics **Example:** query GetStats { stats { total_accounts total_atoms total_triples }}# Poll every 30 seconds or on user action Guidelines[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/subscriptions-vs-polling#guidelines "Direct link to Guidelines") -------------------------------------------------------------------------------------------------------------------------------------------------- * **Polling interval**: 30-60 seconds for most use cases * **Subscription batch\_size**: 10-50 items * **Handle reconnections**: Store last cursor for resumability * [Use Subscriptions When](https://www.docs.intuition.systems/docs/graphql-api/best-practices/subscriptions-vs-polling#use-subscriptions-when) * [Use Polling When](https://www.docs.intuition.systems/docs/graphql-api/best-practices/subscriptions-vs-polling#use-polling-when) * [Guidelines](https://www.docs.intuition.systems/docs/graphql-api/best-practices/subscriptions-vs-polling#guidelines) --- # Use Fragments | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/best-practices/fragments#__docusaurus_skipToContent_fallback) On this page Reuse field selections across queries with GraphQL fragments. Anti-Pattern[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/fragments#anti-pattern "Direct link to Anti-Pattern") ----------------------------------------------------------------------------------------------------------------------------------------- # BAD: Duplicating field selectionsquery GetTriple($id: String!) { triple(term_id: $id) { subject { term_id label creator { id label } } predicate { term_id label creator { id label } } object { term_id label creator { id label } } }} Best Practice[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/fragments#best-practice "Direct link to Best Practice") -------------------------------------------------------------------------------------------------------------------------------------------- # GOOD: Using fragmentsfragment AtomBasics on atoms { term_id label creator { id label }}query GetTriple($id: String!) { triple(term_id: $id) { subject { ...AtomBasics } predicate { ...AtomBasics } object { ...AtomBasics } }} Benefits[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/fragments#benefits "Direct link to Benefits") ----------------------------------------------------------------------------------------------------------------------------- 1. **DRY code**: Define once, use everywhere 2. **Easier maintenance**: Update in one place 3. **Consistent data**: Same fields across queries 4. **Better readability**: Named, semantic units * [Anti-Pattern](https://www.docs.intuition.systems/docs/graphql-api/best-practices/fragments#anti-pattern) * [Best Practice](https://www.docs.intuition.systems/docs/graphql-api/best-practices/fragments#best-practice) * [Benefits](https://www.docs.intuition.systems/docs/graphql-api/best-practices/fragments#benefits) --- # Complex Filtering | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/examples/complex-filtering#__docusaurus_skipToContent_fallback) On this page Implement multi-criteria search across entities. Query[​](https://www.docs.intuition.systems/docs/graphql-api/examples/complex-filtering#query "Direct link to Query") ---------------------------------------------------------------------------------------------------------------------- #### Query β–Ά Run Query query GlobalSearch($searchTerm: String!, $limit: Int!) { accounts( where: { \_or: \[\ { label: { \_ilike: $searchTerm } }\ { atom: { label: { \_ilike: $searchTerm } } }\ \] } limit: $limit ) { id label image } atoms( where: { label: { \_ilike: $searchTerm } } limit: $limit ) { term\_id label image type } triples( where: { \_or: \[\ { subject: { label: { \_ilike: $searchTerm } } }\ { predicate: { label: { \_ilike: $searchTerm } } }\ { object: { label: { \_ilike: $searchTerm } } }\ \] } limit: $limit ) { term\_id subject { label } predicate { label } object { label } } } #### Variables Click "Run Query" to execute the GraphQL query and see results * [Query](https://www.docs.intuition.systems/docs/graphql-api/examples/complex-filtering#query) --- # Image & IPFS Operations | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#__docusaurus_skipToContent_fallback) On this page The Intuition GraphQL API provides mutations for uploading images and JSON data to IPFS (InterPlanetary File System). These operations return IPFS hashes that can be used in atom creation. Available Operations[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#available-operations "Direct link to Available Operations") ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | Operation | Description | | --- | --- | | [`uploadImage`](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image) | Upload a base64-encoded image to IPFS | | [`uploadImageFromUrl`](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url) | Upload an image from a URL to IPFS | | [`uploadJsonToIpfs`](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs) | Upload JSON metadata to IPFS | Use Cases[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#use-cases "Direct link to Use Cases") --------------------------------------------------------------------------------------------------------------------------------- ### Atom Creation Workflow[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#atom-creation-workflow "Direct link to Atom Creation Workflow") When creating atoms with images or metadata: 1. Upload image using `uploadImage` or `uploadImageFromUrl` 2. Upload JSON metadata using `uploadJsonToIpfs` 3. Use returned IPFS hashes in atom creation ### Profile Images[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#profile-images "Direct link to Profile Images") Upload profile images for accounts: * Avatar images * Banner images * Organization logos ### Metadata Storage[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#metadata-storage "Direct link to Metadata Storage") Store structured metadata on IPFS: * Thing descriptions * Organization details * Person profiles Quick Start[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#quick-start "Direct link to Quick Start") --------------------------------------------------------------------------------------------------------------------------------------- import { GraphQLClient } from 'graphql-request'import { API_URL_PROD } from '@0xintuition/graphql'const client = new GraphQLClient(API_URL_PROD)// Upload an image from URLconst imageResult = await client.request(` mutation UploadImageFromUrl($url: String!) { uploadImageFromUrl(url: $url) { hash url size } }`, { url: 'https://example.com/image.png'})// Upload JSON metadataconst jsonResult = await client.request(` mutation UploadJsonToIpfs($json: JSON!) { uploadJsonToIpfs(json: $json) { hash url } }`, { json: { name: 'My Atom', description: 'Description here', image: imageResult.uploadImageFromUrl.url }})console.log('Metadata URL:', jsonResult.uploadJsonToIpfs.url)// Use this URL when creating the atom IPFS URL Format[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#ipfs-url-format "Direct link to IPFS URL Format") --------------------------------------------------------------------------------------------------------------------------------------------------- All uploaded content is accessible via IPFS: ipfs:// The API returns both the raw hash and a gateway URL: { "hash": "QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy", "url": "ipfs://QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy"} File Size Limits[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#file-size-limits "Direct link to File Size Limits") ------------------------------------------------------------------------------------------------------------------------------------------------------ | Upload Type | Maximum Size | | --- | --- | | Image (base64) | 5 MB | | Image from URL | 10 MB | | JSON | 1 MB | Supported Image Formats[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#supported-image-formats "Direct link to Supported Image Formats") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * JPEG / JPG * PNG * GIF * WebP * SVG Related Documentation[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#related-documentation "Direct link to Related Documentation") --------------------------------------------------------------------------------------------------------------------------------------------------------------------- * [Upload Image](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image) - Base64 image upload * [Upload Image from URL](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url) - URL-based upload * [Upload JSON to IPFS](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs) - JSON metadata upload * [Pin Mutations](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing) - Pin entities to IPFS * [Available Operations](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#available-operations) * [Use Cases](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#use-cases) * [Atom Creation Workflow](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#atom-creation-workflow) * [Profile Images](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#profile-images) * [Metadata Storage](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#metadata-storage) * [Quick Start](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#quick-start) * [IPFS URL Format](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#ipfs-url-format) * [File Size Limits](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#file-size-limits) * [Supported Image Formats](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#supported-image-formats) * [Related Documentation](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/overview#related-documentation) --- # Overview | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/overview#__docusaurus_skipToContent_fallback) On this page Loading diagram... Intuition provides GraphQL APIs for querying its knowledge graph in a convenient and versatile way. **Available endpoints** ### Intuition mainnet https://mainnet.intuition.sh/v1/graphql [Try on GraphQL Explorer](https://studio.apollographql.com/sandbox/explorer?endpoint=https://mainnet.intuition.sh/v1/graphql) ### Intuition testnet https://testnet.intuition.sh/v1/graphql [Try on GraphQL Explorer](https://studio.apollographql.com/sandbox/explorer?endpoint=https://testnet.intuition.sh/v1/graphql) Alternatively, you can import these URLs from the GraphQL package: import { API_URL_PROD, API_URL_DEV } from '@0xintuition/graphql' If this is your first time using GraphQL, you can learn more at [graphql.org](https://graphql.org/) . There are a few ways to get started with this GraphQL API, depending on the level of abstraction and customization you require : [### \ \ SDK\ \ Integrate with Intuition smart contracts using our TypeScript SDK.](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup) [### \ \ Custom Queries\ \ Create bespoke GraphQL queries for your specific use case.](https://www.docs.intuition.systems/docs/graphql-api/custom-queries) ### GraphQL Package[​](https://www.docs.intuition.systems/docs/graphql-api/overview#graphql-package "Direct link to GraphQL Package") [### \ \ Install it with NPM\ \ Install and use the NPM package with ready-made React Query hooks.](https://www.docs.intuition.systems/docs/graphql-api/npm-package) [### \ \ Use it as a GraphQL Generator\ \ Use the GraphQL package to generate your own queries and mutations.](https://www.docs.intuition.systems/docs/graphql-api/npm-package) See GraphQL in Action[​](https://www.docs.intuition.systems/docs/graphql-api/overview#see-graphql-in-action "Direct link to See GraphQL in Action") ---------------------------------------------------------------------------------------------------------------------------------------------------- Check out these complete tutorials using the GraphQL API: * **[Finding Top Dapps](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase) ** - Query and rank decentralized applications by market cap * **[Building Activity Feeds](https://www.docs.intuition.systems/docs/tutorials/queries/building-user-activity-feeds) ** - Create real-time user activity streams * **[Discovering Trusted Accounts](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts) ** - Build trust graphs and find reliable accounts * **[Finding Related Claims](https://www.docs.intuition.systems/docs/tutorials/queries/finding-related-claims) ** - Traverse the knowledge graph to find connections [More tutorials β†’](https://www.docs.intuition.systems/docs/tutorials/overview) Interactive Playground[​](https://www.docs.intuition.systems/docs/graphql-api/overview#interactive-playground "Direct link to Interactive Playground") ------------------------------------------------------------------------------------------------------------------------------------------------------- Try the Intuition GraphQL API straight from your browser! The playground below connects to the live testnet endpoint and allows you to explore the knowledge graph in real time. Query AtomsQuery TriplesQuery User PositionsSearch Atoms by LabelGet Vault StatisticsQuery AccountsQuery Atom by IDQuery Triple by IDQuery User Activity #### Query β–Ά Run Query query GetAtoms { atoms(limit: 10, order\_by: { created\_at: desc }) { term\_id label emoji type image created\_at block\_number creator { id label } } } #### Variables Click "Run Query" to execute the GraphQL query and see results * [GraphQL Package](https://www.docs.intuition.systems/docs/graphql-api/overview#graphql-package) * [See GraphQL in Action](https://www.docs.intuition.systems/docs/graphql-api/overview#see-graphql-in-action) * [Interactive Playground](https://www.docs.intuition.systems/docs/graphql-api/overview#interactive-playground) --- # Vault Events | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/events/vault-events#__docusaurus_skipToContent_fallback) On this page Functions for parsing vault-related events from transaction receipts. eventParseDeposited[​](https://www.docs.intuition.systems/docs/protocol/events/vault-events#eventparsedeposited "Direct link to eventParseDeposited") ------------------------------------------------------------------------------------------------------------------------------------------------------ Parse Deposited events from a transaction. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/events/vault-events#returns "Direct link to Returns") Promise> ### Example[​](https://www.docs.intuition.systems/docs/protocol/events/vault-events#example "Direct link to Example") import { eventParseDeposited } from '@0xintuition/protocol'const events = await eventParseDeposited(publicClient, txHash)events.forEach((event) => { console.log('Vault ID:', event.args.vaultId) console.log('Deposited:', formatEther(event.args.assets)) console.log('Shares received:', formatEther(event.args.shares))}) * * * eventParseRedeemed[​](https://www.docs.intuition.systems/docs/protocol/events/vault-events#eventparseredeemed "Direct link to eventParseRedeemed") --------------------------------------------------------------------------------------------------------------------------------------------------- Parse Redeemed events from a transaction. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/events/vault-events#returns-1 "Direct link to Returns") Promise> ### Example[​](https://www.docs.intuition.systems/docs/protocol/events/vault-events#example-1 "Direct link to Example") import { eventParseRedeemed } from '@0xintuition/protocol'const events = await eventParseRedeemed(publicClient, txHash)events.forEach((event) => { console.log('Vault ID:', event.args.vaultId) console.log('Shares redeemed:', formatEther(event.args.shares)) console.log('Assets received:', formatEther(event.args.assets))}) * * * eventParseSharePriceChanged[​](https://www.docs.intuition.systems/docs/protocol/events/vault-events#eventparsesharepricechanged "Direct link to eventParseSharePriceChanged") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Parse SharePriceChanged events. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/events/vault-events#returns-2 "Direct link to Returns") Promise> ### Example[​](https://www.docs.intuition.systems/docs/protocol/events/vault-events#example-2 "Direct link to Example") import { eventParseSharePriceChanged } from '@0xintuition/protocol'const events = await eventParseSharePriceChanged(publicClient, txHash)events.forEach((event) => { console.log('Vault ID:', event.args.vaultId) console.log('Old price:', formatEther(event.args.oldPrice)) console.log('New price:', formatEther(event.args.newPrice))}) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/events/vault-events#see-also "Direct link to See Also") --------------------------------------------------------------------------------------------------------------------- * [Atom Events](https://www.docs.intuition.systems/docs/protocol/events/atom-events) * [Triple Events](https://www.docs.intuition.systems/docs/protocol/events/triple-events) * [Examples: Event Parsing](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing) * [eventParseDeposited](https://www.docs.intuition.systems/docs/protocol/events/vault-events#eventparsedeposited) * [Returns](https://www.docs.intuition.systems/docs/protocol/events/vault-events#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/events/vault-events#example) * [eventParseRedeemed](https://www.docs.intuition.systems/docs/protocol/events/vault-events#eventparseredeemed) * [Returns](https://www.docs.intuition.systems/docs/protocol/events/vault-events#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/events/vault-events#example-1) * [eventParseSharePriceChanged](https://www.docs.intuition.systems/docs/protocol/events/vault-events#eventparsesharepricechanged) * [Returns](https://www.docs.intuition.systems/docs/protocol/events/vault-events#returns-2) * [Example](https://www.docs.intuition.systems/docs/protocol/events/vault-events#example-2) * [See Also](https://www.docs.intuition.systems/docs/protocol/events/vault-events#see-also) --- # Protocol Package Overview | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#__docusaurus_skipToContent_fallback) On this page The `@0xintuition/protocol` package is a comprehensive TypeScript/JavaScript SDK for interacting with the Intuition onchain knowledge graph. It provides low-level access to build, query, and manage atoms (entities), triples (statements), vaults, and bonding rewards on the Intuition blockchain. What is the Protocol Package?[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#what-is-the-protocol-package "Direct link to What is the Protocol Package?") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The Protocol package is built on top of [viem](https://viem.sh/) , providing type-safe, performant access to all Intuition smart contracts. It handles: * **Atom Management**: Create and query entities (people, organizations, concepts) * **Triple Management**: Create statements connecting atoms (subject-predicate-object) * **Vault Operations**: Deposit and redeem assets, manage shares * **Trust Bonding**: Participate in epoch-based rewards and staking * **Event Parsing**: Extract structured data from transaction events * **Configuration**: Query protocol parameters and fees Installation[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#installation "Direct link to Installation") -------------------------------------------------------------------------------------------------------------------------------------- Install the package along with its peer dependency `viem`: * npm * pnpm * yarn * bun npm install viem @0xintuition/protocol pnpm install viem @0xintuition/protocol yarn add viem @0xintuition/protocol bun install viem @0xintuition/protocol **Peer Dependencies:** `viem ^2.0.0` Quick Start[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#quick-start "Direct link to Quick Start") ----------------------------------------------------------------------------------------------------------------------------------- Here's a minimal example to create an atom: import { intuitionTestnet, getMultiVaultAddressFromChainId, multiVaultCreateAtoms, multiVaultGetAtomCost, eventParseAtomCreated,} from '@0xintuition/protocol'import { createPublicClient, createWalletClient, http, toHex } from 'viem'// Setup clientsconst publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),})const walletClient = createWalletClient({ chain: intuitionTestnet, transport: http(), account, // your account (metamask, private key, etc)})// Get contract addressconst address = getMultiVaultAddressFromChainId(intuitionTestnet.id)// Create an atomconst atomCost = await multiVaultGetAtomCost({ address, publicClient })const atomUri = toHex('Hello, Intuition!')const txHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [[atomUri], [atomCost]], value: atomCost, })// Parse the created atomconst events = await eventParseAtomCreated(publicClient, txHash)console.log('Atom ID:', events[0].args.termId) Key Features[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#key-features "Direct link to Key Features") -------------------------------------------------------------------------------------------------------------------------------------- ### Type-Safe Interactions[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#type-safe-interactions "Direct link to Type-Safe Interactions") Built on viem for full TypeScript support with auto-completion and type inference: import type { ReadConfig, WriteConfig } from '@0xintuition/protocol'// Read-only operationsconst readConfig: ReadConfig = { address: contractAddress, publicClient: publicClient,}// Write operations (transactions)const writeConfig: WriteConfig = { address: contractAddress, publicClient: publicClient, walletClient: walletClient,} ### Multi-Network Support[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#multi-network-support "Direct link to Multi-Network Support") Works seamlessly across Intuition Mainnet and Testnet: import { intuitionMainnet, intuitionTestnet } from '@0xintuition/protocol'// Mainnet (Chain ID: 1155)const mainnetClient = createPublicClient({ chain: intuitionMainnet, transport: http(),})// Testnet (Chain ID: 13579)const testnetClient = createPublicClient({ chain: intuitionTestnet, transport: http(),}) ### Comprehensive Event Parsing[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#comprehensive-event-parsing "Direct link to Comprehensive Event Parsing") Extract structured data from transaction receipts: import { eventParseAtomCreated, eventParseTripleCreated, eventParseDeposited,} from '@0xintuition/protocol'// Parse multiple event types from a single transactionconst atomEvents = await eventParseAtomCreated(publicClient, txHash)const depositEvents = await eventParseDeposited(publicClient, txHash)console.log('Atom ID:', atomEvents[0]?.args.termId)console.log('Shares received:', depositEvents[0]?.args.shares) ### Batch Operations[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#batch-operations "Direct link to Batch Operations") Optimize gas costs with batch operations: import { multiVaultDepositBatch } from '@0xintuition/protocol'const txHash = await multiVaultDepositBatch( { address, walletClient, publicClient }, { args: [ receiverAddress, [vaultId1, vaultId2, vaultId3], // Multiple vaults [curveId1, curveId2, curveId3], // Bonding curves [assets1, assets2, assets3], // Deposit amounts [minShares1, minShares2, minShares3], // Slippage protection ], value: assets1 + assets2 + assets3, }) Package Structure[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#package-structure "Direct link to Package Structure") ----------------------------------------------------------------------------------------------------------------------------------------------------- The Protocol package is organized into several modules: * **MultiVault Operations**: Core atom, triple, and vault functions * **Trust Bonding**: Epoch-based rewards and staking * **Wrapped Trust**: Native token wrapping/unwrapping * **Event Parsing**: Transaction event extraction * **Configuration**: Protocol parameters and deployments * **Types**: TypeScript type definitions * **ABIs**: Contract ABIs for all protocol contracts When to Use Protocol Package[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#when-to-use-protocol-package "Direct link to When to Use Protocol Package") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The Protocol package is ideal when you need: * **Low-level control**: Direct access to contract functions with minimal abstraction * **Performance**: Optimized viem-based interactions * **Batch operations**: Create multiple atoms/triples or deposit to multiple vaults in one transaction * **Event parsing**: Extract detailed event data from transactions * **Custom workflows**: Build your own higher-level abstractions For simpler, more user-friendly interactions, consider using the [SDK Package](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) which provides higher-level abstractions including IPFS pinning, JSON-LD support, and simplified APIs. Next Steps[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#next-steps "Direct link to Next Steps") -------------------------------------------------------------------------------------------------------------------------------- * [Configuration Guide](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration) - Set up clients and networks * [API Reference](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms) - Explore all available functions * [Examples](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples) - See complete workflows Resources[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#resources "Direct link to Resources") ----------------------------------------------------------------------------------------------------------------------------- * **Repository**: [github.com/0xIntuition/intuition-ts](https://github.com/0xIntuition/intuition-ts) * **NPM Package**: [@0xintuition/protocol](https://www.npmjs.com/package/@0xintuition/protocol) * **Viem Documentation**: [viem.sh](https://viem.sh/) See Also[​](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#see-also "Direct link to See Also") -------------------------------------------------------------------------------------------------------------------------- * [SDK Package](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) - Higher-level API with IPFS and JSON-LD support * [GraphQL API](https://www.docs.intuition.systems/docs/graphql-api/overview) - Query protocol data efficiently * [Primitives Overview](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) - Understand atoms, triples, and signals * [What is the Protocol Package?](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#what-is-the-protocol-package) * [Installation](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#installation) * [Quick Start](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#quick-start) * [Key Features](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#key-features) * [Type-Safe Interactions](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#type-safe-interactions) * [Multi-Network Support](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#multi-network-support) * [Comprehensive Event Parsing](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#comprehensive-event-parsing) * [Batch Operations](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#batch-operations) * [Package Structure](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#package-structure) * [When to Use Protocol Package](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#when-to-use-protocol-package) * [Next Steps](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#next-steps) * [Resources](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#resources) * [See Also](https://www.docs.intuition.systems/docs/protocol/getting-started/overview#see-also) --- # Use Pre-Computed Statistics | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pre-computed-stats#__docusaurus_skipToContent_fallback) On this page Leverage time-series aggregation tables for efficient analytics. Anti-Pattern[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pre-computed-stats#anti-pattern "Direct link to Anti-Pattern") -------------------------------------------------------------------------------------------------------------------------------------------------- # BAD: Computing trends from raw eventsquery GetPriceHistory($termId: String!) { share_price_changes( where: { term_id: { _eq: $termId } } order_by: { updated_at: asc } ) { updated_at share_price total_assets total_shares }}# Then computing daily aggregates in application code Best Practice[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pre-computed-stats#best-practice "Direct link to Best Practice") ----------------------------------------------------------------------------------------------------------------------------------------------------- # GOOD: Using pre-computed daily statisticsquery GetDailyPriceStats($termId: String!, $curveId: numeric!) { share_price_change_stats_daily( where: { term_id: { _eq: $termId } curve_id: { _eq: $curveId } } order_by: { bucket: desc } limit: 30 ) { bucket first_share_price last_share_price difference change_count }} Available Tables[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pre-computed-stats#available-tables "Direct link to Available Tables") -------------------------------------------------------------------------------------------------------------------------------------------------------------- * `share_price_change_stats_hourly/daily/weekly/monthly` * `signal_stats_hourly/daily/monthly` Benefits[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pre-computed-stats#benefits "Direct link to Benefits") -------------------------------------------------------------------------------------------------------------------------------------- 1. **Faster queries**: Pre-aggregated data 2. **Less computation**: Done server-side 3. **Smaller payloads**: Aggregated vs raw data 4. **Better UX**: Faster dashboard loading * [Anti-Pattern](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pre-computed-stats#anti-pattern) * [Best Practice](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pre-computed-stats#best-practice) * [Available Tables](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pre-computed-stats#available-tables) * [Benefits](https://www.docs.intuition.systems/docs/graphql-api/best-practices/pre-computed-stats#benefits) --- # Error Handling | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/best-practices/error-handling#__docusaurus_skipToContent_fallback) On this page Handle GraphQL errors gracefully in your application. Error Structure[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/error-handling#error-structure "Direct link to Error Structure") ------------------------------------------------------------------------------------------------------------------------------------------------------- { "data": null, "errors": [ { "message": "Field 'nonexistent_field' not found in type 'atoms'", "extensions": { "path": "$.selectionSet.atoms.selectionSet.nonexistent_field", "code": "validation-failed" } } ]} Error Types[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/error-handling#error-types "Direct link to Error Types") ------------------------------------------------------------------------------------------------------------------------------------------- * **validation-failed**: Query syntax or schema validation error * **constraint-violation**: Database constraint violated * **unexpected**: Internal server error Best Practice[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/error-handling#best-practice "Direct link to Best Practice") ------------------------------------------------------------------------------------------------------------------------------------------------- import { GraphQLClient, ClientError } from 'graphql-request'try { const data = await client.request(query, variables) console.log('Success:', data)} catch (error) { if (error instanceof ClientError) { console.error('GraphQL errors:', error.response.errors) console.error('Status:', error.response.status) } else { console.error('Network error:', error) }} Tips[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/error-handling#tips "Direct link to Tips") ---------------------------------------------------------------------------------------------------------------------- 1. **Check errors array**: GraphQL can return partial data with errors 2. **Log error details**: Include query and variables for debugging 3. **Show user-friendly messages**: Don't expose internal errors 4. **Implement retry logic**: For network failures * [Error Structure](https://www.docs.intuition.systems/docs/graphql-api/best-practices/error-handling#error-structure) * [Error Types](https://www.docs.intuition.systems/docs/graphql-api/best-practices/error-handling#error-types) * [Best Practice](https://www.docs.intuition.systems/docs/graphql-api/best-practices/error-handling#best-practice) * [Tips](https://www.docs.intuition.systems/docs/graphql-api/best-practices/error-handling#tips) --- # Trending Atoms | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/examples/trending-atoms#__docusaurus_skipToContent_fallback) On this page Find top atoms ranked by vault market cap. Query[​](https://www.docs.intuition.systems/docs/graphql-api/examples/trending-atoms#query "Direct link to Query") ------------------------------------------------------------------------------------------------------------------- #### Query β–Ά Run Query query GetTrendingAtoms($curveId: numeric!, $limit: Int!) { vaults( where: { curve\_id: { \_eq: $curveId } } order\_by: { market\_cap: desc } limit: $limit ) { term\_id market\_cap position\_count total\_shares term { atom { term\_id label image type } } } } #### Variables Click "Run Query" to execute the GraphQL query and see results * [Query](https://www.docs.intuition.systems/docs/graphql-api/examples/trending-atoms#query) --- # Price History | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/examples/price-history#__docusaurus_skipToContent_fallback) On this page Analyze share price trends using time-series data. Query[​](https://www.docs.intuition.systems/docs/graphql-api/examples/price-history#query "Direct link to Query") ------------------------------------------------------------------------------------------------------------------ #### Query β–Ά Run Query query GetPriceTrends($termId: String!, $curveId: numeric!, $days: Int!) { share\_price\_change\_stats\_daily( where: { term\_id: { \_eq: $termId } curve\_id: { \_eq: $curveId } } order\_by: { bucket: desc } limit: $days ) { bucket first\_share\_price last\_share\_price difference change\_count } } #### Variables Click "Run Query" to execute the GraphQL query and see results * [Query](https://www.docs.intuition.systems/docs/graphql-api/examples/price-history#query) --- # Use Cases | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/use-cases/overview#__docusaurus_skipToContent_fallback) On this page This section contains practical, step-by-step tutorials for common use cases when working with the Intuition GraphQL API. Each example explains how to build real-world applications with our semantic knowledge graph. Available Examples[​](https://www.docs.intuition.systems/docs/graphql-api/use-cases/overview#available-examples "Direct link to Available Examples") ----------------------------------------------------------------------------------------------------------------------------------------------------- Select a use case above to see detailed step-by-step implementation guides. [### \ \ Finding the Top dApps on Coinbase\ \ Query and rank decentralized applications based on market data.](https://www.docs.intuition.systems/finding-top-dapps-on-coinbase) [### \ \ Discovering the Most Trusted Accounts\ \ Find highly trusted accounts based on stake and activity.](https://www.docs.intuition.systems/discovering-most-trusted-accounts) [### \ \ Building User Activity Feeds\ \ Create personalized activity streams for users.](https://www.docs.intuition.systems/building-user-activity-feeds) [### \ \ Finding Related Claims\ \ Discover linked triples and relationship patterns.](https://www.docs.intuition.systems/finding-related-claims) * [Available Examples](https://www.docs.intuition.systems/docs/graphql-api/use-cases/overview#available-examples) --- # Wrapped Trust | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#__docusaurus_skipToContent_fallback) On this page Functions for wrapping and unwrapping native TRUST tokens. wrappedTrustDeposit[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#wrappedtrustdeposit "Direct link to wrappedTrustDeposit") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Deposit native TRUST to receive wrapped TRUST. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `WriteConfig` | Contract address, publicClient, walletClient | Yes | | value | `bigint` | Amount of TRUST to wrap | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#returns "Direct link to Returns") Promise // Transaction hash ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#example "Direct link to Example") import { wrappedTrustDeposit, getContractAddressFromChainId } from '@0xintuition/protocol'import { parseEther } from 'viem'const wrappedTrustAddress = getContractAddressFromChainId('WrappedTrust', chainId)const txHash = await wrappedTrustDeposit( { address: wrappedTrustAddress, walletClient, publicClient }, { args: [], value: parseEther('10') })console.log('Wrapped 10 TRUST:', txHash) * * * wrappedTrustWithdraw[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#wrappedtrustwithdraw "Direct link to wrappedTrustWithdraw") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Withdraw wrapped TRUST to receive native TRUST. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `WriteConfig` | Contract address, publicClient, walletClient | Yes | | args | `[bigint]` | Amount of wrapped TRUST to unwrap | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#returns-1 "Direct link to Returns") Promise // Transaction hash ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#example-1 "Direct link to Example") import { wrappedTrustWithdraw } from '@0xintuition/protocol'const txHash = await wrappedTrustWithdraw( { address: wrappedTrustAddress, walletClient, publicClient }, { args: [parseEther('5')] })console.log('Unwrapped 5 TRUST:', txHash) * * * Standard ERC20 Functions[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#standard-erc20-functions "Direct link to Standard ERC20 Functions") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Wrapped TRUST implements standard ERC20 functions: ### balanceOf[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#balanceof "Direct link to balanceOf") // Using viem's readContractimport { readContract } from 'viem'import { WrappedTrustAbi } from '@0xintuition/protocol'const balance = await readContract(publicClient, { address: wrappedTrustAddress, abi: WrappedTrustAbi, functionName: 'balanceOf', args: [userAddress],})console.log('Balance:', formatEther(balance)) ### totalSupply[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#totalsupply "Direct link to totalSupply") const totalSupply = await readContract(publicClient, { address: wrappedTrustAddress, abi: WrappedTrustAbi, functionName: 'totalSupply',})console.log('Total supply:', formatEther(totalSupply)) ### allowance[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#allowance "Direct link to allowance") const allowance = await readContract(publicClient, { address: wrappedTrustAddress, abi: WrappedTrustAbi, functionName: 'allowance', args: [ownerAddress, spenderAddress],})console.log('Allowance:', formatEther(allowance)) ### approve[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#approve "Direct link to approve") import { writeContract } from 'viem'const txHash = await writeContract(walletClient, { address: wrappedTrustAddress, abi: WrappedTrustAbi, functionName: 'approve', args: [spenderAddress, parseEther('100')],})console.log('Approved:', txHash) * * * Complete Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#complete-example "Direct link to Complete Example") -------------------------------------------------------------------------------------------------------------------------------------------------------------- import { wrappedTrustDeposit, wrappedTrustWithdraw, getContractAddressFromChainId, WrappedTrustAbi,} from '@0xintuition/protocol'import { parseEther, formatEther, readContract } from 'viem'const wrappedTrustAddress = getContractAddressFromChainId('WrappedTrust', chainId)// Check native balanceconst nativeBalance = await publicClient.getBalance({ address: account.address })console.log('Native TRUST:', formatEther(nativeBalance))// Wrap TRUSTconst wrapAmount = parseEther('10')const wrapTx = await wrappedTrustDeposit( { address: wrappedTrustAddress, walletClient, publicClient }, { args: [], value: wrapAmount })console.log('Wrapped:', wrapTx)// Check wrapped balanceconst wrappedBalance = await readContract(publicClient, { address: wrappedTrustAddress, abi: WrappedTrustAbi, functionName: 'balanceOf', args: [account.address],})console.log('Wrapped TRUST:', formatEther(wrappedBalance))// Unwrap halfconst unwrapAmount = parseEther('5')const unwrapTx = await wrappedTrustWithdraw( { address: wrappedTrustAddress, walletClient, publicClient }, { args: [unwrapAmount] })console.log('Unwrapped:', unwrapTx) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#see-also "Direct link to See Also") -------------------------------------------------------------------------------------------------------------------------------------- * [Configuration](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration) * [wrappedTrustDeposit](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#wrappedtrustdeposit) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#example) * [wrappedTrustWithdraw](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#wrappedtrustwithdraw) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#parameters-1) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#example-1) * [Standard ERC20 Functions](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#standard-erc20-functions) * [balanceOf](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#balanceof) * [totalSupply](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#totalsupply) * [allowance](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#allowance) * [approve](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#approve) * [Complete Example](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#complete-example) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview#see-also) --- # Nested Triples | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#__docusaurus_skipToContent_fallback) On this page One of Intuition's most powerful features is that Triples can reference other Triples, effectively nesting statements to provide context or provenance. Intuition supports using a Triple itself as a Subject or Object in another Triple. Understanding Nested Triples[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#understanding-nested-triples "Direct link to Understanding Nested Triples") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Think of it as linguistic compressionβ€”instead of repeatedly expressing complex relationships, you create them once and reference them by ID. A Triple about "Alice's employment at a specific company with particular conditions" becomes a single referenceable unit. That unit can then be used in higher-order statements about employment trends, verification claims, or temporal changes. This creates a hierarchy of meaning where complex ideas are built from simpler ones, yet each level remains independently addressable and verifiable. Example: Disputing a Claim[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#example-disputing-a-claim "Direct link to Example: Disputing a Claim") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Consider an initial Triple: [Bob] -- [isFriendOf] --> [Alice] If Alice disagrees with this claim, we can create a nested Triple: [Alice] -- [disproves] --> (Bob isFriendOf Alice) Here, the Object of the second Triple is not an Atom but a reference to the first Triple (identified by its Triple ID). Alice is essentially asserting that the friendship claim is false. Adding Evidence & Sources[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#adding-evidence--sources "Direct link to Adding Evidence & Sources") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- You can link Triples to evidence or citations: [Triple X] -- [basedOn] --> [Document Y] This ability to compose Triples into higher-order statements gives the graph a fractal qualityβ€”small facts build into bigger facts, and complex relationships can be broken down into simpler ones. Linguistic Compression[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#linguistic-compression "Direct link to Linguistic Compression") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The result is an extraordinarily efficient knowledge transmission system. Rather than sending verbose descriptions, systems can exchange compact Triple IDs that expand into rich, contextual information. Each ID carries with it not just data, but the entire graph of relationships, evidence, and community consensus that supports it. Use Cases[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#use-cases "Direct link to Use Cases") ------------------------------------------------------------------------------------------------------------------------------------------------ ### Temporal Context[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#temporal-context "Direct link to Temporal Context") [[Alice works at Company X]] -- [valid from] --> [2024-01-01][[Alice works at Company X]] -- [valid until] --> [2024-12-31] ### Provenance Tracking[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#provenance-tracking "Direct link to Provenance Tracking") [[Ethereum is secure]] -- [claimed by] --> [Security Firm Y][[Ethereum is secure]] -- [verified on] --> [2024-01-15] ### Meta-Information[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#meta-information "Direct link to Meta-Information") [[Product X is good]] -- [confidence level] --> [0.85][[Product X is good]] -- [number of attestors] --> [150] * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#next-steps "Direct link to Next Steps") --------------------------------------------------------------------------------------------------------------------------------------------------- * [Signal Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/signals/fundamentals) - Learn how the community validates nested claims * [Triple Structuring](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/structuring) - Review best practices for Triple design * [Understanding Nested Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#understanding-nested-triples) * [Example: Disputing a Claim](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#example-disputing-a-claim) * [Adding Evidence & Sources](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#adding-evidence--sources) * [Linguistic Compression](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#linguistic-compression) * [Use Cases](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#use-cases) * [Temporal Context](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#temporal-context) * [Provenance Tracking](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#provenance-tracking) * [Meta-Information](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#meta-information) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples#next-steps) --- # Use Variables | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/best-practices/variables#__docusaurus_skipToContent_fallback) On this page Always use variables for dynamic values instead of hardcoding. Anti-Pattern[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/variables#anti-pattern "Direct link to Anti-Pattern") ----------------------------------------------------------------------------------------------------------------------------------------- # BAD: Hardcoding valuesquery { atoms(where: { type: { _eq: Person } }) { term_id label }} Best Practice[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/variables#best-practice "Direct link to Best Practice") -------------------------------------------------------------------------------------------------------------------------------------------- # GOOD: Using variablesquery GetAtomsByType($type: atom_type!) { atoms(where: { type: { _eq: $type } }) { term_id label }} **Variables:** { "type": "Person"} Benefits[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/variables#benefits "Direct link to Benefits") ----------------------------------------------------------------------------------------------------------------------------- 1. **Reusability**: Same query, different values 2. **Type safety**: GraphQL validates variable types 3. **Security**: Prevents injection attacks 4. **Caching**: Better query plan caching * [Anti-Pattern](https://www.docs.intuition.systems/docs/graphql-api/best-practices/variables#anti-pattern) * [Best Practice](https://www.docs.intuition.systems/docs/graphql-api/best-practices/variables#best-practice) * [Benefits](https://www.docs.intuition.systems/docs/graphql-api/best-practices/variables#benefits) --- # Real-Time Subscriptions | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/examples/subscriptions#__docusaurus_skipToContent_fallback) On this page Implement real-time position monitoring with subscriptions. Subscription[​](https://www.docs.intuition.systems/docs/graphql-api/examples/subscriptions#subscription "Direct link to Subscription") --------------------------------------------------------------------------------------------------------------------------------------- #### Query β–Ά Run Query subscription WatchPositions( $cursor: \[positions\_stream\_cursor\_input\]! $accountId: String $batchSize: Int! ) { positions\_stream( cursor: $cursor batch\_size: $batchSize where: { account\_id: { \_eq: $accountId } shares: { \_gt: "0" } } ) { id shares vault { term\_id current\_share\_price } } } #### Variables Click "Run Query" to execute the GraphQL query and see results Implementation[​](https://www.docs.intuition.systems/docs/graphql-api/examples/subscriptions#implementation "Direct link to Implementation") --------------------------------------------------------------------------------------------------------------------------------------------- import { createClient } from 'graphql-ws'const client = createClient({ url: 'wss://mainnet.intuition.sh/v1/graphql'})client.subscribe( { query: subscription, variables: { cursor: [{ initial_value: { created_at: '2024-12-01T00:00:00Z' }, ordering: 'ASC' }], accountId: '0x...', batchSize: 10 } }, { next: (data) => { console.log('Update:', data) // Update UI with new position data }, error: (error) => { console.error('Subscription error:', error) }, complete: () => { console.log('Subscription complete') } }) * [Subscription](https://www.docs.intuition.systems/docs/graphql-api/examples/subscriptions#subscription) * [Implementation](https://www.docs.intuition.systems/docs/graphql-api/examples/subscriptions#implementation) --- # Social Graph | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/examples/social-graph#__docusaurus_skipToContent_fallback) On this page Build a social activity feed from followed accounts. Query[​](https://www.docs.intuition.systems/docs/graphql-api/examples/social-graph#query "Direct link to Query") ----------------------------------------------------------------------------------------------------------------- #### Query β–Ά Run Query query GetFollowingFeed($address: String!, $limit: Int!) { following\_count: following\_aggregate(args: { address: $address }) { aggregate { count } } positions\_from\_following( args: { address: $address } limit: $limit order\_by: { created\_at: desc } ) { id shares created\_at account { id label image } vault { term\_id term { atom { label image } } } } } #### Variables Click "Run Query" to execute the GraphQL query and see results * [Query](https://www.docs.intuition.systems/docs/graphql-api/examples/social-graph#query) --- # Upload Image | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#__docusaurus_skipToContent_fallback) On this page Upload a base64-encoded image. The image is cached and a moderation check is performed. Returns a `CachedImage` with the hosted URL and safety score. Mutation Structure[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#mutation-structure "Direct link to Mutation Structure") ---------------------------------------------------------------------------------------------------------------------------------------------------------------- mutation UploadImage($image: UploadImageInput!) { uploadImage(image: $image) { images { url original_url safe score model created_at } }} Variables[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#variables "Direct link to Variables") ------------------------------------------------------------------------------------------------------------------------------------- The mutation takes an `image` argument with the `UploadImageInput` type: | Field | Type | Required | Description | | --- | --- | --- | --- | | `data` | `String` | Yes | Base64-encoded image data | | `filename` | `String` | Yes | Filename with extension | | `contentType` | `String` | Yes | MIME type (e.g. `"image/png"`) | { "image": { "data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==", "filename": "pixel.png", "contentType": "image/png" }} Response Fields[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#response-fields "Direct link to Response Fields") ------------------------------------------------------------------------------------------------------------------------------------------------------- Returns `UploadImageFromUrlOutput` containing an `images` array of `CachedImage` objects: | Field | Type | Description | | --- | --- | --- | | `images` | `[CachedImage!]!` | Array of cached image results | | `images[].url` | `String!` | Hosted image URL | | `images[].original_url` | `String!` | Original source URL | | `images[].safe` | `Boolean!` | Whether the image passed moderation | | `images[].score` | `jsonb` | Moderation safety score details | | `images[].model` | `String` | Moderation model used | | `images[].created_at` | `timestamptz!` | Upload timestamp | Expected Response[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#expected-response "Direct link to Expected Response") ------------------------------------------------------------------------------------------------------------------------------------------------------------- { "data": { "uploadImage": { "images": [ { "url": "https://cdn.example.com/images/abc123.png", "original_url": "https://cdn.example.com/images/abc123.png", "safe": true, "score": null, "model": null, "created_at": "2024-01-15T10:30:00Z" } ] } }} Use Cases[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#use-cases "Direct link to Use Cases") ------------------------------------------------------------------------------------------------------------------------------------- ### File Input Upload[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#file-input-upload "Direct link to File Input Upload") Handle file uploads from a form: import { GraphQLClient } from 'graphql-request'import { API_URL_PROD } from '@0xintuition/graphql'const client = new GraphQLClient(API_URL_PROD)async function uploadFileInput(file: File) { const buffer = await file.arrayBuffer() const base64 = btoa(String.fromCharCode(...new Uint8Array(buffer))) const mutation = ` mutation UploadImage($image: UploadImageInput!) { uploadImage(image: $image) { images { url safe } } } ` const result = await client.request(mutation, { image: { data: base64, filename: file.name, contentType: file.type } }) return result.uploadImage.images[0]} Related[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#related "Direct link to Related") ------------------------------------------------------------------------------------------------------------------------------- * [Upload Image from URL](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url) - Upload from URL * [Upload JSON to IPFS](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs) - Upload metadata * [Pin Thing](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing) - Create Thing with image * [Mutation Structure](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#mutation-structure) * [Variables](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#variables) * [Response Fields](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#response-fields) * [Expected Response](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#expected-response) * [Use Cases](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#use-cases) * [File Input Upload](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#file-input-upload) * [Related](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image#related) --- # Building User Activity Feeds | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/tutorials/queries/building-user-activity-feeds#__docusaurus_skipToContent_fallback) On this page Learn how to create personalized, real-time activity feeds that track user interactions across the Intuition ecosystem using the GraphQL API. Understanding the Progression[​](https://www.docs.intuition.systems/docs/tutorials/queries/building-user-activity-feeds#understanding-the-progression "Direct link to Understanding the Progression") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1. **Get the whole user activity feed**, including atoms made and positions taken, along with vault details. 2. **Get recent claims** produced by the user, both atoms (max 10) and triples (max 10) with detailed metadata. 3. **Get active user positions** ordered by share amount - shows current stakes with vault performance metrics. Step 1: Get User ActivityStep 2: User Recent ClaimsStep 3: Active User Positions #### Query β–Ά Run Query query GetUserActivity($userAddress: String!, $limit: Int = 20) { atoms( where: { creator\_id: { \_eq: $userAddress } } order\_by: \[{ created\_at: desc }\] limit: $limit ) { term\_id label image type created\_at transaction\_hash } positions( where: { account\_id: { \_eq: $userAddress } } order\_by: \[{ created\_at: desc }\] limit: $limit ) { id shares created\_at vault { term\_id current\_share\_price market\_cap term { atom { term\_id label image } } } } } #### Variables Click "Run Query" to execute the GraphQL query and see results * [Understanding the Progression](https://www.docs.intuition.systems/docs/tutorials/queries/building-user-activity-feeds#understanding-the-progression) --- # Tutorials | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/tutorials/overview#__docusaurus_skipToContent_fallback) On this page Learn by building real applications with Intuition. Each tutorial is a complete, end-to-end guide with working code. Building Applications[​](https://www.docs.intuition.systems/docs/tutorials/overview#building-applications "Direct link to Building Applications") -------------------------------------------------------------------------------------------------------------------------------------------------- ### [Reputation System](https://www.docs.intuition.systems/docs/tutorials/reputation-system) [​](https://www.docs.intuition.systems/docs/tutorials/overview#reputation-system "Direct link to reputation-system") Build a developer reputation platform with skills, endorsements, and verifiable credentials. **You'll learn:** * Creating identity atoms from Ethereum addresses * Skill attestations with triples * Weighted endorsements with signals * Querying and displaying reputation data **Time:** 2-3 hours | **Level:** Intermediate * * * ### [Curated Lists](https://www.docs.intuition.systems/docs/tutorials/curated-lists) [​](https://www.docs.intuition.systems/docs/tutorials/overview#curated-lists "Direct link to curated-lists") Create community-curated, ranked lists where stake determines ranking. **You'll learn:** * Token-curated registries (TCRs) * Signal-based ranking algorithms * List management and curation * Dispute resolution mechanisms **Time:** 2 hours | **Level:** Intermediate * * * ### [Social Attestations](https://www.docs.intuition.systems/docs/tutorials/social-attestations) [​](https://www.docs.intuition.systems/docs/tutorials/overview#social-attestations "Direct link to social-attestations") Build a decentralized professional network with portable identity. **You'll learn:** * Professional profiles as atoms * Connection and recommendation triples * Experience verification * Cross-platform portability **Time:** 2-3 hours | **Level:** Intermediate * * * ### [Fraud Detection](https://www.docs.intuition.systems/docs/tutorials/fraud-detection) [​](https://www.docs.intuition.systems/docs/tutorials/overview#fraud-detection "Direct link to fraud-detection") Create a community-driven scam flagging system. **You'll learn:** * Safety claim triples * Expert-weighted signals * Alert and notification systems * False positive handling **Time:** 2 hours | **Level:** Advanced * * * ### [Prediction Market](https://www.docs.intuition.systems/docs/tutorials/prediction-market) [​](https://www.docs.intuition.systems/docs/tutorials/overview#prediction-market "Direct link to prediction-market") Build a non-resolving forecasting platform. **You'll learn:** * Event and prediction atoms * Track record calculation * Confidence signals * Reputation scoring **Time:** 2 hours | **Level:** Advanced * * * Data Queries[​](https://www.docs.intuition.systems/docs/tutorials/overview#data-queries "Direct link to Data Queries") ----------------------------------------------------------------------------------------------------------------------- GraphQL-focused tutorials for querying the knowledge graph (Coming Soon). Advanced Patterns[​](https://www.docs.intuition.systems/docs/tutorials/overview#advanced-patterns "Direct link to Advanced Patterns") -------------------------------------------------------------------------------------------------------------------------------------- Advanced tutorials coming soon including nested triples, batch operations, and oracle integration. * * * Need Help?[​](https://www.docs.intuition.systems/docs/tutorials/overview#need-help "Direct link to Need Help?") ---------------------------------------------------------------------------------------------------------------- * [Community Support](https://www.docs.intuition.systems/docs/resources/community-and-support) * [FAQ](https://www.docs.intuition.systems/docs/resources/faq) * [Discord](https://discord.gg/RgBenkX4mx) Prerequisites for Tutorials[​](https://www.docs.intuition.systems/docs/tutorials/overview#prerequisites-for-tutorials "Direct link to Prerequisites for Tutorials") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- Before starting these tutorials, make sure you have: 1. **Development Environment** * Node.js 16+ installed * TypeScript knowledge * Basic React familiarity (for UI tutorials) 2. **Intuition Setup** * SDK installed (`npm install @0xintuition/sdk`) * Wallet with testnet ETH * Connected to Intuition Testnet 3. **Recommended Tools** * GraphQL client (like Apollo or urql) * Code editor (VS Code recommended) * Git for cloning example repos See [Getting Started](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk) for setup instructions. * [Building Applications](https://www.docs.intuition.systems/docs/tutorials/overview#building-applications) * [Reputation System](https://www.docs.intuition.systems/docs/tutorials/overview#reputation-system) * [Curated Lists](https://www.docs.intuition.systems/docs/tutorials/overview#curated-lists) * [Social Attestations](https://www.docs.intuition.systems/docs/tutorials/overview#social-attestations) * [Fraud Detection](https://www.docs.intuition.systems/docs/tutorials/overview#fraud-detection) * [Prediction Market](https://www.docs.intuition.systems/docs/tutorials/overview#prediction-market) * [Data Queries](https://www.docs.intuition.systems/docs/tutorials/overview#data-queries) * [Advanced Patterns](https://www.docs.intuition.systems/docs/tutorials/overview#advanced-patterns) * [Need Help?](https://www.docs.intuition.systems/docs/tutorials/overview#need-help) * [Prerequisites for Tutorials](https://www.docs.intuition.systems/docs/tutorials/overview#prerequisites-for-tutorials) --- # Optimizing Batch Operations | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/tutorials/advanced/batch-operations#__docusaurus_skipToContent_fallback) On this page > Coming soon! This tutorial will show how to efficiently create and manage multiple atoms and triples in batches. Learn how to optimize gas costs and improve performance when creating many atoms, triples, or signals at once. What You'll Learn[​](https://www.docs.intuition.systems/docs/tutorials/advanced/batch-operations#what-youll-learn "Direct link to What You'll Learn") ------------------------------------------------------------------------------------------------------------------------------------------------------ This tutorial will cover: * Batch atom creation * Bulk triple creation * Multi-sig signal deposits * Gas optimization strategies * Transaction batching patterns * Error handling for batch operations In the Meantime[​](https://www.docs.intuition.systems/docs/tutorials/advanced/batch-operations#in-the-meantime "Direct link to In the Meantime") ------------------------------------------------------------------------------------------------------------------------------------------------- See these resources: * [SDK Documentation](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup) * [Protocol API Reference](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms) * [Performance Best Practices](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) Quick Example[​](https://www.docs.intuition.systems/docs/tutorials/advanced/batch-operations#quick-example "Direct link to Quick Example") ------------------------------------------------------------------------------------------------------------------------------------------- // Conceptual example - API may differasync function batchCreateAtoms(atomsData: Array) { // Create all atoms in one transaction const result = await multivault.batchCreateAtoms({ atoms: atomsData }) return result.atomIds}// Create 100 skill atoms efficientlyconst skills = ['TypeScript', 'React', 'Solidity', /* ... */]const atomData = skills.map(skill => ({ type: 'thing', value: skill}))const atomIds = await batchCreateAtoms(atomData)console.log(`Created ${atomIds.length} atoms in one transaction`) Get Notified[​](https://www.docs.intuition.systems/docs/tutorials/advanced/batch-operations#get-notified "Direct link to Get Notified") ---------------------------------------------------------------------------------------------------------------------------------------- Want to be notified when this tutorial is ready? Join our [Discord](https://discord.gg/RgBenkX4mx) . * [What You'll Learn](https://www.docs.intuition.systems/docs/tutorials/advanced/batch-operations#what-youll-learn) * [In the Meantime](https://www.docs.intuition.systems/docs/tutorials/advanced/batch-operations#in-the-meantime) * [Quick Example](https://www.docs.intuition.systems/docs/tutorials/advanced/batch-operations#quick-example) * [Get Notified](https://www.docs.intuition.systems/docs/tutorials/advanced/batch-operations#get-notified) --- # Oracle Integration | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/tutorials/advanced/oracle-integration#__docusaurus_skipToContent_fallback) On this page > Coming soon! This tutorial will show how to use Intuition as an oracle for your smart contracts. Learn how to read Intuition's on-chain data from your smart contracts, enabling trust-weighted decision making and reputation-gated access. What You'll Learn[​](https://www.docs.intuition.systems/docs/tutorials/advanced/oracle-integration#what-youll-learn "Direct link to What You'll Learn") -------------------------------------------------------------------------------------------------------------------------------------------------------- This tutorial will cover: * Reading atom and triple data from contracts * Querying vault metrics (market cap, positions) * Implementing reputation-gated functions * Using signals for weighted voting * Building trust-based access control * Real-time oracle updates Use Cases[​](https://www.docs.intuition.systems/docs/tutorials/advanced/oracle-integration#use-cases "Direct link to Use Cases") --------------------------------------------------------------------------------------------------------------------------------- * **Reputation-gated DAOs** - Only allow voting from trusted accounts * **Trust-weighted governance** - Weight votes by reputation * **Safety checks** - Query fraud detection data before interacting with contracts * **Expert verification** - Require attestations from qualified users * **Dynamic access control** - Grant permissions based on on-chain reputation In the Meantime[​](https://www.docs.intuition.systems/docs/tutorials/advanced/oracle-integration#in-the-meantime "Direct link to In the Meantime") --------------------------------------------------------------------------------------------------------------------------------------------------- See these resources: * [Protocol Smart Contracts](https://www.docs.intuition.systems/docs/protocol/getting-started/overview) * [Multivault Contract API](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms) * [Solidity Integration Guide](https://www.docs.intuition.systems/docs/protocol/getting-started/overview) Quick Example[​](https://www.docs.intuition.systems/docs/tutorials/advanced/oracle-integration#quick-example "Direct link to Quick Example") --------------------------------------------------------------------------------------------------------------------------------------------- // Conceptual exampleinterface IIntuitionMultivault { function getVaultAssets(bytes32 vaultId) external view returns (uint256); function getPosition(bytes32 vaultId, address account) external view returns (uint256);}contract ReputationGatedDAO { IIntuitionMultivault public intuition; bytes32 public reputationVaultId; uint256 public minimumReputation; function vote(uint256 proposalId, bool support) external { // Check caller's reputation uint256 reputation = intuition.getPosition(reputationVaultId, msg.sender); require( reputation >= minimumReputation, "Insufficient reputation to vote" ); // Weight vote by reputation _castVote(proposalId, support, reputation); }} Get Notified[​](https://www.docs.intuition.systems/docs/tutorials/advanced/oracle-integration#get-notified "Direct link to Get Notified") ------------------------------------------------------------------------------------------------------------------------------------------ Want to be notified when this tutorial is ready? Join our [Discord](https://discord.gg/RgBenkX4mx) . * [What You'll Learn](https://www.docs.intuition.systems/docs/tutorials/advanced/oracle-integration#what-youll-learn) * [Use Cases](https://www.docs.intuition.systems/docs/tutorials/advanced/oracle-integration#use-cases) * [In the Meantime](https://www.docs.intuition.systems/docs/tutorials/advanced/oracle-integration#in-the-meantime) * [Quick Example](https://www.docs.intuition.systems/docs/tutorials/advanced/oracle-integration#quick-example) * [Get Notified](https://www.docs.intuition.systems/docs/tutorials/advanced/oracle-integration#get-notified) --- # Epochs & Utilization | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#__docusaurus_skipToContent_fallback) On this page The Intuition Protocol operates on an **epoch-based system** for tracking bonding rewards and vault utilization. Epochs are fixed time periods that determine reward distribution. What are Epochs?[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#what-are-epochs "Direct link to What are Epochs?") --------------------------------------------------------------------------------------------------------------------------------------------- An epoch is a fixed time period used to: * Track vault utilization across the protocol * Calculate and distribute bonding rewards * Measure user activity and participation * Determine APY and reward eligibility Epoch Mechanics[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#epoch-mechanics "Direct link to Epoch Mechanics") ------------------------------------------------------------------------------------------------------------------------------------------- ### Current Epoch[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#current-epoch "Direct link to Current Epoch") Get the active epoch number: import { multiVaultCurrentEpoch } from '@0xintuition/protocol'const epoch = await multiVaultCurrentEpoch({ address, publicClient })console.log('Current epoch:', epoch) ### Epoch Configuration[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#epoch-configuration "Direct link to Epoch Configuration") Query epoch parameters from TrustBonding contract: import { trustBondingEpochLength, trustBondingEpochsPerYear, getContractAddressFromChainId,} from '@0xintuition/protocol'const bondingAddress = getContractAddressFromChainId('TrustBonding', chainId)// Get epoch durationconst epochLength = await trustBondingEpochLength({ address: bondingAddress, publicClient,})console.log('Epoch length (seconds):', epochLength)// Get epochs per yearconst epochsPerYear = await trustBondingEpochsPerYear({ address: bondingAddress, publicClient,})console.log('Epochs per year:', epochsPerYear) ### Epoch at Timestamp[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#epoch-at-timestamp "Direct link to Epoch at Timestamp") Get the epoch number for a specific time: import { trustBondingEpochAtTimestamp } from '@0xintuition/protocol'const timestamp = BigInt(Math.floor(Date.now() / 1000))const epoch = await trustBondingEpochAtTimestamp( { address: bondingAddress, publicClient }, { args: [timestamp] }) ### Epoch End Time[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#epoch-end-time "Direct link to Epoch End Time") Get when an epoch ends: import { trustBondingEpochTimestampEnd } from '@0xintuition/protocol'const endTime = await trustBondingEpochTimestampEnd( { address: bondingAddress, publicClient }, { args: [epochNumber] })const endDate = new Date(Number(endTime) * 1000)console.log('Epoch ends:', endDate) Utilization Tracking[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#utilization-tracking "Direct link to Utilization Tracking") ---------------------------------------------------------------------------------------------------------------------------------------------------------- **Utilization** measures vault activity and influences reward distribution. Higher utilization = higher rewards. ### Total Utilization[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#total-utilization "Direct link to Total Utilization") Get system-wide utilization for an epoch: import { multiVaultGetTotalUtilizationForEpoch } from '@0xintuition/protocol'const totalUtil = await multiVaultGetTotalUtilizationForEpoch( { address, publicClient }, { args: [epochNumber] }) ### User Utilization[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#user-utilization "Direct link to User Utilization") Get a user's total utilization across all vaults: import { multiVaultGetUserUtilizationForEpoch } from '@0xintuition/protocol'const userUtil = await multiVaultGetUserUtilizationForEpoch( { address, publicClient }, { args: [userAddress, epochNumber] }) ### Vault-Specific Utilization[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#vault-specific-utilization "Direct link to Vault-Specific Utilization") Get a user's utilization in a specific vault: import { multiVaultGetUserUtilizationInEpoch } from '@0xintuition/protocol'const vaultUtil = await multiVaultGetUserUtilizationInEpoch( { address, publicClient }, { args: [userAddress, vaultId, epochNumber] }) ### Last Active Epoch[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#last-active-epoch "Direct link to Last Active Epoch") Get when a user was last active: import { multiVaultGetUserLastActiveEpoch } from '@0xintuition/protocol'const lastEpoch = await multiVaultGetUserLastActiveEpoch( { address, publicClient }, { args: [userAddress] }) Utilization and Rewards[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#utilization-and-rewards "Direct link to Utilization and Rewards") ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Utilization directly impacts reward distribution: import { trustBondingGetUserApy, trustBondingGetSystemApy, trustBondingGetUserRewardsForEpoch,} from '@0xintuition/protocol'// Get user APY (based on utilization)const userApy = await trustBondingGetUserApy( { address: bondingAddress, publicClient }, { args: [userAddress] })// Get system-wide APYconst systemApy = await trustBondingGetSystemApy({ address: bondingAddress, publicClient,})// Get rewards for specific epochconst rewards = await trustBondingGetUserRewardsForEpoch( { address: bondingAddress, publicClient }, { args: [userAddress, epochNumber] }) Utilization Ratios[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#utilization-ratios "Direct link to Utilization Ratios") ---------------------------------------------------------------------------------------------------------------------------------------------------- ### System Utilization Ratio[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#system-utilization-ratio "Direct link to System Utilization Ratio") Overall protocol utilization: import { trustBondingGetSystemUtilizationRatio } from '@0xintuition/protocol'const systemRatio = await trustBondingGetSystemUtilizationRatio({ address: bondingAddress, publicClient,}) ### Personal Utilization Ratio[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#personal-utilization-ratio "Direct link to Personal Utilization Ratio") User's relative utilization: import { trustBondingGetPersonalUtilizationRatio } from '@0xintuition/protocol'const personalRatio = await trustBondingGetPersonalUtilizationRatio( { address: bondingAddress, publicClient }, { args: [userAddress] }) Epoch Lifecycle Example[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#epoch-lifecycle-example "Direct link to Epoch Lifecycle Example") ------------------------------------------------------------------------------------------------------------------------------------------------------------------- // 1. Get current epoch infoconst currentEpoch = await multiVaultCurrentEpoch({ address, publicClient })const previousEpoch = await trustBondingPreviousEpoch({ address: bondingAddress, publicClient,})// 2. Check epoch timingconst epochEnd = await trustBondingEpochTimestampEnd( { address: bondingAddress, publicClient }, { args: [currentEpoch] })// 3. Get utilization for previous epochconst totalUtil = await multiVaultGetTotalUtilizationForEpoch( { address, publicClient }, { args: [previousEpoch] })// 4. Check user rewardsconst userRewards = await trustBondingGetUserRewardsForEpoch( { address: bondingAddress, publicClient }, { args: [userAddress, previousEpoch] })// 5. Get emissions for epochconst emissions = await trustBondingEmissionsForEpoch( { address: bondingAddress, publicClient }, { args: [previousEpoch] }) Common Use Cases[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#common-use-cases "Direct link to Common Use Cases") ---------------------------------------------------------------------------------------------------------------------------------------------- ### Track Reward Eligibility[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#track-reward-eligibility "Direct link to Track Reward Eligibility") const lastActive = await multiVaultGetUserLastActiveEpoch( { address, publicClient }, { args: [userAddress] })const currentEpoch = await multiVaultCurrentEpoch({ address, publicClient })if (lastActive < currentEpoch) { console.log('User was active in previous epochs')} ### Calculate Historical Utilization[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#calculate-historical-utilization "Direct link to Calculate Historical Utilization") const historicalEpochs = [100n, 101n, 102n]for (const epoch of historicalEpochs) { const util = await multiVaultGetUserUtilizationForEpoch( { address, publicClient }, { args: [userAddress, epoch] } ) console.log(`Epoch ${epoch}: ${util} utilization`)} ### Monitor Real-Time Activity[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#monitor-real-time-activity "Direct link to Monitor Real-Time Activity") const checkActivity = async () => { const epoch = await multiVaultCurrentEpoch({ address, publicClient }) const util = await multiVaultGetUserUtilizationForEpoch( { address, publicClient }, { args: [userAddress, epoch] } ) return { epoch, utilization: util }}// Poll every minutesetInterval(async () => { const activity = await checkActivity() console.log('Current activity:', activity)}, 60000) Related Functions[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#related-functions "Direct link to Related Functions") ------------------------------------------------------------------------------------------------------------------------------------------------- * [multiVaultCurrentEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultcurrentepoch) - Get current epoch * [multiVaultGetTotalUtilizationForEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultgettotalutilizationforepoch) - Get total utilization * [trustBondingGetUserApy](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetuserapy) - Get user APY * [Trust Bonding Epochs](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs) - Epoch management functions Next Steps[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#next-steps "Direct link to Next Steps") ---------------------------------------------------------------------------------------------------------------------------- * [Trust Bonding](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs) - Explore bonding system * [Examples](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding) - See epoch tracking examples * [What are Epochs?](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#what-are-epochs) * [Epoch Mechanics](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#epoch-mechanics) * [Current Epoch](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#current-epoch) * [Epoch Configuration](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#epoch-configuration) * [Epoch at Timestamp](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#epoch-at-timestamp) * [Epoch End Time](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#epoch-end-time) * [Utilization Tracking](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#utilization-tracking) * [Total Utilization](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#total-utilization) * [User Utilization](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#user-utilization) * [Vault-Specific Utilization](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#vault-specific-utilization) * [Last Active Epoch](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#last-active-epoch) * [Utilization and Rewards](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#utilization-and-rewards) * [Utilization Ratios](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#utilization-ratios) * [System Utilization Ratio](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#system-utilization-ratio) * [Personal Utilization Ratio](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#personal-utilization-ratio) * [Epoch Lifecycle Example](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#epoch-lifecycle-example) * [Common Use Cases](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#common-use-cases) * [Track Reward Eligibility](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#track-reward-eligibility) * [Calculate Historical Utilization](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#calculate-historical-utilization) * [Monitor Real-Time Activity](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#monitor-real-time-activity) * [Related Functions](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#related-functions) * [Next Steps](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs#next-steps) --- # Configuration | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#__docusaurus_skipToContent_fallback) On this page This guide covers how to configure the Protocol package for use with Intuition networks, including client setup, network configuration, and contract address management. Client Configuration[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#client-configuration "Direct link to Client Configuration") ------------------------------------------------------------------------------------------------------------------------------------------------------------------- The Protocol package uses two types of configurations depending on the operation: ### ReadConfig (Read-Only Operations)[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#readconfig-read-only-operations "Direct link to ReadConfig (Read-Only Operations)") For querying data without submitting transactions: import type { ReadConfig } from '@0xintuition/protocol'import { createPublicClient, http } from 'viem'import { intuitionTestnet, getMultiVaultAddressFromChainId } from '@0xintuition/protocol'const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),})const readConfig: ReadConfig = { address: getMultiVaultAddressFromChainId(intuitionTestnet.id), publicClient: publicClient,} ### WriteConfig (Transaction Operations)[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#writeconfig-transaction-operations "Direct link to WriteConfig (Transaction Operations)") For operations that modify blockchain state: import type { WriteConfig } from '@0xintuition/protocol'import { createPublicClient, createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'const account = privateKeyToAccount('0x...')const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),})const walletClient = createWalletClient({ chain: intuitionTestnet, transport: http(), account,})const writeConfig: WriteConfig = { address: getMultiVaultAddressFromChainId(intuitionTestnet.id), publicClient: publicClient, walletClient: walletClient,} Network Configuration[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#network-configuration "Direct link to Network Configuration") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Intuition Testnet[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#intuition-testnet "Direct link to Intuition Testnet") The testnet is ideal for development and testing: import { intuitionTestnet } from '@0xintuition/protocol'// Chain Configurationconst testnet = { id: 13579, name: 'Intuition Testnet', nativeCurrency: { name: 'Testnet TRUST', symbol: 'tTRUST', decimals: 18, }, rpcUrls: { default: { http: ['https://testnet.rpc.intuition.systems/http'], webSocket: ['wss://testnet.rpc.intuition.systems/ws'], }, }, blockExplorers: { default: { name: 'Intuition Testnet Explorer', url: 'https://testnet.explorer.intuition.systems', }, },}// Usageconst publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),}) ### Intuition Mainnet[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#intuition-mainnet "Direct link to Intuition Mainnet") For production deployments: import { intuitionMainnet } from '@0xintuition/protocol'// Chain Configurationconst mainnet = { id: 1155, name: 'Intuition', nativeCurrency: { name: 'TRUST', symbol: 'TRUST', decimals: 18, }, rpcUrls: { default: { http: ['https://rpc.intuition.systems/http'], webSocket: ['wss://rpc.intuition.systems/ws'], }, }, blockExplorers: { default: { name: 'Intuition Explorer', url: 'https://explorer.intuition.systems', }, },}// Usageconst publicClient = createPublicClient({ chain: intuitionMainnet, transport: http(),}) Contract Addresses[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#contract-addresses "Direct link to Contract Addresses") ------------------------------------------------------------------------------------------------------------------------------------------------------------- ### MultiVault Contract[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#multivault-contract "Direct link to MultiVault Contract") The MultiVault is the main protocol contract for atoms, triples, and vaults: import { getMultiVaultAddressFromChainId, intuitionTestnet, intuitionMainnet } from '@0xintuition/protocol'// Testnetconst testnetAddress = getMultiVaultAddressFromChainId(intuitionTestnet.id)// Returns: '0x2Ece8D4dEdcB9918A398528f3fa4688b1d2CAB91'// Mainnetconst mainnetAddress = getMultiVaultAddressFromChainId(intuitionMainnet.id)// Returns: '0x6E35cF57A41fA15eA0EaE9C33e751b01A784Fe7e' ### Other Protocol Contracts[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#other-protocol-contracts "Direct link to Other Protocol Contracts") For accessing other contracts like TrustBonding or WrappedTrust: import { getContractAddressFromChainId } from '@0xintuition/protocol'// TrustBonding contract (for epoch rewards)const bondingAddress = getContractAddressFromChainId('TrustBonding', intuitionMainnet.id)// Returns: '0x635bBD1367B66E7B16a21D6E5A63C812fFC00617'// WrappedTrust contract (for token wrapping)const wrappedTrustAddress = getContractAddressFromChainId('WrappedTrust', intuitionMainnet.id)// Returns: '0x81cFb09cb44f7184Ad934C09F82000701A4bF672'// Bonding curve contractsconst linearCurve = getContractAddressFromChainId('LinearCurve', intuitionMainnet.id)const progressiveCurve = getContractAddressFromChainId('OffsetProgressiveCurve', intuitionMainnet.id) #### Available Contracts[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#available-contracts "Direct link to Available Contracts") * **`'Trust'`** - Native TRUST token (only on Base: Chain ID 8453) * **`'WrappedTrust'`** - Wrapped TRUST token * **`'MultiVault'`** - Main protocol contract * **`'TrustBonding'`** - Bonding and rewards contract * **`'BondingCurveRegistry'`** - Curve registry * **`'LinearCurve'`** - Linear bonding curve * **`'OffsetProgressiveCurve'`** - Progressive bonding curve ### All Deployments[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#all-deployments "Direct link to All Deployments") Access all contract addresses directly: import { intuitionDeployments } from '@0xintuition/protocol'// Access deployment dataconst allDeployments = intuitionDeployments/*{ MultiVault: { 1155: '0x6E35...', 13579: '0x2Ece...' }, TrustBonding: { 1155: '0x635b...', 13579: '0x75dD...' }, WrappedTrust: { 1155: '0x81cF...', 13579: '0xDE80...' }, BondingCurveRegistry: { ... }, LinearCurve: { ... }, OffsetProgressiveCurve: { ... },}*/ Transport Options[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#transport-options "Direct link to Transport Options") ---------------------------------------------------------------------------------------------------------------------------------------------------------- ### HTTP Transport[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#http-transport "Direct link to HTTP Transport") Standard HTTP connection (recommended for most use cases): import { http } from 'viem'const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),}) ### WebSocket Transport[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#websocket-transport "Direct link to WebSocket Transport") Real-time updates and subscriptions: import { webSocket } from 'viem'const publicClient = createPublicClient({ chain: intuitionTestnet, transport: webSocket('wss://testnet.rpc.intuition.systems/ws'),})// Subscribe to new blocksconst unwatch = publicClient.watchBlockNumber({ onBlockNumber: (blockNumber) => { console.log('New block:', blockNumber) },}) ### Custom RPC[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#custom-rpc "Direct link to Custom RPC") Use a custom RPC endpoint: const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http('https://your-custom-rpc-endpoint.com'),}) Wallet Configuration[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#wallet-configuration "Direct link to Wallet Configuration") ------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Private Key Account[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#private-key-account "Direct link to Private Key Account") For server-side or automated operations: import { privateKeyToAccount } from 'viem/accounts'const account = privateKeyToAccount('0x...')const walletClient = createWalletClient({ account, chain: intuitionTestnet, transport: http(),}) ### Browser Wallet (MetaMask, etc.)[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#browser-wallet-metamask-etc "Direct link to Browser Wallet (MetaMask, etc.)") For browser-based applications: import { custom } from 'viem'import { createWalletClient } from 'viem'// Browser walletconst walletClient = createWalletClient({ chain: intuitionTestnet, transport: custom(window.ethereum),})// Get account from walletconst [account] = await walletClient.getAddresses() ### Using Wagmi (React)[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#using-wagmi-react "Direct link to Using Wagmi (React)") For React applications using Wagmi: import { usePublicClient, useWalletClient } from 'wagmi'import { getMultiVaultAddressFromChainId, multiVaultGetAtomCost } from '@0xintuition/protocol'function MyComponent() { const publicClient = usePublicClient() const { data: walletClient } = useWalletClient() const address = getMultiVaultAddressFromChainId(publicClient.chain.id) const fetchAtomCost = async () => { const cost = await multiVaultGetAtomCost({ address, publicClient }) console.log('Atom cost:', cost) } return } Environment Variables[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#environment-variables "Direct link to Environment Variables") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Store sensitive configuration in environment variables: # .envPRIVATE_KEY=0x...RPC_URL=https://testnet.rpc.intuition.systems/httpCHAIN_ID=13579 import { privateKeyToAccount } from 'viem/accounts'import { createPublicClient, createWalletClient, http } from 'viem'import { intuitionTestnet } from '@0xintuition/protocol'const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(process.env.RPC_URL),})const walletClient = createWalletClient({ account, chain: intuitionTestnet, transport: http(process.env.RPC_URL),}) Complete Configuration Example[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#complete-configuration-example "Direct link to Complete Configuration Example") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Here's a complete configuration setup for a production application: import { createPublicClient, createWalletClient, http, webSocket,} from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { intuitionMainnet, intuitionTestnet, getMultiVaultAddressFromChainId, getContractAddressFromChainId,} from '@0xintuition/protocol'// Determine network from environmentconst isProduction = process.env.NODE_ENV === 'production'const chain = isProduction ? intuitionMainnet : intuitionTestnet// Create account from private keyconst account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)// Create public client (for reads)const publicClient = createPublicClient({ chain, transport: http(),})// Create wallet client (for writes)const walletClient = createWalletClient({ account, chain, transport: http(),})// Get contract addressesconst multiVaultAddress = getMultiVaultAddressFromChainId(chain.id)const trustBondingAddress = getContractAddressFromChainId('TrustBonding', chain.id)const wrappedTrustAddress = getContractAddressFromChainId('WrappedTrust', chain.id)// Export configurationexport const config = { publicClient, walletClient, account, addresses: { multiVault: multiVaultAddress, trustBonding: trustBondingAddress, wrappedTrust: wrappedTrustAddress, },} Next Steps[​](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------------------- * [Core Concepts: Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals) - Learn about atoms * [API Reference: MultiVault](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms) - Explore available functions * [Examples](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples) - See complete workflows * [Client Configuration](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#client-configuration) * [ReadConfig (Read-Only Operations)](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#readconfig-read-only-operations) * [WriteConfig (Transaction Operations)](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#writeconfig-transaction-operations) * [Network Configuration](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#network-configuration) * [Intuition Testnet](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#intuition-testnet) * [Intuition Mainnet](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#intuition-mainnet) * [Contract Addresses](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#contract-addresses) * [MultiVault Contract](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#multivault-contract) * [Other Protocol Contracts](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#other-protocol-contracts) * [All Deployments](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#all-deployments) * [Transport Options](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#transport-options) * [HTTP Transport](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#http-transport) * [WebSocket Transport](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#websocket-transport) * [Custom RPC](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#custom-rpc) * [Wallet Configuration](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#wallet-configuration) * [Private Key Account](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#private-key-account) * [Browser Wallet (MetaMask, etc.)](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#browser-wallet-metamask-etc) * [Using Wagmi (React)](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#using-wagmi-react) * [Environment Variables](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#environment-variables) * [Complete Configuration Example](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#complete-configuration-example) * [Next Steps](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration#next-steps) --- # Query Performance | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#__docusaurus_skipToContent_fallback) On this page Optimize your GraphQL queries for better performance. Performance Checklist[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#performance-checklist "Direct link to Performance Checklist") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### 1\. Use Indexed Fields for Filtering[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#1-use-indexed-fields-for-filtering "Direct link to 1. Use Indexed Fields for Filtering") **Indexed fields:** * `term_id` (primary keys) * `creator_id` * `type` * `created_at` * `account_id` # GOOD: Filtering by indexed fieldsquery GetAtoms($type: atom_type!, $since: timestamptz!) { atoms( where: { type: { _eq: $type } created_at: { _gte: $since } } ) { term_id label }} ### 2\. Request Only Needed Fields[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#2-request-only-needed-fields "Direct link to 2. Request Only Needed Fields") # GOOD: Minimal field selectionquery GetAtoms { atoms(limit: 10) { term_id label }} ### 3\. Use Aggregates Instead of Fetching All Nodes[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#3-use-aggregates-instead-of-fetching-all-nodes "Direct link to 3. Use Aggregates Instead of Fetching All Nodes") # GOOD: Use aggregates for countsquery CountPositions($accountId: String!) { positions_aggregate(where: { account_id: { _eq: $accountId } }) { aggregate { count } }} ### 4\. Limit Nested Queries[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#4-limit-nested-queries "Direct link to 4. Limit Nested Queries") # GOOD: Limit depth and breadthquery GetAtomWithTriples($id: String!) { atom(term_id: $id) { label as_subject_triples(limit: 10) { predicate { label } object { label } } }} ### 5\. Use Primary Key Lookups When Possible[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#5-use-primary-key-lookups-when-possible "Direct link to 5. Use Primary Key Lookups When Possible") # GOOD: Direct primary key lookupquery GetAtom($id: String!) { atom(term_id: $id) { term_id label }} ### 6\. Paginate Large Result Sets[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#6-paginate-large-result-sets "Direct link to 6. Paginate Large Result Sets") # GOOD: Always use limitquery GetAtoms($limit: Int!, $offset: Int!) { atoms( limit: $limit offset: $offset order_by: { created_at: desc } ) { term_id label }} ### 7\. Use Pre-Computed Tables[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#7-use-pre-computed-tables "Direct link to 7. Use Pre-Computed Tables") # GOOD: Use time-series tablesquery GetDailyStats($termId: String!, $curveId: numeric!) { share_price_change_stats_daily( where: { term_id: { _eq: $termId } curve_id: { _eq: $curveId } } limit: 30 ) { bucket difference }} ### 8\. Leverage Database Functions[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#8-leverage-database-functions "Direct link to 8. Leverage Database Functions") # GOOD: Use backend functionsquery GetFollowing($address: String!) { following(args: { address: $address }) { id label }} Monitoring[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#monitoring "Direct link to Monitoring") ------------------------------------------------------------------------------------------------------------------------------------- * Profile query execution time * Monitor response payload sizes * Track cache hit rates * Watch for N+1 query patterns * [Performance Checklist](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#performance-checklist) * [1\. Use Indexed Fields for Filtering](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#1-use-indexed-fields-for-filtering) * [2\. Request Only Needed Fields](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#2-request-only-needed-fields) * [3\. Use Aggregates Instead of Fetching All Nodes](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#3-use-aggregates-instead-of-fetching-all-nodes) * [4\. Limit Nested Queries](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#4-limit-nested-queries) * [5\. Use Primary Key Lookups When Possible](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#5-use-primary-key-lookups-when-possible) * [6\. Paginate Large Result Sets](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#6-paginate-large-result-sets) * [7\. Use Pre-Computed Tables](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#7-use-pre-computed-tables) * [8\. Leverage Database Functions](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#8-leverage-database-functions) * [Monitoring](https://www.docs.intuition.systems/docs/graphql-api/best-practices/performance#monitoring) --- # Triples Pagination | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/examples/triples-pagination#__docusaurus_skipToContent_fallback) On this page Paginate through triples with total count for UI. Query[​](https://www.docs.intuition.systems/docs/graphql-api/examples/triples-pagination#query "Direct link to Query") ----------------------------------------------------------------------------------------------------------------------- #### Query β–Ά Run Query query GetTriplesPage($limit: Int!, $offset: Int!) { total: triples\_aggregate { aggregate { count } } triples( limit: $limit offset: $offset order\_by: { created\_at: desc } ) { term\_id created\_at subject { label image } predicate { label } object { label image } } } #### Variables Click "Run Query" to execute the GraphQL query and see results * [Query](https://www.docs.intuition.systems/docs/graphql-api/examples/triples-pagination#query) --- # User Positions | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/examples/user-positions#__docusaurus_skipToContent_fallback) On this page Fetch user positions with aggregate statistics. Query[​](https://www.docs.intuition.systems/docs/graphql-api/examples/user-positions#query "Direct link to Query") ------------------------------------------------------------------------------------------------------------------- #### Query β–Ά Run Query query GetUserPositions($accountId: String!, $limit: Int!) { stats: positions\_aggregate(where: { account\_id: { \_eq: $accountId } }) { aggregate { count sum { shares } } } positions( where: { account\_id: { \_eq: $accountId } } order\_by: { shares: desc } limit: $limit ) { id shares vault { term\_id current\_share\_price market\_cap term { atom { label image } } } } } #### Variables Click "Run Query" to execute the GraphQL query and see results * [Query](https://www.docs.intuition.systems/docs/graphql-api/examples/user-positions#query) --- # Upload Image from URL | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#__docusaurus_skipToContent_fallback) On this page Upload an image by providing its URL. The server fetches, caches, and moderates the image. Returns a `CachedImage` with the hosted URL and safety score. Mutation Structure[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#mutation-structure "Direct link to Mutation Structure") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- mutation UploadImageFromUrl($image: UploadImageFromUrlInput!) { uploadImageFromUrl(image: $image) { images { url original_url safe score model created_at } }} Variables[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#variables "Direct link to Variables") ---------------------------------------------------------------------------------------------------------------------------------------------- The mutation takes an `image` argument with the `UploadImageFromUrlInput` type: | Field | Type | Required | Description | | --- | --- | --- | --- | | `url` | `String` | Yes | URL of the image to upload | { "image": { "url": "https://example.com/images/logo.png" }} Response Fields[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#response-fields "Direct link to Response Fields") ---------------------------------------------------------------------------------------------------------------------------------------------------------------- Returns `UploadImageFromUrlOutput` containing an `images` array of `CachedImage` objects: | Field | Type | Description | | --- | --- | --- | | `images` | `[CachedImage!]!` | Array of cached image results | | `images[].url` | `String!` | Hosted image URL | | `images[].original_url` | `String!` | Original source URL | | `images[].safe` | `Boolean!` | Whether the image passed moderation | | `images[].score` | `jsonb` | Moderation safety score details | | `images[].model` | `String` | Moderation model used | | `images[].created_at` | `timestamptz!` | Upload timestamp | Expected Response[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#expected-response "Direct link to Expected Response") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- { "data": { "uploadImageFromUrl": { "images": [ { "url": "https://cdn.example.com/images/abc123.png", "original_url": "https://example.com/images/logo.png", "safe": true, "score": null, "model": null, "created_at": "2024-01-15T10:30:00Z" } ] } }} Interactive Example[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#interactive-example "Direct link to Interactive Example") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #### Query β–Ά Run Query mutation UploadImageFromUrl($image: UploadImageFromUrlInput!) { uploadImageFromUrl(image: $image) { images { url original\_url safe } } } #### Variables Click "Run Query" to execute the GraphQL query and see results Use Cases[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#use-cases "Direct link to Use Cases") ---------------------------------------------------------------------------------------------------------------------------------------------- ### Import External Images[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#import-external-images "Direct link to Import External Images") import { GraphQLClient } from 'graphql-request'import { API_URL_PROD } from '@0xintuition/graphql'const client = new GraphQLClient(API_URL_PROD)async function importExternalImage(imageUrl: string) { const mutation = ` mutation UploadImageFromUrl($image: UploadImageFromUrlInput!) { uploadImageFromUrl(image: $image) { images { url safe } } } ` const result = await client.request(mutation, { image: { url: imageUrl } }) const cached = result.uploadImageFromUrl.images[0] if (!cached.safe) { throw new Error('Image failed moderation check') } return cached.url} Related[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#related "Direct link to Related") ---------------------------------------------------------------------------------------------------------------------------------------- * [Upload Image](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image) - Upload base64 image * [Upload JSON to IPFS](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs) - Upload metadata * [Pin Person](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-person) - Create Person with image * [Mutation Structure](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#mutation-structure) * [Variables](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#variables) * [Response Fields](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#response-fields) * [Expected Response](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#expected-response) * [Interactive Example](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#interactive-example) * [Use Cases](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#use-cases) * [Import External Images](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#import-external-images) * [Related](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url#related) --- # Resources | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/resources#__docusaurus_skipToContent_fallback) On this page Find additional resources, support, and tools for building with Intuition. Documentation Resources[​](https://www.docs.intuition.systems/docs/resources#documentation-resources "Direct link to Documentation Resources") ----------------------------------------------------------------------------------------------------------------------------------------------- [### FAQ\ \ Frequently asked questions about Intuition. From basic concepts to advanced implementation details, get quick answers to common questions.](https://www.docs.intuition.systems/docs/resources/faq) [### Glossary\ \ Comprehensive glossary of key terms and definitions. Master the essential terminology for working with Intuition.](https://www.docs.intuition.systems/docs/resources/glossary) [### Tutorials\ \ Step-by-step guides for building with Intuition. Learn by doing with hands-on tutorials covering common use cases.](https://www.docs.intuition.systems/docs/tutorials/overview) Community & Support[​](https://www.docs.intuition.systems/docs/resources#community--support "Direct link to Community & Support") ---------------------------------------------------------------------------------------------------------------------------------- [### Community Channels\ \ Connect with the Intuition community. Join Discord, Forum discussions, and follow us on Twitter for updates.](https://www.docs.intuition.systems/docs/resources/community-and-support) [### Contributing\ \ Help improve Intuition. Learn how to contribute to the protocol, documentation, and ecosystem.](https://www.docs.intuition.systems/docs/contribution-guidelines) [### GitHub\ \ Open source repositories for the Intuition protocol, SDK, and tools. Contribute code or report issues.](https://github.com/0xIntuition) Security[​](https://www.docs.intuition.systems/docs/resources#security "Direct link to Security") -------------------------------------------------------------------------------------------------- [### Audit Reports\ \ Third-party security audits of Intuition smart contracts. Review audit findings and security best practices.](https://www.docs.intuition.systems/docs/intuition-smart-contracts/audit-reports) [### Bug Bounty\ \ Report security vulnerabilities and earn rewards. Help keep Intuition secure through our bug bounty program.](https://immunefi.com/bounty/intuition/) AI Agent Integration[​](https://www.docs.intuition.systems/docs/resources#ai-agent-integration "Direct link to AI Agent Integration") -------------------------------------------------------------------------------------------------------------------------------------- [### llms.txt\ \ Concise documentation index optimized for LLM consumption. Quick reference for AI agents integrating with Intuition.](https://www.docs.intuition.systems/llms.txt) [### llms-full.txt\ \ Complete documentation in LLM-friendly format. Full protocol reference for advanced AI agent integration.](https://www.docs.intuition.systems/llms-full.txt) External Links[​](https://www.docs.intuition.systems/docs/resources#external-links "Direct link to External Links") -------------------------------------------------------------------------------------------------------------------- ### Official Platforms[​](https://www.docs.intuition.systems/docs/resources#official-platforms "Direct link to Official Platforms") * **[Website](https://intuition.systems/) ** - Official Intuition website * **[Portal](https://portal.intuition.systems/) ** - Protocol explorer and interface * **[Network Hub](https://testnet.hub.intuition.systems/) ** - Testnet dashboard and tools * **[Blog](https://intuition.systems/blog) ** - News, updates, and deep dives ### Developer Tools[​](https://www.docs.intuition.systems/docs/resources#developer-tools "Direct link to Developer Tools") * **[GitHub](https://github.com/0xIntuition) ** - Source code and repositories * **[NPM Packages](https://www.npmjs.com/org/0xintuition) ** - Published npm packages * **[Status Page](https://status.intuition.systems/) ** - Network status monitoring ### Network Monitoring[​](https://www.docs.intuition.systems/docs/resources#network-monitoring "Direct link to Network Monitoring") * **[Network Health](https://www.docs.intuition.systems/docs/intuition-network) ** - Real-time status * **[Testnet Explorer](https://testnet.explorer.intuition.systems/) ** - Blockchain explorer * **[GraphQL Playground](https://mainnet.intuition.sh/v1/graphql) ** - Query interface Learning Resources[​](https://www.docs.intuition.systems/docs/resources#learning-resources "Direct link to Learning Resources") -------------------------------------------------------------------------------------------------------------------------------- ### Core Concepts[​](https://www.docs.intuition.systems/docs/resources#core-concepts "Direct link to Core Concepts") * **[Primitives Overview](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) ** - Understanding atoms, triples, and signals * **[Economics](https://www.docs.intuition.systems/docs/intuition-concepts/economics) ** - Tokenomics and incentive design * **[Architecture](https://www.docs.intuition.systems/docs/intuition-concepts/architecture) ** - System design and architecture ### Developer Guides[​](https://www.docs.intuition.systems/docs/resources#developer-guides "Direct link to Developer Guides") * **[SDK Documentation](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup) ** - TypeScript SDK * **[Protocol API](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms) ** - Smart contract API * **[GraphQL API](https://www.docs.intuition.systems/docs/graphql-api/getting-started/introduction) ** - Query language ### Tutorials[​](https://www.docs.intuition.systems/docs/resources#tutorials "Direct link to Tutorials") * **[Create Your First Atom](https://www.docs.intuition.systems/docs/tutorials/overview) ** - Getting started * **[Build a Reputation System](https://www.docs.intuition.systems/docs/tutorials/reputation-system) ** - Intermediate tutorial * **[Custom Indexing](https://www.docs.intuition.systems/docs/tutorials/advanced/batch-operations) ** - Advanced topics Stay Updated[​](https://www.docs.intuition.systems/docs/resources#stay-updated "Direct link to Stay Updated") -------------------------------------------------------------------------------------------------------------- ### Social Media[​](https://www.docs.intuition.systems/docs/resources#social-media "Direct link to Social Media") * **[Twitter](https://twitter.com/0xIntuition) ** - Latest news and announcements * **[Discord](https://discord.gg/RgBenkX4mx) ** - Community chat and support * **[Newsletter](https://intuition.systems/newsletter) ** - Monthly updates and highlights ### Development Updates[​](https://www.docs.intuition.systems/docs/resources#development-updates "Direct link to Development Updates") * **[GitHub Releases](https://github.com/0xIntuition/intuition-contracts/releases) ** - Protocol releases * **[SDK Changelog](https://github.com/0xIntuition/intuition-ts/releases) ** - SDK updates * **[Documentation Updates](https://github.com/0xIntuition/intuition-docs/commits/main) ** - Docs changelog Additional Tools[​](https://www.docs.intuition.systems/docs/resources#additional-tools "Direct link to Additional Tools") -------------------------------------------------------------------------------------------------------------------------- [### Network Health\ \ Monitor real-time network status and uptime statistics. Stay informed about maintenance and incidents.](https://www.docs.intuition.systems/docs/intuition-network) * [Documentation Resources](https://www.docs.intuition.systems/docs/resources#documentation-resources) * [Community & Support](https://www.docs.intuition.systems/docs/resources#community--support) * [Security](https://www.docs.intuition.systems/docs/resources#security) * [AI Agent Integration](https://www.docs.intuition.systems/docs/resources#ai-agent-integration) * [External Links](https://www.docs.intuition.systems/docs/resources#external-links) * [Official Platforms](https://www.docs.intuition.systems/docs/resources#official-platforms) * [Developer Tools](https://www.docs.intuition.systems/docs/resources#developer-tools) * [Network Monitoring](https://www.docs.intuition.systems/docs/resources#network-monitoring) * [Learning Resources](https://www.docs.intuition.systems/docs/resources#learning-resources) * [Core Concepts](https://www.docs.intuition.systems/docs/resources#core-concepts) * [Developer Guides](https://www.docs.intuition.systems/docs/resources#developer-guides) * [Tutorials](https://www.docs.intuition.systems/docs/resources#tutorials) * [Stay Updated](https://www.docs.intuition.systems/docs/resources#stay-updated) * [Social Media](https://www.docs.intuition.systems/docs/resources#social-media) * [Development Updates](https://www.docs.intuition.systems/docs/resources#development-updates) * [Additional Tools](https://www.docs.intuition.systems/docs/resources#additional-tools) --- # Atom Events | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/events/atom-events#__docusaurus_skipToContent_fallback) On this page Functions for parsing atom-related events from transaction receipts. eventParseAtomCreated[​](https://www.docs.intuition.systems/docs/protocol/events/atom-events#eventparseatomcreated "Direct link to eventParseAtomCreated") ----------------------------------------------------------------------------------------------------------------------------------------------------------- Parse AtomCreated events from a transaction. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/events/atom-events#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | publicClient | `PublicClient` | Viem public client | Yes | | txHash | `Hash` | Transaction hash | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/events/atom-events#returns "Direct link to Returns") Promise> ### Example[​](https://www.docs.intuition.systems/docs/protocol/events/atom-events#example "Direct link to Example") import { eventParseAtomCreated } from '@0xintuition/protocol'const events = await eventParseAtomCreated(publicClient, txHash)events.forEach((event) => { console.log('Atom ID:', event.args.termId) console.log('Atom URI:', event.args.termData) console.log('Creator:', event.args.creatorAtomId)}) * * * eventParseAtomDepositCreated[​](https://www.docs.intuition.systems/docs/protocol/events/atom-events#eventparseatomdepositcreated "Direct link to eventParseAtomDepositCreated") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Parse AtomDepositCreated events (atom creation with initial deposit). ### Returns[​](https://www.docs.intuition.systems/docs/protocol/events/atom-events#returns-1 "Direct link to Returns") Promise> ### Example[​](https://www.docs.intuition.systems/docs/protocol/events/atom-events#example-1 "Direct link to Example") import { eventParseAtomDepositCreated } from '@0xintuition/protocol'const events = await eventParseAtomDepositCreated(publicClient, txHash)events.forEach((event) => { console.log('Atom ID:', event.args.termId) console.log('Initial deposit:', formatEther(event.args.assets)) console.log('Shares received:', formatEther(event.args.shares))}) * * * Complete Example[​](https://www.docs.intuition.systems/docs/protocol/events/atom-events#complete-example "Direct link to Complete Example") -------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultCreateAtoms, eventParseAtomCreated, eventParseDeposited,} from '@0xintuition/protocol'import { toHex, parseEther } from 'viem'// Create atom with depositconst atomCost = await multiVaultGetAtomCost({ address, publicClient })const deposit = atomCost + parseEther('1')const txHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [[toHex('My Atom')], [deposit]], value: deposit, })// Parse all eventsconst atomEvents = await eventParseAtomCreated(publicClient, txHash)const depositEvents = await eventParseDeposited(publicClient, txHash)console.log('Created atoms:', atomEvents.map(e => e.args.termId))console.log('Deposits:', depositEvents.map(e => formatEther(e.args.assets))) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/events/atom-events#see-also "Direct link to See Also") -------------------------------------------------------------------------------------------------------------------- * [Triple Events](https://www.docs.intuition.systems/docs/protocol/events/triple-events) * [Vault Events](https://www.docs.intuition.systems/docs/protocol/events/vault-events) * [Examples: Event Parsing](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing) * [eventParseAtomCreated](https://www.docs.intuition.systems/docs/protocol/events/atom-events#eventparseatomcreated) * [Parameters](https://www.docs.intuition.systems/docs/protocol/events/atom-events#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/events/atom-events#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/events/atom-events#example) * [eventParseAtomDepositCreated](https://www.docs.intuition.systems/docs/protocol/events/atom-events#eventparseatomdepositcreated) * [Returns](https://www.docs.intuition.systems/docs/protocol/events/atom-events#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/events/atom-events#example-1) * [Complete Example](https://www.docs.intuition.systems/docs/protocol/events/atom-events#complete-example) * [See Also](https://www.docs.intuition.systems/docs/protocol/events/atom-events#see-also) --- # Multi-Language Examples | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/examples/multi-language#__docusaurus_skipToContent_fallback) On this page Use the Intuition GraphQL API across different programming languages. Python[​](https://www.docs.intuition.systems/docs/graphql-api/examples/multi-language#python "Direct link to Python") ---------------------------------------------------------------------------------------------------------------------- from gql import gql, Clientfrom gql.transport.requests import RequestsHTTPTransporttransport = RequestsHTTPTransport(url='https://mainnet.intuition.sh/v1/graphql')client = Client(transport=transport)query = gql(''' query GetAtom($id: String!) { atom(term_id: $id) { term_id label image } }''')result = client.execute(query, variable_values={'id': '0x...'})print(result['atom']) Go[​](https://www.docs.intuition.systems/docs/graphql-api/examples/multi-language#go "Direct link to Go") ---------------------------------------------------------------------------------------------------------- package mainimport ( "context" "fmt" "github.com/machinebox/graphql")func main() { client := graphql.NewClient("https://mainnet.intuition.sh/v1/graphql") req := graphql.NewRequest(` query GetAtom($id: String!) { atom(term_id: $id) { term_id label } } `) req.Var("id", "0x...") var response struct { Atom struct { TermID string `json:"term_id"` Label string `json:"label"` } `json:"atom"` } client.Run(context.Background(), req, &response) fmt.Printf("Atom: %+v\n", response.Atom)} Rust[​](https://www.docs.intuition.systems/docs/graphql-api/examples/multi-language#rust "Direct link to Rust") ---------------------------------------------------------------------------------------------------------------- use graphql_client::{GraphQLQuery, Response};#[derive(GraphQLQuery)]#[graphql( schema_path = "schema.graphql", query_path = "get_atom.graphql",)]struct GetAtom;#[tokio::main]async fn main() -> Result<(), Box> { let client = reqwest::Client::new(); let variables = get_atom::Variables { id: "0x...".to_string(), }; let response = client .post("https://mainnet.intuition.sh/v1/graphql") .json(&GetAtom::build_query(variables)) .send() .await? .json::>() .await?; Ok(())} * [Python](https://www.docs.intuition.systems/docs/graphql-api/examples/multi-language#python) * [Go](https://www.docs.intuition.systems/docs/graphql-api/examples/multi-language#go) * [Rust](https://www.docs.intuition.systems/docs/graphql-api/examples/multi-language#rust) --- # Upload JSON to IPFS | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#__docusaurus_skipToContent_fallback) On this page Upload JSON metadata to IPFS for use in atom creation. Returns the IPFS hash, name, and size. Mutation Structure[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#mutation-structure "Direct link to Mutation Structure") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- mutation UploadJsonToIpfs($json: jsonb!) { uploadJsonToIpfs(json: $json) { hash name size }} Variables[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#variables "Direct link to Variables") -------------------------------------------------------------------------------------------------------------------------------------------- | Variable | Type | Required | Description | | --- | --- | --- | --- | | `json` | `jsonb` | Yes | JSON object to upload | { "json": { "name": "Ethereum", "description": "A decentralized blockchain platform", "image": "ipfs://QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy", "url": "https://ethereum.org", "type": "Thing" }} Response Fields[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#response-fields "Direct link to Response Fields") -------------------------------------------------------------------------------------------------------------------------------------------------------------- | Field | Type | Description | | --- | --- | --- | | `hash` | `String!` | IPFS content hash (CID) | | `name` | `String!` | Filename on IPFS | | `size` | `String!` | File size | Expected Response[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#expected-response "Direct link to Expected Response") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- { "data": { "uploadJsonToIpfs": { "hash": "QmYx8C3kNN1sFSx5bZPyN1sFSx5b8MqKu2r6CTSJ", "name": "metadata.json", "size": "256" } }} Interactive Example[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#interactive-example "Direct link to Interactive Example") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #### Query β–Ά Run Query mutation UploadJsonToIpfs($json: jsonb!) { uploadJsonToIpfs(json: $json) { hash name size } } #### Variables Click "Run Query" to execute the GraphQL query and see results Common Metadata Schemas[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#common-metadata-schemas "Direct link to Common Metadata Schemas") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Thing Schema[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#thing-schema "Direct link to Thing Schema") { "name": "Ethereum", "description": "A decentralized blockchain platform that enables smart contracts", "image": "ipfs://Qm...", "url": "https://ethereum.org"} ### Person Schema[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#person-schema "Direct link to Person Schema") { "name": "Vitalik Buterin", "description": "Co-founder of Ethereum", "image": "ipfs://Qm...", "email": "vitalik@ethereum.org", "identifier": "vitalik.eth", "url": "https://vitalik.ca"} ### Organization Schema[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#organization-schema "Direct link to Organization Schema") { "name": "Ethereum Foundation", "description": "Non-profit supporting Ethereum development", "image": "ipfs://Qm...", "url": "https://ethereum.foundation", "email": "info@ethereum.org"} Use Cases[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#use-cases "Direct link to Use Cases") -------------------------------------------------------------------------------------------------------------------------------------------- ### Complete Atom Creation Workflow[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#complete-atom-creation-workflow "Direct link to Complete Atom Creation Workflow") Upload metadata and use the IPFS hash for atom creation: import { GraphQLClient } from 'graphql-request'import { API_URL_PROD } from '@0xintuition/graphql'const client = new GraphQLClient(API_URL_PROD)async function prepareAtomMetadata(thing: { name: string description: string image: string url?: string}) { const mutation = ` mutation UploadJsonToIpfs($json: jsonb!) { uploadJsonToIpfs(json: $json) { hash name size } } ` const result = await client.request(mutation, { json: thing }) return result.uploadJsonToIpfs.hash} Related[​](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#related "Direct link to Related") -------------------------------------------------------------------------------------------------------------------------------------- * [Upload Image](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image) - Upload images * [Upload Image from URL](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url) - Import external images * [Pin Thing](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing) - Pin Thing metadata * [Pin Person](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-person) - Pin Person metadata * [Pin Organization](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-organization) - Pin Organization metadata * [Mutation Structure](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#mutation-structure) * [Variables](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#variables) * [Response Fields](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#response-fields) * [Expected Response](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#expected-response) * [Interactive Example](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#interactive-example) * [Common Metadata Schemas](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#common-metadata-schemas) * [Thing Schema](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#thing-schema) * [Person Schema](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#person-schema) * [Organization Schema](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#organization-schema) * [Use Cases](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#use-cases) * [Complete Atom Creation Workflow](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#complete-atom-creation-workflow) * [Related](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs#related) --- # Price Updates | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/price-updates#__docusaurus_skipToContent_fallback) On this page Subscribe to real-time share price changes. Subscription Structure[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/price-updates#subscription-structure "Direct link to Subscription Structure") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- subscription WatchPriceChanges( $cursor: [share_price_changes_stream_cursor_input]! $termId: String! $batchSize: Int!) { share_price_changes_stream( cursor: $cursor batch_size: $batchSize where: { term_id: { _eq: $termId } } ) { term_id curve_id share_price block_timestamp block_number transaction_hash }} Best Practices[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/price-updates#best-practices "Direct link to Best Practices") -------------------------------------------------------------------------------------------------------------------------------------------------- 1. **Filter by term\_id** for specific vault 2. **Use batch\_size** to control update frequency 3. **Track price changes** using `share_price` and `block_timestamp` 4. **Update charts** with new data points * [Subscription Structure](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/price-updates#subscription-structure) * [Best Practices](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/price-updates#best-practices) --- # Real-Time Positions | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/real-time-positions#__docusaurus_skipToContent_fallback) On this page Subscribe to position changes for live portfolio tracking. Subscription Structure[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/real-time-positions#subscription-structure "Direct link to Subscription Structure") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- subscription WatchPositions( $cursor: [positions_stream_cursor_input]! $accountId: String $batchSize: Int!) { positions_stream( cursor: $cursor batch_size: $batchSize where: { account_id: { _eq: $accountId } shares: { _gt: "0" } } ) { id shares vault { term_id current_share_price } }} Best Practices[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/real-time-positions#best-practices "Direct link to Best Practices") -------------------------------------------------------------------------------------------------------------------------------------------------------- 1. **Filter by account** for user-specific updates 2. **Filter shares > 0** for active positions only 3. **Update UI state** with new data 4. **Resume from last cursor** after disconnection * [Subscription Structure](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/real-time-positions#subscription-structure) * [Best Practices](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/real-time-positions#best-practices) --- # Finding Related Claims | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/tutorials/queries/finding-related-claims#__docusaurus_skipToContent_fallback) On this page Learn how to find and navigate related claims in the Intuition knowledge graph by exploring triples, their relationships, and semantic connections. Understanding the Progression[​](https://www.docs.intuition.systems/docs/tutorials/queries/finding-related-claims#understanding-the-progression "Direct link to Understanding the Progression") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1. **Find all triples** where a specific atom appears as subject or object and discover direct relationships. 2. **Find similar claims** by predicate pattern and subject type, then discover relationship patterns across the graph. 3. **Get detailed information** about a specific triple, including vault metrics and top positions. Step 1: Find Related ClaimsStep 2: Find Similar ClaimsStep 3: Get Triple Details #### Query β–Ά Run Query query GetRelatedClaims($atomId: String!, $limit: Int = 20) { as\_subject: triples( where: { subject\_id: { \_eq: $atomId } } order\_by: \[{ term: { vaults\_aggregate: { max: { market\_cap: desc } } } }\] limit: $limit ) { term\_id created\_at predicate { term\_id label image } object { term\_id label image type } term { vaults(where: { curve\_id: { \_eq: "2" } }) { market\_cap position\_count } } } as\_object: triples( where: { object\_id: { \_eq: $atomId } } order\_by: \[{ term: { vaults\_aggregate: { max: { market\_cap: desc } } } }\] limit: $limit ) { term\_id created\_at subject { term\_id label image type } predicate { term\_id label image } term { vaults(where: { curve\_id: { \_eq: "2" } }) { market\_cap position\_count } } } atom: atoms(where: { term\_id: { \_eq: $atomId } }, limit: 1) { term\_id label image type } } #### Variables Click "Run Query" to execute the GraphQL query and see results * [Understanding the Progression](https://www.docs.intuition.systems/docs/tutorials/queries/finding-related-claims#understanding-the-progression) --- # Atom Fundamentals | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#__docusaurus_skipToContent_fallback) On this page Atoms are the foundational building blocks of Intuition's knowledge graph – the words in our global dictionary. Think of Intuition as a vast, collaborative dictionary where anyone can create a new word, and each word has its own globally persistent, unique digital identifier that can be used to reference it across the entire internet. What are Atoms?[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#what-are-atoms "Direct link to What are Atoms?") ------------------------------------------------------------------------------------------------------------------------------------------------------------- A system facilitating the arrival at social consensus around globally persistent canonical identifiers for all things demands that these identifiers possess a few key attributes. ### Decentralized Identifiers These identifiers should be decentralized identifiers, providing unique, secure, and verifiable identification without any reliance on a central authority. UniqueSecureVerifiable ### Associated Data These identifiers should have a sufficient amount of associated data to ensure precise referencing of specific entities, concepts, or pieces of information. ContextualPreciseReferenced ### Agent-Centric State These identifiers must have some agent-centric state that is capable of tracking the usage of the identifier across contexts. TrackableUsageContexts The Atom Solution[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#the-atom-solution "Direct link to The Atom Solution") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- To solve for these requirements, the concepts of Atoms emerge as the foundation of the Intuition framework, representing the most fundamental units of data. These units can range from a single word to a complex concept, serving as discrete, manageable, and referenceable pieces of information that facilitate seamless data integration and manipulation across the web. In the spirit of the Semantic Web and linked data, an Atom can correspond to virtually anything: * **People**: User identities, profiles, public figures * **Organizations**: Companies, DAOs, institutions, projects * **Addresses**: Cryptocurrency wallets, smart contracts, validators * **Documents**: Files, articles, research papers, certificates * **Temporal markers**: Dates, timestamps, time periods * **Categories**: Tags, classifications, taxonomies * **Concepts**: Ideas, words, phrases, abstract notions ### Key Benefits of Atoms #### Universal Reference Start to reference data universally across the web. #### User Equity Grant users equity in data as they signal its relevancy through usage. #### Active Participation Reward users for signaling the relevancy of data, encouraging active participation. Each Atom is made universally referenceable through a decentralized identifier. This approach ensures that every Atom is uniquely identifiable and can be consistently referenced across the web, maintaining data integrity and meaning regardless of the system or context. Technical Architecture[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#technical-architecture "Direct link to Technical Architecture") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Core Structure[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#core-structure "Direct link to Core Structure") Under the hood, creating a new Atom mints a tokenized record using the ERC-1155 multi-token standard that includes: 1. **Unique Atom ID**: A permanent, immutable identifier deterministically derived from the atomData 2. **Atom Data**: Can contain any arbitrary data (URIs, text, JSON, references to external resources) 3. **Associated Smart Contract Wallet**: Enabling the Atom itself to own assets and interact with contracts Each Atom's unique ID is deterministically generated based on its `atomData` field – meaning the same data will always produce the same Atom ID. This ensures that duplicate Atoms cannot be created for identical data, and anyone can independently verify an Atom's ID by hashing its data. Every Atom carries `atomData` which can contain any arbitrary information relevant to that entity. For example: * An Atom for "Solar Energy" might contain a link to a Wikipedia page about solar power * An Atom for a user's identity might contain a DID document reference or profile JSON * An Atom for a document might contain an IPFS content hash * An Atom for a concept might contain a simple text string or structured JSON data The uniqueness of each Atom is enforced by hashing its underlying data, preventing duplicate Atoms for the same piece of data. This approach allows Atoms to segment data into discrete, manageable units that can be easily combined and reused across diverse contexts and applications. ### Decentralized Identifiers (DIDs)[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#decentralized-identifiers-dids "Direct link to Decentralized Identifiers (DIDs)") ### Example DID // An example DID did:ethr:mainnet:0x3b0bc51ab9de1e5b7b6e34e5b960285805c41736 // An example DID Document { "id": "did:ethr:mainnet:0x3b0bc51ab9de1e5b7b6e34e5b960285805c41736", "verificationMethod": \[\ {\ "id": "did:ethr:mainnet:0x3b0bc51ab9de1e5b7b6e34e5b960285805c41736#controller",\ "type": "EcdsaSecp256k1RecoveryMethod2020",\ "controller": "did:ethr:mainnet:0x3b0bc51ab9de1e5b7b6e34e5b960285805c41736",\ "blockchainAccountId": "eip155:1:0x3b0BC51Ab9De1e5B7B6E34E5b960285805C41736"\ }\ \], "authentication": \[\ "did:ethr:mainnet:0x3b0bc51ab9de1e5b7b6e34e5b960285805c41736#controller"\ \], "assertionMethod": \[\ "did:ethr:mainnet:0x3b0bc51ab9de1e5b7b6e34e5b960285805c41736#controller"\ \], "@context": \[\ "https://www.w3.org/ns/did/v1",\ "https://w3id.org/security/suites/secp256k1recovery-2020/v2",\ "https://w3id.org/security/v3-unstable"\ \] } Components of an Atom[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#components-of-an-atom "Direct link to Components of an Atom") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #### Atom Data Describes the concept or entity represented by an Atom, typically stored off-chain using decentralized storage solutions like IPFS or Arweave, with a URI pointing to this data stored on-chain. #### Atom Wallet A smart contract wallet associated with each Atom, granting it agency over its identity. This wallet is controlled by a specialized smart contract known as the Atom Warden. #### Atom Vault A mechanism that allows users to deposit tokens into an Atom, signaling its relevance and support within the system. The Total Value Locked (TVL) in an Atom Vault indicates the Atom's acceptance and importance. ### Staking Vaults and Bonding Curves[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#staking-vaults-and-bonding-curves "Direct link to Staking Vaults and Bonding Curves") Each Atom has one or more Vaults attached to it for staking. These vaults operate on a bonding curve, meaning: * The cost to acquire a stake (or "share") in an Atom increases as more is already staked * Early stakers get a larger stake for their investment * Latecomers pay a premium for popular Atoms This mechanism incentivizes early discovery of important Atoms and creates a form of priority signaling – the community collectively "bids up" the Atoms deemed valuable or relevant by risking capital in their vaults. ### Atom Creation Process[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#atom-creation-process "Direct link to Atom Creation Process") Loading diagram... Data Requirements[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#data-requirements "Direct link to Data Requirements") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- To ensure reliable referencing of entities, concepts, or data within an Atom, each Atom must include at least minimal corresponding data. This data can be of any type, stored anywhere, and presented in any format. ### Recommended Data Practices #### Verifiable Data Registry Use a Verifiable Data Registry to strengthen data usability through guarantees around immutability, availability, liveness, and persistence. #### Supported Structures Adhere to supported data structures and schemas for better interoperability and reliability. #### Timestamp Inclusion For mutable data, include a timestamp to ensure future references understand exactly what the data represented at the moment of attestation. Atom Ownership and Token Curated Registries[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#atom-ownership-and-token-curated-registries "Direct link to Atom Ownership and Token Curated Registries") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Given the permissionless nature of the system, multiple Atoms may be representative of the same concept. To foster consensus on high-quality Atoms and establish canonical identifiers for all things, Intuition employs the concept of a Token Curated Registry (TCR). ### TCR Benefits #### Fractional Ownership Users gain fractional ownership over the Atoms they interact with and receive a portion of the interaction fees each respective Atom generates. #### Incentivized Engagement This model incentivizes engagement with popular Atoms, encouraging active participation in the ecosystem. #### Quality Ranking A TCR emerges, ranking Atoms based on their relevance using metrics such as an Atom's Total Value Locked (TVL). As users increasingly interact with these Atoms, a TCR emerges, ranking Atoms based on their relevance using metrics such as an Atom's Total Value Locked (TVL). This mechanism facilitates ecosystem convergence on and easy discoverability of the most valuable and widely accepted Atoms/identifiers representing each concept. Atoms as Building Blocks[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#atoms-as-building-blocks "Direct link to Atoms as Building Blocks") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Atoms are categorized into three primary roles within semantic structures: ### Subjects[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#subjects "Direct link to Subjects") The entity or concept being described in a relationship. ### Predicates[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#predicates "Direct link to Predicates") The relationship or attribute that connects subjects to objects. ### Objects[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#objects "Direct link to Objects") The value or characteristic attributed to the subject through the predicate. This structure facilitates the creation of **Triples** that articulate specific assertions or facts about the world, which we'll explore in the next section. * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#next-steps "Direct link to Next Steps") ----------------------------------------------------------------------------------------------------------------------------------------------- Now that you understand Atom fundamentals, explore: * [Atom Structuring](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/structuring) - Learn advanced techniques for structuring Atoms effectively * [Atom Best Practices](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/best-practices) - Discover patterns and guidelines for creating high-quality Atoms * [Triple Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/triples/fundamentals) - Learn how Atoms combine to form relationships * [Signal Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/signals/fundamentals) - Understand how users interact with Atoms through signaling * [What are Atoms?](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#what-are-atoms) * [The Atom Solution](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#the-atom-solution) * [Technical Architecture](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#technical-architecture) * [Core Structure](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#core-structure) * [Decentralized Identifiers (DIDs)](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#decentralized-identifiers-dids) * [Components of an Atom](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#components-of-an-atom) * [Staking Vaults and Bonding Curves](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#staking-vaults-and-bonding-curves) * [Atom Creation Process](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#atom-creation-process) * [Data Requirements](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#data-requirements) * [Atom Ownership and Token Curated Registries](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#atom-ownership-and-token-curated-registries) * [Atoms as Building Blocks](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#atoms-as-building-blocks) * [Subjects](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#subjects) * [Predicates](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#predicates) * [Objects](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#objects) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals#next-steps) --- # Signal Rewards | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#__docusaurus_skipToContent_fallback) On this page Understanding the economic incentives and reward mechanisms is crucial for participating effectively in the Intuition signal economy. Fee Structure[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#fee-structure "Direct link to Fee Structure") ----------------------------------------------------------------------------------------------------------------------------------------------------- ### Entry Fees[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#entry-fees "Direct link to Entry Fees") When a user deposits tokens into an Atom or Triple vault: * A small fee is charged on the deposit * Fee goes to existing vault shareholders * Incentivizes early discovery and staking ### Exit Fees[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#exit-fees "Direct link to Exit Fees") When a user withdraws their stake: * A fee may be charged on redemption * Helps stabilize the vault * Discourages rapid speculation ### Protocol Fees[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#protocol-fees "Direct link to Protocol Fees") A portion of fees goes to: * Protocol treasury * Development funding * Network maintenance Reward Distribution[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#reward-distribution "Direct link to Reward Distribution") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Share-Based Rewards[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#share-based-rewards "Direct link to Share-Based Rewards") When you stake on an Atom or Triple, you receive shares: // Example reward calculationconst yourShares = 45const totalShares = 1000const ownershipPercent = yourShares / totalShares // 4.5%// When new fees come inconst newFees = 100const yourReward = newFees * ownershipPercent // 4.5 tokens ### Bonding Curve Dynamics[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#bonding-curve-dynamics "Direct link to Bonding Curve Dynamics") The bonding curve affects both: * **Entry Price**: Later stakers pay more per share * **Exit Price**: Early stakers can exit at profit if TVL grew Example progression: 1. First staker: 100 tokens β†’ 100 shares (1:1 ratio) 2. Second staker: 100 tokens β†’ 90 shares (worse ratio) 3. Third staker: 100 tokens β†’ 82 shares (even worse ratio) ### Value Flow Examples[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#value-flow-examples "Direct link to Value Flow Examples") **Popular Identity Atom**: * Thousands of Triples reference it * Queries constantly traverse through it * Early stakers earn fees from every interaction **Valuable Triple**: * News services query it * Financial models reference it * Token holders earn from all usage Economic Incentives[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#economic-incentives "Direct link to Economic Incentives") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Early Discovery Rewards[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#early-discovery-rewards "Direct link to Early Discovery Rewards") * First stakers get best prices * Accumulate more shares per token * Earn fees from all future stakers * Benefit from TVL growth ### Quality Curation Rewards[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#quality-curation-rewards "Direct link to Quality Curation Rewards") * Staking on useful data generates ongoing fees * Popular Atoms/Triples attract more interaction * More interaction = more fees to distribute * Creates virtuous cycle for quality content ### Information as Asset Class[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#information-as-asset-class "Direct link to Information as Asset Class") This creates an economy where: * **Discovery is rewarded**: Find and stake on useful data early * **Curation has value**: Your stake helps validate quality * **Usage generates returns**: Popular data pays dividends * **Information becomes an asset**: Data literally has owners who profit from its use Calculating Expected Returns[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#calculating-expected-returns "Direct link to Calculating Expected Returns") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Factors Affecting Returns[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#factors-affecting-returns "Direct link to Factors Affecting Returns") 1. **Your Share Percentage**: Higher ownership = more fees 2. **Vault Activity**: More deposits = more fees distributed 3. **Usage Frequency**: How often the data is queried/used 4. **Time in Vault**: Longer staking = more fee events ### Risk Considerations[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#risk-considerations "Direct link to Risk Considerations") * **TVL Decline**: If others withdraw, share value may decrease * **Competition**: Similar Atoms/Triples may fragment interest * **Accuracy**: False claims may lose support over time * **Market Dynamics**: Bonding curve means exit prices vary Maximizing Rewards[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#maximizing-rewards "Direct link to Maximizing Rewards") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Strategies[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#strategies "Direct link to Strategies") 1. **Early Identification**: Stake on valuable data before others 2. **Quality Focus**: Choose Atoms/Triples likely to be used 3. **Long-Term Holding**: Benefit from accumulated fees 4. **Diversification**: Spread stake across multiple entities ### Anti-Patterns to Avoid[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#anti-patterns-to-avoid "Direct link to Anti-Patterns to Avoid") * Staking on duplicate/redundant data * Following hype without substance * Short-term speculation * Ignoring signal quality * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#next-steps "Direct link to Next Steps") -------------------------------------------------------------------------------------------------------------------------------------------- * [Economics Overview](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves) - Deep dive into bonding curve mechanics * [Fees & Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/economics/fees-rewards) - Detailed fee structure * [Signal Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) - Review signal basics * [Fee Structure](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#fee-structure) * [Entry Fees](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#entry-fees) * [Exit Fees](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#exit-fees) * [Protocol Fees](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#protocol-fees) * [Reward Distribution](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#reward-distribution) * [Share-Based Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#share-based-rewards) * [Bonding Curve Dynamics](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#bonding-curve-dynamics) * [Value Flow Examples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#value-flow-examples) * [Economic Incentives](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#economic-incentives) * [Early Discovery Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#early-discovery-rewards) * [Quality Curation Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#quality-curation-rewards) * [Information as Asset Class](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#information-as-asset-class) * [Calculating Expected Returns](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#calculating-expected-returns) * [Factors Affecting Returns](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#factors-affecting-returns) * [Risk Considerations](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#risk-considerations) * [Maximizing Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#maximizing-rewards) * [Strategies](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#strategies) * [Anti-Patterns to Avoid](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#anti-patterns-to-avoid) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards#next-steps) --- # Request Only Needed Fields | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/best-practices/request-only-needed#__docusaurus_skipToContent_fallback) On this page Avoid over-fetching by requesting only the fields you actually need. Anti-Pattern[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/request-only-needed#anti-pattern "Direct link to Anti-Pattern") --------------------------------------------------------------------------------------------------------------------------------------------------- # BAD: Fetching all fields when you only need a fewquery GetAtoms { atoms(limit: 10) { term_id data label image emoji type wallet_id block_number created_at transaction_hash creator_id creator { id label image atom_id type } # ... many more fields you don't need }} Best Practice[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/request-only-needed#best-practice "Direct link to Best Practice") ------------------------------------------------------------------------------------------------------------------------------------------------------ # GOOD: Request only what you needquery GetAtoms { atoms(limit: 10) { term_id label image }} Benefits[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/request-only-needed#benefits "Direct link to Benefits") --------------------------------------------------------------------------------------------------------------------------------------- 1. **Faster queries**: Less data to fetch and serialize 2. **Reduced bandwidth**: Smaller response payloads 3. **Lower memory usage**: Less data to process client-side 4. **Better caching**: Smaller cache footprints Tips[​](https://www.docs.intuition.systems/docs/graphql-api/best-practices/request-only-needed#tips "Direct link to Tips") --------------------------------------------------------------------------------------------------------------------------- * Start minimal and add fields as needed * Remove unused fields from queries * Use fragments for commonly requested field sets * Profile queries to identify over-fetching * [Anti-Pattern](https://www.docs.intuition.systems/docs/graphql-api/best-practices/request-only-needed#anti-pattern) * [Best Practice](https://www.docs.intuition.systems/docs/graphql-api/best-practices/request-only-needed#best-practice) * [Benefits](https://www.docs.intuition.systems/docs/graphql-api/best-practices/request-only-needed#benefits) * [Tips](https://www.docs.intuition.systems/docs/graphql-api/best-practices/request-only-needed#tips) --- # Vaults & Shares | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#__docusaurus_skipToContent_fallback) On this page Every atom and triple has an associated **vault** that holds deposited assets. Users receive **shares** representing their ownership when they deposit, with prices determined by bonding curves. What is a Vault?[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#what-is-a-vault "Direct link to What is a Vault?") --------------------------------------------------------------------------------------------------------------------------------------------- A vault is a container for assets associated with an atom or triple: * **Assets**: Total deposited value (in native token) * **Shares**: Tokenized ownership stakes * **Share Price**: Determined by bonding curve * **Vault ID**: Same as the atom/triple ID Depositing to Vaults[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#depositing-to-vaults "Direct link to Depositing to Vaults") ---------------------------------------------------------------------------------------------------------------------------------------------------------- ### Basic Deposit[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#basic-deposit "Direct link to Basic Deposit") import { multiVaultDeposit } from '@0xintuition/protocol'import { parseEther } from 'viem'const vaultId = '0x1234...' // Atom or triple IDconst curveId = 1 // LinearCurveconst depositAmount = parseEther('1')const txHash = await multiVaultDeposit( { address, walletClient, publicClient }, { args: [ account.address, // receiver vaultId, curveId, 0n, // minShares (slippage protection) ], value: depositAmount, }) ### Preview Deposit[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#preview-deposit "Direct link to Preview Deposit") Check expected shares before depositing: import { multiVaultPreviewDeposit } from '@0xintuition/protocol'const expectedShares = await multiVaultPreviewDeposit( { address, publicClient }, { args: [vaultId, curveId, depositAmount] })// Apply slippage tolerance (1%)const minShares = (expectedShares * 99n) / 100nconst txHash = await multiVaultDeposit( { address, walletClient, publicClient }, { args: [account.address, vaultId, curveId, minShares], value: depositAmount, }) ### Batch Deposits[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#batch-deposits "Direct link to Batch Deposits") Deposit to multiple vaults in one transaction: import { multiVaultDepositBatch } from '@0xintuition/protocol'const vaults = ['0x1234...', '0x2345...', '0x3456...']const curves = [1, 1, 2] // Mix of curvesconst deposits = [parseEther('0.5'), parseEther('1'), parseEther('0.25')]const minShares = [0n, 0n, 0n]const totalValue = deposits.reduce((a, b) => a + b, 0n)const txHash = await multiVaultDepositBatch( { address, walletClient, publicClient }, { args: [account.address, vaults, curves, deposits, minShares], value: totalValue, }) Redeeming Shares[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#redeeming-shares "Direct link to Redeeming Shares") ---------------------------------------------------------------------------------------------------------------------------------------------- ### Basic Redemption[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#basic-redemption "Direct link to Basic Redemption") import { multiVaultRedeem } from '@0xintuition/protocol'const shares = parseEther('10')const txHash = await multiVaultRedeem( { address, walletClient, publicClient }, { args: [ account.address, // receiver vaultId, curveId, shares, 0n, // minAssets (slippage protection) ], }) ### Preview Redemption[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#preview-redemption "Direct link to Preview Redemption") Check expected assets before redeeming: import { multiVaultPreviewRedeem } from '@0xintuition/protocol'const expectedAssets = await multiVaultPreviewRedeem( { address, publicClient }, { args: [vaultId, curveId, shares] })// Apply slippage tolerance (1%)const minAssets = (expectedAssets * 99n) / 100nconst txHash = await multiVaultRedeem( { address, walletClient, publicClient }, { args: [account.address, vaultId, curveId, shares, minAssets], }) ### Batch Redemptions[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#batch-redemptions "Direct link to Batch Redemptions") import { multiVaultRedeemBatch } from '@0xintuition/protocol'const vaults = ['0x1234...', '0x2345...']const curves = [1, 2]const sharesToRedeem = [parseEther('5'), parseEther('3')]const minAssets = [0n, 0n]const txHash = await multiVaultRedeemBatch( { address, walletClient, publicClient }, { args: [sharesToRedeem, account.address, vaults, curves, minAssets], }) Share & Asset Conversions[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#share--asset-conversions "Direct link to Share & Asset Conversions") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### Convert Assets to Shares[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#convert-assets-to-shares "Direct link to Convert Assets to Shares") import { multiVaultConvertToShares } from '@0xintuition/protocol'const shares = await multiVaultConvertToShares( { address, publicClient }, { args: [vaultId, curveId, assets] }) ### Convert Shares to Assets[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#convert-shares-to-assets "Direct link to Convert Shares to Assets") import { multiVaultConvertToAssets } from '@0xintuition/protocol'const assets = await multiVaultConvertToAssets( { address, publicClient }, { args: [vaultId, curveId, shares] }) ### Get Current Share Price[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#get-current-share-price "Direct link to Get Current Share Price") import { multiVaultCurrentSharePrice } from '@0xintuition/protocol'const price = await multiVaultCurrentSharePrice( { address, publicClient }, { args: [vaultId, curveId] }) Querying Vault State[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#querying-vault-state "Direct link to Querying Vault State") ---------------------------------------------------------------------------------------------------------------------------------------------------------- ### Get User Shares[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#get-user-shares "Direct link to Get User Shares") import { multiVaultGetShares } from '@0xintuition/protocol'const userShares = await multiVaultGetShares( { address, publicClient }, { args: [userAddress, vaultId] }) ### Get Maximum Redeemable Shares[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#get-maximum-redeemable-shares "Direct link to Get Maximum Redeemable Shares") import { multiVaultMaxRedeem } from '@0xintuition/protocol'const maxShares = await multiVaultMaxRedeem( { address, publicClient }, { args: [userAddress, vaultId] }) ### Get Vault Details[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#get-vault-details "Direct link to Get Vault Details") import { multiVaultGetVault } from '@0xintuition/protocol'const vault = await multiVaultGetVault( { address, publicClient }, { args: [vaultId] }) ### Get Vault Type[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#get-vault-type "Direct link to Get Vault Type") import { multiVaultGetVaultType } from '@0xintuition/protocol'const vaultType = await multiVaultGetVaultType( { address, publicClient }, { args: [vaultId] })// Returns: 0 (atom) or 1 (triple) Fees[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#fees "Direct link to Fees") ---------------------------------------------------------------------------------------------------------- Deposits and redemptions incur fees: ### Entry Fee[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#entry-fee "Direct link to Entry Fee") import { multiVaultEntryFeeAmount } from '@0xintuition/protocol'const entryFee = await multiVaultEntryFeeAmount( { address, publicClient }, { args: [vaultId, assets] }) ### Exit Fee[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#exit-fee "Direct link to Exit Fee") import { multiVaultExitFeeAmount } from '@0xintuition/protocol'const exitFee = await multiVaultExitFeeAmount( { address, publicClient }, { args: [vaultId, assets] }) ### Protocol Fee[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#protocol-fee "Direct link to Protocol Fee") import { multiVaultProtocolFeeAmount } from '@0xintuition/protocol'const protocolFee = await multiVaultProtocolFeeAmount( { address, publicClient }, { args: [vaultId, assets] }) Common Use Cases[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#common-use-cases "Direct link to Common Use Cases") ---------------------------------------------------------------------------------------------------------------------------------------------- ### Signal Support for an Atom[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#signal-support-for-an-atom "Direct link to Signal Support for an Atom") const atomId = '0x1234...'const depositAmount = parseEther('0.5')const txHash = await multiVaultDeposit( { address, walletClient, publicClient }, { args: [account.address, atomId, 1, 0n], value: depositAmount, }) ### Stake For/Against a Statement[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#stake-foragainst-a-statement "Direct link to Stake For/Against a Statement") // Stake FOR a tripleconst txHashFor = await multiVaultDeposit( { address, walletClient, publicClient }, { args: [account.address, tripleId, 1, 0n], value: parseEther('1'), })// Get counter-triple and stake AGAINSTconst triple = await multiVaultGetTriple( { address, publicClient }, { args: [tripleId] })const counterVaultId = triple[4]const txHashAgainst = await multiVaultDeposit( { address, walletClient, publicClient }, { args: [account.address, counterVaultId, 1, 0n], value: parseEther('1'), }) Related Functions[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#related-functions "Direct link to Related Functions") ------------------------------------------------------------------------------------------------------------------------------------------------- * [multiVaultDeposit](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultdeposit) - Deposit to vault * [multiVaultRedeem](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultredeem) - Redeem shares * [multiVaultPreviewDeposit](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultpreviewdeposit) - Preview deposit * [multiVaultGetShares](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#multivaultgetshares) - Get user shares Next Steps[​](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#next-steps "Direct link to Next Steps") ---------------------------------------------------------------------------------------------------------------------------- * [Bonding Curves](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves) - Understand pricing mechanics * [Examples](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem) - See complete deposit/redeem workflows * [What is a Vault?](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#what-is-a-vault) * [Depositing to Vaults](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#depositing-to-vaults) * [Basic Deposit](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#basic-deposit) * [Preview Deposit](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#preview-deposit) * [Batch Deposits](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#batch-deposits) * [Redeeming Shares](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#redeeming-shares) * [Basic Redemption](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#basic-redemption) * [Preview Redemption](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#preview-redemption) * [Batch Redemptions](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#batch-redemptions) * [Share & Asset Conversions](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#share--asset-conversions) * [Convert Assets to Shares](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#convert-assets-to-shares) * [Convert Shares to Assets](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#convert-shares-to-assets) * [Get Current Share Price](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#get-current-share-price) * [Querying Vault State](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#querying-vault-state) * [Get User Shares](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#get-user-shares) * [Get Maximum Redeemable Shares](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#get-maximum-redeemable-shares) * [Get Vault Details](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#get-vault-details) * [Get Vault Type](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#get-vault-type) * [Fees](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#fees) * [Entry Fee](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#entry-fee) * [Exit Fee](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#exit-fee) * [Protocol Fee](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#protocol-fee) * [Common Use Cases](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#common-use-cases) * [Signal Support for an Atom](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#signal-support-for-an-atom) * [Stake For/Against a Statement](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#stake-foragainst-a-statement) * [Related Functions](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#related-functions) * [Next Steps](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults#next-steps) --- # Working with Nested Triples | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/tutorials/advanced/nested-triples#__docusaurus_skipToContent_fallback) On this page > Coming soon! This tutorial will show how to create complex, multi-layered claims. Nested triples allow you to make statements about statements, creating powerful recursive knowledge structures. What You'll Learn[​](https://www.docs.intuition.systems/docs/tutorials/advanced/nested-triples#what-youll-learn "Direct link to What You'll Learn") ---------------------------------------------------------------------------------------------------------------------------------------------------- This tutorial will cover: * Creating triples as atoms * Building complex conditional logic * Implementing recursive relationships * Querying nested structures * Real-world use cases (meta-claims, conditional predictions, hierarchical data) In the Meantime[​](https://www.docs.intuition.systems/docs/tutorials/advanced/nested-triples#in-the-meantime "Direct link to In the Meantime") ----------------------------------------------------------------------------------------------------------------------------------------------- See these resources to learn about nested triples: * [Triples Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) * [Nested Triples Concept](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/nested-triples) * [SDK Documentation](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup) Simple Example[​](https://www.docs.intuition.systems/docs/tutorials/advanced/nested-triples#simple-example "Direct link to Simple Example") -------------------------------------------------------------------------------------------------------------------------------------------- // Create a base tripleconst baseTriple = await multivault.createTriple({ subjectId: aliceAtomId, predicateId: knowsPredicateId, objectId: bobAtomId})// Create an atom from this tripleconst tripleAtomId = await multivault.createAtom({ atomUri: { type: 'triple', value: baseTriple.tripleId }})// Now make a claim about the claim// "Charlie verified that Alice knows Bob"const metaTriple = await multivault.createTriple({ subjectId: charlieAtomId, predicateId: verifiedPredicateId, objectId: tripleAtomId}) Get Notified[​](https://www.docs.intuition.systems/docs/tutorials/advanced/nested-triples#get-notified "Direct link to Get Notified") -------------------------------------------------------------------------------------------------------------------------------------- Want to be notified when this tutorial is ready? Join our [Discord](https://discord.gg/RgBenkX4mx) or follow us on [Twitter](https://twitter.com/0xIntuition) . * [What You'll Learn](https://www.docs.intuition.systems/docs/tutorials/advanced/nested-triples#what-youll-learn) * [In the Meantime](https://www.docs.intuition.systems/docs/tutorials/advanced/nested-triples#in-the-meantime) * [Simple Example](https://www.docs.intuition.systems/docs/tutorials/advanced/nested-triples#simple-example) * [Get Notified](https://www.docs.intuition.systems/docs/tutorials/advanced/nested-triples#get-notified) --- # Balance Queries | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#__docusaurus_skipToContent_fallback) On this page Functions for querying bonded balances and locked amounts. trustBondingTotalBondedBalance[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#trustbondingtotalbondedbalance "Direct link to trustBondingTotalBondedBalance") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get the total bonded balance across all users. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#returns "Direct link to Returns") Promise // Total bonded balance ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#example "Direct link to Example") import { trustBondingTotalBondedBalance } from '@0xintuition/protocol'import { formatEther } from 'viem'const totalBonded = await trustBondingTotalBondedBalance({ address: bondingAddress, publicClient })console.log('Total bonded:', formatEther(totalBonded)) * * * trustBondingTotalBondedBalanceAtEpochEnd[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#trustbondingtotalbondedbalanceatepochend "Direct link to trustBondingTotalBondedBalanceAtEpochEnd") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get total bonded balance at the end of an epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bigint]` | Epoch number | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#returns-1 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#example-1 "Direct link to Example") import { trustBondingTotalBondedBalanceAtEpochEnd } from '@0xintuition/protocol'const balance = await trustBondingTotalBondedBalanceAtEpochEnd( { address: bondingAddress, publicClient }, { args: [epochNumber] })console.log('Total bonded at epoch end:', formatEther(balance)) * * * trustBondingUserBondedBalanceAtEpochEnd[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#trustbondinguserbondedbalanceatepochend "Direct link to trustBondingUserBondedBalanceAtEpochEnd") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get user's bonded balance at the end of an epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address, bigint]` | User address, epoch number | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#returns-2 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#example-2 "Direct link to Example") import { trustBondingUserBondedBalanceAtEpochEnd } from '@0xintuition/protocol'const userBalance = await trustBondingUserBondedBalanceAtEpochEnd( { address: bondingAddress, publicClient }, { args: [userAddress, epochNumber] })console.log('User bonded at epoch end:', formatEther(userBalance)) * * * trustBondingTotalLocked[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#trustbondingtotallocked "Direct link to trustBondingTotalLocked") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get total locked amount. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#returns-3 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#example-3 "Direct link to Example") import { trustBondingTotalLocked } from '@0xintuition/protocol'const locked = await trustBondingTotalLocked({ address: bondingAddress, publicClient })console.log('Total locked:', formatEther(locked)) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#see-also "Direct link to See Also") -------------------------------------------------------------------------------------------------------------------------------------- * [Trust Bonding Rewards](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards) * [Examples: Trust Bonding](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding) * [trustBondingTotalBondedBalance](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#trustbondingtotalbondedbalance) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#example) * [trustBondingTotalBondedBalanceAtEpochEnd](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#trustbondingtotalbondedbalanceatepochend) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#example-1) * [trustBondingUserBondedBalanceAtEpochEnd](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#trustbondinguserbondedbalanceatepochend) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#parameters-1) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#returns-2) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#example-2) * [trustBondingTotalLocked](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#trustbondingtotallocked) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#returns-3) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#example-3) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances#see-also) --- # Signal Fundamentals | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#__docusaurus_skipToContent_fallback) On this page Signals represent the trust, confidence, or relevance that the community assigns to Atoms and Triples in the Intuition knowledge graph. Think of the knowledge graph as a weighted graph where Signal is the weight on each node (Atom) or edge (Triple), indicating how strongly people believe in or care about this information. Understanding Signals[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#understanding-signals "Direct link to Understanding Signals") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Signal, in the context of Intuition, refers to any action or indication that expresses intent, belief, or support. Signals can be classified into three broad categories: explicit signal, implicit signal, and transitive signal. Signals transform static data into a dynamic, trusted intelligence layer. When someone stakes tokens on an Atom or Triple, they emit a Signal expressing that they find that piece of information important or true. Types of Signal[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#types-of-signal "Direct link to Types of Signal") ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Explicit Signal[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#explicit-signal "Direct link to Explicit Signal") A clear, intentional action taken by a user to express support, belief, or intent. These actions are directly observable and often involve a formal mechanism within the system. **Examples:** * Voting mechanisms * Signed attestations * Token staking * Direct claims ### Implicit Signal[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#implicit-signal "Direct link to Implicit Signal") Indirect or inferred indications of support, belief, or intent. This signal is not always directly observable and is often deduced from user behavior or patterns. **Examples:** * Frequency of queries and references * Inclusion in other Triples * Application usage metrics * Usage patterns ### Transitive Signal[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#transitive-signal "Direct link to Transitive Signal") Trust or belief that is passed along through a network of relationships. This type of signal leverages the idea that trust can be extended through connections. **Example:** If User A attests to something about User B, and User C trusts User A, then User C extends trust to User B. Signal in Intuition[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#signal-in-intuition "Direct link to Signal in Intuition") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Though all systems naturally generate implicit signal, explicit signal in Intuition is expressed in a novel format that enables and incentivizes the creation of many-to-one, non-deterministic attestations. In Intuition, these semantic statements do not have a single 'issuer' - instead, anyone/anything can signal support or rejection of any existing statement/attestation at any point in time. How Signals are Created[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#how-signals-are-created "Direct link to How Signals are Created") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The core mechanism for creating signals is through **staking** (also called attesting). When you deposit tokens into an Atom's vault or a Triple's vaults, you're effectively buying "shares" in that piece of information. ### Staking Mechanics[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#staking-mechanics "Direct link to Staking Mechanics") * **Atoms**: Each Atom has a single staking vault * **Triples**: Each Triple has two vaults (positive and negative) * **Shares**: Your stake represents proportional ownership and conviction For example: * Staking 100 TRUST on the Atom `[Ethereum]` gives you a fraction of total Atom Shares for `[Ethereum]` * Staking 50 TRUST on `[Alice] is Friend Of [Bob]` in the affirmative vault gives you Triple Shares supporting that friendship claim ### Bonding Curves[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#bonding-curves "Direct link to Bonding Curves") The bonding curve mechanics mean share prices depend on existing stake levels: * Early stakers get better prices * Later stakers pay more for the same signal increment * This creates a perpetual prediction market for information Atom Signal[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#atom-signal "Direct link to Atom Signal") ---------------------------------------------------------------------------------------------------------------------------------------------------- Within the Intuition framework, users signal their belief in the relevance of an Atom by adjusting their balance on that Atom. **Balance Interpretation:** * **Zero Balance**: No signal, neutral stance * **Positive Balance**: Indicates belief in relevance (higher = stronger) * Users earn fees proportional to their ownership stake Triple Signal[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#triple-signal "Direct link to Triple Signal") ---------------------------------------------------------------------------------------------------------------------------------------------------------- In the Intuition framework, users signal their belief in both the relevance and truthfulness of a Triple by modifying their balance on that Triple. **Triple Balance System:** * **Zero Balance**: No signal, neutral stance * **Positive Balance**: Affirms the Triple (considered true and relevant) * **Negative Balance**: Signals rejection (considered false but relevant) ### Example: Trustworthiness Triple[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#example-trustworthiness-triple "Direct link to Example: Trustworthiness Triple") For a Triple asserting `[Vitalik][is][trustworthy]`: * **Positive Balance**: Believes Vitalik is trustworthy * **Negative Balance**: Believes Vitalik is not trustworthy * **Zero Balance**: No opinion on trustworthiness Total Value Locked and Consensus[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#total-value-locked-and-consensus "Direct link to Total Value Locked and Consensus") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Each Atom and Triple accrues **Total Value Locked (TVL)** in its vaultsβ€”a direct measure of tokenized trust. Higher TVL generally implies greater relevance or credibility. The consensus score weighs multiple variables: * Amount staked on each side * Number of distinct attestors * Past reliability (reputation) of attestors Important Distinction Creating an Atom or Triple is distinctly different from taking a position on them. While users have the option to both create and take a position at the time of creation, the Initial Deposit is not required. A user who makes no Initial Deposit will only create an Atom or Triple, which does not constitute a Signal. * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------------------------------- * [Capturing Signal](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/capturing) - Learn advanced techniques for signal capture * [Signal Rewards](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/rewards) - Understand the economic incentives and reward distribution * [Atom Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/atoms/fundamentals) - Review Atom basics * [Triple Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/triples/fundamentals) - Review Triple basics * [Understanding Signals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#understanding-signals) * [Types of Signal](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#types-of-signal) * [Explicit Signal](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#explicit-signal) * [Implicit Signal](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#implicit-signal) * [Transitive Signal](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#transitive-signal) * [Signal in Intuition](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#signal-in-intuition) * [How Signals are Created](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#how-signals-are-created) * [Staking Mechanics](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#staking-mechanics) * [Bonding Curves](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#bonding-curves) * [Atom Signal](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#atom-signal) * [Triple Signal](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#triple-signal) * [Example: Trustworthiness Triple](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#example-trustworthiness-triple) * [Total Value Locked and Consensus](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#total-value-locked-and-consensus) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals#next-steps) --- # Reads | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/reads#__docusaurus_skipToContent_fallback) On this page GraphQL API[​](https://www.docs.intuition.systems/docs/graphql-api/reads#graphql-api "Direct link to GraphQL API") ------------------------------------------------------------------------------------------------------------------- Our GraphQL API provides a flexible and efficient way to interact with our atomic data structure system. Through this documentation, you'll learn how to query and manipulate atomic data using our GraphQL endpoints. To help you explore and test the API interactively, we've integrated Apollo Explorer sandbox environments throughout this documentation. These interactive playgrounds allow you to experiment with queries in real-time, seeing exactly how the API responds to different inputs and parameters. This documentation will be split into sections by primitive, such as `Atoms`, `Triples`, and so on. tip We maintain a GraphQL SDK for our API that includes these queries with additional hooks for React developers to use directly in their apps. You can find it here: [https://github.com/0xIntuition/intuition-ts/tree/main/packages/graphql](https://github.com/0xIntuition/intuition-ts/tree/main/packages/graphql) Our SDK utilizes GraphQL Codegen and Fragments, but for the sake of clarity and simplicity the query examples in the playgrounds won't utilize Fragments. Best Practices[​](https://www.docs.intuition.systems/docs/graphql-api/reads#best-practices "Direct link to Best Practices") ---------------------------------------------------------------------------------------------------------------------------- 1. **Use the SDK**: Leverage our GraphQL SDK for type-safe queries 2. **Optimize Queries**: Only request the fields you need 3. **Handle Loading States**: Always show loading indicators 4. **Implement Error Boundaries**: Catch and handle errors gracefully 5. **Use Pagination**: Implement proper pagination for large datasets 6. **Cache Strategically**: Use React Query's caching capabilities Backend Architecture Overview[​](https://www.docs.intuition.systems/docs/graphql-api/reads#backend-architecture-overview "Direct link to Backend Architecture Overview") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- This architecture diagram illustrates the data flow and integration stack for the Intuition backend. We ingest data from two primary RPC sources: our EthMultiVault contract and a ChainLinkOracle contract. This blockchain data is processed in a Docker environment indexed through Substreams, parsing and structuring the data into a PostgreSQL database. Hasura then provides a GraphQL API layer on top of Postgres, enabling flexible data querying powering our app layers. This architecture provides efficient blockchain data indexing, reliable storage, and scalable API access. Our upcoming GraphQL SDK will further streamline the process for app developers looking to consume our data for building and extending the Intuition protocol. GraphQL Playground[​](https://www.docs.intuition.systems/docs/graphql-api/reads#graphql-playground "Direct link to GraphQL Playground") ---------------------------------------------------------------------------------------------------------------------------------------- The interactive Apollo Sandbox below lets you explore our GraphQL API in real-time. You can write and execute queries, inspect the schema, and see live responses from our API. We've set up this environment to help you get familiar with our data structure and available operations. Try starting with some basic queries like fetching atoms or exploring relationship triples. Here's a query to get you started: tip You can copy and paste the code snippet below into the sandbox above to view the results. query GetAtoms( $limit: Int $offset: Int $orderBy: [atoms_order_by!] $where: atoms_bool_exp) { total: atoms_aggregate(where: $where) { aggregate { count } } atoms(limit: $limit, offset: $offset, order_by: $orderBy, where: $where) { # Basic metadata term_id data image label emoji type wallet_id creator { id label image } # Transaction details block_number created_at updated_at transaction_hash creator_id # Vault details term { vaults(where: { curve_id: { _eq: "1" } }, order_by: { curve_id: asc }) { position_count total_shares current_share_price market_cap positions_aggregate { aggregate { count sum { shares } } } positions { id account { label id } shares } } } # Value metadata value { person { name image description url } thing { name image description url } organization { name image description url } account { id label image } } }} You can start with this initial `GetAtoms` query in the Apollo Sandbox or write your own. The schema Explorer (docs tab) on the left side of the sandbox shows all available queries, mutations, and types. As you type, you'll get real-time autocompletion and documentation hints to help you build your queries. You can then click the play button to see the response and then adjust your query as you explore our data. Need inspiration? Check out the example queries in the GraphQL API Example Queries page to get started, or jump right in and start exploring! Query Examples[​](https://www.docs.intuition.systems/docs/graphql-api/reads#query-examples "Direct link to Query Examples") ---------------------------------------------------------------------------------------------------------------------------- ### GetAtoms[​](https://www.docs.intuition.systems/docs/graphql-api/reads#getatoms "Direct link to GetAtoms") The `GetAtoms` query is the primary way to fetch atom data from the Intuition system. It provides comprehensive information about atoms including metadata, transaction details, and vault information. query GetAtoms( $limit: Int $offset: Int $orderBy: [atoms_order_by!] $where: atoms_bool_exp) { total: atoms_aggregate(where: $where) { aggregate { count } } atoms(limit: $limit, offset: $offset, order_by: $orderBy, where: $where) { # Basic metadata term_id data image label emoji type wallet_id creator { id label image } # Transaction details block_number created_at updated_at transaction_hash creator_id # Vault details term { vaults(where: { curve_id: { _eq: "1" } }, order_by: { curve_id: asc }) { position_count total_shares current_share_price market_cap positions_aggregate { aggregate { count sum { shares } } } positions { id account { label id } shares } } } # Value metadata value { person { name image description url } thing { name image description url } organization { name image description url } account { id label image } } }} ### GetAccounts[​](https://www.docs.intuition.systems/docs/graphql-api/reads#getaccounts "Direct link to GetAccounts") Query account information including balances and positions. query GetAccounts($limit: Int, $offset: Int) { accounts(limit: $limit, offset: $offset) { id label image positions { id shares vault { term_id curve_id current_share_price term { atom { label image } } } } }} ### GetTriples[​](https://www.docs.intuition.systems/docs/graphql-api/reads#gettriples "Direct link to GetTriples") Fetch relationship triples between atoms. query GetTriples( $limit: Int $offset: Int $orderBy: [triples_order_by!] $where: triples_bool_exp) { total: triples_aggregate(where: $where) { aggregate { count } } triples(limit: $limit, offset: $offset, order_by: $orderBy, where: $where) { term_id counter_term_id created_at subject { term_id label image data type value { thing { description url } person { description url } organization { description url } } } predicate { term_id label image data type } object { term_id label image data type value { thing { description url } person { description url } organization { description url } } } # Vault details for pro/counter positions term { vaults(where: { curve_id: { _eq: "2" } }) { total_shares current_share_price market_cap position_count } } counter_term { vaults(where: { curve_id: { _eq: "2" } }) { total_shares current_share_price market_cap position_count } } }} ### GetPositions[​](https://www.docs.intuition.systems/docs/graphql-api/reads#getpositions "Direct link to GetPositions") Query user positions in atom vaults. query GetPositions( $limit: Int $offset: Int $orderBy: [positions_order_by!] $where: positions_bool_exp) { total: positions_aggregate(where: $where) { aggregate { count sum { shares } } } positions(limit: $limit, offset: $offset, order_by: $orderBy, where: $where) { id created_at updated_at shares account { id label image } vault { created_at updated_at term { atom { term_id label image term { vaults(where: { curve_id: { _eq: "1" } }) { term_id total_shares current_share_price position_count } } } triple { term_id subject { term_id label image } predicate { term_id label image } object { term_id label image } term { vaults(where: { curve_id: { _eq: "2" } }) { market_cap current_share_price position_count } } } } } }} ### GetVaults[​](https://www.docs.intuition.systems/docs/graphql-api/reads#getvaults "Direct link to GetVaults") Fetch vault information including share prices and positions. query GetVaults($limit: Int, $offset: Int) { vaults(limit: $limit, offset: $offset) { term_id curve_id term { atom { label image } } current_share_price total_shares position_count positions_aggregate { aggregate { count sum { shares } } } }} Utilities[​](https://www.docs.intuition.systems/docs/graphql-api/reads#utilities "Direct link to Utilities") ------------------------------------------------------------------------------------------------------------- ### Search and Filtering[​](https://www.docs.intuition.systems/docs/graphql-api/reads#search-and-filtering "Direct link to Search and Filtering") query SearchAtoms($query: String!, $limit: Int) { search_term(args: { query: $query }, limit: $limit) { id type atom { label image creator { id label } } }} ### Pagination[​](https://www.docs.intuition.systems/docs/graphql-api/reads#pagination "Direct link to Pagination") Hasura uses offset-based pagination with `limit` and `offset`: query GetAtomsPaginated($limit: Int!, $offset: Int!) { atoms_aggregate { aggregate { count } } atoms( limit: $limit offset: $offset order_by: { created_at: desc } ) { term_id label image type }} React Integration[​](https://www.docs.intuition.systems/docs/graphql-api/reads#react-integration "Direct link to React Integration") ------------------------------------------------------------------------------------------------------------------------------------- ### Using the GraphQL SDK[​](https://www.docs.intuition.systems/docs/graphql-api/reads#using-the-graphql-sdk "Direct link to Using the GraphQL SDK") import { useGetAtomsQuery } from '@0xintuition/graphql'function AtomList() { const { data, loading, error } = useGetAtomsQuery({ variables: { limit: 10, offset: 0 } }) if (loading) return
Loading...
if (error) return
Error: {error.message}
return (
{data?.atoms.map(atom => (

{atom.label}

{atom.label}

Type: {atom.type}

))}
)} * * * _For more examples and advanced patterns, check out our [GraphQL SDK](https://github.com/0xIntuition/intuition-ts/tree/main/packages/graphql) and [Example Queries](https://www.docs.intuition.systems/docs/graphql-api/examples/atom-with-vault) page._ * [GraphQL API](https://www.docs.intuition.systems/docs/graphql-api/reads#graphql-api) * [Best Practices](https://www.docs.intuition.systems/docs/graphql-api/reads#best-practices) * [Backend Architecture Overview](https://www.docs.intuition.systems/docs/graphql-api/reads#backend-architecture-overview) * [GraphQL Playground](https://www.docs.intuition.systems/docs/graphql-api/reads#graphql-playground) * [Query Examples](https://www.docs.intuition.systems/docs/graphql-api/reads#query-examples) * [GetAtoms](https://www.docs.intuition.systems/docs/graphql-api/reads#getatoms) * [GetAccounts](https://www.docs.intuition.systems/docs/graphql-api/reads#getaccounts) * [GetTriples](https://www.docs.intuition.systems/docs/graphql-api/reads#gettriples) * [GetPositions](https://www.docs.intuition.systems/docs/graphql-api/reads#getpositions) * [GetVaults](https://www.docs.intuition.systems/docs/graphql-api/reads#getvaults) * [Utilities](https://www.docs.intuition.systems/docs/graphql-api/reads#utilities) * [Search and Filtering](https://www.docs.intuition.systems/docs/graphql-api/reads#search-and-filtering) * [Pagination](https://www.docs.intuition.systems/docs/graphql-api/reads#pagination) * [React Integration](https://www.docs.intuition.systems/docs/graphql-api/reads#react-integration) * [Using the GraphQL SDK](https://www.docs.intuition.systems/docs/graphql-api/reads#using-the-graphql-sdk) --- # Staking Operations | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/staking-operations#__docusaurus_skipToContent_fallback) On this page Functions for Trust Bonding staking operations (if applicable based on contract implementation). Note[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/staking-operations#note "Direct link to Note") ------------------------------------------------------------------------------------------------------------------------------------ The Trust Bonding contract primarily tracks utilization and distributes rewards. Direct staking operations like creating locks may be handled through the MultiVault deposit mechanism. Related Staking Mechanism[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/staking-operations#related-staking-mechanism "Direct link to Related Staking Mechanism") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Trust Bonding rewards are earned through: 1. **Depositing to vaults** via [multiVaultDeposit](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultdeposit) 2. **Vault utilization** tracked by the protocol 3. **Epoch-based rewards** calculated from utilization ### Deposit to Earn Rewards[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/staking-operations#deposit-to-earn-rewards "Direct link to Deposit to Earn Rewards") import { multiVaultDeposit } from '@0xintuition/protocol'import { parseEther } from 'viem'// Deposit to a vault to start earning bonding rewardsconst txHash = await multiVaultDeposit( { address: multiVaultAddress, walletClient, publicClient }, { args: [account.address, vaultId, curveId, minShares], value: parseEther('1'), }) ### Check Your Bonding Position[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/staking-operations#check-your-bonding-position "Direct link to Check Your Bonding Position") import { trustBondingGetUserInfo, trustBondingGetUserCurrentClaimableRewards, getContractAddressFromChainId,} from '@0xintuition/protocol'const bondingAddress = getContractAddressFromChainId('TrustBonding', chainId)// Get user infoconst userInfo = await trustBondingGetUserInfo( { address: bondingAddress, publicClient }, { args: [userAddress] })// Get claimable rewardsconst claimable = await trustBondingGetUserCurrentClaimableRewards( { address: bondingAddress, publicClient }, { args: [userAddress] })console.log('Bonding position:', userInfo)console.log('Claimable rewards:', formatEther(claimable)) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/staking-operations#see-also "Direct link to See Also") ------------------------------------------------------------------------------------------------------------------------------------------------ * [Vault Operations](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults) * [Trust Bonding Rewards](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards) * [Examples: Trust Bonding](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding) * [Note](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/staking-operations#note) * [Related Staking Mechanism](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/staking-operations#related-staking-mechanism) * [Deposit to Earn Rewards](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/staking-operations#deposit-to-earn-rewards) * [Check Your Bonding Position](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/staking-operations#check-your-bonding-position) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/staking-operations#see-also) --- # Event Parsing Examples | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing#__docusaurus_skipToContent_fallback) On this page Complete workflows for parsing events from transaction receipts. Example 1: Parse Atom Creation Events[​](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing#example-1-parse-atom-creation-events "Direct link to Example 1: Parse Atom Creation Events") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultCreateAtoms, eventParseAtomCreated, eventParseDeposited,} from '@0xintuition/protocol'import { toHex, parseEther, formatEther } from 'viem'// Create atom with depositconst atomCost = await multiVaultGetAtomCost({ address, publicClient })const deposit = atomCost + parseEther('1')const txHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [[toHex('My Atom')], [deposit]], value: deposit, })// Parse AtomCreated eventsconst atomEvents = await eventParseAtomCreated(publicClient, txHash)atomEvents.forEach((event) => { console.log('Atom ID:', event.args.termId) console.log('Atom URI:', event.args.termData) console.log('Creator:', event.args.creatorAtomId)})// Parse Deposited eventsconst depositEvents = await eventParseDeposited(publicClient, txHash)depositEvents.forEach((event) => { console.log('Vault ID:', event.args.vaultId) console.log('Assets:', formatEther(event.args.assets)) console.log('Shares:', formatEther(event.args.shares))}) Example 2: Parse Multiple Event Types[​](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing#example-2-parse-multiple-event-types "Direct link to Example 2: Parse Multiple Event Types") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { eventParseAtomCreated, eventParseTripleCreated, eventParseDeposited, eventParseSharePriceChanged,} from '@0xintuition/protocol'const parseAllEvents = async (txHash: Hash) => { // Parse all event types in parallel const [atomEvents, tripleEvents, depositEvents, priceEvents] = await Promise.all([ eventParseAtomCreated(publicClient, txHash).catch(() => []), eventParseTripleCreated(publicClient, txHash).catch(() => []), eventParseDeposited(publicClient, txHash).catch(() => []), eventParseSharePriceChanged(publicClient, txHash).catch(() => []), ]) return { atoms: atomEvents, triples: tripleEvents, deposits: depositEvents, prices: priceEvents, }}const events = await parseAllEvents(txHash)console.log('Transaction events:', events) Example 3: Build Activity Feed[​](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing#example-3-build-activity-feed "Direct link to Example 3: Build Activity Feed") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Monitor recent transactions and build an activity feedconst buildActivityFeed = async (userAddress: Address, blockRange: number) => { const currentBlock = await publicClient.getBlockNumber() const fromBlock = currentBlock - BigInt(blockRange) // Get transaction receipts for user // (In production, use event logs filtering) const activities = [] // Example: Track atom creations const atomLogs = await publicClient.getLogs({ address: address, event: { name: 'AtomCreated', inputs: [ { indexed: true, name: 'termId', type: 'bytes32' }, { indexed: false, name: 'termData', type: 'bytes' }, { indexed: true, name: 'creatorAtomId', type: 'bytes32' }, ], }, fromBlock, toBlock: currentBlock, }) for (const log of atomLogs) { activities.push({ type: 'atom_created', atomId: log.args.termId, creator: log.args.creatorAtomId, blockNumber: log.blockNumber, transactionHash: log.transactionHash, }) } return activities}const feed = await buildActivityFeed(account.address, 1000)console.log('Recent activity:', feed) See Also[​](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing#see-also "Direct link to See Also") ------------------------------------------------------------------------------------------------------------------------ * [Atom Events](https://www.docs.intuition.systems/docs/protocol/events/atom-events) * [Vault Events](https://www.docs.intuition.systems/docs/protocol/events/vault-events) * [Triple Events](https://www.docs.intuition.systems/docs/protocol/events/triple-events) * [Example 1: Parse Atom Creation Events](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing#example-1-parse-atom-creation-events) * [Example 2: Parse Multiple Event Types](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing#example-2-parse-multiple-event-types) * [Example 3: Build Activity Feed](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing#example-3-build-activity-feed) * [See Also](https://www.docs.intuition.systems/docs/protocol/examples/event-parsing#see-also) --- # Discovering Most Trusted Accounts | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#__docusaurus_skipToContent_fallback) On this page **Time to complete:** 45 minutes **Difficulty:** Intermediate Why You'd Need This[​](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#why-youd-need-this "Direct link to Why You'd Need This") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Building trust graphs, recommendation systems, or expert finders? This tutorial shows you how to identify the most trusted and active participants in the Intuition ecosystem. **Use cases:** * Expert discovery platforms * Trust-weighted voting systems * Recommendation engines * Influencer identification * Reputation dashboards What You'll Learn[​](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#what-youll-learn "Direct link to What You'll Learn") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Learn how to leverage the Intuition GraphQL API to find and rank the ecosystem's most trusted accounts based on their positions, stakes, and activity patterns. Understanding the Progression[​](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#understanding-the-progression "Direct link to Understanding the Progression") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1. **Get top 20 accounts** ranked by total shares across all positions, showing the most trusted accounts based on cumulative stakes. 2. **Get detailed information** for a given account including all positions and atoms created. 3. **Find top 20 individual positions** by share amount, showing which accounts hold the largest single stakes. Step 1: Get Most Trusted AccountsStep 2: Get Account DetailsStep 3: Top Position Holders #### Query β–Ά Run Query query GetTrustedAccounts($limit: Int = 20) { accounts( limit: $limit order\_by: \[{ positions\_aggregate: { sum: { shares: desc } } }\] where: { positions\_aggregate: { count: { predicate: { \_gt: 0 } } } } ) { id label image positions\_aggregate { aggregate { count sum { shares } } } positions( limit: 10 order\_by: \[{ shares: desc }\] ) { id shares created\_at vault { term\_id current\_share\_price market\_cap term { atom { term\_id label image } } } } } } #### Variables Click "Run Query" to execute the GraphQL query and see results UI Integration Example[​](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#ui-integration-example "Direct link to UI Integration Example") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Display trusted accounts in your application: import { request, gql } from 'graphql-request'const GET_TRUSTED_ACCOUNTS = gql` query GetTrustedAccounts($limit: Int = 20) { accounts( limit: $limit order_by: [{ positions_aggregate: { sum: { shares: desc } } }] where: { positions_aggregate: { count: { predicate: { _gt: 0 } } } } ) { id label image positions_aggregate { aggregate { count sum { shares } } } } }`export function TrustedAccountsWidget() { const [accounts, setAccounts] = useState([]) useEffect(() => { async function fetchAccounts() { const data = await request( 'https://mainnet.intuition.sh/v1/graphql', GET_TRUSTED_ACCOUNTS, { limit: 10 } ) setAccounts(data.accounts) } fetchAccounts() }, []) return (

Most Trusted Accounts

{accounts.map((account, i) => (
#{i + 1} {account.label}
{account.label || account.id.slice(0, 10)}
{account.positions_aggregate.aggregate.count} positions β€’ {parseFloat(account.positions_aggregate.aggregate.sum.shares).toFixed(2)} total shares
))}
)} Next Steps[​](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#next-steps "Direct link to Next Steps") -------------------------------------------------------------------------------------------------------------------------------------------------- * [Building Activity Feeds](https://www.docs.intuition.systems/docs/tutorials/queries/building-user-activity-feeds) - Track user actions * [Finding Related Claims](https://www.docs.intuition.systems/docs/tutorials/queries/finding-related-claims) - Explore connections * [Reputation System Tutorial](https://www.docs.intuition.systems/docs/tutorials/reputation-system) - Build reputation scoring Resources[​](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#resources "Direct link to Resources") ----------------------------------------------------------------------------------------------------------------------------------------------- * [GraphQL API Reference](https://www.docs.intuition.systems/docs/graphql-api/overview) * [Accounts Schema](https://www.docs.intuition.systems/docs/graphql-api/getting-started/schema-reference) * [Why You'd Need This](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#why-youd-need-this) * [What You'll Learn](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#what-youll-learn) * [Understanding the Progression](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#understanding-the-progression) * [UI Integration Example](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#ui-integration-example) * [Next Steps](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#next-steps) * [Resources](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts#resources) --- # Installation & Setup | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#__docusaurus_skipToContent_fallback) On this page The Intuition SDK is a comprehensive TypeScript library for building applications on the Intuition protocol. This guide covers installation, configuration, and getting your development environment ready. Prerequisites[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#prerequisites "Direct link to Prerequisites") -------------------------------------------------------------------------------------------------------------------------------------------- * **Node.js**: Version 18.x or higher * **Package Manager**: npm, pnpm, yarn, or bun * **TypeScript** (recommended): Version 5.x or higher Auto-Generated Package Documentation[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#auto-generated-package-documentation "Direct link to Auto-Generated Package Documentation") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- For a complete list of `0xintuition/sdk` functions and interfaces, see the [Intuition SDK documentation](https://github.com/0xIntuition/intuition-ts/tree/main/packages/sdk/docs) . * [Intuition SDK NPM](https://www.npmjs.com/package/@0xintuition/sdk) * [Intuition SDK GitHub](https://github.com/0xIntuition/intuition-ts/tree/main/packages/sdk/docs) For a complete list of `0xintuition/protocol` functions and interfaces, see the [Intuition Protocol documentation](https://github.com/0xIntuition/intuition-ts/tree/main/packages/protocol/docs) . * [Intuition Protocol NPM](https://www.npmjs.com/package/@0xintuition/protocol) * [Intuition Protocol GitHub](https://github.com/0xIntuition/intuition-ts/tree/main/packages/protocol/docs) For a complete list of `0xintuition/graphql` functions and interfaces, see the [Intuition Protocol documentation](https://github.com/0xIntuition/intuition-ts/tree/main/packages/graphql) . * [Intuition Protocol NPM](https://www.npmjs.com/package/@0xintuition/graphql) * [Intuition Protocol GitHub](https://github.com/0xIntuition/intuition-ts/tree/main/packages/graphql) Installation[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#installation "Direct link to Installation") ----------------------------------------------------------------------------------------------------------------------------------------- Install the SDK using your preferred package manager: * npm * pnpm * bun npm install @0xintuition/sdk viem@^2.0.0 pnpm add @0xintuition/sdk viem@^2.0.0 bun add @0xintuition/sdk viem@^2.0.0 note The SDK requires **[viem@2.x](mailto:viem@2.x) ** as a peer dependency. Viem is a lightweight, type-safe Ethereum library that powers all blockchain operations. Verify Installation[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#verify-installation "Direct link to Verify Installation") -------------------------------------------------------------------------------------------------------------------------------------------------------------- Create a test file to verify everything is working: test-install.ts import { intuitionTestnet, getMultiVaultAddressFromChainId,} from '@0xintuition/sdk'console.log('Network:', intuitionTestnet.name)console.log('Chain ID:', intuitionTestnet.id)console.log('MultiVault:', getMultiVaultAddressFromChainId(intuitionTestnet.id)) Run it with `npx tsx test-install.ts` or your preferred TypeScript runner. * * * Client Configuration[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#client-configuration "Direct link to Client Configuration") ----------------------------------------------------------------------------------------------------------------------------------------------------------------- The SDK uses [Viem](https://viem.sh/) clients for blockchain interactions. You need two types: | Client Type | Purpose | Required For | | --- | --- | --- | | **Public Client** | Read-only operations | Querying data, checking balances | | **Wallet Client** | Write operations | Creating atoms, triples, deposits | ### Basic Setup[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#basic-setup "Direct link to Basic Setup") import { intuitionTestnet, getMultiVaultAddressFromChainId,} from '@0xintuition/sdk'import { createPublicClient, createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'// 1. Create account from private keyconst account = privateKeyToAccount('0xYOUR_PRIVATE_KEY')// 2. Create public client (for reading data)const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),})// 3. Create wallet client (for transactions)const walletClient = createWalletClient({ chain: intuitionTestnet, transport: http(), account,})// 4. Get contract addressconst address = getMultiVaultAddressFromChainId(intuitionTestnet.id) ### Configuration Object[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#configuration-object "Direct link to Configuration Object") Most SDK functions accept a configuration object: import type { WriteConfig } from '@0xintuition/sdk'const config: WriteConfig = { address, // MultiVault contract address publicClient, // For reading blockchain data walletClient, // For sending transactions} * * * Network Configuration[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#network-configuration "Direct link to Network Configuration") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- The SDK supports multiple networks with built-in chain definitions. ### Supported Networks[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#supported-networks "Direct link to Supported Networks") | Network | Chain ID | Type | Status | | --- | --- | --- | --- | | Intuition Mainnet | 1155 | Production | βœ… Active | | Intuition Testnet | 13579 | Development | βœ… Active | | Base Mainnet | 8453 | Production | βœ… Active | | Base Sepolia | 84532 | Development | βœ… Active | ### Testnet Configuration[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#testnet-configuration "Direct link to Testnet Configuration") import { intuitionTestnet } from '@0xintuition/sdk'import { createPublicClient, http } from 'viem'const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),})// Network details available:// Chain ID: 13579// Currency: tTRUST// RPC: https://testnet.rpc.intuition.systems/http// Explorer: https://testnet.explorer.intuition.systems ### Mainnet Configuration[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#mainnet-configuration "Direct link to Mainnet Configuration") import { intuitionMainnet } from '@0xintuition/sdk'import { createPublicClient, http } from 'viem'const publicClient = createPublicClient({ chain: intuitionMainnet, transport: http(),})// Network details available:// Chain ID: 1155// Currency: TRUST// RPC: https://rpc.intuition.systems/http// Explorer: https://explorer.intuition.systems * * * Contract Addresses[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#contract-addresses "Direct link to Contract Addresses") ----------------------------------------------------------------------------------------------------------------------------------------------------------- The SDK provides utilities to get contract addresses for any supported network: import { getMultiVaultAddressFromChainId, getContractAddressFromChainId, intuitionDeployments,} from '@0xintuition/sdk'// Get MultiVault address (most commonly used)const multiVaultAddress = getMultiVaultAddressFromChainId(chainId)// Get other contract addressesconst trustBonding = getContractAddressFromChainId('TrustBonding', chainId)const wrappedTrust = getContractAddressFromChainId('WrappedTrust', chainId) * * * Account Options[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#account-options "Direct link to Account Options") -------------------------------------------------------------------------------------------------------------------------------------------------- ### Private Key[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#private-key "Direct link to Private Key") import { privateKeyToAccount } from 'viem/accounts'const account = privateKeyToAccount('0xYOUR_PRIVATE_KEY') ### Mnemonic Phrase[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#mnemonic-phrase "Direct link to Mnemonic Phrase") import { mnemonicToAccount } from 'viem/accounts'const account = mnemonicToAccount( 'your twelve word mnemonic phrase goes here') ### Browser Wallet (MetaMask, etc.)[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#browser-wallet-metamask-etc "Direct link to Browser Wallet (MetaMask, etc.)") import { createWalletClient, custom } from 'viem'import { intuitionTestnet } from '@0xintuition/sdk'const walletClient = createWalletClient({ chain: intuitionTestnet, transport: custom(window.ethereum),}) * * * Environment Variables[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#environment-variables "Direct link to Environment Variables") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- Store sensitive data in environment variables: .env PRIVATE_KEY=0xYOUR_PRIVATE_KEYPINATA_API_JWT=your-pinata-jwt-token config.ts import { privateKeyToAccount } from 'viem/accounts'const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)const pinataApiJWT = process.env.PINATA_API_JWT * * * TypeScript Configuration[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#typescript-configuration "Direct link to TypeScript Configuration") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- For optimal TypeScript support: tsconfig.json { "compilerOptions": { "target": "ES2020", "module": "ESNext", "lib": ["ES2020"], "moduleResolution": "bundler", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "resolveJsonModule": true }} * * * Advanced Configuration[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#advanced-configuration "Direct link to Advanced Configuration") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Custom RPC Endpoint[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#custom-rpc-endpoint "Direct link to Custom RPC Endpoint") const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http('https://your-custom-rpc-endpoint.com'),}) ### Fallback Transports[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#fallback-transports "Direct link to Fallback Transports") Configure backup RPC endpoints for reliability: import { fallback, http } from 'viem'const publicClient = createPublicClient({ chain: intuitionTestnet, transport: fallback([ http('https://testnet.rpc.intuition.systems/http'), http('https://backup-rpc.example.com'), ]),}) ### Batch Requests (Multicall)[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#batch-requests-multicall "Direct link to Batch Requests (Multicall)") Enable batching for multiple read operations: const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(), batch: { multicall: true, },}) * * * Complete Configuration Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#complete-configuration-example "Direct link to Complete Configuration Example") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- intuition-client.ts import { intuitionTestnet, getMultiVaultAddressFromChainId,} from '@0xintuition/sdk'import type { WriteConfig } from '@0xintuition/sdk'import { createPublicClient, createWalletClient, http, fallback,} from 'viem'import { privateKeyToAccount } from 'viem/accounts'// Accountconst account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)// Public client with fallback and batchingconst publicClient = createPublicClient({ chain: intuitionTestnet, transport: fallback([ http('https://testnet.rpc.intuition.systems/http'), http('https://backup-rpc.example.com'), ]), batch: { multicall: true, },})// Wallet clientconst walletClient = createWalletClient({ chain: intuitionTestnet, transport: http('https://testnet.rpc.intuition.systems/http'), account,})// Contract addressconst address = getMultiVaultAddressFromChainId(intuitionTestnet.id)// Export configurationexport const config: WriteConfig = { address, publicClient, walletClient, pinataApiJWT: process.env.PINATA_API_JWT,} * * * Optional: Pinata for IPFS[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#optional-pinata-for-ipfs "Direct link to Optional: Pinata for IPFS") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- For IPFS operations (uploading metadata), you'll need a Pinata API token: 1. Sign up at [pinata.cloud](https://pinata.cloud/) 2. Create an API key and get your JWT token 3. Pass it in the config when using IPFS upload functions import { createAtomFromIpfsUpload } from '@0xintuition/sdk'const atom = await createAtomFromIpfsUpload( { walletClient, publicClient, address, pinataApiJWT: 'your-pinata-jwt-token', }, { name: 'My Project', description: 'A blockchain project', }) * * * Local Development[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#local-development "Direct link to Local Development") -------------------------------------------------------------------------------------------------------------------------------------------------------- For contributing or testing with a custom build: * npm * pnpm * bun git clone https://github.com/0xIntuition/intuition-ts.gitcd intuition-ts/packages/sdknpm installnpm run buildnpm link# In your projectnpm link @0xintuition/sdk git clone https://github.com/0xIntuition/intuition-ts.gitcd intuition-ts/packages/sdkpnpm installpnpm buildpnpm link --global# In your projectpnpm link --global @0xintuition/sdk git clone https://github.com/0xIntuition/intuition-ts.gitcd intuition-ts/packages/sdkbun installbun run buildbun link# In your projectbun link @0xintuition/sdk * * * Troubleshooting[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#troubleshooting "Direct link to Troubleshooting") -------------------------------------------------------------------------------------------------------------------------------------------------- ### Module Resolution Errors[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#module-resolution-errors "Direct link to Module Resolution Errors") 1. Ensure `viem` is version `^2.0.0` or higher 2. Check your `tsconfig.json` module resolution settings 3. Clear cache and reinstall: rm -rf node_modules package-lock.jsonnpm install ### Type Errors[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#type-errors "Direct link to Type Errors") 1. Ensure TypeScript version is 5.x or higher 2. Update `@types/node` to the latest version 3. Run `npx tsc --noEmit` to check for type errors * * * Package Information[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#package-information "Direct link to Package Information") -------------------------------------------------------------------------------------------------------------------------------------------------------------- * **NPM**: [@0xintuition/sdk](https://www.npmjs.com/package/@0xintuition/sdk) * **Repository**: [github.com/0xIntuition/intuition-ts](https://github.com/0xIntuition/intuition-ts) * **Discord**: [Intuition Discord](https://discord.gg/RgBenkX4mx) * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#next-steps "Direct link to Next Steps") ----------------------------------------------------------------------------------------------------------------------------------- * [**Quick Start**](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) - Create your first atom and triple * [**Working with Atoms**](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide) - Learn about creating atoms * [**React Integration**](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react) - Use the SDK with React See Also[​](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#see-also "Direct link to See Also") ----------------------------------------------------------------------------------------------------------------------------- * [Viem Documentation](https://viem.sh/) * [Protocol Package](https://www.docs.intuition.systems/docs/protocol/getting-started/overview) - Low-level contract interactions * [GraphQL API](https://www.docs.intuition.systems/docs/graphql-api/overview) - Query protocol data * [Prerequisites](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#prerequisites) * [Auto-Generated Package Documentation](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#auto-generated-package-documentation) * [Installation](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#installation) * [Verify Installation](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#verify-installation) * [Client Configuration](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#client-configuration) * [Basic Setup](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#basic-setup) * [Configuration Object](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#configuration-object) * [Network Configuration](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#network-configuration) * [Supported Networks](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#supported-networks) * [Testnet Configuration](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#testnet-configuration) * [Mainnet Configuration](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#mainnet-configuration) * [Contract Addresses](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#contract-addresses) * [Account Options](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#account-options) * [Private Key](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#private-key) * [Mnemonic Phrase](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#mnemonic-phrase) * [Browser Wallet (MetaMask, etc.)](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#browser-wallet-metamask-etc) * [Environment Variables](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#environment-variables) * [TypeScript Configuration](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#typescript-configuration) * [Advanced Configuration](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#advanced-configuration) * [Custom RPC Endpoint](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#custom-rpc-endpoint) * [Fallback Transports](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#fallback-transports) * [Batch Requests (Multicall)](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#batch-requests-multicall) * [Complete Configuration Example](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#complete-configuration-example) * [Optional: Pinata for IPFS](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#optional-pinata-for-ipfs) * [Local Development](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#local-development) * [Troubleshooting](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#troubleshooting) * [Module Resolution Errors](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#module-resolution-errors) * [Type Errors](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#type-errors) * [Package Information](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#package-information) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#next-steps) * [See Also](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup#see-also) --- # Subscriptions Overview | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#__docusaurus_skipToContent_fallback) On this page The GraphQL API supports real-time subscriptions for live data updates using cursor-based streaming. Basic Subscription Pattern[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#basic-subscription-pattern "Direct link to Basic Subscription Pattern") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- subscription WatchAtoms( $cursor: [atoms_stream_cursor_input]! $batchSize: Int!) { atoms_stream( cursor: $cursor batch_size: $batchSize ) { term_id label created_at }} Variables[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#variables "Direct link to Variables") ------------------------------------------------------------------------------------------------------------------------------ { "cursor": [{ "initial_value": { "created_at": "2024-01-01T00:00:00Z" }, "ordering": "ASC" }], "batchSize": 10} Cursor Configuration[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#cursor-configuration "Direct link to Cursor Configuration") --------------------------------------------------------------------------------------------------------------------------------------------------------------- * **initial\_value**: Starting point for the stream * **ordering**: Sort direction (ASC or DESC) * **batch\_size**: Number of items per batch When to Use Subscriptions[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#when-to-use-subscriptions "Direct link to When to Use Subscriptions") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ **Use subscriptions when:** * Building real-time dashboards * Monitoring live protocol activity * Creating notification systems * Data changes frequently **Use polling when:** * Data updates infrequently * Real-time updates aren't critical * Minimizing server connections Available Streaming Subscriptions[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#available-streaming-subscriptions "Direct link to Available Streaming Subscriptions") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ The API provides streaming subscriptions for all major entities: ### Core Entity Streams[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#core-entity-streams "Direct link to Core Entity Streams") | Subscription | Description | | --- | --- | | `atoms_stream` | New and updated atoms | | `triples_stream` | New and updated triples | | `accounts_stream` | Account updates | | `positions_stream` | Position changes | | `vaults_stream` | Vault updates | ### Activity Streams[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#activity-streams "Direct link to Activity Streams") | Subscription | Description | | --- | --- | | `signals_stream` | Real-time deposits and redemptions | | `events_stream` | Raw blockchain events | | `deposits_stream` | Deposit events | | `redemptions_stream` | Redemption events | ### Position Tracking Streams[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#position-tracking-streams "Direct link to Position Tracking Streams") | Subscription | Description | | --- | --- | | `positions_with_value_stream` | Position updates with computed PnL/value | | `position_changes_stream` | Individual position change events | ### Price & Stats Streams[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#price--stats-streams "Direct link to Price & Stats Streams") | Subscription | Description | | --- | --- | | `share_price_changes_stream` | Share price updates | | `chainlink_prices_stream` | Oracle price updates | | `fee_transfers_stream` | Protocol fee transfers | | `protocol_fee_accruals_stream` | Protocol fee accrual events | | `stats_stream` | Protocol statistics updates | ### Time-Series Streams[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#time-series-streams "Direct link to Time-Series Streams") | Subscription | Description | | --- | --- | | `share_price_change_stats_hourly_stream` | Hourly price stat updates | | `share_price_change_stats_daily_stream` | Daily price stat updates | | `signal_stats_hourly_stream` | Hourly signal stat updates | | `signal_stats_daily_stream` | Daily signal stat updates | | `term_total_state_changes_stream` | Term state change updates | ### Graph Structure Streams[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#graph-structure-streams "Direct link to Graph Structure Streams") | Subscription | Description | | --- | --- | | `terms_stream` | Term entity updates | | `triple_terms_stream` | Triple-term relationship updates | | `triple_vaults_stream` | Triple vault data updates | | `subject_predicates_stream` | Subject-predicate pair updates | ### Leaderboard Streams[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#leaderboard-streams "Direct link to Leaderboard Streams") | Subscription | Description | | --- | --- | | `pnl_leaderboard_entry_stream` | PnL leaderboard updates | | `pnl_leaderboard_stats_stream` | Leaderboard aggregate stats updates | | `account_pnl_rank_stream` | Account rank changes | ### Social Streams[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#social-streams "Direct link to Social Streams") | Subscription | Description | | --- | --- | | `following_stream` | Following relationship changes | WebSocket Connection[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#websocket-connection "Direct link to WebSocket Connection") --------------------------------------------------------------------------------------------------------------------------------------------------------------- Connect using a WebSocket client: import { createClient } from 'graphql-ws'const client = createClient({ url: 'wss://mainnet.intuition.sh/v1/graphql',})// Subscribe to signalsconst unsubscribe = client.subscribe( { query: ` subscription WatchSignals($cursor: [signals_stream_cursor_input]!) { signals_stream(cursor: $cursor, batch_size: 10) { id signal_type delta account { label } atom { label } block_timestamp } } `, variables: { cursor: [{ initial_value: { block_timestamp: new Date().toISOString() }, ordering: 'ASC' }] } }, { next: (data) => { console.log('New signal:', data) }, error: (error) => { console.error('Subscription error:', error) }, complete: () => { console.log('Subscription complete') } }) Example: Live Activity Feed[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#example-live-activity-feed "Direct link to Example: Live Activity Feed") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { createClient } from 'graphql-ws'const client = createClient({ url: 'wss://mainnet.intuition.sh/v1/graphql',})function createActivityFeed(onSignal: (signal: Signal) => void) { return client.subscribe( { query: ` subscription LiveActivityFeed($cursor: [signals_stream_cursor_input]!) { signals_stream(cursor: $cursor, batch_size: 5) { id signal_type delta account { label image } atom { label image } triple { subject { label } predicate { label } object { label } } block_timestamp } } `, variables: { cursor: [{ initial_value: { block_timestamp: new Date().toISOString() }, ordering: 'ASC' }] } }, { next: (result) => { const signals = result.data?.signals_stream || [] signals.forEach(onSignal) }, error: console.error } )} Example: Position Price Alerts[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#example-position-price-alerts "Direct link to Example: Position Price Alerts") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function watchPositionPrices( vaultId: string, onPriceChange: (price: string) => void) { return client.subscribe( { query: ` subscription WatchVaultPrice( $vault_id: String! $cursor: [share_price_changes_stream_cursor_input]! ) { share_price_changes_stream( cursor: $cursor batch_size: 1 where: { vault_id: { _eq: $vault_id } } ) { share_price block_timestamp } } `, variables: { vault_id: vaultId, cursor: [{ initial_value: { block_timestamp: new Date().toISOString() }, ordering: 'ASC' }] } }, { next: (result) => { const changes = result.data?.share_price_changes_stream || [] changes.forEach(change => onPriceChange(change.share_price)) } } )} Best Practices[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#best-practices "Direct link to Best Practices") --------------------------------------------------------------------------------------------------------------------------------------------- 1. **Store last cursor** to resume after disconnection 2. **Use batch\_size** to control data flow (10-50) 3. **Filter subscriptions** with where clauses 4. **Handle reconnections** gracefully 5. **Implement exponential backoff** for reconnection attempts 6. **Clean up subscriptions** when components unmount Related[​](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#related "Direct link to Related") ------------------------------------------------------------------------------------------------------------------------ * [Real-time Positions](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/real-time-positions) - Position updates * [Price Updates](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/price-updates) - Price streaming * [Subscriptions vs Polling](https://www.docs.intuition.systems/docs/graphql-api/best-practices/subscriptions-vs-polling) - When to use each * [Basic Subscription Pattern](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#basic-subscription-pattern) * [Variables](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#variables) * [Cursor Configuration](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#cursor-configuration) * [When to Use Subscriptions](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#when-to-use-subscriptions) * [Available Streaming Subscriptions](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#available-streaming-subscriptions) * [Core Entity Streams](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#core-entity-streams) * [Activity Streams](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#activity-streams) * [Position Tracking Streams](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#position-tracking-streams) * [Price & Stats Streams](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#price--stats-streams) * [Time-Series Streams](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#time-series-streams) * [Graph Structure Streams](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#graph-structure-streams) * [Leaderboard Streams](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#leaderboard-streams) * [Social Streams](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#social-streams) * [WebSocket Connection](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#websocket-connection) * [Example: Live Activity Feed](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#example-live-activity-feed) * [Example: Position Price Alerts](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#example-position-price-alerts) * [Best Practices](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#best-practices) * [Related](https://www.docs.intuition.systems/docs/graphql-api/subscriptions/overview#related) --- # Lock Queries | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/lock-queries#__docusaurus_skipToContent_fallback) On this page Functions for querying lock information in the Trust Bonding system (if applicable). Note[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/lock-queries#note "Direct link to Note") ------------------------------------------------------------------------------------------------------------------------------ Lock functionality may be implemented through the broader bonding mechanism. User positions and bonded balances can be queried through: Query User Position[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/lock-queries#query-user-position "Direct link to Query User Position") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { trustBondingGetUserInfo, trustBondingTotalBondedBalance, getContractAddressFromChainId,} from '@0xintuition/protocol'import { formatEther } from 'viem'const bondingAddress = getContractAddressFromChainId('TrustBonding', chainId)// Get comprehensive user informationconst userInfo = await trustBondingGetUserInfo( { address: bondingAddress, publicClient }, { args: [userAddress] })console.log('User bonding info:', { bondedBalance: formatEther(userInfo.bondedBalance), lastActiveEpoch: userInfo.lastActiveEpoch, claimedEpochs: userInfo.claimedEpochs,})// Get total system bonded balanceconst totalBonded = await trustBondingTotalBondedBalance({ address: bondingAddress, publicClient,})console.log('Total bonded:', formatEther(totalBonded)) Query User Shares in Vaults[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/lock-queries#query-user-shares-in-vaults "Direct link to Query User Shares in Vaults") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultGetShares, getMultiVaultAddressFromChainId } from '@0xintuition/protocol'const multiVaultAddress = getMultiVaultAddressFromChainId(chainId)// Get user's shares in a specific vaultconst shares = await multiVaultGetShares( { address: multiVaultAddress, publicClient }, { args: [userAddress, vaultId] })console.log('Vault shares:', formatEther(shares)) Maximum Redeemable Amount[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/lock-queries#maximum-redeemable-amount "Direct link to Maximum Redeemable Amount") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultMaxRedeem } from '@0xintuition/protocol'// Get maximum redeemable shares (similar to lock balance)const maxShares = await multiVaultMaxRedeem( { address: multiVaultAddress, publicClient }, { args: [userAddress, vaultId] })console.log('Max redeemable:', formatEther(maxShares)) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/lock-queries#see-also "Direct link to See Also") ------------------------------------------------------------------------------------------------------------------------------------------ * [Trust Bonding Balances](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/balances) * [Vault Queries](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries) * [Share Conversions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions) * [Note](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/lock-queries#note) * [Query User Position](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/lock-queries#query-user-position) * [Query User Shares in Vaults](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/lock-queries#query-user-shares-in-vaults) * [Maximum Redeemable Amount](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/lock-queries#maximum-redeemable-amount) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/lock-queries#see-also) --- # Glossary | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/resources/glossary#__docusaurus_skipToContent_fallback) On this page Comprehensive glossary of key terms used in Intuition documentation. A[​](https://www.docs.intuition.systems/docs/resources/glossary#a "Direct link to A") -------------------------------------------------------------------------------------- ### Atom[​](https://www.docs.intuition.systems/docs/resources/glossary#atom "Direct link to Atom") A unique decentralized identifier for any entity, concept, or piece of data. Atoms are the fundamental building blocks of the knowledge graph. **See:** [Atoms Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals) **Example:** An atom representing "TypeScript" or an Ethereum address "0x742d35..." ### Attestation[​](https://www.docs.intuition.systems/docs/resources/glossary#attestation "Direct link to Attestation") A verifiable claim or statement made on-chain using triples. Attestations can be supported or opposed through signals (staking). **See:** [Triples Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) **Example:** `[Alice] [endorses] [Bob]` is an attestation that Alice endorses Bob. ### AnyTrust DA[​](https://www.docs.intuition.systems/docs/resources/glossary#anytrust-da "Direct link to AnyTrust DA") Arbitrum's data availability solution that provides a trust-minimized alternative to standard rollup data availability. Uses a committee of trusted parties. **See:** [Network Architecture](https://www.docs.intuition.systems/docs/intuition-network) B[​](https://www.docs.intuition.systems/docs/resources/glossary#b "Direct link to B") -------------------------------------------------------------------------------------- ### Bonding Curve[​](https://www.docs.intuition.systems/docs/resources/glossary#bonding-curve "Direct link to Bonding Curve") A mathematical function that determines the price of vault shares based on supply. As more people stake, the price increases proportionally. **See:** [Signals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) **Formula:** `price = k * supply^n` (where k and n are constants) ### Bridge[​](https://www.docs.intuition.systems/docs/resources/glossary#bridge "Direct link to Bridge") A smart contract system that allows transferring assets between different blockchain networks. Intuition uses a bridge to connect testnet to Base Sepolia. **See:** [Network Overview](https://www.docs.intuition.systems/docs/intuition-network) C[​](https://www.docs.intuition.systems/docs/resources/glossary#c "Direct link to C") -------------------------------------------------------------------------------------- ### Counter-Triple[​](https://www.docs.intuition.systems/docs/resources/glossary#counter-triple "Direct link to Counter-Triple") A triple that opposes or contradicts another triple. Used for expressing disagreement or alternative views in the knowledge graph. **Example:** * Triple: `[Contract A] [is safe] [true]` * Counter: `[Contract A] [is safe] [false]` **See:** [Triple Operations](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide) ### Creator Fee[​](https://www.docs.intuition.systems/docs/resources/glossary#creator-fee "Direct link to Creator Fee") A fee paid to the creator of an atom or triple when others interact with it. Incentivizes quality contributions. **See:** [Signals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) D[​](https://www.docs.intuition.systems/docs/resources/glossary#d "Direct link to D") -------------------------------------------------------------------------------------- ### DID (Decentralized Identifier)[​](https://www.docs.intuition.systems/docs/resources/glossary#did-decentralized-identifier "Direct link to DID (Decentralized Identifier)") A W3C standard for decentralized, self-sovereign identities. Intuition atoms can serve as DIDs for entities. **See:** [Core Concepts](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) **Format:** `did:intuition:` ### Deposit[​](https://www.docs.intuition.systems/docs/resources/glossary#deposit "Direct link to Deposit") The act of staking assets into a vault to signal support for an atom or triple. Returns vault shares representing ownership. **See:** [Vaults Guide](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide) E[​](https://www.docs.intuition.systems/docs/resources/glossary#e "Direct link to E") -------------------------------------------------------------------------------------- ### Epoch[​](https://www.docs.intuition.systems/docs/resources/glossary#epoch "Direct link to Epoch") A time period used for calculating rewards and fees. Epochs help coordinate economic activity and batch operations. **See:** [Protocol Documentation](https://www.docs.intuition.systems/docs/protocol/getting-started/overview) **Duration:** Configurable by protocol (e.g., 1 day, 1 week) ### EVM (Ethereum Virtual Machine)[​](https://www.docs.intuition.systems/docs/resources/glossary#evm-ethereum-virtual-machine "Direct link to EVM (Ethereum Virtual Machine)") The runtime environment for smart contracts on Ethereum and compatible chains. Intuition is EVM-compatible. **See:** [Network Architecture](https://www.docs.intuition.systems/docs/intuition-network) F[​](https://www.docs.intuition.systems/docs/resources/glossary#f "Direct link to F") -------------------------------------------------------------------------------------- ### Fee Structure[​](https://www.docs.intuition.systems/docs/resources/glossary#fee-structure "Direct link to Fee Structure") The system of fees charged for creating atoms, triples, and vault operations. Fees are distributed to various stakeholders including creators, protocol, and stakers. **See:** [Signals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) **Fee types:** * Entry fees (when staking) * Exit fees (when unstaking) * Protocol fees * Creator fees G[​](https://www.docs.intuition.systems/docs/resources/glossary#g "Direct link to G") -------------------------------------------------------------------------------------- ### GraphQL[​](https://www.docs.intuition.systems/docs/resources/glossary#graphql "Direct link to GraphQL") A query language for APIs that allows clients to request exactly the data they need. Intuition provides a GraphQL API for querying the knowledge graph. **See:** [GraphQL API](https://www.docs.intuition.systems/docs/graphql-api/overview) I[​](https://www.docs.intuition.systems/docs/resources/glossary#i "Direct link to I") -------------------------------------------------------------------------------------- ### IPFS (InterPlanetary File System)[​](https://www.docs.intuition.systems/docs/resources/glossary#ipfs-interplanetary-file-system "Direct link to IPFS (InterPlanetary File System)") Decentralized storage protocol for content-addressed data. Atoms can reference IPFS content by CID (Content Identifier). **See:** [Atoms Guide](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide) **Example CID:** `QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy` K[​](https://www.docs.intuition.systems/docs/resources/glossary#k "Direct link to K") -------------------------------------------------------------------------------------- ### Knowledge Graph[​](https://www.docs.intuition.systems/docs/resources/glossary#knowledge-graph "Direct link to Knowledge Graph") The interconnected network of atoms (nodes) and triples (edges) forming Intuition's decentralized data layer. Represents structured knowledge and relationships. **See:** [Primitives Overview](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) L[​](https://www.docs.intuition.systems/docs/resources/glossary#l "Direct link to L") -------------------------------------------------------------------------------------- ### Layer 3 (L3)[​](https://www.docs.intuition.systems/docs/resources/glossary#layer-3-l3 "Direct link to Layer 3 (L3)") A blockchain built on top of a Layer 2 solution. Intuition is an L3 built on Base using Arbitrum Orbit technology. **See:** [Network Architecture](https://www.docs.intuition.systems/docs/intuition-network) M[​](https://www.docs.intuition.systems/docs/resources/glossary#m "Direct link to M") -------------------------------------------------------------------------------------- ### MultiVault[​](https://www.docs.intuition.systems/docs/resources/glossary#multivault "Direct link to MultiVault") The core smart contract that manages all atoms, triples, and vaults in Intuition. Acts as the central registry and vault factory. **See:** [MultiVault API](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms) **Functions:** * Create atoms and triples * Manage vault deposits/withdrawals * Track fees and rewards N[​](https://www.docs.intuition.systems/docs/resources/glossary#n "Direct link to N") -------------------------------------------------------------------------------------- ### Nested Triple[​](https://www.docs.intuition.systems/docs/resources/glossary#nested-triple "Direct link to Nested Triple") A triple that uses another triple as one of its components (subject, predicate, or object), enabling complex, multi-layered expressions. **See:** [Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) **Example:** `[Alice] [endorses] [[Bob has skill TypeScript]]` This states "Alice endorses the claim that Bob has skill TypeScript" ### Node[​](https://www.docs.intuition.systems/docs/resources/glossary#node "Direct link to Node") A server that runs the Intuition indexing software, providing local access to the knowledge graph database and GraphQL API. **See:** [Network Overview](https://www.docs.intuition.systems/docs/intuition-network) O[​](https://www.docs.intuition.systems/docs/resources/glossary#o "Direct link to O") -------------------------------------------------------------------------------------- ### Object[​](https://www.docs.intuition.systems/docs/resources/glossary#object "Direct link to Object") The third component of a tripleβ€”what is being claimed about the subject. Can be an atom ID or another triple ID. **Example:** In `[Alice] [knows] [Bob]`, "Bob" is the object. **See:** [Triples Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) P[​](https://www.docs.intuition.systems/docs/resources/glossary#p "Direct link to P") -------------------------------------------------------------------------------------- ### Predicate[​](https://www.docs.intuition.systems/docs/resources/glossary#predicate "Direct link to Predicate") The middle component of a triple that defines the relationship between subject and object. **Examples:** "knows", "has skill", "is member of", "endorses" **See:** [Triples Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) ### Protocol Fee[​](https://www.docs.intuition.systems/docs/resources/glossary#protocol-fee "Direct link to Protocol Fee") A fee collected by the Intuition protocol on various operations, used for protocol development and sustainability. **See:** [Signals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) R[​](https://www.docs.intuition.systems/docs/resources/glossary#r "Direct link to R") -------------------------------------------------------------------------------------- ### RDF (Resource Description Framework)[​](https://www.docs.intuition.systems/docs/resources/glossary#rdf-resource-description-framework "Direct link to RDF (Resource Description Framework)") A W3C standard for describing resources and their relationships. Intuition's triple format is compatible with RDF principles. **See:** [Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) ### Redemption[​](https://www.docs.intuition.systems/docs/resources/glossary#redemption "Direct link to Redemption") The act of withdrawing staked assets from a vault by burning vault shares. Subject to exit fees. **See:** [Vaults Guide](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide) S[​](https://www.docs.intuition.systems/docs/resources/glossary#s "Direct link to S") -------------------------------------------------------------------------------------- ### Signal[​](https://www.docs.intuition.systems/docs/resources/glossary#signal "Direct link to Signal") The weight of trust or conviction expressed through staking on atoms or triples. Higher signals indicate stronger community support. **See:** [Signals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) **Measured by:** Total value staked in vault ### Semantic Triple[​](https://www.docs.intuition.systems/docs/resources/glossary#semantic-triple "Direct link to Semantic Triple") A structured claim in \[Subject\]-\[Predicate\]-\[Object\] format, following RDF/semantic web standards. **See:** [Triples Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) **Standard form:** `[Subject Atom] [Predicate Atom] [Object Atom]` ### Subject[​](https://www.docs.intuition.systems/docs/resources/glossary#subject "Direct link to Subject") The first component of a tripleβ€”the entity being described or making a claim. **Example:** In `[Alice] [knows] [Bob]`, "Alice" is the subject. **See:** [Triples Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) T[​](https://www.docs.intuition.systems/docs/resources/glossary#t "Direct link to T") -------------------------------------------------------------------------------------- ### Token-Curated Graph (TCG)[​](https://www.docs.intuition.systems/docs/resources/glossary#token-curated-graph-tcg "Direct link to Token-Curated Graph (TCG)") Intuition's economic model where token staking curates and validates knowledge. Economic incentives align with truth and quality. **See:** [Signals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) ### Triple[​](https://www.docs.intuition.systems/docs/resources/glossary#triple "Direct link to Triple") A structured statement connecting three atoms in Subject-Predicate-Object format. The fundamental unit of claims in Intuition. **See:** [Triples Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) **Format:** `[Subject] [Predicate] [Object]` ### TRUST[​](https://www.docs.intuition.systems/docs/resources/glossary#trust "Direct link to TRUST") The native token of Intuition Network, used for staking, governance, and paying gas fees. **See:** [Network Overview](https://www.docs.intuition.systems/docs/intuition-network) **Symbol:** $TRUST (mainnet), $tTRUST (testnet) V[​](https://www.docs.intuition.systems/docs/resources/glossary#v "Direct link to V") -------------------------------------------------------------------------------------- ### Vault[​](https://www.docs.intuition.systems/docs/resources/glossary#vault "Direct link to Vault") An on-chain smart contract holding staked assets for a specific atom or triple. Each atom/triple has its own isolated vault. **See:** [Vaults Guide](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide) **Functions:** * Hold staked assets * Issue vault shares * Distribute fees and rewards * Track total value locked ### Vault ID[​](https://www.docs.intuition.systems/docs/resources/glossary#vault-id "Direct link to Vault ID") The unique identifier for a vault, derived from the corresponding atom or triple ID. Used to reference vaults in contracts and APIs. **See:** [MultiVault API](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms) ### Vault Shares[​](https://www.docs.intuition.systems/docs/resources/glossary#vault-shares "Direct link to Vault Shares") Tokens representing ownership in a vault's assets. Issued when depositing, burned when redeeming. Value increases as fees accumulate. **See:** [Vaults Guide](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide) W[​](https://www.docs.intuition.systems/docs/resources/glossary#w "Direct link to W") -------------------------------------------------------------------------------------- ### Wrapped Trust[​](https://www.docs.intuition.systems/docs/resources/glossary#wrapped-trust "Direct link to Wrapped Trust") A tokenized representation of staked TRUST in a vault, making staked positions transferable as ERC-20 tokens. **See:** [Protocol API Reference](https://www.docs.intuition.systems/docs/protocol/api-reference/wrapped-trust/overview) **Use cases:** * Transfer staked positions * Use as collateral * Trade on DEXs * * * Not Finding a Term?[​](https://www.docs.intuition.systems/docs/resources/glossary#not-finding-a-term "Direct link to Not Finding a Term?") ------------------------------------------------------------------------------------------------------------------------------------------- Check these resources: * **[FAQ](https://www.docs.intuition.systems/docs/resources/faq) ** - Common questions * **[Community Support](https://www.docs.intuition.systems/docs/resources/community-and-support) ** - Ask the community * **[Core Concepts](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) ** - In-depth explanations * **[Discord](https://discord.gg/RgBenkX4mx) ** - Real-time help * [A](https://www.docs.intuition.systems/docs/resources/glossary#a) * [Atom](https://www.docs.intuition.systems/docs/resources/glossary#atom) * [Attestation](https://www.docs.intuition.systems/docs/resources/glossary#attestation) * [AnyTrust DA](https://www.docs.intuition.systems/docs/resources/glossary#anytrust-da) * [B](https://www.docs.intuition.systems/docs/resources/glossary#b) * [Bonding Curve](https://www.docs.intuition.systems/docs/resources/glossary#bonding-curve) * [Bridge](https://www.docs.intuition.systems/docs/resources/glossary#bridge) * [C](https://www.docs.intuition.systems/docs/resources/glossary#c) * [Counter-Triple](https://www.docs.intuition.systems/docs/resources/glossary#counter-triple) * [Creator Fee](https://www.docs.intuition.systems/docs/resources/glossary#creator-fee) * [D](https://www.docs.intuition.systems/docs/resources/glossary#d) * [DID (Decentralized Identifier)](https://www.docs.intuition.systems/docs/resources/glossary#did-decentralized-identifier) * [Deposit](https://www.docs.intuition.systems/docs/resources/glossary#deposit) * [E](https://www.docs.intuition.systems/docs/resources/glossary#e) * [Epoch](https://www.docs.intuition.systems/docs/resources/glossary#epoch) * [EVM (Ethereum Virtual Machine)](https://www.docs.intuition.systems/docs/resources/glossary#evm-ethereum-virtual-machine) * [F](https://www.docs.intuition.systems/docs/resources/glossary#f) * [Fee Structure](https://www.docs.intuition.systems/docs/resources/glossary#fee-structure) * [G](https://www.docs.intuition.systems/docs/resources/glossary#g) * [GraphQL](https://www.docs.intuition.systems/docs/resources/glossary#graphql) * [I](https://www.docs.intuition.systems/docs/resources/glossary#i) * [IPFS (InterPlanetary File System)](https://www.docs.intuition.systems/docs/resources/glossary#ipfs-interplanetary-file-system) * [K](https://www.docs.intuition.systems/docs/resources/glossary#k) * [Knowledge Graph](https://www.docs.intuition.systems/docs/resources/glossary#knowledge-graph) * [L](https://www.docs.intuition.systems/docs/resources/glossary#l) * [Layer 3 (L3)](https://www.docs.intuition.systems/docs/resources/glossary#layer-3-l3) * [M](https://www.docs.intuition.systems/docs/resources/glossary#m) * [MultiVault](https://www.docs.intuition.systems/docs/resources/glossary#multivault) * [N](https://www.docs.intuition.systems/docs/resources/glossary#n) * [Nested Triple](https://www.docs.intuition.systems/docs/resources/glossary#nested-triple) * [Node](https://www.docs.intuition.systems/docs/resources/glossary#node) * [O](https://www.docs.intuition.systems/docs/resources/glossary#o) * [Object](https://www.docs.intuition.systems/docs/resources/glossary#object) * [P](https://www.docs.intuition.systems/docs/resources/glossary#p) * [Predicate](https://www.docs.intuition.systems/docs/resources/glossary#predicate) * [Protocol Fee](https://www.docs.intuition.systems/docs/resources/glossary#protocol-fee) * [R](https://www.docs.intuition.systems/docs/resources/glossary#r) * [RDF (Resource Description Framework)](https://www.docs.intuition.systems/docs/resources/glossary#rdf-resource-description-framework) * [Redemption](https://www.docs.intuition.systems/docs/resources/glossary#redemption) * [S](https://www.docs.intuition.systems/docs/resources/glossary#s) * [Signal](https://www.docs.intuition.systems/docs/resources/glossary#signal) * [Semantic Triple](https://www.docs.intuition.systems/docs/resources/glossary#semantic-triple) * [Subject](https://www.docs.intuition.systems/docs/resources/glossary#subject) * [T](https://www.docs.intuition.systems/docs/resources/glossary#t) * [Token-Curated Graph (TCG)](https://www.docs.intuition.systems/docs/resources/glossary#token-curated-graph-tcg) * [Triple](https://www.docs.intuition.systems/docs/resources/glossary#triple) * [TRUST](https://www.docs.intuition.systems/docs/resources/glossary#trust) * [V](https://www.docs.intuition.systems/docs/resources/glossary#v) * [Vault](https://www.docs.intuition.systems/docs/resources/glossary#vault) * [Vault ID](https://www.docs.intuition.systems/docs/resources/glossary#vault-id) * [Vault Shares](https://www.docs.intuition.systems/docs/resources/glossary#vault-shares) * [W](https://www.docs.intuition.systems/docs/resources/glossary#w) * [Wrapped Trust](https://www.docs.intuition.systems/docs/resources/glossary#wrapped-trust) * [Not Finding a Term?](https://www.docs.intuition.systems/docs/resources/glossary#not-finding-a-term) --- # Working with Atoms | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#__docusaurus_skipToContent_fallback) On this page **Conceptual overview:** [Atoms Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals) Atoms are unique identifiers for any entityβ€”people, concepts, smart contracts, or data. This guide covers all ways to create and query atoms using the SDK. Table of Contents[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#table-of-contents "Direct link to Table of Contents") --------------------------------------------------------------------------------------------------------------------------------------------- * [Creating from Strings](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-strings) * [Creating from Thing (JSON-LD)](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-thing) * [Creating from Ethereum Accounts](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-ethereum-accounts) * [Creating from Smart Contracts](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-smart-contracts) * [Creating from IPFS](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-ipfs) * [Batch Creation](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#batch-creation) * [Querying Atoms](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#querying-atoms) * * * Creating from Strings[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-strings "Direct link to Creating from Strings") --------------------------------------------------------------------------------------------------------------------------------------------------------- The simplest way to create an atom is from a plain string. ### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature "Direct link to Function Signature") function createAtomFromString( config: WriteConfig, data: string, deposit?: bigint): Promise ### Parameters[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | `config` | `WriteConfig` | Client configuration with wallet, public client, and contract address | Yes | | `data` | `string` | The text string to create an atom from | Yes | | `deposit` | `bigint` | Optional initial deposit amount in wei | No | ### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example "Direct link to Basic Example") import { createAtomFromString, getMultiVaultAddressFromChainId, intuitionTestnet,} from '@0xintuition/sdk'import { createPublicClient, createWalletClient, http, parseEther } from 'viem'import { privateKeyToAccount } from 'viem/accounts'// Setup clientsconst account = privateKeyToAccount('0x...')const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),})const walletClient = createWalletClient({ chain: intuitionTestnet, transport: http(), account,})const address = getMultiVaultAddressFromChainId(intuitionTestnet.id)// Create atomconst atom = await createAtomFromString( { walletClient, publicClient, address }, 'developer', parseEther('0.01') // Optional: 0.01 TRUST initial deposit)console.log('Atom ID:', atom.state.termId)console.log('Transaction:', atom.transactionHash) ### Common Use Cases[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#common-use-cases "Direct link to Common Use Cases") #### Creating Tags or Labels[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-tags-or-labels "Direct link to Creating Tags or Labels") const tag = await createAtomFromString( { walletClient, publicClient, address }, 'blockchain') #### Creating Simple Identifiers[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-simple-identifiers "Direct link to Creating Simple Identifiers") const identifier = await createAtomFromString( { walletClient, publicClient, address }, 'user-role-admin') #### Creating Predicates for Triples[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-predicates-for-triples "Direct link to Creating Predicates for Triples") // Create predicate atoms for relationshipsconst hasSkill = await createAtomFromString( { walletClient, publicClient, address }, 'hasSkill')const worksOn = await createAtomFromString( { walletClient, publicClient, address }, 'worksOn') ### Best Practices[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#best-practices "Direct link to Best Practices") #### 1\. Use Descriptive Strings[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#1-use-descriptive-strings "Direct link to 1. Use Descriptive Strings") // Good - clear and descriptiveawait createAtomFromString(config, 'JavaScript Developer')// Avoid - too vagueawait createAtomFromString(config, 'dev') #### 2\. Check for Existing Atoms[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#2-check-for-existing-atoms "Direct link to 2. Check for Existing Atoms") Before creating an atom, check if it already exists: import { calculateAtomId, getAtomDetails } from '@0xintuition/sdk'const atomId = calculateAtomId('developer')const exists = await getAtomDetails(atomId)if (exists) { console.log('Atom already exists:', atomId)} else { const atom = await createAtomFromString(config, 'developer')} * * * Creating from Thing[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-thing "Direct link to Creating from Thing") --------------------------------------------------------------------------------------------------------------------------------------------------- Create atoms from structured JSON-LD objects for rich metadata. ### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature-1 "Direct link to Function Signature") function createAtomFromThing( config: WriteConfig, thing: PinThingMutationVariables['thing'], deposit?: bigint): Promise ### Thing Object Structure[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#thing-object-structure "Direct link to Thing Object Structure") type Thing = { url?: string // Primary URL/website name?: string // Display name description?: string // Detailed description image?: string // Image URL tags?: string[] // Category tags twitter?: string // Twitter/X profile github?: string // GitHub repository // Additional schema.org Thing properties supported} ### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example-1 "Direct link to Basic Example") import { createAtomFromThing, getMultiVaultAddressFromChainId, intuitionTestnet,} from '@0xintuition/sdk'import { parseEther } from 'viem'// Create atom from Thingconst atom = await createAtomFromThing( { walletClient, publicClient, address }, { url: 'https://www.example.com', name: 'Example Project', description: 'A great Web3 project', image: 'https://example.com/logo.png', tags: ['web3', 'defi', 'blockchain'], }, parseEther('0.05'))console.log('Atom ID:', atom.state.termId)console.log('IPFS URI:', atom.uri) // ipfs://bafkrei... ### Common Use Cases[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#common-use-cases-1 "Direct link to Common Use Cases") #### Creating Organization Atoms[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-organization-atoms "Direct link to Creating Organization Atoms") const organization = await createAtomFromThing( { walletClient, publicClient, address }, { name: 'Acme Corporation', description: 'Leading blockchain solutions provider', url: 'https://acme.com', image: 'https://acme.com/brand.png', twitter: 'https://twitter.com/acmecorp', }) #### Creating Person Atoms[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-person-atoms "Direct link to Creating Person Atoms") const person = await createAtomFromThing( { walletClient, publicClient, address }, { name: 'Alice Johnson', description: 'Blockchain developer and researcher', image: 'https://example.com/alice.jpg', twitter: 'https://twitter.com/alicecodes', github: 'github.com/alice', }) ### How It Works[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#how-it-works "Direct link to How It Works") 1. **Pin to IPFS**: The Thing object is automatically pinned to IPFS via the Intuition API 2. **Generate URI**: An IPFS URI is generated (e.g., `ipfs://bafkrei...`) 3. **Create Atom**: The atom is created with the IPFS URI as its data 4. **Return**: Returns the atom details with the IPFS URI * * * Creating from Ethereum Accounts[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-ethereum-accounts "Direct link to Creating from Ethereum Accounts") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Create atoms representing Ethereum wallet addresses. ### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature-2 "Direct link to Function Signature") function createAtomFromEthereumAccount( config: WriteConfig, address: Address, deposit?: bigint): Promise ### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example-2 "Direct link to Basic Example") import { createAtomFromEthereumAccount, getMultiVaultAddressFromChainId, intuitionTestnet,} from '@0xintuition/sdk'import { parseEther } from 'viem'// Create atom from Ethereum addressconst atom = await createAtomFromEthereumAccount( { walletClient, publicClient, address }, '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', parseEther('0.01'))console.log('Identity Atom ID:', atom.state.termId)console.log('Address:', atom.uri) ### Common Use Cases[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#common-use-cases-2 "Direct link to Common Use Cases") #### Creating User Identity Atoms[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-user-identity-atoms "Direct link to Creating User Identity Atoms") // Create atom for user's walletconst userAtom = await createAtomFromEthereumAccount( { walletClient, publicClient, address }, walletClient.account.address) #### Building Social Graphs[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#building-social-graphs "Direct link to Building Social Graphs") // Create atoms for follower relationshipsconst alice = await createAtomFromEthereumAccount( config, '0xAlice...')const bob = await createAtomFromEthereumAccount( config, '0xBob...')// Then create a "follows" tripleconst follows = await createAtomFromString(config, 'follows')const triple = await createTripleStatement(config, { args: [ [alice.state.termId], [follows.state.termId], [bob.state.termId], [parseEther('0.1')], ], value: parseEther('0.1'),}) * * * Creating from Smart Contracts[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-smart-contracts "Direct link to Creating from Smart Contracts") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Create atoms representing smart contract addresses. ### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature-3 "Direct link to Function Signature") function createAtomFromSmartContract( config: WriteConfig, contractAddress: Address, deposit?: bigint): Promise ### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example-3 "Direct link to Basic Example") import { createAtomFromSmartContract, getMultiVaultAddressFromChainId, intuitionTestnet,} from '@0xintuition/sdk'import { parseEther } from 'viem'// Create atom for Uniswap contractconst uniswap = await createAtomFromSmartContract( { walletClient, publicClient, address }, '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', // UNI token parseEther('0.01'))console.log('Contract Atom ID:', uniswap.state.termId) ### Common Use Cases[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#common-use-cases-3 "Direct link to Common Use Cases") #### Creating Protocol Atoms[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-protocol-atoms "Direct link to Creating Protocol Atoms") // Create atoms for DeFi protocolsconst aave = await createAtomFromSmartContract( config, '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9' // AAVE token)const compound = await createAtomFromSmartContract( config, '0xc00e94Cb662C3520282E6f5717214004A7f26888' // COMP token) * * * Creating from IPFS[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-ipfs "Direct link to Creating from IPFS") ------------------------------------------------------------------------------------------------------------------------------------------------ Create atoms from IPFS content, either by referencing existing IPFS URIs or uploading new content to Pinata. ### createAtomFromIpfsUri[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#createatomfromipfsuri "Direct link to createAtomFromIpfsUri") Create an atom from an existing IPFS URI. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature-4 "Direct link to Function Signature") function createAtomFromIpfsUri( config: WriteConfig, ipfsUri: string, deposit?: bigint): Promise #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example-4 "Direct link to Basic Example") import { createAtomFromIpfsUri, getMultiVaultAddressFromChainId, intuitionTestnet,} from '@0xintuition/sdk'import { parseEther } from 'viem'const atom = await createAtomFromIpfsUri( { walletClient, publicClient, address }, 'ipfs://bafkreib7534cszxn2c6qwoviv43sqh244yfrxomjbealjdwntd6a7atq6u', parseEther('0.01'))console.log('IPFS Atom ID:', atom.state.termId) ### createAtomFromIpfsUpload[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#createatomfromipfsupload "Direct link to createAtomFromIpfsUpload") Upload JSON data to Pinata and create an atom with the resulting IPFS URI. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature-5 "Direct link to Function Signature") function createAtomFromIpfsUpload( config: WriteConfig & { pinataApiJWT: string }, data: object, deposit?: bigint): Promise #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example-5 "Direct link to Basic Example") import { createAtomFromIpfsUpload } from '@0xintuition/sdk'import { parseEther } from 'viem'const atom = await createAtomFromIpfsUpload( { walletClient, publicClient, address, pinataApiJWT: 'your-pinata-jwt-token', }, { name: 'My Project', description: 'A blockchain project', url: 'https://myproject.com', }, parseEther('0.05'))console.log('Atom ID:', atom.state.termId)console.log('IPFS URI:', atom.uri) // ipfs://bafkrei... * * * Batch Creation[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#batch-creation "Direct link to Batch Creation") ------------------------------------------------------------------------------------------------------------------------------------ Create multiple atoms in a single transaction for improved efficiency and reduced gas costs. ### Available Batch Functions[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#available-batch-functions "Direct link to Available Batch Functions") * `batchCreateAtomsFromEthereumAccounts` - Batch create account atoms * `batchCreateAtomsFromSmartContracts` - Batch create contract atoms * `batchCreateAtomsFromIpfsUris` - Batch create IPFS atoms * `batchCreateAtomsFromThings` - Batch create Thing atoms ### batchCreateAtomsFromEthereumAccounts[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#batchcreateatomsfromethereumaccounts "Direct link to batchCreateAtomsFromEthereumAccounts") import { batchCreateAtomsFromEthereumAccounts, getMultiVaultAddressFromChainId, intuitionTestnet,} from '@0xintuition/sdk'import { parseEther } from 'viem'const addresses = [ '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb', '0x1234567890123456789012345678901234567890',]const result = await batchCreateAtomsFromEthereumAccounts( { walletClient, publicClient, address }, addresses, parseEther('0.01') // 0.01 TRUST per atom)console.log('Created', result.state.length, 'atoms')console.log('Atom IDs:', result.state.map(s => s.termId))console.log('Single transaction:', result.transactionHash) ### Gas Savings[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#gas-savings "Direct link to Gas Savings") Batch creation saves significant gas compared to individual transactions: | Atoms | Individual Txs | Batch Tx | Savings | | --- | --- | --- | --- | | 1 | ~150k gas | ~150k gas | 0% | | 5 | ~750k gas | ~300k gas | 60% | | 10 | ~1.5M gas | ~450k gas | 70% | | 50 | ~7.5M gas | ~1.5M gas | 80% | * * * Querying Atoms[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#querying-atoms "Direct link to Querying Atoms") ------------------------------------------------------------------------------------------------------------------------------------ Query atom information and calculate atom IDs for existing or potential atoms. ### getAtomDetails[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#getatomdetails "Direct link to getAtomDetails") Fetch comprehensive atom details from the Intuition API. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature-6 "Direct link to Function Signature") function getAtomDetails(atomId: string): Promise #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example-6 "Direct link to Basic Example") import { getAtomDetails } from '@0xintuition/sdk'const atomId = '0x1234567890abcdef...'const details = await getAtomDetails(atomId)console.log('Atom Label:', details.label)console.log('Creator:', details.creator)console.log('Vault Shares:', details.vault.totalShares)console.log('Share Price:', details.vault.currentSharePrice) ### calculateAtomId[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#calculateatomid "Direct link to calculateAtomId") Calculate the atom ID from atom data without querying the blockchain. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature-7 "Direct link to Function Signature") function calculateAtomId(atomData: string): Hex #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example-7 "Direct link to Basic Example") import { calculateAtomId } from '@0xintuition/sdk'// Calculate ID for a string atomconst atomId = calculateAtomId('developer')console.log('Atom ID:', atomId)// Calculate ID for an Ethereum addressconst addressAtomId = calculateAtomId('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045')console.log('Address Atom ID:', addressAtomId)// Calculate ID for IPFS URIconst ipfsAtomId = calculateAtomId('ipfs://bafkreib...')console.log('IPFS Atom ID:', ipfsAtomId) ### Use Cases[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#use-cases "Direct link to Use Cases") #### Check if Atom Exists Before Creating[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#check-if-atom-exists-before-creating "Direct link to Check if Atom Exists Before Creating") import { calculateAtomId, getAtomDetails, createAtomFromString } from '@0xintuition/sdk'async function createAtomIfNotExists(data: string) { // Calculate ID const atomId = calculateAtomId(data) try { // Check if exists const existing = await getAtomDetails(atomId) console.log('Atom already exists:', atomId) return existing } catch (error) { // Doesn't exist, create it console.log('Creating new atom') const atom = await createAtomFromString(config, data) return atom }} #### Batch Query Multiple Atoms[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#batch-query-multiple-atoms "Direct link to Batch Query Multiple Atoms") import { getAtomDetails } from '@0xintuition/sdk'async function getMultipleAtoms(atomIds: string[]) { const atoms = await Promise.all( atomIds.map(id => getAtomDetails(id)) ) atoms.forEach(atom => { console.log(`${atom.label}: ${atom.vault.totalShares} shares`) }) return atoms} * * * Response Data Structure[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#response-data-structure "Direct link to Response Data Structure") --------------------------------------------------------------------------------------------------------------------------------------------------------------- After successfully creating an atom, the SDK returns a data object with transaction details and state: type AtomCreationResult = { uri: string // The atom's data URI (IPFS or raw data) transactionHash: `0x${string}` // Transaction hash on chain state: { creator: Address // Address that created the atom termId: Hex // Unique atom identifier atomData: Hex // Encoded atom data atomWallet: Address // Associated vault wallet address }} ### Example Usage[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#example-usage "Direct link to Example Usage") const result = await createAtomFromString(config, 'developer')console.log('Transaction:', result.transactionHash)console.log('Atom ID:', result.state.termId)console.log('Creator:', result.state.creator)console.log('Vault Wallet:', result.state.atomWallet) * * * Complete Examples[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#complete-examples "Direct link to Complete Examples") --------------------------------------------------------------------------------------------------------------------------------------------- See working examples in the SDK Examples section Next Steps[​](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------ * [Working with Triples](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide) * [Working with Vaults](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide) * [SDK Integrations](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react) * [Table of Contents](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#table-of-contents) * [Creating from Strings](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-strings) * [Function Signature](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature) * [Parameters](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#parameters) * [Basic Example](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example) * [Common Use Cases](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#common-use-cases) * [Best Practices](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#best-practices) * [Creating from Thing](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-thing) * [Function Signature](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature-1) * [Thing Object Structure](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#thing-object-structure) * [Basic Example](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example-1) * [Common Use Cases](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#common-use-cases-1) * [How It Works](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#how-it-works) * [Creating from Ethereum Accounts](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-ethereum-accounts) * [Function Signature](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature-2) * [Basic Example](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example-2) * [Common Use Cases](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#common-use-cases-2) * [Creating from Smart Contracts](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-smart-contracts) * [Function Signature](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#function-signature-3) * [Basic Example](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#basic-example-3) * [Common Use Cases](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#common-use-cases-3) * [Creating from IPFS](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#creating-from-ipfs) * [createAtomFromIpfsUri](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#createatomfromipfsuri) * [createAtomFromIpfsUpload](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#createatomfromipfsupload) * [Batch Creation](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#batch-creation) * [Available Batch Functions](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#available-batch-functions) * [batchCreateAtomsFromEthereumAccounts](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#batchcreateatomsfromethereumaccounts) * [Gas Savings](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#gas-savings) * [Querying Atoms](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#querying-atoms) * [getAtomDetails](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#getatomdetails) * [calculateAtomId](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#calculateatomid) * [Use Cases](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#use-cases) * [Response Data Structure](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#response-data-structure) * [Example Usage](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#example-usage) * [Complete Examples](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#complete-examples) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide#next-steps) --- # Search and Discovery | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#__docusaurus_skipToContent_fallback) On this page Discover atoms, triples, accounts, and collections using powerful search capabilities including full-text search, semantic search, and batch entity lookups. Table of Contents[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#table-of-contents "Direct link to Table of Contents") ---------------------------------------------------------------------------------------------------------------------------------------------- * [Global Search](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#global-search) * [Searching Atoms](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#searching-atoms) * [Searching Triples](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#searching-triples) * [Advanced Queries](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#advanced-queries) * * * Global Search[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#global-search "Direct link to Global Search") ---------------------------------------------------------------------------------------------------------------------------------- Search across all entity types (atoms, accounts, triples, collections) with a single query. ### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#function-signature "Direct link to Function Signature") function globalSearch( query: string, options?: GlobalSearchOptions): Promise ### Parameters[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | `query` | `string` | Search query text | Yes | | `options` | `GlobalSearchOptions` | Search limits per type | No | ### GlobalSearchOptions[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#globalsearchoptions "Direct link to GlobalSearchOptions") type GlobalSearchOptions = { atomsLimit?: number // Default: 5 accountsLimit?: number // Default: 5 triplesLimit?: number // Default: 5 collectionsLimit?: number // Default: 5} ### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#basic-example "Direct link to Basic Example") import { globalSearch } from '@0xintuition/sdk'const results = await globalSearch('ethereum')if (results) { console.log('Atoms:', results.atoms.length) console.log('Accounts:', results.accounts.length) console.log('Triples:', results.triples.length) console.log('Collections:', results.collections.length)} ### Advanced Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#advanced-example "Direct link to Advanced Example") Search with custom limits: import { globalSearch } from '@0xintuition/sdk'async function searchWithLimits(query: string) { const results = await globalSearch(query, { atomsLimit: 20, // Get up to 20 atoms accountsLimit: 10, // Get up to 10 accounts triplesLimit: 15, // Get up to 15 triples collectionsLimit: 5, // Get up to 5 collections }) if (!results) { console.log('Search failed or returned no results') return } // Display atoms console.log('\n=== Atoms ===') results.atoms.forEach(atom => { console.log(`${atom.label} (ID: ${atom.id})`) }) // Display triples console.log('\n=== Triples ===') results.triples.forEach(triple => { console.log( `${triple.subject.label} ${triple.predicate.label} ${triple.object.label}` ) }) return results}// Usageawait searchWithLimits('blockchain') ### Common Use Cases[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#common-use-cases "Direct link to Common Use Cases") #### Search for Specific Entity Type[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#search-for-specific-entity-type "Direct link to Search for Specific Entity Type") // Search only for atomsconst results = await globalSearch('defi', { atomsLimit: 50, accountsLimit: 0, triplesLimit: 0, collectionsLimit: 0,})console.log('DeFi atoms:', results.atoms) #### Build Autocomplete[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#build-autocomplete "Direct link to Build Autocomplete") async function autocomplete(input: string) { if (input.length < 2) return [] const results = await globalSearch(input, { atomsLimit: 10, accountsLimit: 5, triplesLimit: 0, collectionsLimit: 0, }) if (!results) return [] return [ ...results.atoms.map(a => ({ type: 'atom', label: a.label, id: a.id })), ...results.accounts.map(a => ({ type: 'account', label: a.label, id: a.id })), ]}// Usage in Reactconst suggestions = await autocomplete('block') #### Search and Display Details[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#search-and-display-details "Direct link to Search and Display Details") import { globalSearch, getAtomDetails } from '@0xintuition/sdk'async function searchAndDisplay(query: string) { const results = await globalSearch(query, { atomsLimit: 5 }) if (!results || results.atoms.length === 0) { console.log('No atoms found') return } // Get detailed information for first atom const firstAtom = results.atoms[0] const details = await getAtomDetails(firstAtom.id) console.log('First result:', firstAtom.label) console.log('Creator:', details.creator) console.log('Vault shares:', details.vault.totalShares)} ### Return Type[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#return-type "Direct link to Return Type") type GlobalSearchResults = { atoms: Array<{ id: string label: string // Additional atom fields }> accounts: Array<{ id: string label: string // Additional account fields }> triples: Array<{ id: string subject: { id: string, label: string } predicate: { id: string, label: string } object: { id: string, label: string } // Additional triple fields }> collections: Array<{ id: string label: string // Additional collection fields }>} ### Error Handling[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#error-handling "Direct link to Error Handling") The function returns `null` on error: const results = await globalSearch('query')if (!results) { console.error('Search failed') return}// Use resultsconsole.log('Found', results.atoms.length, 'atoms') * * * Searching Atoms[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#searching-atoms "Direct link to Searching Atoms") ---------------------------------------------------------------------------------------------------------------------------------------- Search for atoms using the global search function and other query methods. ### Using Global Search[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#using-global-search "Direct link to Using Global Search") import { globalSearch } from '@0xintuition/sdk'const results = await globalSearch('blockchain', { atomsLimit: 20, accountsLimit: 0, // Skip accounts triplesLimit: 0, // Skip triples collectionsLimit: 0, // Skip collections})console.log('Found atoms:', results.atoms.length)results.atoms.forEach(atom => { console.log(`- ${atom.label} (${atom.id})`)}) ### Using findAtomIds[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#using-findatomids "Direct link to Using findAtomIds") Find atom IDs for known atom data. #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#basic-example-1 "Direct link to Basic Example") import { findAtomIds } from '@0xintuition/sdk'const atomData = ['TypeScript', 'JavaScript', 'Python']const atoms = await findAtomIds(atomData)atoms.forEach(atom => { if (atom.term_id) { console.log(`${atom.data}: ${atom.term_id}`) } else { console.log(`${atom.data}: not found`) }}) * * * Searching Triples[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#searching-triples "Direct link to Searching Triples") ---------------------------------------------------------------------------------------------------------------------------------------------- Search for triple statements using various methods. ### Using Global Search[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#using-global-search-1 "Direct link to Using Global Search") import { globalSearch } from '@0xintuition/sdk'const results = await globalSearch('follows', { atomsLimit: 0, accountsLimit: 0, triplesLimit: 20, // Focus on triples collectionsLimit: 0,})console.log('Found triples:', results.triples.length)results.triples.forEach(triple => { console.log(`${triple.subject.label} ${triple.predicate.label} ${triple.object.label}`)}) ### Using findTripleIds[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#using-findtripleids "Direct link to Using findTripleIds") Find triple IDs for specific atom combinations. import { findTripleIds } from '@0xintuition/sdk'const tripleCombinations = [ ['0xsubject1', '0xpredicate1', '0xobject1'], ['0xsubject2', '0xpredicate2', '0xobject2'],]const triples = await findTripleIds( walletClient.account.address, tripleCombinations)triples.forEach(triple => { if (triple.term_id) { console.log('Found triple:', triple.term_id) }}) * * * Advanced Queries[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#advanced-queries "Direct link to Advanced Queries") ------------------------------------------------------------------------------------------------------------------------------------------- Advanced search capabilities including semantic search and batch entity lookups. ### semanticSearch[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#semanticsearch "Direct link to semanticSearch") Search using vector embeddings for semantically similar content. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#function-signature-1 "Direct link to Function Signature") function semanticSearch( query: string, options?: { limit?: number }): Promise #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#basic-example-2 "Direct link to Basic Example") import { semanticSearch } from '@0xintuition/sdk'const results = await semanticSearch('decentralized knowledge graph', { limit: 10,})if (results) { console.log('Semantically similar atoms:', results.length) results.forEach(result => { console.log(`- ${result.label} (similarity: ${result.score})`) })} ### findAtomIds[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#findatomids "Direct link to findAtomIds") Find atom IDs for a batch of atom data strings. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#function-signature-2 "Direct link to Function Signature") function findAtomIds( atomDataArray: string[]): Promise> #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#basic-example-3 "Direct link to Basic Example") import { findAtomIds } from '@0xintuition/sdk'const data = ['TypeScript', 'JavaScript', 'Python', 'Rust', 'Go']const atoms = await findAtomIds(data)atoms.forEach(atom => { if (atom.term_id) { console.log(`Found ${atom.data}: ${atom.term_id}`) } else { console.log(`Missing ${atom.data}: not found`) }}) #### Advanced Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#advanced-example-1 "Direct link to Advanced Example") Check existence before creating: import { findAtomIds, createAtomFromString } from '@0xintuition/sdk'import { parseEther } from 'viem'async function createMissingAtoms(atomData: string[]) { // Find existing atoms const atoms = await findAtomIds(atomData) // Filter missing atoms const missing = atoms.filter(a => !a.term_id) if (missing.length === 0) { console.log('All atoms already exist') return atoms } console.log(`Creating ${missing.length} missing atoms...`) // Create missing atoms for (const atom of missing) { const created = await createAtomFromString( config, atom.data, parseEther('0.01') ) atom.term_id = created.state.termId console.log(`Created: ${atom.data}`) } return atoms}// Usageconst atomData = ['developer', 'blockchain', 'web3']const atoms = await createMissingAtoms(atomData) ### findTripleIds[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#findtripleids "Direct link to findTripleIds") Find triple IDs for specific atom combinations. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#function-signature-3 "Direct link to Function Signature") function findTripleIds( walletAddress: Address, tripleCombinations: Array<[Hex, Hex, Hex]>): Promise> #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#basic-example-4 "Direct link to Basic Example") import { findTripleIds } from '@0xintuition/sdk'const combinations = [ ['0xsubject1', '0xpredicate1', '0xobject1'], ['0xsubject2', '0xpredicate2', '0xobject2'],]const triples = await findTripleIds( walletClient.account.address, combinations)triples.forEach(triple => { if (triple.term_id) { console.log('Found triple:', triple.term_id) console.log(' Positions:', triple.positions?.length || 0) } else { console.log('Triple does not exist') }}) #### Advanced Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#advanced-example-2 "Direct link to Advanced Example") Check and create triples: import { findTripleIds, createTripleStatement, calculateTripleId,} from '@0xintuition/sdk'import { parseEther } from 'viem'async function ensureTriples( combinations: Array<[Hex, Hex, Hex]>) { // Check which triples exist const found = await findTripleIds( walletClient.account.address, combinations ) // Create missing triples for (let i = 0; i < combinations.length; i++) { const [subject, predicate, object] = combinations[i] if (!found[i]?.term_id) { console.log(`Creating triple: ${subject.slice(0, 10)}...`) await createTripleStatement(config, { args: [ [subject], [predicate], [object], [parseEther('0.1')], ], value: parseEther('0.1'), }) console.log('Created') } else { console.log('Already exists:', found[i].term_id) } }} ### Batch Processing[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#batch-processing "Direct link to Batch Processing") Process large datasets efficiently: import { findAtomIds } from '@0xintuition/sdk'async function processInBatches( items: T[], batchSize: number, processor: (batch: T[]) => Promise) { for (let i = 0; i < items.length; i += batchSize) { const batch = items.slice(i, i + batchSize) await processor(batch) }}// Usageconst allData = ['atom1', 'atom2', /* ... hundreds more */]await processInBatches(allData, 100, async (batch) => { const atoms = await findAtomIds(batch) console.log(`Processed ${atoms.length} atoms`)}) * * * Complete Examples[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#complete-examples "Direct link to Complete Examples") ---------------------------------------------------------------------------------------------------------------------------------------------- See working examples in the SDK Examples section Next Steps[​](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------- * [Working with Atoms](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide) - Create and manage atoms * [Working with Triples](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide) - Build relationships * [SDK Integrations](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react) - Use with React * [Table of Contents](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#table-of-contents) * [Global Search](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#global-search) * [Function Signature](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#function-signature) * [Parameters](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#parameters) * [GlobalSearchOptions](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#globalsearchoptions) * [Basic Example](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#basic-example) * [Advanced Example](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#advanced-example) * [Common Use Cases](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#common-use-cases) * [Return Type](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#return-type) * [Error Handling](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#error-handling) * [Searching Atoms](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#searching-atoms) * [Using Global Search](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#using-global-search) * [Using findAtomIds](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#using-findatomids) * [Searching Triples](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#searching-triples) * [Using Global Search](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#using-global-search-1) * [Using findTripleIds](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#using-findtripleids) * [Advanced Queries](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#advanced-queries) * [semanticSearch](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#semanticsearch) * [findAtomIds](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#findatomids) * [findTripleIds](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#findtripleids) * [Batch Processing](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#batch-processing) * [Complete Examples](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#complete-examples) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide#next-steps) --- # SDK Migration V1 to V2 | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#__docusaurus_skipToContent_fallback) On this page This guide helps you migrate your code from v1.x to v2.0.0-alpha of the Intuition TypeScript packages. This is a **major version update** with significant breaking changes due to the underlying contract migration from `EthMultiVault` to `MultiVault`. Contract Migration Overview[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#contract-migration-overview "Direct link to Contract Migration Overview") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The core smart contract has been upgraded from `EthMultiVault` to `MultiVault`, introducing significant architectural changes that impact all TypeScript libraries built on top. ### Key Contract Changes[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#key-contract-changes "Direct link to Key Contract Changes") #### 1\. **ID System Migration**[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#1-id-system-migration "Direct link to 1-id-system-migration") * **EthMultiVault**: Uses `uint256` for atom/triple IDs * **MultiVault**: Uses `bytes32` for term IDs (atoms and triples are now "terms") #### 2\. **Terminology Changes**[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#2-terminology-changes "Direct link to 2-terminology-changes") * **EthMultiVault**: Atoms and Triples as separate entities * **MultiVault**: Unified "Terms" concept (atoms and triples are both terms) * **EthMultiVault**: Vault IDs * **MultiVault**: Term IDs with Curve IDs for bonding curves #### 3\. **Bonding Curve Integration**[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#3-bonding-curve-integration "Direct link to 3-bonding-curve-integration") * **EthMultiVault**: Limited bonding curve support * **MultiVault**: Full bonding curve integration with curve IDs for all operations Breaking Changes Overview[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#breaking-changes-overview "Direct link to Breaking Changes Overview") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Package Version Updates[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#package-version-updates "Direct link to Package Version Updates") | Package | Previous Version | New Version | | --- | --- | --- | | `@0xintuition/protocol` | `1.0.0-alpha.1` | `2.0.0` | | `@0xintuition/sdk` | `1.0.0-alpha.3` | `2.0.0` | | `@0xintuition/graphql` | `1.0.0-alpha.3` | `2.0.0` | | `@0xintuition/cli` | `0.0.2` | `2.0.0` | 1\. Contract Migration Impact[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#1-contract-migration-impact "Direct link to 1. Contract Migration Impact") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Contract Function Mapping[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#contract-function-mapping "Direct link to Contract Function Mapping") The migration from `EthMultiVault` to `MultiVault` requires updating all contract interactions. Here's the complete function mapping: #### Core Creation Functions[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#core-creation-functions "Direct link to Core Creation Functions") ##### Atom Creation[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#atom-creation "Direct link to Atom Creation") // EthMultiVaultfunction createAtom(bytes atomUri) payable returns (uint256)function batchCreateAtom(bytes[] atomUris) payable returns (uint256[])// MultiVaultfunction createAtoms(bytes[] data, uint256[] assets) payable returns (bytes32[]) ##### Triple Creation[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#triple-creation "Direct link to Triple Creation") // EthMultiVaultfunction createTriple(uint256 subjectId, uint256 predicateId, uint256 objectId) payable returns (uint256)function batchCreateTriple(uint256[] subjectIds, uint256[] predicateIds, uint256[] objectIds) payable returns (uint256[])// MultiVaultfunction createTriples(bytes32[] subjectIds, bytes32[] predicateIds, bytes32[] objectIds, uint256[] assets) payable returns (bytes32[]) #### Deposit Functions[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#deposit-functions "Direct link to Deposit Functions") ##### EthMultiVault[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#ethmultivault "Direct link to EthMultiVault") function depositAtom(address receiver, uint256 id) payable returns (uint256)function depositTriple(address receiver, uint256 id) payable returns (uint256)function batchDeposit(address receiver, uint256[] termIds, uint256[] amounts) payable returns (uint256[]) ##### MultiVault[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#multivault "Direct link to MultiVault") function deposit(address receiver, bytes32 termId, uint256 curveId, uint256 minShares) payable returns (uint256)function depositBatch(address receiver, bytes32[] termIds, uint256[] curveIds, uint256[] assets, uint256[] minShares) payable returns (uint256[]) #### Redeem Functions[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#redeem-functions "Direct link to Redeem Functions") ##### EthMultiVault[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#ethmultivault-1 "Direct link to EthMultiVault") function redeemAtom(uint256 shares, address receiver, uint256 id) returns (uint256)function redeemTriple(uint256 shares, address receiver, uint256 id) returns (uint256)function batchRedeem(uint256 percentage, address receiver, uint256[] ids) returns (uint256[]) ##### MultiVault[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#multivault-1 "Direct link to MultiVault") function redeem(address receiver, bytes32 termId, uint256 curveId, uint256 shares, uint256 minAssets) returns (uint256)function redeemBatch(address receiver, bytes32[] termIds, uint256[] curveIds, uint256[] shares, uint256[] minAssets) returns (uint256[]) ### Contract Address Changes: `EthMultiVault` β†’ `MultiVault`[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#contract-address-changes-ethmultivault--multivault "Direct link to contract-address-changes-ethmultivault--multivault") **Before:** import { EthMultiVaultAbi } from '@0xintuition/protocol'import { getEthMultiVaultAddress } from '@0xintuition/sdk'const address = getEthMultiVaultAddress(chainId) **After:** import { intuitionTestnet, MultiVaultAbi } from '@0xintuition/protocol'import { getMultiVaultAddressFromChainId } from '@0xintuition/sdk'const address = getMultiVaultAddressFromChainId(intuitionTestnet.id) ### Contract Event Changes[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#contract-event-changes "Direct link to Contract Event Changes") #### EthMultiVault Events[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#ethmultivault-events "Direct link to EthMultiVault Events") event AtomCreated(address indexed creator, address indexed atomWallet, bytes atomData, uint256 vaultId)event TripleCreated(address indexed creator, uint256 subjectId, uint256 predicateId, uint256 objectId, uint256 vaultId) #### MultiVault Events[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#multivault-events "Direct link to MultiVault Events") event AtomCreated(address indexed creator, bytes32 indexed termId, bytes atomData, address atomWallet)event TripleCreated(address indexed creator, bytes32 indexed termId, bytes32 subjectId, bytes32 predicateId, bytes32 objectId) ### Data Structure Migration[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#data-structure-migration "Direct link to Data Structure Migration") #### ID Handling Update[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#id-handling-update "Direct link to ID Handling Update") // Before (EthMultiVault)const atomId: bigint = 123n;const tripleId: bigint = 456n;// After (MultiVault)const atomId: `0x${string}` = "0x1234..."; // 32-byte hashconst tripleId: `0x${string}` = "0x5678..."; // 32-byte hash #### Query Functions[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#query-functions "Direct link to Query Functions") // EthMultiVaultfunction atoms(uint256 atomId) view returns (bytes)function getTripleAtoms(uint256 id) view returns (uint256, uint256, uint256)// MultiVaultfunction atom(bytes32 atomId) view returns (bytes)function getAtom(bytes32 atomId) view returns (bytes)function triple(bytes32 tripleId) view returns (bytes32, bytes32, bytes32)function getTriple(bytes32 tripleId) view returns (bytes32, bytes32, bytes32) #### Share and Asset Conversions[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#share-and-asset-conversions "Direct link to Share and Asset Conversions") // EthMultiVaultfunction convertToShares(uint256 assets, uint256 id) view returns (uint256)function convertToAssets(uint256 shares, uint256 id) view returns (uint256)// MultiVaultfunction convertToShares(bytes32 termId, uint256 curveId, uint256 assets) view returns (uint256)function convertToAssets(bytes32 termId, uint256 curveId, uint256 shares) view returns (uint256) ### New MultiVault Features[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#new-multivault-features "Direct link to New MultiVault Features") #### 1\. **Utilization Tracking**[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#1-utilization-tracking "Direct link to 1-utilization-tracking") const userUtilization = await multiVault.getUserUtilizationForEpoch( userAddress, epoch,)const totalUtilization = await multiVault.getTotalUtilizationForEpoch(epoch) #### 2\. **Epoch System**[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#2-epoch-system "Direct link to 2-epoch-system") const currentEpoch = await multiVault.currentEpoch()const lastActiveEpoch = await multiVault.lastActiveEpoch(userAddress) #### 3\. **Enhanced Fee Management**[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#3-enhanced-fee-management "Direct link to 3-enhanced-fee-management") // Atom wallet deposit feesconst accumulatedFees = await multiVault.accumulatedAtomWalletDepositFees(atomWallet)await multiVault.claimAtomWalletDepositFees(termId)// Protocol fees by epochconst protocolFees = await multiVault.accumulatedProtocolFees(epoch) #### 4\. **Improved Preview Functions**[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#4-improved-preview-functions "Direct link to 4-improved-preview-functions") // Preview with different scenariosconst [shares, assetsAfterFees] = await multiVault.previewDeposit(termId, curveId, assets);const [shares, assetsAfterFixedFees, assetsAfterFees] = await multiVault.previewAtomCreate(termId, curveId, assets); 2\. TypeScript Library Changes[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#2-typescript-library-changes "Direct link to 2. TypeScript Library Changes") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Protocol Package (`@0xintuition/protocol`)[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#protocol-package-0xintuitionprotocol "Direct link to protocol-package-0xintuitionprotocol") #### Atom Creation: Singular β†’ Plural[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#atom-creation-singular--plural "Direct link to Atom Creation: Singular β†’ Plural") **Before:** import { createAtom, createAtomCalculateBaseCost, createAtomEncode,} from '@0xintuition/protocol'// Single atom creationawait createAtom(config, { args: [atomUri], value })// Encodingconst encodedData = createAtomEncode(atomUri)// Cost calculationconst cost = await createAtomCalculateBaseCost(config) **After:** import { createAtoms, createAtomsEncode, getAtomCost,} from '@0xintuition/protocol'// Atoms creation (supports single or multiple)await createAtoms(config, { args: [ [atomUri1, atomUri2], [assets1, assets2], ], value,})// Encodingconst encodedData = createAtomsEncode([atomUri1, atomUri2], [assets1, assets2])// Cost calculationconst cost = await getAtomCost(config) #### Triple Creation: Singular β†’ Plural[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#triple-creation-singular--plural "Direct link to Triple Creation: Singular β†’ Plural") **Before:** import { createTriple, createTripleCalculateBaseCost, createTripleEncode,} from '@0xintuition/protocol'await createTriple(config, { args: [subjectId, predicateId, objectId], value,})const encodedData = createTripleEncode(subjectId, predicateId, objectId)const cost = await createTripleCalculateBaseCost(config) **After:** import { createTriples, createTriplesEncode, getTripleCost,} from '@0xintuition/protocol'await createTriples(config, { args: [ [subjectId1, subjectId2], [predicateId1, predicateId2], [objectId1, objectId2], [assets1, assets2], ], value,})const encodedData = createTriplesEncode( [subjectId1, subjectId2], [predicateId1, predicateId2], [objectId1, objectId2], [assets1, assets2],)const cost = await getTripleCost(config) #### Deposit and Redeem Simplification[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#deposit-and-redeem-simplification "Direct link to Deposit and Redeem Simplification") **Before:** import { depositAtom, depositAtomEncode, depositTriple, depositTripleEncode, redeemAtom, redeemAtomEncode, redeemTriple, redeemTripleEncode,} from '@0xintuition/protocol'// Separate functions for atoms and triplesawait depositAtom(config, { args: [receiver, atomId], value })await depositTriple(config, { args: [receiver, tripleId], value })await redeemAtom(config, { args: [shares, receiver, atomId] })await redeemTriple(config, { args: [shares, receiver, tripleId] }) **After:** import { deposit, depositEncode, redeem, redeemEncode,} from '@0xintuition/protocol'// Unified functions for any vault (atom or triple)await deposit(config, { args: [receiver, termId, curveId, assets, minShares], value,})await redeem(config, { args: [receiver, termId, cirveId, shares, minAssets] })// Unified encodingconst depositData = depositEncode(receiver, vaultId)const redeemData = redeemEncode(shares, receiver, vaultId) #### Batch Operations Renamed[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#batch-operations-renamed "Direct link to Batch Operations Renamed") **Before:** import { batchCreateAtom, batchCreateTriple, batchDepositCurve, batchRedeemCurve,} from '@0xintuition/protocol' **After:** import { createAtoms, // Replaces batchCreateAtom createTriples, // Replaces batchCreateTriple depositBatch, // Replaces batchDepositCurve redeemBatch, // Replaces batchRedeemCurve} from '@0xintuition/protocol' #### Multicall Function Name[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#multicall-function-name "Direct link to Multicall Function Name") **Before:** import { multiCallIntuitionConfigs } from '@0xintuition/protocol'const config = await multiCallIntuitionConfigs({ address, publicClient }) **After:** import { multicallIntuitionConfig } from '@0xintuition/protocol'const config = await multicallIntuitionConfig({ address, publicClient }) #### Removed EthMultiVault API[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#removed-ethmultivault-api "Direct link to Removed EthMultiVault API") **Before:** import { EthMultiVault } from '@0xintuition/protocol'const ethMultiVault = new EthMultiVault({ publicClient, walletClient })const result = await ethMultiVault.createAtom('hello') **After:** import { getMultiVaultAddressFromChainId, intuitionTestnet, MultiVaultAbi,} from '@0xintuition/protocol'import { getContract } from 'viem'const multiVault = getContract({ abi: MultiVaultAbi, address: getMultiVaultAddressFromChainId(intuitionTestnet.id), client: { public: publicClient, wallet: walletClient, },})const atomCost = await multiVault.read.getAtomCost()const result = await multiVault.createAtoms([['hello'], [atomCost]], { value: atomCost,}) ### Bonding Curve Integration[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#bonding-curve-integration "Direct link to Bonding Curve Integration") The new `MultiVault` contract requires curve IDs for all operations: // MultiVault requires curve ID for all operationsconst defaultCurveId = await multiVault.getBondingCurveConfig().defaultCurveId// Use in all deposit/redeem operationsawait multiVault.deposit(receiver, termId, defaultCurveId, minShares, { value: assets,}) ### Migration Steps[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#migration-steps "Direct link to Migration Steps") #### Step 1: Update Function Calls[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#step-1-update-function-calls "Direct link to Step 1: Update Function Calls") ##### Creating Atoms[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#creating-atoms "Direct link to Creating Atoms") // Beforeconst atomId = await ethMultiVault.createAtom(atomData, { value: fee });// Afterconst atomIds = await multiVault.createAtoms([atomData], [assets], { value: totalValue });const atomId = atomIds[0]; ##### Depositing[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#depositing "Direct link to Depositing") // Beforeconst shares = await ethMultiVault.depositAtom(receiver, atomId, { value: assets });// Afterconst shares = await multiVault.deposit(receiver, termId, curveId, minShares, { value: assets }); ##### Redeeming[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#redeeming "Direct link to Redeeming") // Beforeconst assets = await ethMultiVault.redeemAtom(shares, receiver, atomId);// Afterconst assets = await multiVault.redeem(receiver, termId, curveId, shares, minAssets); 3\. SDK Package Changes (`@0xintuition/sdk`)[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#3-sdk-package-changes-0xintuitionsdk "Direct link to 3-sdk-package-changes-0xintuitionsdk") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### API Function Renaming[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#api-function-renaming "Direct link to API Function Renaming") **Before:** import { getAtom, getTriple } from '@0xintuition/sdk'const atomData = await getAtom('124862')const tripleData = await getTriple('54670') **After:** import { getAtomDetails, getTripleDetails } from '@0xintuition/sdk'const atomData = await getAtomDetails( '0x57d94c116a33bb460428eced262b7ae2ec6f865e7aceef6357cec3d034e8ea21',)const tripleData = await getTripleDetails( '0x4957d3f442acc301ad71e73f26efd6af78647f57dacf2b3a686d91fa773fe0b6',) ### Triple Creation Parameter Changes[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#triple-creation-parameter-changes "Direct link to Triple Creation Parameter Changes") **Before:** import { createTripleStatement } from '@0xintuition/sdk'const triple = await createTripleStatement(config, { args: [subjectVaultId, predicateVaultId, objectVaultId], depositAmount: 1000000000000000000n, // Optional}) **After:** import { createTripleStatement } from '@0xintuition/sdk'const triple = await createTripleStatement(config, { args: [ [subjectVaultId], [predicateVaultId], [objectVaultId], [1000000000000000000n], ], value: 1000000000000000000n, // Required}) 4\. Configuration Changes[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#4-configuration-changes "Direct link to 4. Configuration Changes") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### EthMultiVault Config[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#ethmultivault-config "Direct link to EthMultiVault Config") struct GeneralConfig { address admin; address protocolMultisig; uint256 feeDenominator; uint256 minDeposit; uint256 minShare; uint256 atomUriMaxLength; uint256 decimalPrecision; uint256 minDelay;} ### MultiVault Config[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#multivault-config "Direct link to MultiVault Config") struct GeneralConfig { address admin; address protocolMultisig; uint256 feeDenominator; address trustBonding; // New uint256 minDeposit; uint256 minShare; uint256 atomDataMaxLength; // Renamed uint256 decimalPrecision; // minDelay removed} 5\. Removed Functions[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#5-removed-functions "Direct link to 5. Removed Functions") ---------------------------------------------------------------------------------------------------------------------------------------------------------- The following functions have been removed and replaced: ### Protocol Package[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#protocol-package "Direct link to Protocol Package") * `createAtom` β†’ `createAtoms` * `createTriple` β†’ `createTriples` * `batchCreateAtom` β†’ `createAtoms` * `batchCreateTriple` β†’ `createTriples` * `depositAtom` / `depositTriple` β†’ `deposit` * `redeemAtom` / `redeemTriple` β†’ `redeem` * `createAtomCalculateBaseCost` β†’ `getAtomCost` * `createTripleCalculateBaseCost` β†’ `getTripleCost` * All curve-specific functions β†’ `depositBatch` / `redeemBatch` * `atoms-by-hash.ts` file completely removed ### SDK Package[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#sdk-package "Direct link to SDK Package") * `createThing` β†’ `createAtomFromThing` * `createEthereumAccount` β†’ `createAtomFromEthereumAccount` * `getEthMultiVaultAddress` β†’ `getMultiVaultAddressFromChainId` * `getAtom` β†’ `getAtomDetails` * `getTriple` β†’ `getTripleDetails` 6\. Breaking Changes Summary[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#6-breaking-changes-summary "Direct link to 6. Breaking Changes Summary") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1. **All IDs changed from `uint256` to `bytes32`** 2. **Curve ID parameter required for most operations** 3. **Batch functions have different signatures** 4. **Event structures updated** 5. **Some functions renamed or merged** 6. **New slippage protection with `minShares`/`minAssets` parameters** 7\. Best Practices[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#7-best-practices "Direct link to 7. Best Practices") ------------------------------------------------------------------------------------------------------------------------------------------------- 1. **Always use the default curve ID** unless you have specific bonding curve requirements 2. **Implement proper slippage protection** with min/max parameters 3. **Handle the new epoch system** for utilization tracking 4. **Update your event listeners** to match new event structures 5. **Use preview functions** to estimate outcomes before transactions πŸ“ Summary[​](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#-summary "Direct link to πŸ“ Summary") -------------------------------------------------------------------------------------------------------------------------- This major version update consolidates and simplifies the API while adding new functionality. The main changes are: * **Contract Migration**: `EthMultiVault` β†’ `MultiVault` with architectural improvements * **ID System**: Changed from `uint256` to `bytes32` for all term identifiers * **Bonding Curves**: Full integration requiring curve IDs for all operations * **Singular β†’ Plural**: Functions now support batch operations by default * **Unified APIs**: Simplified deposit/redeem functions for all vault types * **Enhanced Features**: New utilization tracking, epoch system, and preview functions * **Event Updates**: Improved event parsing with new event structures Take your time with the migration and test thoroughly. The new API is more powerful and consistent, providing a better developer experience. * [Contract Migration Overview](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#contract-migration-overview) * [Key Contract Changes](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#key-contract-changes) * [Breaking Changes Overview](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#breaking-changes-overview) * [Package Version Updates](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#package-version-updates) * [1\. Contract Migration Impact](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#1-contract-migration-impact) * [Contract Function Mapping](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#contract-function-mapping) * [Contract Address Changes: `EthMultiVault` β†’ `MultiVault`](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#contract-address-changes-ethmultivault--multivault) * [Contract Event Changes](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#contract-event-changes) * [Data Structure Migration](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#data-structure-migration) * [New MultiVault Features](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#new-multivault-features) * [2\. TypeScript Library Changes](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#2-typescript-library-changes) * [Protocol Package (`@0xintuition/protocol`)](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#protocol-package-0xintuitionprotocol) * [Bonding Curve Integration](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#bonding-curve-integration) * [Migration Steps](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#migration-steps) * [3\. SDK Package Changes (`@0xintuition/sdk`)](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#3-sdk-package-changes-0xintuitionsdk) * [API Function Renaming](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#api-function-renaming) * [Triple Creation Parameter Changes](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#triple-creation-parameter-changes) * [4\. Configuration Changes](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#4-configuration-changes) * [EthMultiVault Config](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#ethmultivault-config) * [MultiVault Config](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#multivault-config) * [5\. Removed Functions](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#5-removed-functions) * [Protocol Package](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#protocol-package) * [SDK Package](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#sdk-package) * [6\. Breaking Changes Summary](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#6-breaking-changes-summary) * [7\. Best Practices](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#7-best-practices) * [πŸ“ Summary](https://www.docs.intuition.systems/docs/intuition-sdk/migration-guide#-summary) --- # Working with Primitives | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#__docusaurus_skipToContent_fallback) On this page This guide shows how to create and interact with atoms, triples, and vaults using the Protocol package (low-level contract interactions). **For conceptual understanding:** [Primitives Overview](https://www.docs.intuition.systems/docs/intuition-concepts/primitives) Creating Atoms[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#creating-atoms "Direct link to Creating Atoms") ------------------------------------------------------------------------------------------------------------------------------------------- Atoms are unique identifiers for any entity. Here's how to create them with the Protocol package: import { multiVaultCreateAtoms } from '@0xintuition/protocol'import { createPublicClient, createWalletClient, http } from 'viem'// Setup clientsconst publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),})const walletClient = createWalletClient({ chain: intuitionTestnet, transport: http(), account: yourAccount,})// Create an atom from a stringconst atomData = { value: 'TypeScript',}const tx = await multiVaultCreateAtoms({ publicClient, walletClient, atoms: [atomData],})console.log('Atom created:', tx.atomIds[0]) **See also:** [Atoms Concept](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals) Creating Triples[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#creating-triples "Direct link to Creating Triples") ------------------------------------------------------------------------------------------------------------------------------------------------- Triples connect three atoms to create structured claims: import { multiVaultCreateTriples } from '@0xintuition/protocol'// Create a triple: [Alice] - [knows] - [Bob]const tripleData = { subjectId: aliceAtomId, predicateId: knowsAtomId, objectId: bobAtomId,}const tx = await multiVaultCreateTriples({ publicClient, walletClient, triples: [tripleData],})console.log('Triple created:', tx.tripleIds[0]) **See also:** [Triples Concept](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) Vault Operations[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#vault-operations "Direct link to Vault Operations") ------------------------------------------------------------------------------------------------------------------------------------------------- Every atom and triple has an associated vault for staking: ### Depositing (Signaling Support)[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#depositing-signaling-support "Direct link to Depositing (Signaling Support)") import { multiVaultDeposit } from '@0xintuition/protocol'// Deposit into an atom's vaultconst depositTx = await multiVaultDeposit({ publicClient, walletClient, vaultId: atomVaultId, amount: parseEther('1.0'), // 1 TRUST token})console.log('Deposited into vault:', depositTx.shares) ### Redeeming (Withdrawing)[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#redeeming-withdrawing "Direct link to Redeeming (Withdrawing)") import { multiVaultRedeem } from '@0xintuition/protocol'// Redeem shares from a vaultconst redeemTx = await multiVaultRedeem({ publicClient, walletClient, vaultId: atomVaultId, shares: sharesAmount,})console.log('Redeemed assets:', redeemTx.assets) ### Querying Vault Details[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#querying-vault-details "Direct link to Querying Vault Details") import { getVaultDetails } from '@0xintuition/protocol'const vaultDetails = await getVaultDetails({ publicClient, vaultId: atomVaultId,})console.log('Total assets:', vaultDetails.totalAssets)console.log('Total shares:', vaultDetails.totalShares)console.log('Share price:', vaultDetails.currentSharePrice) **See also:** [Signals Concept](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) Batch Operations[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#batch-operations "Direct link to Batch Operations") ------------------------------------------------------------------------------------------------------------------------------------------------- Create multiple atoms or triples in a single transaction: // Batch create atomsconst atoms = [ { value: 'TypeScript' }, { value: 'React' }, { value: 'Solidity' },]const batchTx = await multiVaultCreateAtoms({ publicClient, walletClient, atoms,})console.log('Created atom IDs:', batchTx.atomIds) Counter-Triples[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#counter-triples "Direct link to Counter-Triples") ---------------------------------------------------------------------------------------------------------------------------------------------- Create opposing claims (for/against): // Original claimconst claim = { subjectId: contractAtomId, predicateId: isSafeAtomId, objectId: trueAtomId,}// Counter-claim (opposing)const counterClaim = { subjectId: contractAtomId, predicateId: isSafeAtomId, objectId: falseAtomId,} Events[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#events "Direct link to Events") ------------------------------------------------------------------------------------------------------------------- Listen for primitive creation events: import { parseAtomCreatedEvent, parseTripleCreatedEvent } from '@0xintuition/protocol'// Watch for atom creationpublicClient.watchContractEvent({ address: multiVaultAddress, abi: multiVaultAbi, eventName: 'AtomCreated', onLogs: (logs) => { logs.forEach((log) => { const event = parseAtomCreatedEvent(log) console.log('New atom:', event.atomId, event.data) }) },}) Examples[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#examples "Direct link to Examples") ------------------------------------------------------------------------------------------------------------------------- See complete examples: * [Protocol Examples](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples) SDK Alternative[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#sdk-alternative "Direct link to SDK Alternative") ---------------------------------------------------------------------------------------------------------------------------------------------- For a higher-level API with React hooks, see: * [SDK Atoms Guide](https://www.docs.intuition.systems/docs/intuition-sdk/atoms-guide) * [SDK Triples Guide](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide) * [SDK Vaults Guide](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide) API Reference[​](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#api-reference "Direct link to API Reference") ---------------------------------------------------------------------------------------------------------------------------------------- Full API documentation: * [MultiVault API Reference](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms) * [Creating Atoms](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#creating-atoms) * [Creating Triples](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#creating-triples) * [Vault Operations](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#vault-operations) * [Depositing (Signaling Support)](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#depositing-signaling-support) * [Redeeming (Withdrawing)](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#redeeming-withdrawing) * [Querying Vault Details](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#querying-vault-details) * [Batch Operations](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#batch-operations) * [Counter-Triples](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#counter-triples) * [Events](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#events) * [Examples](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#examples) * [SDK Alternative](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#sdk-alternative) * [API Reference](https://www.docs.intuition.systems/docs/protocol/working-with-primitives#api-reference) --- # Epoch Management | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#__docusaurus_skipToContent_fallback) On this page Functions for managing and querying epoch information in the Trust Bonding contract. trustBondingCurrentEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingcurrentepoch "Direct link to trustBondingCurrentEpoch") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Get the current epoch number. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns "Direct link to Returns") Promise // Current epoch number ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example "Direct link to Example") import { trustBondingCurrentEpoch, getContractAddressFromChainId } from '@0xintuition/protocol'const bondingAddress = getContractAddressFromChainId('TrustBonding', chainId)const epoch = await trustBondingCurrentEpoch({ address: bondingAddress, publicClient })console.log('Current epoch:', epoch) * * * trustBondingPreviousEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingpreviousepoch "Direct link to trustBondingPreviousEpoch") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get the previous epoch number. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns-1 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example-1 "Direct link to Example") import { trustBondingPreviousEpoch } from '@0xintuition/protocol'const prevEpoch = await trustBondingPreviousEpoch({ address: bondingAddress, publicClient })console.log('Previous epoch:', prevEpoch) * * * trustBondingEpochAtTimestamp[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingepochattimestamp "Direct link to trustBondingEpochAtTimestamp") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Get the epoch number for a specific timestamp. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bigint]` | Unix timestamp | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns-2 "Direct link to Returns") Promise // Epoch number at timestamp ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example-2 "Direct link to Example") import { trustBondingEpochAtTimestamp } from '@0xintuition/protocol'const timestamp = BigInt(Math.floor(Date.now() / 1000))const epoch = await trustBondingEpochAtTimestamp( { address: bondingAddress, publicClient }, { args: [timestamp] })console.log('Epoch at timestamp:', epoch) * * * trustBondingEpochTimestampEnd[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingepochtimestampend "Direct link to trustBondingEpochTimestampEnd") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get the end timestamp for an epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bigint]` | Epoch number | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns-3 "Direct link to Returns") Promise // Epoch end timestamp ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example-3 "Direct link to Example") import { trustBondingEpochTimestampEnd } from '@0xintuition/protocol'const endTime = await trustBondingEpochTimestampEnd( { address: bondingAddress, publicClient }, { args: [epochNumber] })const endDate = new Date(Number(endTime) * 1000)console.log('Epoch ends:', endDate.toISOString()) * * * trustBondingEpochLength[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingepochlength "Direct link to trustBondingEpochLength") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get the length of an epoch in seconds. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns-4 "Direct link to Returns") Promise // Epoch duration in seconds ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example-4 "Direct link to Example") import { trustBondingEpochLength } from '@0xintuition/protocol'const length = await trustBondingEpochLength({ address: bondingAddress, publicClient })console.log('Epoch length:', length, 'seconds')console.log('In days:', Number(length) / 86400) * * * trustBondingEpochsPerYear[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingepochsperyear "Direct link to trustBondingEpochsPerYear") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get the number of epochs per year. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns-5 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example-5 "Direct link to Example") import { trustBondingEpochsPerYear } from '@0xintuition/protocol'const epochsPerYear = await trustBondingEpochsPerYear({ address: bondingAddress, publicClient })console.log('Epochs per year:', epochsPerYear) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#see-also "Direct link to See Also") ------------------------------------------------------------------------------------------------------------------------------------ * [Core Concepts: Epochs](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs) * [Trust Bonding Rewards](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards) * [trustBondingCurrentEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingcurrentepoch) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example) * [trustBondingPreviousEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingpreviousepoch) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example-1) * [trustBondingEpochAtTimestamp](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingepochattimestamp) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns-2) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example-2) * [trustBondingEpochTimestampEnd](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingepochtimestampend) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#parameters-1) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns-3) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example-3) * [trustBondingEpochLength](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingepochlength) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns-4) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example-4) * [trustBondingEpochsPerYear](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#trustbondingepochsperyear) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#returns-5) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#example-5) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs#see-also) --- # Trust Bonding Examples | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding#__docusaurus_skipToContent_fallback) On this page Complete workflows for tracking rewards and utilization in the Trust Bonding system. Example 1: Check Rewards[​](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding#example-1-check-rewards "Direct link to Example 1: Check Rewards") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { trustBondingCurrentEpoch, trustBondingGetUserApy, trustBondingGetUserCurrentClaimableRewards, trustBondingGetUserInfo, getContractAddressFromChainId,} from '@0xintuition/protocol'import { formatEther } from 'viem'const bondingAddress = getContractAddressFromChainId('TrustBonding', chainId)// 1. Get current epochconst currentEpoch = await trustBondingCurrentEpoch({ address: bondingAddress, publicClient,})console.log('Current epoch:', currentEpoch)// 2. Get user APYconst userApy = await trustBondingGetUserApy( { address: bondingAddress, publicClient }, { args: [account.address] })console.log('User APY:', Number(userApy) / 100, '%')// 3. Check claimable rewardsconst claimable = await trustBondingGetUserCurrentClaimableRewards( { address: bondingAddress, publicClient }, { args: [account.address] })console.log('Claimable rewards:', formatEther(claimable))// 4. Get detailed user infoconst userInfo = await trustBondingGetUserInfo( { address: bondingAddress, publicClient }, { args: [account.address] })console.log('User bonding info:', userInfo) Example 2: Track Historical Rewards[​](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding#example-2-track-historical-rewards "Direct link to Example 2: Track Historical Rewards") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { trustBondingGetUserRewardsForEpoch, trustBondingPreviousEpoch,} from '@0xintuition/protocol'const trackRewards = async (numEpochs: number) => { const currentEpoch = await trustBondingCurrentEpoch({ address: bondingAddress, publicClient, }) const rewards = [] for (let i = 0; i < numEpochs; i++) { const epoch = currentEpoch - BigInt(i) const reward = await trustBondingGetUserRewardsForEpoch( { address: bondingAddress, publicClient }, { args: [account.address, epoch] } ) rewards.push({ epoch: epoch.toString(), reward: formatEther(reward), }) } return rewards}const history = await trackRewards(10)console.log('Reward history:', history) Example 3: Monitor Utilization[​](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding#example-3-monitor-utilization "Direct link to Example 3: Monitor Utilization") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultGetUserUtilizationForEpoch, multiVaultGetTotalUtilizationForEpoch,} from '@0xintuition/protocol'const monitorUtilization = async () => { const currentEpoch = await multiVaultCurrentEpoch({ address, publicClient }) // Get user utilization const userUtil = await multiVaultGetUserUtilizationForEpoch( { address, publicClient }, { args: [account.address, currentEpoch] } ) // Get total utilization const totalUtil = await multiVaultGetTotalUtilizationForEpoch( { address, publicClient }, { args: [currentEpoch] } ) // Calculate share const share = (Number(userUtil) / Number(totalUtil) * 100).toFixed(4) console.log('User utilization:', userUtil) console.log('Total utilization:', totalUtil) console.log('User share:', share + '%')}await monitorUtilization() See Also[​](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding#see-also "Direct link to See Also") ------------------------------------------------------------------------------------------------------------------------ * [Trust Bonding Rewards](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards) * [Epoch Management](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs) * [Core Concepts: Epochs](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs) * [Example 1: Check Rewards](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding#example-1-check-rewards) * [Example 2: Track Historical Rewards](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding#example-2-track-historical-rewards) * [Example 3: Monitor Utilization](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding#example-3-monitor-utilization) * [See Also](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding#see-also) --- # Batch Operations | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/examples/batch-operations#__docusaurus_skipToContent_fallback) On this page Complete workflows for performing batch operations to save gas and improve efficiency. Example 1: Batch Create Atoms[​](https://www.docs.intuition.systems/docs/protocol/examples/batch-operations#example-1-batch-create-atoms "Direct link to Example 1: Batch Create Atoms") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultCreateAtoms, multiVaultGetAtomCost, eventParseAtomCreated,} from '@0xintuition/protocol'import { toHex } from 'viem'// Create multiple atoms at onceconst atomNames = [ 'TypeScript', 'React', 'Viem', 'Intuition Protocol', 'Web3',]const atomUris = atomNames.map(name => toHex(name))const atomCost = await multiVaultGetAtomCost({ address, publicClient })const costs = Array(atomNames.length).fill(atomCost)const totalCost = atomCost * BigInt(atomNames.length)console.log(`Creating ${atomNames.length} atoms`)console.log('Total cost:', formatEther(totalCost))const txHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [atomUris, costs], value: totalCost, })// Get all created atom IDsconst events = await eventParseAtomCreated(publicClient, txHash)const atomMapping = atomNames.reduce((map, name, i) => { map[name] = events[i].args.termId return map}, {} as Record)console.log('Created atoms:', atomMapping) Example 2: Batch Deposit to Multiple Vaults[​](https://www.docs.intuition.systems/docs/protocol/examples/batch-operations#example-2-batch-deposit-to-multiple-vaults "Direct link to Example 2: Batch Deposit to Multiple Vaults") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultDepositBatch, eventParseDeposited } from '@0xintuition/protocol'import { parseEther } from 'viem'// Deposit to multiple vaults at onceconst vaults = [ '0x1234...', '0x2345...', '0x3456...', '0x4567...',]const curves = [1, 1, 2, 2] // Mix of curvesconst deposits = [ parseEther('1'), parseEther('0.5'), parseEther('0.75'), parseEther('0.25'),]// Preview each depositconst previews = await Promise.all( vaults.map((vaultId, i) => multiVaultPreviewDeposit( { address, publicClient }, { args: [vaultId, curves[i], deposits[i]] } ) ))// Set minimum shares with 1% slippageconst minShares = previews.map(shares => (shares * 99n) / 100n)const totalValue = deposits.reduce((a, b) => a + b, 0n)console.log('Batch depositing to', vaults.length, 'vaults')console.log('Total value:', formatEther(totalValue))const txHash = await multiVaultDepositBatch( { address, walletClient, publicClient }, { args: [account.address, vaults, curves, deposits, minShares], value: totalValue, })// Parse all deposit eventsconst events = await eventParseDeposited(publicClient, txHash)events.forEach((event, i) => { console.log(`Vault ${i}: ${formatEther(event.args.shares)} shares`)}) Example 3: Batch Create Triples[​](https://www.docs.intuition.systems/docs/protocol/examples/batch-operations#example-3-batch-create-triples "Direct link to Example 3: Batch Create Triples") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultCreateTriples, multiVaultGetTripleCost, eventParseTripleCreated,} from '@0xintuition/protocol'// Create multiple triples representing relationshipsconst relationships = [ { subject: aliceId, predicate: followsId, object: bobId }, { subject: bobId, predicate: followsId, object: charlieId }, { subject: charlieId, predicate: followsId, object: aliceId },]const subjects = relationships.map(r => r.subject)const predicates = relationships.map(r => r.predicate)const objects = relationships.map(r => r.object)const tripleCost = await multiVaultGetTripleCost({ address, publicClient })const deposits = Array(relationships.length).fill(tripleCost)const totalCost = tripleCost * BigInt(relationships.length)const txHash = await multiVaultCreateTriples( { address, walletClient, publicClient }, { args: [subjects, predicates, objects, deposits], value: totalCost, })const events = await eventParseTripleCreated(publicClient, txHash)console.log('Created triple IDs:', events.map(e => e.args.tripleId)) Example 4: Batch Redeem from Multiple Vaults[​](https://www.docs.intuition.systems/docs/protocol/examples/batch-operations#example-4-batch-redeem-from-multiple-vaults "Direct link to Example 4: Batch Redeem from Multiple Vaults") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultRedeemBatch, eventParseRedeemed } from '@0xintuition/protocol'// Get maximum redeemable shares for each vaultconst vaults = ['0x1234...', '0x2345...', '0x3456...']const curves = [1, 1, 2]const maxShares = await Promise.all( vaults.map(vaultId => multiVaultMaxRedeem( { address, publicClient }, { args: [account.address, vaultId] } ) ))// Redeem 50% from each vaultconst sharesToRedeem = maxShares.map(shares => shares / 2n)// Preview redemptionsconst expectedAssets = await Promise.all( vaults.map((vaultId, i) => multiVaultPreviewRedeem( { address, publicClient }, { args: [vaultId, curves[i], sharesToRedeem[i]] } ) ))// Set minimum assets with slippage protectionconst minAssets = expectedAssets.map(assets => (assets * 99n) / 100n)const txHash = await multiVaultRedeemBatch( { address, walletClient, publicClient }, { args: [sharesToRedeem, account.address, vaults, curves, minAssets], })const events = await eventParseRedeemed(publicClient, txHash)events.forEach((event, i) => { console.log(`Vault ${i}: ${formatEther(event.args.assets)} assets received`)}) See Also[​](https://www.docs.intuition.systems/docs/protocol/examples/batch-operations#see-also "Direct link to See Also") --------------------------------------------------------------------------------------------------------------------------- * [Atom Functions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms) * [Vault Operations](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults) * [Triple Functions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples) * [Example 1: Batch Create Atoms](https://www.docs.intuition.systems/docs/protocol/examples/batch-operations#example-1-batch-create-atoms) * [Example 2: Batch Deposit to Multiple Vaults](https://www.docs.intuition.systems/docs/protocol/examples/batch-operations#example-2-batch-deposit-to-multiple-vaults) * [Example 3: Batch Create Triples](https://www.docs.intuition.systems/docs/protocol/examples/batch-operations#example-3-batch-create-triples) * [Example 4: Batch Redeem from Multiple Vaults](https://www.docs.intuition.systems/docs/protocol/examples/batch-operations#example-4-batch-redeem-from-multiple-vaults) * [See Also](https://www.docs.intuition.systems/docs/protocol/examples/batch-operations#see-also) --- # Deposit & Redeem | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem#__docusaurus_skipToContent_fallback) On this page Complete workflows for depositing to and redeeming from vaults. Example 1: Simple Deposit[​](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem#example-1-simple-deposit "Direct link to Example 1: Simple Deposit") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultDeposit, multiVaultPreviewDeposit, multiVaultGetShares, eventParseDeposited,} from '@0xintuition/protocol'import { parseEther, formatEther } from 'viem'const vaultId = '0x1234...' // Atom or triple IDconst curveId = 1 // LinearCurveconst depositAmount = parseEther('1')// 1. Preview depositconst expectedShares = await multiVaultPreviewDeposit( { address, publicClient }, { args: [vaultId, curveId, depositAmount] })console.log('Expected shares:', formatEther(expectedShares))// 2. Execute deposit with slippage protectionconst minShares = (expectedShares * 99n) / 100n // 1% slippageconst txHash = await multiVaultDeposit( { address, walletClient, publicClient }, { args: [account.address, vaultId, curveId, minShares], value: depositAmount, })// 3. Parse deposit eventconst events = await eventParseDeposited(publicClient, txHash)console.log('Actual shares received:', formatEther(events[0].args.shares))// 4. Check total sharesconst totalShares = await multiVaultGetShares( { address, publicClient }, { args: [account.address, vaultId] })console.log('Total shares:', formatEther(totalShares)) Example 2: Batch Deposit[​](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem#example-2-batch-deposit "Direct link to Example 2: Batch Deposit") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ import { multiVaultDepositBatch } from '@0xintuition/protocol'const vaults = [ '0x1234...', '0x2345...', '0x3456...',]const curves = [1, 1, 2] // Mix of LinearCurve and OffsetProgressiveCurveconst deposits = [ parseEther('0.5'), parseEther('1'), parseEther('0.25'),]const minShares = [0n, 0n, 0n] // Accept any amount for simplicityconst totalValue = deposits.reduce((a, b) => a + b, 0n)const txHash = await multiVaultDepositBatch( { address, walletClient, publicClient }, { args: [account.address, vaults, curves, deposits, minShares], value: totalValue, })// Parse all deposit eventsconst events = await eventParseDeposited(publicClient, txHash)events.forEach((event, i) => { console.log(`Vault ${i}: ${formatEther(event.args.shares)} shares`)}) Example 3: Redeem Shares[​](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem#example-3-redeem-shares "Direct link to Example 3: Redeem Shares") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ import { multiVaultRedeem, multiVaultPreviewRedeem, multiVaultMaxRedeem, eventParseRedeemed,} from '@0xintuition/protocol'const vaultId = '0x1234...'const curveId = 1// 1. Check redeemable sharesconst maxShares = await multiVaultMaxRedeem( { address, publicClient }, { args: [account.address, vaultId] })console.log('Max redeemable:', formatEther(maxShares))// 2. Redeem half of sharesconst sharesToRedeem = maxShares / 2n// 3. Preview redemptionconst expectedAssets = await multiVaultPreviewRedeem( { address, publicClient }, { args: [vaultId, curveId, sharesToRedeem] })console.log('Expected assets:', formatEther(expectedAssets))// 4. Execute redemptionconst minAssets = (expectedAssets * 99n) / 100n // 1% slippageconst txHash = await multiVaultRedeem( { address, walletClient, publicClient }, { args: [account.address, vaultId, curveId, sharesToRedeem, minAssets], })// 5. Parse redemption eventconst events = await eventParseRedeemed(publicClient, txHash)console.log('Assets received:', formatEther(events[0].args.assets)) Example 4: Full Cycle - Deposit and Redeem[​](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem#example-4-full-cycle---deposit-and-redeem "Direct link to Example 4: Full Cycle - Deposit and Redeem") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ // Complete deposit/redeem cycleconst performCycle = async () => { const vaultId = '0x1234...' const curveId = 1 const depositAmount = parseEther('1') // Step 1: Deposit console.log('\n--- DEPOSITING ---') const depositTx = await multiVaultDeposit( { address, walletClient, publicClient }, { args: [account.address, vaultId, curveId, 0n], value: depositAmount, } ) const depositEvents = await eventParseDeposited(publicClient, depositTx) const sharesReceived = depositEvents[0].args.shares console.log('Shares received:', formatEther(sharesReceived)) // Step 2: Wait (simulate time passing) console.log('\n--- WAITING ---') await new Promise(resolve => setTimeout(resolve, 60000)) // 1 minute // Step 3: Check current value const currentValue = await multiVaultPreviewRedeem( { address, publicClient }, { args: [vaultId, curveId, sharesReceived] } ) console.log('Current value:', formatEther(currentValue)) // Step 4: Redeem console.log('\n--- REDEEMING ---') const redeemTx = await multiVaultRedeem( { address, walletClient, publicClient }, { args: [account.address, vaultId, curveId, sharesReceived, 0n], } ) const redeemEvents = await eventParseRedeemed(publicClient, redeemTx) const assetsReceived = redeemEvents[0].args.assets console.log('Assets received:', formatEther(assetsReceived)) // Calculate P&L const profitLoss = assetsReceived - depositAmount console.log('\n--- RESULTS ---') console.log('Profit/Loss:', formatEther(profitLoss)) console.log('Return:', ((Number(assetsReceived) / Number(depositAmount) - 1) * 100).toFixed(2) + '%')}await performCycle() See Also[​](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem#see-also "Direct link to See Also") ------------------------------------------------------------------------------------------------------------------------- * [Vault Operations](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults) * [Share Conversions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions) * [Core Concepts: Vaults](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults) * [Example 1: Simple Deposit](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem#example-1-simple-deposit) * [Example 2: Batch Deposit](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem#example-2-batch-deposit) * [Example 3: Redeem Shares](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem#example-3-redeem-shares) * [Example 4: Full Cycle - Deposit and Redeem](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem#example-4-full-cycle---deposit-and-redeem) * [See Also](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem#see-also) --- # Reward Calculations | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#__docusaurus_skipToContent_fallback) On this page Functions for calculating and querying bonding rewards. trustBondingGetUserApy[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetuserapy "Direct link to trustBondingGetUserApy") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get user's annual percentage yield (APY). ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address]` | User address | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns "Direct link to Returns") Promise // User APY (basis points) ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example "Direct link to Example") import { trustBondingGetUserApy } from '@0xintuition/protocol'const userApy = await trustBondingGetUserApy( { address: bondingAddress, publicClient }, { args: [userAddress] })console.log('User APY:', Number(userApy) / 100, '%') * * * trustBondingGetSystemApy[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetsystemapy "Direct link to trustBondingGetSystemApy") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get system-wide APY. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-1 "Direct link to Returns") Promise // System APY (basis points) ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-1 "Direct link to Example") import { trustBondingGetSystemApy } from '@0xintuition/protocol'const systemApy = await trustBondingGetSystemApy({ address: bondingAddress, publicClient })console.log('System APY:', Number(systemApy) / 100, '%') * * * trustBondingGetUserCurrentClaimableRewards[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetusercurrentclaimablerewards "Direct link to trustBondingGetUserCurrentClaimableRewards") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get user's currently claimable rewards. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address]` | User address | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-2 "Direct link to Returns") Promise // Claimable rewards amount ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-2 "Direct link to Example") import { trustBondingGetUserCurrentClaimableRewards } from '@0xintuition/protocol'import { formatEther } from 'viem'const rewards = await trustBondingGetUserCurrentClaimableRewards( { address: bondingAddress, publicClient }, { args: [userAddress] })console.log('Claimable rewards:', formatEther(rewards)) * * * trustBondingGetUserRewardsForEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetuserrewardsforepoch "Direct link to trustBondingGetUserRewardsForEpoch") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get user's rewards for a specific epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-2 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address, bigint]` | User address, epoch number | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-3 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-3 "Direct link to Example") import { trustBondingGetUserRewardsForEpoch } from '@0xintuition/protocol'const epochRewards = await trustBondingGetUserRewardsForEpoch( { address: bondingAddress, publicClient }, { args: [userAddress, epochNumber] })console.log('Epoch rewards:', formatEther(epochRewards)) * * * trustBondingGetUnclaimedRewardsForEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetunclaimedrewardsforepoch "Direct link to trustBondingGetUnclaimedRewardsForEpoch") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get unclaimed system rewards for an epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-3 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bigint]` | Epoch number | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-4 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-4 "Direct link to Example") import { trustBondingGetUnclaimedRewardsForEpoch } from '@0xintuition/protocol'const unclaimed = await trustBondingGetUnclaimedRewardsForEpoch( { address: bondingAddress, publicClient }, { args: [epochNumber] })console.log('Unclaimed rewards:', formatEther(unclaimed)) * * * trustBondingUserEligibleRewardsForEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondingusereligiblerewardsforepoch "Direct link to trustBondingUserEligibleRewardsForEpoch") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get eligible rewards for a user in an epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-4 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address, bigint]` | User address, epoch number | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-5 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-5 "Direct link to Example") import { trustBondingUserEligibleRewardsForEpoch } from '@0xintuition/protocol'const eligible = await trustBondingUserEligibleRewardsForEpoch( { address: bondingAddress, publicClient }, { args: [userAddress, epochNumber] })console.log('Eligible rewards:', formatEther(eligible)) * * * trustBondingHasClaimedRewardsForEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinghasclaimedrewardsforepoch "Direct link to trustBondingHasClaimedRewardsForEpoch") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Check if user has claimed rewards for an epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-5 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address, bigint]` | User address, epoch number | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-6 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-6 "Direct link to Example") import { trustBondingHasClaimedRewardsForEpoch } from '@0xintuition/protocol'const hasClaimed = await trustBondingHasClaimedRewardsForEpoch( { address: bondingAddress, publicClient }, { args: [userAddress, epochNumber] })if (hasClaimed) { console.log('Rewards already claimed for this epoch')} else { console.log('Rewards available to claim')} * * * trustBondingGetSystemUtilizationRatio[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetsystemutilizationratio "Direct link to trustBondingGetSystemUtilizationRatio") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get system-wide utilization ratio. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-7 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-7 "Direct link to Example") import { trustBondingGetSystemUtilizationRatio } from '@0xintuition/protocol'const ratio = await trustBondingGetSystemUtilizationRatio({ address: bondingAddress, publicClient })console.log('System utilization ratio:', ratio) * * * trustBondingGetPersonalUtilizationRatio[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetpersonalutilizationratio "Direct link to trustBondingGetPersonalUtilizationRatio") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get user's personal utilization ratio. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-6 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address]` | User address | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-8 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-8 "Direct link to Example") import { trustBondingGetPersonalUtilizationRatio } from '@0xintuition/protocol'const personalRatio = await trustBondingGetPersonalUtilizationRatio( { address: bondingAddress, publicClient }, { args: [userAddress] })console.log('Personal utilization ratio:', personalRatio) * * * trustBondingGetUserInfo[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetuserinfo "Direct link to trustBondingGetUserInfo") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get comprehensive user bonding information. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-7 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address]` | User address | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-9 "Direct link to Returns") Promise // Complete user bonding data ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-9 "Direct link to Example") import { trustBondingGetUserInfo } from '@0xintuition/protocol'const userInfo = await trustBondingGetUserInfo( { address: bondingAddress, publicClient }, { args: [userAddress] })console.log('User bonding info:', userInfo) * * * trustBondingEmissionsForEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondingemissionsforepoch "Direct link to trustBondingEmissionsForEpoch") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get total emissions for an epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-8 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bigint]` | Epoch number | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-10 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-10 "Direct link to Example") import { trustBondingEmissionsForEpoch } from '@0xintuition/protocol'const emissions = await trustBondingEmissionsForEpoch( { address: bondingAddress, publicClient }, { args: [epochNumber] })console.log('Epoch emissions:', formatEther(emissions)) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#see-also "Direct link to See Also") ------------------------------------------------------------------------------------------------------------------------------------- * [Core Concepts: Epochs](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs) * [Examples: Trust Bonding](https://www.docs.intuition.systems/docs/protocol/examples/trust-bonding) * [trustBondingGetUserApy](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetuserapy) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example) * [trustBondingGetSystemApy](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetsystemapy) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-1) * [trustBondingGetUserCurrentClaimableRewards](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetusercurrentclaimablerewards) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-1) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-2) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-2) * [trustBondingGetUserRewardsForEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetuserrewardsforepoch) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-2) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-3) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-3) * [trustBondingGetUnclaimedRewardsForEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetunclaimedrewardsforepoch) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-3) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-4) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-4) * [trustBondingUserEligibleRewardsForEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondingusereligiblerewardsforepoch) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-4) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-5) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-5) * [trustBondingHasClaimedRewardsForEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinghasclaimedrewardsforepoch) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-5) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-6) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-6) * [trustBondingGetSystemUtilizationRatio](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetsystemutilizationratio) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-7) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-7) * [trustBondingGetPersonalUtilizationRatio](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetpersonalutilizationratio) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-6) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-8) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-8) * [trustBondingGetUserInfo](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondinggetuserinfo) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-7) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-9) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-9) * [trustBondingEmissionsForEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#trustbondingemissionsforepoch) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#parameters-8) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#returns-10) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#example-10) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/rewards#see-also) --- # Working with Triples | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#__docusaurus_skipToContent_fallback) On this page **Conceptual overview:** [Triples Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) Triples are subject-predicate-object statements that connect three atoms to form relationships in the knowledge graph. This guide covers all ways to create and query triples using the SDK. Table of Contents[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#table-of-contents "Direct link to Table of Contents") ----------------------------------------------------------------------------------------------------------------------------------------------- * [Creating Triples](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#creating-triples) * [Batch Creation](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#batch-creation) * [Querying Triples](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#querying-triples) * [Counter-Triples](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#counter-triples) * * * Creating Triples[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#creating-triples "Direct link to Creating Triples") -------------------------------------------------------------------------------------------------------------------------------------------- Create a triple (subject-predicate-object statement) connecting three atoms in a relationship. ### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#function-signature "Direct link to Function Signature") function createTripleStatement( config: WriteConfig, args: { args: [ subjects: Hex[], predicates: Hex[], objects: Hex[], deposits: bigint[] ], value: bigint }): Promise ### Parameters[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | `config` | `WriteConfig` | Client configuration | Yes | | `args.args[0]` | `Hex[]` | Subject atom IDs | Yes | | `args.args[1]` | `Hex[]` | Predicate atom IDs | Yes | | `args.args[2]` | `Hex[]` | Object atom IDs | Yes | | `args.args[3]` | `bigint[]` | Deposit per triple | Yes | | `args.value` | `bigint` | Total transaction value | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#returns "Direct link to Returns") type TripleCreationResult = { transactionHash: `0x${string}` state: Array<{ args: { tripleId: Hex subjectId: Hex predicateId: Hex objectId: Hex counterVaultId: Hex // Additional event fields } eventName: 'TripleCreated' }>} ### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#basic-example "Direct link to Basic Example") Create a simple "Alice follows Bob" triple: import { createAtomFromString, createTripleStatement, getMultiVaultAddressFromChainId, intuitionTestnet,} from '@0xintuition/sdk'import { createPublicClient, createWalletClient, http, parseEther } from 'viem'import { privateKeyToAccount } from 'viem/accounts'// Setupconst account = privateKeyToAccount('0x...')const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),})const walletClient = createWalletClient({ chain: intuitionTestnet, transport: http(), account,})const address = getMultiVaultAddressFromChainId(intuitionTestnet.id)// Create atomsconst alice = await createAtomFromString(config, 'Alice')const follows = await createAtomFromString(config, 'follows')const bob = await createAtomFromString(config, 'Bob')// Create triple: Alice follows Bobconst triple = await createTripleStatement( { walletClient, publicClient, address }, { args: [ [alice.state.termId], // subjects [follows.state.termId], // predicates [bob.state.termId], // objects [parseEther('0.1')], // deposits ], value: parseEther('0.1'), // total value })console.log('Triple ID:', triple.state[0].args.tripleId)console.log('Transaction:', triple.transactionHash) ### Common Use Cases[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#common-use-cases "Direct link to Common Use Cases") #### Social Relationships[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#social-relationships "Direct link to Social Relationships") // Alice follows Bobconst followTriple = await createTripleStatement(config, { args: [ [aliceId], [followsId], [bobId], [parseEther('0.1')], ], value: parseEther('0.1'),}) #### Skill Attestations[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#skill-attestations "Direct link to Skill Attestations") // Bob has skill TypeScriptconst skillTriple = await createTripleStatement(config, { args: [ [bobId], [hasSkillId], [typeScriptId], [parseEther('0.05')], ], value: parseEther('0.05'),}) #### Project Relationships[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#project-relationships "Direct link to Project Relationships") // Project uses Libraryconst usesTriple = await createTripleStatement(config, { args: [ [projectId], [usesId], [libraryId], [parseEther('0.2')], ], value: parseEther('0.2'),}) ### Understanding Triples[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#understanding-triples "Direct link to Understanding Triples") #### Triple Components[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#triple-components "Direct link to Triple Components") A triple consists of three atoms: 1. **Subject**: The atom being described 2. **Predicate**: The type of relationship 3. **Object**: The target atom #### Counter Triples[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#counter-triples "Direct link to Counter Triples") Each triple automatically has a counter-triple representing the opposing position: const triple = await createTripleStatement(config, args)// The main triple vault (FOR position)const tripleId = triple.state[0].args.tripleId// The counter vault (AGAINST position)const counterVaultId = triple.state[0].args.counterVaultId ### Best Practices[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#best-practices "Direct link to Best Practices") #### 1\. Create Atoms First[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#1-create-atoms-first "Direct link to 1. Create Atoms First") // Good - atoms created firstconst atom1 = await createAtomFromString(config, 'data1')const atom2 = await createAtomFromString(config, 'data2')const atom3 = await createAtomFromString(config, 'data3')const triple = await createTripleStatement(config, { args: [[atom1.state.termId], [atom2.state.termId], [atom3.state.termId], [deposit]], value: deposit,})// Avoid - using non-existent atom IDsconst triple = await createTripleStatement(config, { args: [['0xinvalid...'], ['0xinvalid...'], ['0xinvalid...'], [deposit]], value: deposit,}) // Will fail #### 2\. Verify Atom IDs[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#2-verify-atom-ids "Direct link to 2. Verify Atom IDs") import { getAtomDetails } from '@0xintuition/sdk'async function verifyAtoms(ids: Hex[]) { for (const id of ids) { try { await getAtomDetails(id) } catch { console.error('Atom does not exist:', id) throw new Error(`Invalid atom ID: ${id}`) } }}// Use before creating tripleawait verifyAtoms([subjectId, predicateId, objectId])const triple = await createTripleStatement(config, args) #### 3\. Handle Transaction Value Correctly[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#3-handle-transaction-value-correctly "Direct link to 3. Handle Transaction Value Correctly") // The total value must match the sum of depositsconst depositAmount = parseEther('0.1')const triple = await createTripleStatement(config, { args: [ [subjectId], [predicateId], [objectId], [depositAmount], ], value: depositAmount, // Must equal the deposit}) * * * Batch Creation[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#batch-creation "Direct link to Batch Creation") -------------------------------------------------------------------------------------------------------------------------------------- Create multiple triples in a single transaction for improved efficiency and reduced gas costs. ### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#function-signature-1 "Direct link to Function Signature") function batchCreateTripleStatements( config: WriteConfig, subjects: Hex[], predicates: Hex[], objects: Hex[], deposits: bigint[]): Promise ### Parameters[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | `config` | `WriteConfig` | Client configuration | Yes | | `subjects` | `Hex[]` | Array of subject atom IDs | Yes | | `predicates` | `Hex[]` | Array of predicate atom IDs | Yes | | `objects` | `Hex[]` | Array of object atom IDs | Yes | | `deposits` | `bigint[]` | Array of deposit amounts | Yes | All arrays must be the same length. ### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#basic-example-1 "Direct link to Basic Example") import { batchCreateTripleStatements, createAtomFromString,} from '@0xintuition/sdk'import { parseEther } from 'viem'// Create atomsconst alice = await createAtomFromString(config, 'Alice')const bob = await createAtomFromString(config, 'Bob')const charlie = await createAtomFromString(config, 'Charlie')const follows = await createAtomFromString(config, 'follows')// Batch create: Alice follows Bob, Bob follows Charlieconst result = await batchCreateTripleStatements( config, [alice.state.termId, bob.state.termId], // subjects [follows.state.termId, follows.state.termId], // predicates [bob.state.termId, charlie.state.termId], // objects [parseEther('0.1'), parseEther('0.1')] // deposits)console.log('Created', result.state.length, 'triples')console.log('Triple IDs:', result.state.map(s => s.args.tripleId)) ### Advanced Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#advanced-example "Direct link to Advanced Example") Build a complete knowledge graph: import { batchCreateTripleStatements } from '@0xintuition/sdk'import { parseEther } from 'viem'async function buildKnowledgeGraph() { // Create base atoms const ts = await createAtomFromString(config, 'TypeScript') const js = await createAtomFromString(config, 'JavaScript') const web3 = await createAtomFromString(config, 'Web3') const isA = await createAtomFromString(config, 'isA') const usedFor = await createAtomFromString(config, 'usedFor') const language = await createAtomFromString(config, 'Programming Language') const development = await createAtomFromString(config, 'Development') // Batch create relationships const result = await batchCreateTripleStatements( config, [ts.state.termId, js.state.termId, ts.state.termId], [isA.state.termId, isA.state.termId, usedFor.state.termId], [language.state.termId, language.state.termId, web3.state.termId], [parseEther('0.1'), parseEther('0.1'), parseEther('0.1')] ) console.log('Knowledge graph created:', result.state.length, 'relationships') return result} ### Gas Savings[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#gas-savings "Direct link to Gas Savings") Batch triple creation saves significant gas: | Triples | Individual Txs | Batch Tx | Savings | | --- | --- | --- | --- | | 2 | ~400k gas | ~250k gas | 37% | | 5 | ~1M gas | ~500k gas | 50% | | 10 | ~2M gas | ~850k gas | 57% | * * * Querying Triples[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#querying-triples "Direct link to Querying Triples") -------------------------------------------------------------------------------------------------------------------------------------------- Query triple information and calculate triple IDs. ### getTripleDetails[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#gettripledetails "Direct link to getTripleDetails") Fetch comprehensive triple details from the Intuition API. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#function-signature-2 "Direct link to Function Signature") function getTripleDetails(tripleId: string): Promise #### Parameters[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#parameters-2 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | `tripleId` | `string` | Triple ID (hex string) | Yes | #### Returns[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#returns-1 "Direct link to Returns") type TripleDetails = { id: string subject: { id: string, label: string } predicate: { id: string, label: string } object: { id: string, label: string } vault: { totalShares: string positionCount: number } counterVault: { totalShares: string positionCount: number } creator: Address // Additional fields} #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#basic-example-2 "Direct link to Basic Example") import { getTripleDetails } from '@0xintuition/sdk'const tripleId = '0x4957d3f442acc301...'const details = await getTripleDetails(tripleId)console.log('Triple:', details.subject.label, details.predicate.label, details.object.label)console.log('For Position Shares:', details.vault.totalShares)console.log('Against Position Shares:', details.counterVault.totalShares) ### calculateTripleId[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#calculatetripleid "Direct link to calculateTripleId") Calculate the triple ID from atom IDs without querying the blockchain. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#function-signature-3 "Direct link to Function Signature") function calculateTripleId( subjectId: Hex, predicateId: Hex, objectId: Hex): Hex #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#basic-example-3 "Direct link to Basic Example") import { calculateTripleId } from '@0xintuition/sdk'const tripleId = calculateTripleId( '0x1234...', // subject '0x5678...', // predicate '0x9abc...' // object)console.log('Triple ID:', tripleId) #### Use Case: Check if Triple Exists[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#use-case-check-if-triple-exists "Direct link to Use Case: Check if Triple Exists") import { calculateTripleId, getTripleDetails } from '@0xintuition/sdk'async function tripleExists( subjectId: Hex, predicateId: Hex, objectId: Hex): Promise { const tripleId = calculateTripleId(subjectId, predicateId, objectId) try { await getTripleDetails(tripleId) return true } catch { return false }} * * * Counter-Triples[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#counter-triples-1 "Direct link to Counter-Triples") ------------------------------------------------------------------------------------------------------------------------------------------- Every triple has a counter-triple representing the opposing position. Users can stake either FOR or AGAINST a statement. ### calculateCounterTripleId[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#calculatecountertripleid "Direct link to calculateCounterTripleId") Calculate the counter-triple ID from a triple ID. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#function-signature-4 "Direct link to Function Signature") function calculateCounterTripleId(tripleId: Hex): Hex #### Parameters[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#parameters-3 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | `tripleId` | `Hex` | Triple ID | Yes | #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#basic-example-4 "Direct link to Basic Example") import { calculateCounterTripleId } from '@0xintuition/sdk'const tripleId = '0x4957d3f442acc301...'const counterTripleId = calculateCounterTripleId(tripleId)console.log('Main Triple ID:', tripleId)console.log('Counter Triple ID:', counterTripleId) ### Understanding Counter Triples[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#understanding-counter-triples "Direct link to Understanding Counter Triples") #### For and Against Positions[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#for-and-against-positions "Direct link to For and Against Positions") When a triple is created: * **Main Vault (FOR)**: Users who agree with the statement * **Counter Vault (AGAINST)**: Users who disagree with the statement Example: "Alice follows Bob" * FOR vault: Users who believe Alice follows Bob * AGAINST vault: Users who believe Alice does NOT follow Bob ### Depositing into Counter Vaults[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#depositing-into-counter-vaults "Direct link to Depositing into Counter Vaults") import { createTripleStatement, calculateCounterTripleId, deposit,} from '@0xintuition/sdk'import { parseEther } from 'viem'// Create triple: Alice follows Bobconst triple = await createTripleStatement(config, { args: [[aliceId], [followsId], [bobId], [parseEther('0.1')]], value: parseEther('0.1'),})const tripleId = triple.state[0].args.tripleIdconst counterTripleId = calculateCounterTripleId(tripleId)// Deposit into FOR vaultawait deposit(config, [ walletClient.account.address, tripleId, 1n, parseEther('1'), 0n,])// Deposit into AGAINST vaultawait deposit(config, [ walletClient.account.address, counterTripleId, 1n, parseEther('1'), 0n,]) ### Use Cases[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#use-cases "Direct link to Use Cases") #### Building Prediction Markets[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#building-prediction-markets "Direct link to Building Prediction Markets") // Create prediction: "Price will go up"const prediction = await createTripleStatement(config, { args: [[priceId], [willId], [goUpId], [parseEther('1')]], value: parseEther('1'),})const forId = prediction.state[0].args.tripleIdconst againstId = calculateCounterTripleId(forId)// Users can deposit into either positionconsole.log('FOR vault:', forId)console.log('AGAINST vault:', againstId) #### Governance Voting[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#governance-voting "Direct link to Governance Voting") // Proposal: "Accept proposal #42"const proposal = await createTripleStatement(config, { args: [[communityId], [acceptsId], [proposal42Id], [parseEther('10')]], value: parseEther('10'),})const yesVoteVault = proposal.state[0].args.tripleIdconst noVoteVault = calculateCounterTripleId(yesVoteVault)// Voting is done via deposits ### Querying Counter Vault Details[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#querying-counter-vault-details "Direct link to Querying Counter Vault Details") import { getTripleDetails, calculateCounterTripleId } from '@0xintuition/sdk'async function comparePositions(tripleId: Hex) { const details = await getTripleDetails(tripleId) console.log('=== Triple ===') console.log(`${details.subject.label} ${details.predicate.label} ${details.object.label}`) console.log('') console.log('FOR Position:') console.log(' Shares:', details.vault.totalShares) console.log(' Positions:', details.vault.positionCount) console.log('') console.log('AGAINST Position:') console.log(' Shares:', details.counterVault.totalShares) console.log(' Positions:', details.counterVault.positionCount) // Determine which position has more support const forShares = BigInt(details.vault.totalShares) const againstShares = BigInt(details.counterVault.totalShares) if (forShares > againstShares) { console.log('\nMajority supports FOR') } else if (againstShares > forShares) { console.log('\nMajority supports AGAINST') } else { console.log('\nTied') }} * * * Complete Examples[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#complete-examples "Direct link to Complete Examples") ----------------------------------------------------------------------------------------------------------------------------------------------- See working examples in the SDK Examples section Next Steps[​](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#next-steps "Direct link to Next Steps") -------------------------------------------------------------------------------------------------------------------------- * [Working with Vaults](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide) - Deposit and redeem from vaults * [Search and Discovery](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide) - Find triples * [SDK Integrations](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react) - Use with React * [Table of Contents](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#table-of-contents) * [Creating Triples](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#creating-triples) * [Function Signature](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#function-signature) * [Parameters](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#parameters) * [Returns](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#returns) * [Basic Example](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#basic-example) * [Common Use Cases](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#common-use-cases) * [Understanding Triples](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#understanding-triples) * [Best Practices](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#best-practices) * [Batch Creation](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#batch-creation) * [Function Signature](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#function-signature-1) * [Parameters](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#parameters-1) * [Basic Example](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#basic-example-1) * [Advanced Example](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#advanced-example) * [Gas Savings](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#gas-savings) * [Querying Triples](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#querying-triples) * [getTripleDetails](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#gettripledetails) * [calculateTripleId](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#calculatetripleid) * [Counter-Triples](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#counter-triples-1) * [calculateCounterTripleId](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#calculatecountertripleid) * [Understanding Counter Triples](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#understanding-counter-triples) * [Depositing into Counter Vaults](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#depositing-into-counter-vaults) * [Use Cases](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#use-cases) * [Querying Counter Vault Details](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#querying-counter-vault-details) * [Complete Examples](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#complete-examples) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-sdk/triples-guide#next-steps) --- # Example: Find Existing Entities | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-sdk/examples/find-existing-entities#__docusaurus_skipToContent_fallback) On this page This example demonstrates how to find existing atoms and triples to avoid creating duplicates. Complete Code[​](https://www.docs.intuition.systems/docs/intuition-sdk/examples/find-existing-entities#complete-code "Direct link to Complete Code") ----------------------------------------------------------------------------------------------------------------------------------------------------- import { intuitionTestnet, getMultiVaultAddressFromChainId, findAtomIds, findTripleIds, calculateAtomId, calculateTripleId, createAtomFromString, createTripleStatement,} from '@0xintuition/sdk'import { createPublicClient, createWalletClient, http, parseEther } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import type { Hex } from 'viem'async function main() { // Setup const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`) const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(), }) const walletClient = createWalletClient({ chain: intuitionTestnet, transport: http(), account, }) const address = getMultiVaultAddressFromChainId(intuitionTestnet.id) // 1. Find existing atoms console.log('=== Finding Atoms ===\n') const atomData = ['TypeScript', 'JavaScript', 'Python', 'Rust'] const atoms = await findAtomIds(atomData) console.log('Results:') atoms.forEach(atom => { if (atom.term_id) { console.log(`βœ“ ${atom.data}: ${atom.term_id}`) } else { console.log(`βœ— ${atom.data}: not found`) } }) // 2. Create missing atoms const missingAtoms = atoms.filter(a => !a.term_id) if (missingAtoms.length > 0) { console.log(`\n=== Creating ${missingAtoms.length} Missing Atoms ===\n`) for (const atom of missingAtoms) { const created = await createAtomFromString( { walletClient, publicClient, address }, atom.data, parseEther('0.01') ) atom.term_id = created.state.termId console.log(`βœ“ Created: ${atom.data}`) } } // 3. Find existing triples console.log('\n=== Finding Triples ===\n') // Get atom IDs const tsId = atoms.find(a => a.data === 'TypeScript')?.term_id as Hex const jsId = atoms.find(a => a.data === 'JavaScript')?.term_id as Hex if (!tsId || !jsId) { throw new Error('Missing required atoms') } // Create predicate const compilesTo = await createAtomFromString( { walletClient, publicClient, address }, 'compilesTo' ) // Check if triple exists const tripleCombinations: Array<[Hex, Hex, Hex]> = [ [tsId, compilesTo.state.termId, jsId] ] const triples = await findTripleIds( account.address, tripleCombinations ) const tripleExists = triples[0]?.term_id if (tripleExists) { console.log('βœ“ Triple already exists:', tripleExists) } else { console.log('βœ— Triple not found, creating...') const triple = await createTripleStatement( { walletClient, publicClient, address }, { args: [ [tsId], [compilesTo.state.termId], [jsId], [parseEther('0.1')], ], value: parseEther('0.1'), } ) console.log('βœ“ Triple created:', triple.state[0].args.tripleId) } // 4. Calculate IDs offline console.log('\n=== Offline ID Calculation ===\n') const calculatedAtomId = calculateAtomId('NewAtom') console.log('Predicted atom ID for "NewAtom":', calculatedAtomId) const calculatedTripleId = calculateTripleId(tsId, compilesTo.state.termId, jsId) console.log('Predicted triple ID:', calculatedTripleId) console.log('\nSuccess!')}main() .then(() => process.exit(0)) .catch((error) => { console.error('Error:', error) process.exit(1) }) See Also[​](https://www.docs.intuition.systems/docs/intuition-sdk/examples/find-existing-entities#see-also "Direct link to See Also") -------------------------------------------------------------------------------------------------------------------------------------- * [findAtomIds](https://www.docs.intuition.systems/docs/intuition-sdk/search/advanced-queries.md#findatomids) * [findTripleIds](https://www.docs.intuition.systems/docs/intuition-sdk/search/advanced-queries.md#findtripleids) * [calculateAtomId](https://www.docs.intuition.systems/docs/intuition-sdk/atoms/querying.md#calculateatomid) * [calculateTripleId](https://www.docs.intuition.systems/docs/intuition-sdk/triples/querying.md#calculatetripleid) * [Complete Code](https://www.docs.intuition.systems/docs/intuition-sdk/examples/find-existing-entities#complete-code) * [See Also](https://www.docs.intuition.systems/docs/intuition-sdk/examples/find-existing-entities#see-also) --- # Epochs & Utilization | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#__docusaurus_skipToContent_fallback) On this page Functions for querying epoch information and utilization metrics. multiVaultCurrentEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultcurrentepoch "Direct link to multiVaultCurrentEpoch") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get the current epoch number. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#returns "Direct link to Returns") Promise // Current epoch number ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#example "Direct link to Example") import { multiVaultCurrentEpoch } from '@0xintuition/protocol'const epoch = await multiVaultCurrentEpoch({ address, publicClient })console.log('Current epoch:', epoch) * * * multiVaultGetTotalUtilizationForEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultgettotalutilizationforepoch "Direct link to multiVaultGetTotalUtilizationForEpoch") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Get total protocol utilization for an epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bigint]` | Epoch number | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#returns-1 "Direct link to Returns") Promise // Total utilization ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#example-1 "Direct link to Example") import { multiVaultGetTotalUtilizationForEpoch } from '@0xintuition/protocol'const totalUtil = await multiVaultGetTotalUtilizationForEpoch( { address, publicClient }, { args: [epochNumber] })console.log('Total utilization:', totalUtil) * * * multiVaultGetUserUtilizationForEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultgetuserutilizationforepoch "Direct link to multiVaultGetUserUtilizationForEpoch") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get user's total utilization for an epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address, bigint]` | User address, epoch number | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#returns-2 "Direct link to Returns") Promise // User's total utilization ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#example-2 "Direct link to Example") import { multiVaultGetUserUtilizationForEpoch } from '@0xintuition/protocol'const userUtil = await multiVaultGetUserUtilizationForEpoch( { address, publicClient }, { args: [userAddress, epochNumber] })console.log('User utilization:', userUtil) * * * multiVaultGetUserUtilizationInEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultgetuserutilizationinepoch "Direct link to multiVaultGetUserUtilizationInEpoch") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Get user's utilization in a specific vault for an epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#parameters-2 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address, bytes32, bigint]` | User address, vaultId, epoch number | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#returns-3 "Direct link to Returns") Promise // User's vault-specific utilization ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#example-3 "Direct link to Example") import { multiVaultGetUserUtilizationInEpoch } from '@0xintuition/protocol'const vaultUtil = await multiVaultGetUserUtilizationInEpoch( { address, publicClient }, { args: [userAddress, vaultId, epochNumber] })console.log('Vault utilization:', vaultUtil) * * * multiVaultGetUserLastActiveEpoch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultgetuserlastactiveepoch "Direct link to multiVaultGetUserLastActiveEpoch") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get user's last active epoch. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#parameters-3 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address]` | User address | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#returns-4 "Direct link to Returns") Promise // Last active epoch number ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#example-4 "Direct link to Example") import { multiVaultGetUserLastActiveEpoch } from '@0xintuition/protocol'const lastEpoch = await multiVaultGetUserLastActiveEpoch( { address, publicClient }, { args: [userAddress] })console.log('Last active epoch:', lastEpoch) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#see-also "Direct link to See Also") --------------------------------------------------------------------------------------------------------------------------------------------- * [Core Concepts: Epochs](https://www.docs.intuition.systems/docs/protocol/core-concepts/epochs) * [Trust Bonding](https://www.docs.intuition.systems/docs/protocol/api-reference/trust-bonding/epochs) * [multiVaultCurrentEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultcurrentepoch) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#example) * [multiVaultGetTotalUtilizationForEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultgettotalutilizationforepoch) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#example-1) * [multiVaultGetUserUtilizationForEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultgetuserutilizationforepoch) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#parameters-1) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#returns-2) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#example-2) * [multiVaultGetUserUtilizationInEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultgetuserutilizationinepoch) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#parameters-2) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#returns-3) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#example-3) * [multiVaultGetUserLastActiveEpoch](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#multivaultgetuserlastactiveepoch) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#parameters-3) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#returns-4) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#example-4) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/epochs-utilization#see-also) --- # Fee Calculations | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#__docusaurus_skipToContent_fallback) On this page Complete workflows for calculating fees and estimating costs. Example 1: Calculate Deposit Fees[​](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#example-1-calculate-deposit-fees "Direct link to Example 1: Calculate Deposit Fees") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultEntryFeeAmount, multiVaultProtocolFeeAmount,} from '@0xintuition/protocol'import { parseEther, formatEther } from 'viem'const calculateDepositFees = async (vaultId: string, depositAmount: bigint) => { // Get entry fee const entryFee = await multiVaultEntryFeeAmount( { address, publicClient }, { args: [vaultId, depositAmount] } ) // Get protocol fee const protocolFee = await multiVaultProtocolFeeAmount( { address, publicClient }, { args: [vaultId, depositAmount] } ) // Calculate totals const totalFees = entryFee + protocolFee const netDeposit = depositAmount - totalFees const feePercentage = (Number(totalFees) / Number(depositAmount) * 100).toFixed(2) return { depositAmount: formatEther(depositAmount), entryFee: formatEther(entryFee), protocolFee: formatEther(protocolFee), totalFees: formatEther(totalFees), netDeposit: formatEther(netDeposit), feePercentage: feePercentage + '%', }}const fees = await calculateDepositFees(vaultId, parseEther('1'))console.log('Deposit fee breakdown:', fees) Example 2: Calculate Redemption Fees[​](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#example-2-calculate-redemption-fees "Direct link to Example 2: Calculate Redemption Fees") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultExitFeeAmount } from '@0xintuition/protocol'const calculateRedemptionFees = async (vaultId: string, shares: bigint) => { // Preview redemption const expectedAssets = await multiVaultPreviewRedeem( { address, publicClient }, { args: [vaultId, 1, shares] } ) // Get exit fee const exitFee = await multiVaultExitFeeAmount( { address, publicClient }, { args: [vaultId, expectedAssets] } ) // Calculate net amount const netAssets = expectedAssets - exitFee const feePercentage = (Number(exitFee) / Number(expectedAssets) * 100).toFixed(2) return { sharesToRedeem: formatEther(shares), grossAssets: formatEther(expectedAssets), exitFee: formatEther(exitFee), netAssets: formatEther(netAssets), feePercentage: feePercentage + '%', }}const redeemFees = await calculateRedemptionFees(vaultId, parseEther('10'))console.log('Redemption fee breakdown:', redeemFees) Example 3: Estimate Total Cost for Operations[​](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#example-3-estimate-total-cost-for-operations "Direct link to Example 3: Estimate Total Cost for Operations") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- const estimateTotalCost = async () => { // Get creation costs const atomCost = await multiVaultGetAtomCost({ address, publicClient }) const tripleCost = await multiVaultGetTripleCost({ address, publicClient }) // Calculate for creating 5 atoms and 3 triples const numAtoms = 5 const numTriples = 3 const totalAtomCost = atomCost * BigInt(numAtoms) const totalTripleCost = tripleCost * BigInt(numTriples) const grandTotal = totalAtomCost + totalTripleCost return { atoms: { count: numAtoms, costPerAtom: formatEther(atomCost), totalCost: formatEther(totalAtomCost), }, triples: { count: numTriples, costPerTriple: formatEther(tripleCost), totalCost: formatEther(totalTripleCost), }, grandTotal: formatEther(grandTotal), }}const estimate = await estimateTotalCost()console.log('Cost estimate:', estimate) Example 4: Calculate Triple Atom Deposit Fraction[​](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#example-4-calculate-triple-atom-deposit-fraction "Direct link to Example 4: Calculate Triple Atom Deposit Fraction") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultAtomDepositFractionAmount } from '@0xintuition/protocol'const calculateTripleAllocation = async (totalDeposit: bigint) => { // Get fraction allocated to atoms const atomFraction = await multiVaultAtomDepositFractionAmount( { address, publicClient }, { args: [totalDeposit] } ) // Calculate triple allocation const tripleAllocation = totalDeposit - atomFraction // Breakdown per atom (3 atoms in a triple: subject, predicate, object) const perAtom = atomFraction / 3n return { totalDeposit: formatEther(totalDeposit), atomFraction: formatEther(atomFraction), tripleAllocation: formatEther(tripleAllocation), perAtom: formatEther(perAtom), percentToAtoms: (Number(atomFraction) / Number(totalDeposit) * 100).toFixed(2) + '%', percentToTriple: (Number(tripleAllocation) / Number(totalDeposit) * 100).toFixed(2) + '%', }}const allocation = await calculateTripleAllocation(parseEther('1'))console.log('Triple deposit allocation:', allocation) Example 5: Fee Comparison Across Vaults[​](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#example-5-fee-comparison-across-vaults "Direct link to Example 5: Fee Comparison Across Vaults") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- const compareVaultFees = async (vaultIds: string[], depositAmount: bigint) => { const comparisons = await Promise.all( vaultIds.map(async (vaultId) => { const entryFee = await multiVaultEntryFeeAmount( { address, publicClient }, { args: [vaultId, depositAmount] } ) const protocolFee = await multiVaultProtocolFeeAmount( { address, publicClient }, { args: [vaultId, depositAmount] } ) const totalFees = entryFee + protocolFee const feePercentage = (Number(totalFees) / Number(depositAmount) * 100).toFixed(2) return { vaultId, entryFee: formatEther(entryFee), protocolFee: formatEther(protocolFee), totalFees: formatEther(totalFees), feePercentage: feePercentage + '%', } }) ) return comparisons}const vaultComparison = await compareVaultFees( ['0x1234...', '0x2345...', '0x3456...'], parseEther('1'))console.log('Vault fee comparison:', vaultComparison) See Also[​](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#see-also "Direct link to See Also") --------------------------------------------------------------------------------------------------------------------------- * [Fee Calculations API](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees) * [Configuration](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration) * [Vault Operations](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults) * [Example 1: Calculate Deposit Fees](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#example-1-calculate-deposit-fees) * [Example 2: Calculate Redemption Fees](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#example-2-calculate-redemption-fees) * [Example 3: Estimate Total Cost for Operations](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#example-3-estimate-total-cost-for-operations) * [Example 4: Calculate Triple Atom Deposit Fraction](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#example-4-calculate-triple-atom-deposit-fraction) * [Example 5: Fee Comparison Across Vaults](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#example-5-fee-comparison-across-vaults) * [See Also](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations#see-also) --- # Vault Queries | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#__docusaurus_skipToContent_fallback) On this page Functions for querying vault information and state. multiVaultGetVault[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#multivaultgetvault "Direct link to multiVaultGetVault") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get vault details. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32]` | Vault ID | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#returns "Direct link to Returns") Promise // Vault information ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#example "Direct link to Example") import { multiVaultGetVault } from '@0xintuition/protocol'const vault = await multiVaultGetVault( { address, publicClient }, { args: [vaultId] })console.log('Vault details:', vault) * * * multiVaultGetVaultType[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#multivaultgetvaulttype "Direct link to multiVaultGetVaultType") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get vault type (atom or triple). ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32]` | Vault ID | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#returns-1 "Direct link to Returns") Promise // 0 for atom, 1 for triple ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#example-1 "Direct link to Example") import { multiVaultGetVaultType } from '@0xintuition/protocol'const vaultType = await multiVaultGetVaultType( { address, publicClient }, { args: [vaultId] })if (vaultType === 0n) { console.log('This is an atom vault')} else if (vaultType === 1n) { console.log('This is a triple vault')} * * * multiVaultIsTermCreated[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#multivaultistermcreated "Direct link to multiVaultIsTermCreated") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Check if a term (atom/triple) has been created. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#parameters-2 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes]` | Term data (atom URI or triple hash) | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#returns-2 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#example-2 "Direct link to Example") import { multiVaultIsTermCreated } from '@0xintuition/protocol'import { toHex } from 'viem'const atomUri = toHex('TypeScript')const exists = await multiVaultIsTermCreated( { address, publicClient }, { args: [atomUri] })if (exists) { console.log('Atom already exists - do not recreate')} else { console.log('Atom does not exist - safe to create')} ### Use Case Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#use-case-example "Direct link to Use Case Example") // Check before creating to avoid duplicate atomsconst checkAndCreate = async (atomUri: string) => { const uriHex = toHex(atomUri) const exists = await multiVaultIsTermCreated( { address, publicClient }, { args: [uriHex] } ) if (exists) { console.log('Atom already exists') return null } const atomCost = await multiVaultGetAtomCost({ address, publicClient }) const txHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [[uriHex], [atomCost]], value: atomCost, } ) return txHash}const txHash = await checkAndCreate('My Unique Atom') * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#see-also "Direct link to See Also") ---------------------------------------------------------------------------------------------------------------------------------------- * [Core Concepts: Vaults](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults) * [Core Concepts: Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals) * [multiVaultGetVault](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#multivaultgetvault) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#example) * [multiVaultGetVaultType](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#multivaultgetvaulttype) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#parameters-1) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#example-1) * [multiVaultIsTermCreated](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#multivaultistermcreated) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#parameters-2) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#returns-2) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#example-2) * [Use Case Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#use-case-example) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#see-also) --- # Example: Thing IPFS Pinning | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-sdk/examples/thing-ipfs-pinning#__docusaurus_skipToContent_fallback) On this page This example demonstrates creating a rich entity (Thing) with automatic IPFS pinning. Complete Code[​](https://www.docs.intuition.systems/docs/intuition-sdk/examples/thing-ipfs-pinning#complete-code "Direct link to Complete Code") ------------------------------------------------------------------------------------------------------------------------------------------------- import { intuitionTestnet, getMultiVaultAddressFromChainId, createAtomFromThing, pinThing, getAtomDetails, wait,} from '@0xintuition/sdk'import { createPublicClient, createWalletClient, http, parseEther } from 'viem'import { privateKeyToAccount } from 'viem/accounts'async function main() { // Setup const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`) const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(), }) const walletClient = createWalletClient({ chain: intuitionTestnet, transport: http(), account, }) const address = getMultiVaultAddressFromChainId(intuitionTestnet.id) // Define rich entity const project = { url: 'https://github.com/myorg/awesome-project', name: 'Awesome DeFi Protocol', description: 'A groundbreaking decentralized finance protocol built on Intuition', image: 'https://myproject.com/logo.png', tags: [ 'defi', 'protocol', 'typescript', 'smart-contracts', 'intuition' ], twitter: 'https://twitter.com/awesomedefi', github: 'github.com/myorg/awesome-project', } console.log('=== Project Metadata ===') console.log(JSON.stringify(project, null, 2)) // 1. Pin to IPFS (without creating atom) console.log('\n=== Pinning to IPFS ===') const ipfsUri = await pinThing({ thing: project }) if (!ipfsUri) { throw new Error('Failed to pin to IPFS') } console.log('βœ“ Pinned to IPFS:', ipfsUri) // 2. Create atom with Thing (auto-pins and creates atom) console.log('\n=== Creating Atom ===') const atom = await createAtomFromThing( { walletClient, publicClient, address }, project, parseEther('0.1') ) console.log('βœ“ Atom created!') console.log(' Atom ID:', atom.state.termId) console.log(' IPFS URI:', atom.uri) console.log(' Transaction:', atom.transactionHash) // 3. Wait for indexing console.log('\nWaiting for indexing...') await wait(atom.transactionHash) // 4. Query details const details = await getAtomDetails(atom.state.termId) console.log('\n=== Atom Details ===') console.log('Label:', details.label) console.log('Creator:', details.creator) console.log('Vault ID:', details.vault.id) console.log('Total Shares:', details.vault.totalShares) console.log('\nSuccess!')}main() .then(() => process.exit(0)) .catch((error) => { console.error('Error:', error) process.exit(1) }) See Also[​](https://www.docs.intuition.systems/docs/intuition-sdk/examples/thing-ipfs-pinning#see-also "Direct link to See Also") ---------------------------------------------------------------------------------------------------------------------------------- * [createAtomFromThing](https://www.docs.intuition.systems/docs/intuition-sdk/atoms/create-from-thing.md) * [pinThing](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/pinata-ipfs) * [IPFS Integration](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/pinata-ipfs) * [Complete Code](https://www.docs.intuition.systems/docs/intuition-sdk/examples/thing-ipfs-pinning#complete-code) * [See Also](https://www.docs.intuition.systems/docs/intuition-sdk/examples/thing-ipfs-pinning#see-also) --- # Example: Batch Create Ethereum Accounts | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-sdk/examples/batch-ethereum-accounts#__docusaurus_skipToContent_fallback) On this page This example demonstrates creating multiple identity atoms from Ethereum addresses in a single transaction. Complete Code[​](https://www.docs.intuition.systems/docs/intuition-sdk/examples/batch-ethereum-accounts#complete-code "Direct link to Complete Code") ------------------------------------------------------------------------------------------------------------------------------------------------------ import { intuitionTestnet, getMultiVaultAddressFromChainId, batchCreateAtomsFromEthereumAccounts,} from '@0xintuition/sdk'import { createPublicClient, createWalletClient, http, parseEther, formatEther } from 'viem'import { privateKeyToAccount } from 'viem/accounts'async function main() { // Setup const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`) const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(), }) const walletClient = createWalletClient({ chain: intuitionTestnet, transport: http(), account, }) const address = getMultiVaultAddressFromChainId(intuitionTestnet.id) // List of Ethereum addresses const addresses = [ '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb', '0x1234567890123456789012345678901234567890', '0x9876543210987654321098765432109876543210', '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd', ] console.log(`Creating ${addresses.length} identity atoms...\n`) const depositPerAtom = parseEther('0.01') const totalCost = depositPerAtom * BigInt(addresses.length) console.log('Deposit per atom:', formatEther(depositPerAtom), 'tTRUST') console.log('Total cost:', formatEther(totalCost), 'tTRUST\n') // Batch create const result = await batchCreateAtomsFromEthereumAccounts( { walletClient, publicClient, address }, addresses, depositPerAtom ) console.log('βœ“ Created', result.state.length, 'atoms in one transaction!') console.log(' Transaction:', result.transactionHash) console.log('\nAtom IDs:') result.state.forEach((state, i) => { console.log(` ${i + 1}. ${addresses[i]}`) console.log(` β†’ ${state.termId}`) }) console.log('\nSuccess!')}main() .then(() => process.exit(0)) .catch((error) => { console.error('Error:', error) process.exit(1) }) See Also[​](https://www.docs.intuition.systems/docs/intuition-sdk/examples/batch-ethereum-accounts#see-also "Direct link to See Also") --------------------------------------------------------------------------------------------------------------------------------------- * [batchCreateAtomsFromEthereumAccounts](https://www.docs.intuition.systems/docs/intuition-sdk/atoms/batch-creation.md) * [Batch Creation Guide](https://www.docs.intuition.systems/docs/intuition-sdk/atoms/batch-creation.md) * [Complete Code](https://www.docs.intuition.systems/docs/intuition-sdk/examples/batch-ethereum-accounts#complete-code) * [See Also](https://www.docs.intuition.systems/docs/intuition-sdk/examples/batch-ethereum-accounts#see-also) --- # Share & Asset Conversions | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#__docusaurus_skipToContent_fallback) On this page Functions for converting between shares and assets, and querying share balances and prices. multiVaultConvertToShares[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#multivaultconverttoshares "Direct link to multiVaultConvertToShares") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Convert asset amount to expected shares. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32, bigint, bigint]` | VaultId, curveId, assets | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#returns "Direct link to Returns") Promise // Expected shares ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#example "Direct link to Example") import { multiVaultConvertToShares } from '@0xintuition/protocol'import { parseEther, formatEther } from 'viem'const shares = await multiVaultConvertToShares( { address, publicClient }, { args: [vaultId, 1, parseEther('1')] })console.log('Shares for 1 ETH:', formatEther(shares)) * * * multiVaultConvertToAssets[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#multivaultconverttoassets "Direct link to multiVaultConvertToAssets") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Convert shares to expected assets. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32, bigint, bigint]` | VaultId, curveId, shares | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#returns-1 "Direct link to Returns") Promise // Expected assets ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#example-1 "Direct link to Example") import { multiVaultConvertToAssets } from '@0xintuition/protocol'const assets = await multiVaultConvertToAssets( { address, publicClient }, { args: [vaultId, 1, parseEther('10')] })console.log('Assets for 10 shares:', formatEther(assets)) * * * multiVaultGetShares[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#multivaultgetshares "Direct link to multiVaultGetShares") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get user's share balance in a vault. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#parameters-2 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address, bytes32]` | User address, vaultId | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#returns-2 "Direct link to Returns") Promise // User's shares ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#example-2 "Direct link to Example") import { multiVaultGetShares } from '@0xintuition/protocol'const shares = await multiVaultGetShares( { address, publicClient }, { args: [userAddress, vaultId] })console.log('User shares:', formatEther(shares)) * * * multiVaultCurrentSharePrice[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#multivaultcurrentshareprice "Direct link to multiVaultCurrentSharePrice") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get current share price for a vault. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#parameters-3 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32, bigint]` | VaultId, curveId | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#returns-3 "Direct link to Returns") Promise // Current share price ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#example-3 "Direct link to Example") import { multiVaultCurrentSharePrice } from '@0xintuition/protocol'const price = await multiVaultCurrentSharePrice( { address, publicClient }, { args: [vaultId, 1] })console.log('Share price:', formatEther(price)) ### Advanced Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#advanced-example "Direct link to Advanced Example") // Track price over timeconst trackPrice = async () => { const prices = [] for (let i = 0; i < 10; i++) { const price = await multiVaultCurrentSharePrice( { address, publicClient }, { args: [vaultId, 1] } ) prices.push({ timestamp: Date.now(), price: formatEther(price), }) await new Promise(resolve => setTimeout(resolve, 60000)) // Wait 1 minute } return prices} * * * multiVaultMaxRedeem[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#multivaultmaxredeem "Direct link to multiVaultMaxRedeem") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get maximum redeemable shares for a user. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#parameters-4 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[Address, bytes32]` | User address, vaultId | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#returns-4 "Direct link to Returns") Promise // Maximum redeemable shares ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#example-4 "Direct link to Example") import { multiVaultMaxRedeem } from '@0xintuition/protocol'const maxShares = await multiVaultMaxRedeem( { address, publicClient }, { args: [userAddress, vaultId] })console.log('Max redeemable:', formatEther(maxShares)) ### Use Case Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#use-case-example "Direct link to Use Case Example") // Redeem all shares from a vaultconst maxShares = await multiVaultMaxRedeem( { address, publicClient }, { args: [account.address, vaultId] })const expectedAssets = await multiVaultPreviewRedeem( { address, publicClient }, { args: [vaultId, 1, maxShares] })const txHash = await multiVaultRedeem( { address, walletClient, publicClient }, { args: [account.address, vaultId, 1, maxShares, 0n], }) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#see-also "Direct link to See Also") -------------------------------------------------------------------------------------------------------------------------------------- * [Core Concepts: Vaults](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults) * [Core Concepts: Bonding Curves](https://www.docs.intuition.systems/docs/intuition-concepts/economics/bonding-curves) * [Vault Operations](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults) * [multiVaultConvertToShares](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#multivaultconverttoshares) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#example) * [multiVaultConvertToAssets](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#multivaultconverttoassets) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#parameters-1) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#example-1) * [multiVaultGetShares](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#multivaultgetshares) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#parameters-2) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#returns-2) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#example-2) * [multiVaultCurrentSharePrice](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#multivaultcurrentshareprice) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#parameters-3) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#returns-3) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#example-3) * [Advanced Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#advanced-example) * [multiVaultMaxRedeem](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#multivaultmaxredeem) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#parameters-4) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#returns-4) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#example-4) * [Use Case Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#use-case-example) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/conversions#see-also) --- # Configuration Queries | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#__docusaurus_skipToContent_fallback) On this page Functions for querying protocol configuration settings. multiVaultGetGeneralConfig[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultgetgeneralconfig "Direct link to multiVaultGetGeneralConfig") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get general protocol configuration. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns "Direct link to Returns") Promise<{ admin: Address protocolVault: Address feeDenominator: bigint minDeposit: bigint minShare: bigint}> ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example "Direct link to Example") import { multiVaultGetGeneralConfig } from '@0xintuition/protocol'const config = await multiVaultGetGeneralConfig({ address, publicClient })console.log('Admin:', config.admin)console.log('Protocol vault:', config.protocolVault)console.log('Min deposit:', formatEther(config.minDeposit)) * * * multiVaultGetAtomConfig[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultgetatomconfig "Direct link to multiVaultGetAtomConfig") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get atom-specific configuration. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns-1 "Direct link to Returns") Promise<{ atomUriMaxLength: bigint atomCreationProtocolFee: bigint atomCost: bigint atomWalletInitialDepositAmount: bigint}> ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example-1 "Direct link to Example") import { multiVaultGetAtomConfig } from '@0xintuition/protocol'const config = await multiVaultGetAtomConfig({ address, publicClient })console.log('Atom cost:', formatEther(config.atomCost))console.log('Max URI length:', config.atomUriMaxLength)console.log('Protocol fee:', formatEther(config.atomCreationProtocolFee)) * * * multiVaultGetTripleConfig[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultgettripleconfig "Direct link to multiVaultGetTripleConfig") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get triple-specific configuration. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns-2 "Direct link to Returns") Promise<{ tripleCreationProtocolFee: bigint atomDepositFractionOnTripleCreation: bigint atomDepositFractionForTriple: bigint}> ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example-2 "Direct link to Example") import { multiVaultGetTripleConfig } from '@0xintuition/protocol'const config = await multiVaultGetTripleConfig({ address, publicClient })console.log('Triple cost:', formatEther(config.tripleCreationProtocolFee))console.log('Atom deposit fraction:', config.atomDepositFractionOnTripleCreation) * * * multiVaultGetBondingCurveConfig[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultgetbondingcurveconfig "Direct link to multiVaultGetBondingCurveConfig") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get bonding curve configuration. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns-3 "Direct link to Returns") Promise<{ registry: Address}> ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example-3 "Direct link to Example") import { multiVaultGetBondingCurveConfig } from '@0xintuition/protocol'const config = await multiVaultGetBondingCurveConfig({ address, publicClient })console.log('Curve registry:', config.registry) * * * multiVaultGetWalletConfig[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultgetwalletconfig "Direct link to multiVaultGetWalletConfig") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get wallet configuration. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns-4 "Direct link to Returns") Promise<{ atomWarden: Address atomWalletFactory: Address}> ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example-4 "Direct link to Example") import { multiVaultGetWalletConfig } from '@0xintuition/protocol'const config = await multiVaultGetWalletConfig({ address, publicClient })console.log('Atom warden:', config.atomWarden)console.log('Wallet factory:', config.atomWalletFactory) * * * multiVaultMultiCallIntuitionConfigs[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultmulticallintuitionconfigs "Direct link to multiVaultMultiCallIntuitionConfigs") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get all configurations in a single multicall. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns-5 "Direct link to Returns") Promise<{ generalConfig: GeneralConfig atomConfig: AtomConfig tripleConfig: TripleConfig vaultFeeConfig: VaultFeeConfig bondingCurveConfig: BondingCurveConfig walletConfig: WalletConfig}> ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example-5 "Direct link to Example") import { multiVaultMultiCallIntuitionConfigs } from '@0xintuition/protocol'const configs = await multiVaultMultiCallIntuitionConfigs({ address, publicClient })console.log('All configurations:', configs) ### Advanced Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#advanced-example "Direct link to Advanced Example") // Fetch and display all protocol settingsconst configs = await multiVaultMultiCallIntuitionConfigs({ address, publicClient })console.log('\nGeneral Config:')console.log('- Admin:', configs.generalConfig.admin)console.log('- Min deposit:', formatEther(configs.generalConfig.minDeposit))console.log('\nAtom Config:')console.log('- Creation cost:', formatEther(configs.atomConfig.atomCost))console.log('- Max URI length:', configs.atomConfig.atomUriMaxLength)console.log('\nTriple Config:')console.log('- Creation fee:', formatEther(configs.tripleConfig.tripleCreationProtocolFee))console.log('\nVault Fee Config:')console.log('- Entry fee:', configs.vaultFeeConfig.entryFee)console.log('- Exit fee:', configs.vaultFeeConfig.exitFee)console.log('\nBonding Curve Config:')console.log('- Registry:', configs.bondingCurveConfig.registry)console.log('\nWallet Config:')console.log('- Atom warden:', configs.walletConfig.atomWarden) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#see-also "Direct link to See Also") ---------------------------------------------------------------------------------------------------------------------------------------- * [Configuration Guide](https://www.docs.intuition.systems/docs/protocol/getting-started/configuration) * [Fee Calculations](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees) * [multiVaultGetGeneralConfig](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultgetgeneralconfig) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example) * [multiVaultGetAtomConfig](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultgetatomconfig) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example-1) * [multiVaultGetTripleConfig](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultgettripleconfig) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns-2) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example-2) * [multiVaultGetBondingCurveConfig](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultgetbondingcurveconfig) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns-3) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example-3) * [multiVaultGetWalletConfig](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultgetwalletconfig) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns-4) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example-4) * [multiVaultMultiCallIntuitionConfigs](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultmulticallintuitionconfigs) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#returns-5) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#example-5) * [Advanced Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#advanced-example) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#see-also) --- # Fee Calculations | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#__docusaurus_skipToContent_fallback) On this page Functions for calculating various fees in the protocol. multiVaultEntryFeeAmount[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#multivaultentryfeeamount "Direct link to multiVaultEntryFeeAmount") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Calculate entry fee for a deposit. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32, bigint]` | VaultId, assets | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#returns "Direct link to Returns") Promise // Entry fee amount ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#example "Direct link to Example") import { multiVaultEntryFeeAmount } from '@0xintuition/protocol'import { parseEther, formatEther } from 'viem'const depositAmount = parseEther('1')const entryFee = await multiVaultEntryFeeAmount( { address, publicClient }, { args: [vaultId, depositAmount] })console.log('Entry fee:', formatEther(entryFee))console.log('Net deposit:', formatEther(depositAmount - entryFee)) * * * multiVaultExitFeeAmount[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#multivaultexitfeeamount "Direct link to multiVaultExitFeeAmount") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Calculate exit fee for a redemption. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32, bigint]` | VaultId, assets | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#returns-1 "Direct link to Returns") Promise // Exit fee amount ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#example-1 "Direct link to Example") import { multiVaultExitFeeAmount } from '@0xintuition/protocol'const expectedAssets = parseEther('10')const exitFee = await multiVaultExitFeeAmount( { address, publicClient }, { args: [vaultId, expectedAssets] })console.log('Exit fee:', formatEther(exitFee))console.log('Net withdrawal:', formatEther(expectedAssets - exitFee)) * * * multiVaultProtocolFeeAmount[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#multivaultprotocolfeeamount "Direct link to multiVaultProtocolFeeAmount") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Calculate protocol fee. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#parameters-2 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32, bigint]` | VaultId, assets | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#returns-2 "Direct link to Returns") Promise // Protocol fee amount ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#example-2 "Direct link to Example") import { multiVaultProtocolFeeAmount } from '@0xintuition/protocol'const protocolFee = await multiVaultProtocolFeeAmount( { address, publicClient }, { args: [vaultId, depositAmount] })console.log('Protocol fee:', formatEther(protocolFee)) * * * multiVaultAtomDepositFractionAmount[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#multivaultatomdepositfractionamount "Direct link to multiVaultAtomDepositFractionAmount") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Calculate atom deposit fraction for triple creation. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#parameters-3 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bigint]` | Total assets | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#returns-3 "Direct link to Returns") Promise // Atom deposit fraction ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#example-3 "Direct link to Example") import { multiVaultAtomDepositFractionAmount } from '@0xintuition/protocol'const totalAssets = parseEther('1')const atomFraction = await multiVaultAtomDepositFractionAmount( { address, publicClient }, { args: [totalAssets] })console.log('Atom deposit fraction:', formatEther(atomFraction))console.log('Remaining for triple:', formatEther(totalAssets - atomFraction)) ### Use Case Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#use-case-example "Direct link to Use Case Example") // Calculate total fees before depositingconst calculateTotalFees = async (vaultId: string, depositAmount: bigint) => { const entryFee = await multiVaultEntryFeeAmount( { address, publicClient }, { args: [vaultId, depositAmount] } ) const protocolFee = await multiVaultProtocolFeeAmount( { address, publicClient }, { args: [vaultId, depositAmount] } ) const totalFees = entryFee + protocolFee const netDeposit = depositAmount - totalFees return { depositAmount: formatEther(depositAmount), entryFee: formatEther(entryFee), protocolFee: formatEther(protocolFee), totalFees: formatEther(totalFees), netDeposit: formatEther(netDeposit), feePercentage: (Number(totalFees) / Number(depositAmount) * 100).toFixed(2) + '%', }}const fees = await calculateTotalFees(vaultId, parseEther('1'))console.log(fees) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#see-also "Direct link to See Also") ------------------------------------------------------------------------------------------------------------------------------- * [Examples: Fee Calculations](https://www.docs.intuition.systems/docs/protocol/examples/fee-calculations) * [Configuration](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration) * [multiVaultEntryFeeAmount](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#multivaultentryfeeamount) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#example) * [multiVaultExitFeeAmount](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#multivaultexitfeeamount) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#parameters-1) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#example-1) * [multiVaultProtocolFeeAmount](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#multivaultprotocolfeeamount) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#parameters-2) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#returns-2) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#example-2) * [multiVaultAtomDepositFractionAmount](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#multivaultatomdepositfractionamount) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#parameters-3) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#returns-3) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#example-3) * [Use Case Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#use-case-example) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#see-also) --- # Vault Operations | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#__docusaurus_skipToContent_fallback) On this page Functions for depositing to and redeeming from vaults. multiVaultDeposit[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultdeposit "Direct link to multiVaultDeposit") ------------------------------------------------------------------------------------------------------------------------------------------------------------ Deposit assets into a vault to receive shares. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `WriteConfig` | Contract address, publicClient, walletClient | Yes | | args | `[Address, bytes32, bigint, bigint]` | Receiver, vaultId, curveId, minShares | Yes | | value | `bigint` | Deposit amount in wei | Yes | ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example "Direct link to Example") import { multiVaultDeposit } from '@0xintuition/protocol'import { parseEther } from 'viem'const txHash = await multiVaultDeposit( { address, walletClient, publicClient }, { args: [account.address, vaultId, 1, 0n], value: parseEther('1'), }) * * * multiVaultDepositBatch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultdepositbatch "Direct link to multiVaultDepositBatch") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Deposit to multiple vaults in a single transaction. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `WriteConfig` | Contract address, publicClient, walletClient | Yes | | args | `[Address, bytes32[], bigint[], bigint[], bigint[]]` | Receiver, vaultIds, curveIds, assets, minShares | Yes | | value | `bigint` | Total deposit amount | Yes | ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-1 "Direct link to Example") const txHash = await multiVaultDepositBatch( { address, walletClient, publicClient }, { args: [ account.address, [vault1, vault2, vault3], [1, 1, 2], [parseEther('1'), parseEther('0.5'), parseEther('0.25')], [0n, 0n, 0n], ], value: parseEther('1.75'), }) * * * multiVaultRedeem[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultredeem "Direct link to multiVaultRedeem") --------------------------------------------------------------------------------------------------------------------------------------------------------- Redeem shares from a vault to receive assets. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters-2 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `WriteConfig` | Contract address, publicClient, walletClient | Yes | | args | `[Address, bytes32, bigint, bigint, bigint]` | Receiver, vaultId, curveId, shares, minAssets | Yes | ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-2 "Direct link to Example") const txHash = await multiVaultRedeem( { address, walletClient, publicClient }, { args: [account.address, vaultId, 1, parseEther('10'), 0n], }) * * * multiVaultRedeemBatch[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultredeembatch "Direct link to multiVaultRedeemBatch") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Redeem shares from multiple vaults in a single transaction. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters-3 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `WriteConfig` | Contract address, publicClient, walletClient | Yes | | args | `[bigint[], Address, bytes32[], bigint[], bigint[]]` | Shares, receiver, vaultIds, curveIds, minAssets | Yes | ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-3 "Direct link to Example") const txHash = await multiVaultRedeemBatch( { address, walletClient, publicClient }, { args: [ [parseEther('5'), parseEther('3')], account.address, [vault1, vault2], [1, 2], [0n, 0n], ], }) * * * multiVaultPreviewDeposit[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultpreviewdeposit "Direct link to multiVaultPreviewDeposit") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Preview deposit results before executing. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters-4 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32, bigint, bigint]` | VaultId, curveId, assets | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#returns "Direct link to Returns") Promise // Expected shares ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-4 "Direct link to Example") const expectedShares = await multiVaultPreviewDeposit( { address, publicClient }, { args: [vaultId, 1, parseEther('1')] })const minShares = (expectedShares * 99n) / 100n // 1% slippage * * * multiVaultPreviewRedeem[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultpreviewredeem "Direct link to multiVaultPreviewRedeem") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Preview redemption results before executing. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters-5 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32, bigint, bigint]` | VaultId, curveId, shares | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#returns-1 "Direct link to Returns") Promise // Expected assets ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-5 "Direct link to Example") const expectedAssets = await multiVaultPreviewRedeem( { address, publicClient }, { args: [vaultId, 1, parseEther('10')] })const minAssets = (expectedAssets * 99n) / 100n // 1% slippage * * * multiVaultDepositEncode[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultdepositencode "Direct link to multiVaultDepositEncode") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Encode deposit call data. ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-6 "Direct link to Example") import { multiVaultDepositEncode } from '@0xintuition/protocol'const data = multiVaultDepositEncode(receiver, vaultId, curveId, minShares) * * * multiVaultRedeemEncode[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultredeemencode "Direct link to multiVaultRedeemEncode") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Encode redeem call data. ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-7 "Direct link to Example") import { multiVaultRedeemEncode } from '@0xintuition/protocol'const data = multiVaultRedeemEncode(receiver, vaultId, curveId, shares, minAssets) * * * multiVaultDepositBatchEncode[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultdepositbatchencode "Direct link to multiVaultDepositBatchEncode") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Encode batch deposit call data. ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-8 "Direct link to Example") import { multiVaultDepositBatchEncode } from '@0xintuition/protocol'const data = multiVaultDepositBatchEncode( receiver, [vault1, vault2], [curve1, curve2], [assets1, assets2], [minShares1, minShares2]) * * * multiVaultRedeemBatchEncode[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultredeembatchencode "Direct link to multiVaultRedeemBatchEncode") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Encode batch redeem call data. ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-9 "Direct link to Example") import { multiVaultRedeemBatchEncode } from '@0xintuition/protocol'const data = multiVaultRedeemBatchEncode( receiver, [vault1, vault2], [curve1, curve2], [shares1, shares2], [minAssets1, minAssets2]) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#see-also "Direct link to See Also") --------------------------------------------------------------------------------------------------------------------------------- * [Core Concepts: Vaults](https://www.docs.intuition.systems/docs/protocol/core-concepts/vaults) * [Examples: Deposit & Redeem](https://www.docs.intuition.systems/docs/protocol/examples/deposit-redeem) * [multiVaultDeposit](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultdeposit) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example) * [multiVaultDepositBatch](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultdepositbatch) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-1) * [multiVaultRedeem](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultredeem) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters-2) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-2) * [multiVaultRedeemBatch](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultredeembatch) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters-3) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-3) * [multiVaultPreviewDeposit](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultpreviewdeposit) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters-4) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#returns) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-4) * [multiVaultPreviewRedeem](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultpreviewredeem) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#parameters-5) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-5) * [multiVaultDepositEncode](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultdepositencode) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-6) * [multiVaultRedeemEncode](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultredeemencode) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-7) * [multiVaultDepositBatchEncode](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultdepositbatchencode) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-8) * [multiVaultRedeemBatchEncode](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultredeembatchencode) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#example-9) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#see-also) --- # Finding Top Dapps on Coinbase | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#__docusaurus_skipToContent_fallback) On this page **Time to complete:** 30 minutes **Difficulty:** Beginner Why You'd Need This[​](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#why-youd-need-this "Direct link to Why You'd Need This") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Building a dApp directory, protocol aggregator, or ecosystem dashboard? This tutorial shows you how to query and rank decentralized applications by community confidence (measured via market cap in vaults). **Use cases:** * Creating a "Top dApps" leaderboard * Building protocol discovery platforms * Analyzing ecosystem growth * Tracking trending applications What You'll Learn[​](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#what-youll-learn "Direct link to What You'll Learn") ------------------------------------------------------------------------------------------------------------------------------------------------------------------ This guide shows you how to progressively build queries to discover and rank the top decentralized applications (dApps) on Coinbase by market capitalization. Follow these 4 queries step-by-step. Each one builds on the previous to achieve the final result: **a ranked list of top dApps on Coinbase**. Understanding the Progression[​](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#understanding-the-progression "Direct link to Understanding the Progression") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1. **Run a basic query** to view all dApps (organizations) in the system. 2. **Repeat the query**, but filtered for Coinbase-related Dapps (note how the results narrow down). 3. **Add performance metrics** from vaults (market cap, shares, and positions), data is now richer but not yet sorted. 4. **Repeat the query from Step 3**, but this time sort by market cap to show the top performing dApps first. Step 1: Discover All Dapps (Organizations)Step 2: Filter for Coinbase-Related DappsStep 3: Add Performance Metrics (Market Cap, Shares)Step 4: FINAL RESULT - Ranked by Market Cap #### Query β–Ά Run Query query DiscoverAllDapps($limit: Int = 10) { atoms( limit: $limit where: { type: { \_eq: "Thing" } } ) { term\_id label image emoji type created\_at } } #### Variables Click "Run Query" to execute the GraphQL query and see results UI Integration Example[​](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#ui-integration-example "Direct link to UI Integration Example") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Here's how to display the results in a React component: import { request, gql } from 'graphql-request'import { useEffect, useState } from 'react'const GRAPHQL_ENDPOINT = 'https://mainnet.intuition.sh/v1/graphql'const GET_TOP_DAPPS = gql` query GetTopDappsRanked($limit: Int = 10) { atoms( limit: $limit order_by: [{ term: { vaults_aggregate: { max: { market_cap: desc } } } }] where: { type: { _eq: "Thing" } _or: [ { label: { _ilike: "%coinbase%" } } { data: { _ilike: "%coinbase%" } } ] } ) { term_id label image term { vaults(where: { curve_id: { _eq: "1" } }) { total_shares current_share_price market_cap position_count } } } }`export function TopDappsLeaderboard() { const [dapps, setDapps] = useState([]) const [loading, setLoading] = useState(true) useEffect(() => { async function fetchDapps() { const data = await request(GRAPHQL_ENDPOINT, GET_TOP_DAPPS, { limit: 10 }) setDapps(data.atoms) setLoading(false) } fetchDapps() }, []) if (loading) return
Loading top dApps...
return (

Top dApps on Coinbase

{dapps.map((dapp, index) => ( ))}
)}function DappCard({ dapp, rank }) { const vault = dapp.term?.vaults?.[0] const marketCap = vault ? parseFloat(vault.market_cap) : 0 return (
#{rank}
{dapp.label}

{dapp.label}

Market Cap: ${(marketCap / 1e18).toFixed(2)} {vault?.position_count || 0} positions
)} Real-World Applications[​](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#real-world-applications "Direct link to Real-World Applications") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### 1\. Ecosystem Dashboard[​](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#1-ecosystem-dashboard "Direct link to 1. Ecosystem Dashboard") Display protocol rankings by category: async function getDappsByCategory(category: string, limit: number = 20) { const query = gql` query GetDappsByCategory($category: String!, $limit: Int!) { atoms( limit: $limit order_by: [{ term: { vaults_aggregate: { max: { market_cap: desc } } } }] where: { type: { _eq: "Thing" } data: { _ilike: $category } } ) { term_id label image term { vaults(where: { curve_id: { _eq: "1" } }) { market_cap position_count } } } } ` return request(GRAPHQL_ENDPOINT, query, { category: `%${category}%`, limit })}// Usageconst defiDapps = await getDappsByCategory('defi', 20)const nftDapps = await getDappsByCategory('nft', 20) ### 2\. Trending Tracker[​](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#2-trending-tracker "Direct link to 2. Trending Tracker") Track market cap changes over time: interface DappMetrics { term_id: string label: string current_market_cap: number previous_market_cap: number change_percentage: number}async function getTrendingDapps(): Promise { // Store current data const currentData = await getDapps() // Compare with cached previous data const previousData = await getCachedDappsData() return currentData.map(dapp => { const previous = previousData.find(p => p.term_id === dapp.term_id) const currentMC = parseFloat(dapp.term.vaults[0]?.market_cap || '0') const previousMC = previous?.market_cap || currentMC return { term_id: dapp.term_id, label: dapp.label, current_market_cap: currentMC, previous_market_cap: previousMC, change_percentage: ((currentMC - previousMC) / previousMC) * 100 } })} Next Steps[​](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#next-steps "Direct link to Next Steps") ---------------------------------------------------------------------------------------------------------------------------------------------- * [Discovering Trusted Accounts](https://www.docs.intuition.systems/docs/tutorials/queries/discovering-most-trusted-accounts) - Find reliable users * [Building Activity Feeds](https://www.docs.intuition.systems/docs/tutorials/queries/building-user-activity-feeds) - Track user actions * [Curated Lists Tutorial](https://www.docs.intuition.systems/docs/tutorials/curated-lists) - Create ranked registries Resources[​](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#resources "Direct link to Resources") ------------------------------------------------------------------------------------------------------------------------------------------- * [GraphQL API Reference](https://www.docs.intuition.systems/docs/graphql-api/overview) * [Schema Explorer](https://www.docs.intuition.systems/docs/graphql-api/getting-started/schema-reference) * [GraphQL Playground](https://mainnet.intuition.sh/v1/graphql) * [Why You'd Need This](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#why-youd-need-this) * [What You'll Learn](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#what-youll-learn) * [Understanding the Progression](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#understanding-the-progression) * [UI Integration Example](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#ui-integration-example) * [Real-World Applications](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#real-world-applications) * [1\. Ecosystem Dashboard](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#1-ecosystem-dashboard) * [2\. Trending Tracker](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#2-trending-tracker) * [Next Steps](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#next-steps) * [Resources](https://www.docs.intuition.systems/docs/tutorials/queries/finding-top-dapps-on-coinbase#resources) --- # Creating Atoms & Triples | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#__docusaurus_skipToContent_fallback) On this page Complete workflows for creating atoms and triples with the Protocol package. Example 1: Create a Simple Atom[​](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-1-create-a-simple-atom "Direct link to Example 1: Create a Simple Atom") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { intuitionTestnet, getMultiVaultAddressFromChainId, multiVaultCreateAtoms, multiVaultGetAtomCost, multiVaultGetAtom, eventParseAtomCreated,} from '@0xintuition/protocol'import { createPublicClient, createWalletClient, http, toHex } from 'viem'import { privateKeyToAccount } from 'viem/accounts'// 1. Setup clientsconst account = privateKeyToAccount('0x...')const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),})const walletClient = createWalletClient({ chain: intuitionTestnet, transport: http(), account,})const address = getMultiVaultAddressFromChainId(intuitionTestnet.id)// 2. Get atom creation costconst atomCost = await multiVaultGetAtomCost({ address, publicClient })console.log('Atom cost:', formatEther(atomCost))// 3. Create atomconst atomUri = toHex('TypeScript Programming Language')const txHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [[atomUri], [atomCost]], value: atomCost, })console.log('Transaction:', txHash)// 4. Parse events to get atom IDconst events = await eventParseAtomCreated(publicClient, txHash)const atomId = events[0].args.termIdconsole.log('Created atom ID:', atomId)// 5. Query atom detailsconst atom = await multiVaultGetAtom( { address, publicClient }, { args: [atomId] })console.log('Atom URI:', hexToString(atom[1])) Example 2: Create Atom with Initial Deposit[​](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-2-create-atom-with-initial-deposit "Direct link to Example 2: Create Atom with Initial Deposit") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { parseEther, formatEther } from 'viem'// Get atom costconst atomCost = await multiVaultGetAtomCost({ address, publicClient })// Add initial deposit to support the atomconst initialDeposit = parseEther('0.1')const totalAssets = atomCost + initialDepositconsole.log('Atom cost:', formatEther(atomCost))console.log('Initial deposit:', formatEther(initialDeposit))console.log('Total:', formatEther(totalAssets))// Create atom with depositconst atomUri = toHex('ethereum:0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb')const txHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [[atomUri], [totalAssets]], value: totalAssets, })// Parse both atom and deposit eventsconst atomEvents = await eventParseAtomCreated(publicClient, txHash)const depositEvents = await eventParseDeposited(publicClient, txHash)console.log('Atom ID:', atomEvents[0].args.termId)console.log('Shares received:', formatEther(depositEvents[0].args.shares)) Example 3: Create Multiple Atoms[​](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-3-create-multiple-atoms "Direct link to Example 3: Create Multiple Atoms") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Create multiple atoms in one transactionconst atoms = [ 'TypeScript', 'React', 'Viem', 'Intuition',]const atomUris = atoms.map(name => toHex(name))const atomCost = await multiVaultGetAtomCost({ address, publicClient })const costs = Array(atoms.length).fill(atomCost)const totalCost = atomCost * BigInt(atoms.length)const txHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [atomUris, costs], value: totalCost, })// Get all created atom IDsconst events = await eventParseAtomCreated(publicClient, txHash)const atomIds = events.map(e => e.args.termId)console.log('Created atom IDs:', atomIds)// Store mapping for later useconst atomMap = atoms.reduce((map, name, i) => { map[name] = atomIds[i] return map}, {})console.log('Atom mapping:', atomMap) Example 4: Create a Triple (Statement)[​](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-4-create-a-triple-statement "Direct link to Example 4: Create a Triple (Statement)") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ import { multiVaultGetTripleCost, multiVaultCreateTriples, eventParseTripleCreated, multiVaultGetTriple,} from '@0xintuition/protocol'// Assume we have atoms: Alice, follows, Bobconst subjectId = '0x1234...' // Aliceconst predicateId = '0x2345...' // followsconst objectId = '0x3456...' // Bob// Get triple costconst tripleCost = await multiVaultGetTripleCost({ address, publicClient })// Create tripleconst txHash = await multiVaultCreateTriples( { address, walletClient, publicClient }, { args: [ [subjectId], [predicateId], [objectId], [tripleCost], ], value: tripleCost, })// Parse triple created eventconst events = await eventParseTripleCreated(publicClient, txHash)const tripleId = events[0].args.tripleIdconsole.log('Created triple ID:', tripleId)// Query triple detailsconst triple = await multiVaultGetTriple( { address, publicClient }, { args: [tripleId] })console.log('Triple:', { id: triple[0], subject: triple[1], predicate: triple[2], object: triple[3], counterVault: triple[4],}) Example 5: Complete Workflow - Create Atoms Then Triple[​](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-5-complete-workflow---create-atoms-then-triple "Direct link to Example 5: Complete Workflow - Create Atoms Then Triple") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { hexToString } from 'viem'// Step 1: Create the constituent atomsconst atomNames = ['Alice', 'follows', 'Bob']const atomUris = atomNames.map(name => toHex(name))const atomCost = await multiVaultGetAtomCost({ address, publicClient })const atomCosts = Array(3).fill(atomCost)const totalAtomCost = atomCost * 3nconst atomTxHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [atomUris, atomCosts], value: totalAtomCost, })// Get atom IDsconst atomEvents = await eventParseAtomCreated(publicClient, atomTxHash)const [aliceId, followsId, bobId] = atomEvents.map(e => e.args.termId)console.log('Created atoms:', { aliceId, followsId, bobId })// Step 2: Create the tripleconst tripleCost = await multiVaultGetTripleCost({ address, publicClient })const deposit = tripleCost + parseEther('0.05') // Add support depositconst tripleTxHash = await multiVaultCreateTriples( { address, walletClient, publicClient }, { args: [[aliceId], [followsId], [bobId], [deposit]], value: deposit, })// Get triple IDconst tripleEvents = await eventParseTripleCreated(publicClient, tripleTxHash)const tripleId = tripleEvents[0].args.tripleIdconsole.log('Created triple:', { id: tripleId, statement: 'Alice follows Bob',})// Step 3: Verify the tripleconst triple = await multiVaultGetTriple( { address, publicClient }, { args: [tripleId] })const subject = await multiVaultGetAtom({ address, publicClient }, { args: [triple[1]] })const predicate = await multiVaultGetAtom({ address, publicClient }, { args: [triple[2]] })const object = await multiVaultGetAtom({ address, publicClient }, { args: [triple[3]] })console.log('Verified statement:', { subject: hexToString(subject[1]), predicate: hexToString(predicate[1]), object: hexToString(object[1]),}) Example 6: Check Before Creating[​](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-6-check-before-creating "Direct link to Example 6: Check Before Creating") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- import { multiVaultIsTermCreated } from '@0xintuition/protocol'// Function to create atom only if it doesn't existconst createAtomIfNotExists = async (atomUri: string) => { const uriHex = toHex(atomUri) // Check if atom already exists const exists = await multiVaultIsTermCreated( { address, publicClient }, { args: [uriHex] } ) if (exists) { console.log(`Atom "${atomUri}" already exists`) return null } // Create the atom const atomCost = await multiVaultGetAtomCost({ address, publicClient }) const txHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [[uriHex], [atomCost]], value: atomCost, } ) const events = await eventParseAtomCreated(publicClient, txHash) const atomId = events[0].args.termId console.log(`Created atom "${atomUri}" with ID:`, atomId) return atomId}// Usageconst atomId = await createAtomIfNotExists('My Unique Atom') See Also[​](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#see-also "Direct link to See Also") --------------------------------------------------------------------------------------------------------------------------------- * [Atom Functions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms) * [Triple Functions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples) * [Atoms Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals) * [Triples Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) * [Example 1: Create a Simple Atom](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-1-create-a-simple-atom) * [Example 2: Create Atom with Initial Deposit](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-2-create-atom-with-initial-deposit) * [Example 3: Create Multiple Atoms](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-3-create-multiple-atoms) * [Example 4: Create a Triple (Statement)](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-4-create-a-triple-statement) * [Example 5: Complete Workflow - Create Atoms Then Triple](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-5-complete-workflow---create-atoms-then-triple) * [Example 6: Check Before Creating](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#example-6-check-before-creating) * [See Also](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples#see-also) --- # Working with Vaults | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#__docusaurus_skipToContent_fallback) On this page **Conceptual overview:** [Signals Fundamentals](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) Vaults enable staking on atoms and triples through bonding curve-based share pricing. This guide covers deposits, redemptions, queries, and preview operations. Table of Contents[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#table-of-contents "Direct link to Table of Contents") ---------------------------------------------------------------------------------------------------------------------------------------------- * [Deposits](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#deposits) * [Redemptions](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#redemptions) * [Vault Queries](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#vault-queries) * [Preview Operations](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#preview-operations) * * * Deposits[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#deposits "Direct link to Deposits") ------------------------------------------------------------------------------------------------------------------- Deposit assets into atom or triple vaults to receive shares based on bonding curve pricing. ### deposit[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#deposit "Direct link to deposit") Deposit assets into a single vault. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#function-signature "Direct link to Function Signature") function deposit( config: WriteConfig, args: [ receiver: Address, termId: Hex, curveId: bigint, assets: bigint, minShares: bigint ]): Promise #### Parameters[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | `receiver` | `Address` | Address receiving shares | Yes | | `termId` | `Hex` | Atom or triple ID | Yes | | `curveId` | `bigint` | Bonding curve ID (use 1n) | Yes | | `assets` | `bigint` | Amount to deposit (wei) | Yes | | `minShares` | `bigint` | Minimum shares to receive | Yes | #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#basic-example "Direct link to Basic Example") import { deposit, createAtomFromString, getMultiVaultAddressFromChainId, intuitionTestnet,} from '@0xintuition/sdk'import { parseEther } from 'viem'// Create atomconst atom = await createAtomFromString(config, 'DeFi')const vaultId = atom.state.termId// Deposit into vaultawait deposit( { walletClient, publicClient, address }, [ walletClient.account.address, // receiver vaultId, // termId 1n, // curveId (default curve) parseEther('1'), // deposit 1 TRUST 0n, // minShares (no slippage protection) ])console.log('Deposited 1 TRUST into vault') #### Advanced Example with Preview[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#advanced-example-with-preview "Direct link to Advanced Example with Preview") import { deposit, multiVaultPreviewDeposit, multiVaultGetShares,} from '@0xintuition/sdk'import { parseEther, formatEther } from 'viem'async function depositWithPreview(vaultId: Hex, amount: bigint) { try { // Preview deposit const expectedShares = await multiVaultPreviewDeposit( { address, publicClient }, { args: [vaultId, 1n, amount] } ) console.log('Depositing:', formatEther(amount), 'TRUST') console.log('Expected shares:', expectedShares.toString()) // Execute deposit with slippage protection (2%) const minShares = (expectedShares * 98n) / 100n await deposit( { walletClient, publicClient, address }, [ walletClient.account.address, vaultId, 1n, amount, minShares, // 2% slippage tolerance ] ) // Check new balance const shares = await multiVaultGetShares( { address, publicClient }, { args: [walletClient.account.address, vaultId] } ) console.log('Deposit successful') console.log('Total shares:', shares.toString()) } catch (error) { console.error('Deposit failed:', error) throw error }} ### batchDeposit[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#batchdeposit "Direct link to batchDeposit") Deposit into multiple vaults in a single transaction. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#function-signature-1 "Direct link to Function Signature") function batchDeposit( config: WriteConfig, args: [ receiver: Address, termIds: Hex[], curveIds: bigint[], assetsArray: bigint[], minSharesArray: bigint[] ]): Promise #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#basic-example-1 "Direct link to Basic Example") import { batchDeposit } from '@0xintuition/sdk'import { parseEther } from 'viem'// Deposit into 3 different vaultsawait batchDeposit( { walletClient, publicClient, address }, [ walletClient.account.address, [vault1, vault2, vault3], // termIds [1n, 1n, 1n], // curveIds [parseEther('1'), parseEther('0.5'), parseEther('2')], // amounts [0n, 0n, 0n], // minShares ])console.log('Deposited into 3 vaults') ### Common Use Cases[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#common-use-cases "Direct link to Common Use Cases") #### Deposit into Atom Vault[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#deposit-into-atom-vault "Direct link to Deposit into Atom Vault") import { createAtomFromString, deposit } from '@0xintuition/sdk'import { parseEther } from 'viem'const atom = await createAtomFromString(config, 'TypeScript')await deposit(config, [ walletClient.account.address, atom.state.termId, 1n, parseEther('0.5'), 0n,]) #### Deposit into Triple Vault (FOR position)[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#deposit-into-triple-vault-for-position "Direct link to Deposit into Triple Vault (FOR position)") import { createTripleStatement, deposit } from '@0xintuition/sdk'import { parseEther } from 'viem'const triple = await createTripleStatement(config, tripleArgs)const tripleId = triple.state[0].args.tripleId// Deposit into FOR vaultawait deposit(config, [ walletClient.account.address, tripleId, 1n, parseEther('1'), 0n,]) #### Deposit into Counter Vault (AGAINST position)[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#deposit-into-counter-vault-against-position "Direct link to Deposit into Counter Vault (AGAINST position)") import { calculateCounterTripleId, deposit } from '@0xintuition/sdk'import { parseEther } from 'viem'const counterVaultId = calculateCounterTripleId(tripleId)// Deposit into AGAINST vaultawait deposit(config, [ walletClient.account.address, counterVaultId, 1n, parseEther('1'), 0n,]) ### Understanding Shares[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#understanding-shares "Direct link to Understanding Shares") #### Share Calculation[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#share-calculation "Direct link to Share Calculation") Shares are calculated based on the bonding curve: * Early depositors get more shares per TRUST * Later depositors get fewer shares per TRUST * Share price increases with total deposits #### Checking Share Balance[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#checking-share-balance "Direct link to Checking Share Balance") import { multiVaultGetShares } from '@0xintuition/sdk'const shares = await multiVaultGetShares( { address, publicClient }, { args: [walletClient.account.address, vaultId] })console.log('Your shares:', shares.toString()) ### Slippage Protection[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#slippage-protection "Direct link to Slippage Protection") Set `minShares` to protect against price movement: // Get expected sharesconst expectedShares = await multiVaultPreviewDeposit( { address, publicClient }, { args: [vaultId, 1n, depositAmount] })// Set 1% slippage toleranceconst minShares = (expectedShares * 99n) / 100nawait deposit(config, [ walletClient.account.address, vaultId, 1n, depositAmount, minShares, // Transaction will revert if shares < minShares]) * * * Redemptions[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#redemptions "Direct link to Redemptions") ---------------------------------------------------------------------------------------------------------------------------- Redeem shares from atom or triple vaults to receive assets back. ### redeem[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#redeem "Direct link to redeem") Redeem shares from a single vault. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#function-signature-2 "Direct link to Function Signature") function redeem( config: WriteConfig, args: [ receiver: Address, termId: Hex, curveId: bigint, shares: bigint, minAssets: bigint ]): Promise #### Parameters[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | `receiver` | `Address` | Address receiving assets | Yes | | `termId` | `Hex` | Atom or triple ID | Yes | | `curveId` | `bigint` | Bonding curve ID (use 1n) | Yes | | `shares` | `bigint` | Shares to redeem | Yes | | `minAssets` | `bigint` | Minimum assets to receive | Yes | #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#basic-example-2 "Direct link to Basic Example") import { redeem, multiVaultGetShares, getMultiVaultAddressFromChainId, intuitionTestnet,} from '@0xintuition/sdk'// Get your share balanceconst shares = await multiVaultGetShares( { address, publicClient }, { args: [walletClient.account.address, vaultId] })// Redeem all sharesawait redeem( { walletClient, publicClient, address }, [ walletClient.account.address, // receiver vaultId, // termId 1n, // curveId shares, // redeem all shares 0n, // minAssets ])console.log('Redeemed', shares.toString(), 'shares') #### Advanced Example with Preview[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#advanced-example-with-preview-1 "Direct link to Advanced Example with Preview") import { redeem, multiVaultPreviewRedeem, multiVaultGetShares,} from '@0xintuition/sdk'import { formatEther } from 'viem'async function redeemWithPreview(vaultId: Hex, sharesToRedeem: bigint) { try { // Preview redemption const expectedAssets = await multiVaultPreviewRedeem( { address, publicClient }, { args: [vaultId, 1n, sharesToRedeem] } ) console.log('Redeeming shares:', sharesToRedeem.toString()) console.log('Expected assets:', formatEther(expectedAssets), 'TRUST') // Execute with slippage protection (2%) const minAssets = (expectedAssets * 98n) / 100n await redeem( { walletClient, publicClient, address }, [ walletClient.account.address, vaultId, 1n, sharesToRedeem, minAssets, ] ) console.log('Redemption successful') } catch (error) { console.error('Redemption failed:', error) throw error }} ### batchRedeem[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#batchredeem "Direct link to batchRedeem") Redeem shares from multiple vaults in a single transaction. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#function-signature-3 "Direct link to Function Signature") function batchRedeem( config: WriteConfig, args: [ receiver: Address, termIds: Hex[], curveIds: bigint[], sharesArray: bigint[], minAssetsArray: bigint[] ]): Promise #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#basic-example-3 "Direct link to Basic Example") import { batchRedeem } from '@0xintuition/sdk'// Redeem from 3 vaultsawait batchRedeem( { walletClient, publicClient, address }, [ walletClient.account.address, [vault1, vault2, vault3], // termIds [1n, 1n, 1n], // curveIds [shares1, shares2, shares3], // shares to redeem [0n, 0n, 0n], // minAssets ])console.log('Redeemed from 3 vaults') ### Common Use Cases[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#common-use-cases-1 "Direct link to Common Use Cases") #### Exit a Position[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#exit-a-position "Direct link to Exit a Position") import { multiVaultGetShares, redeem } from '@0xintuition/sdk'// Get all sharesconst shares = await multiVaultGetShares( { address, publicClient }, { args: [walletClient.account.address, vaultId] })// Redeem allawait redeem(config, [ walletClient.account.address, vaultId, 1n, shares, 0n,]) #### Partial Redemption[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#partial-redemption "Direct link to Partial Redemption") // Redeem 50% of sharesconst totalShares = await multiVaultGetShares( { address, publicClient }, { args: [walletClient.account.address, vaultId] })const halfShares = totalShares / 2nawait redeem(config, [ walletClient.account.address, vaultId, 1n, halfShares, 0n,]) ### Understanding Exit Fees[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#understanding-exit-fees "Direct link to Understanding Exit Fees") Redemptions may include exit fees: import { multiVaultExitFeeAmount } from '@0xintuition/sdk'// Calculate exit feeconst exitFee = await multiVaultExitFeeAmount( { address, publicClient }, { args: [vaultId, assets] })console.log('Exit fee:', formatEther(exitFee), 'TRUST') ### Slippage Protection[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#slippage-protection-1 "Direct link to Slippage Protection") Set `minAssets` to protect against price movement: // Preview redemptionconst expectedAssets = await multiVaultPreviewRedeem( { address, publicClient }, { args: [vaultId, 1n, shares] })// Set 1% slippage toleranceconst minAssets = (expectedAssets * 99n) / 100nawait redeem(config, [ walletClient.account.address, vaultId, 1n, shares, minAssets, // Transaction reverts if assets < minAssets]) * * * Vault Queries[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#vault-queries "Direct link to Vault Queries") ---------------------------------------------------------------------------------------------------------------------------------- Query vault information including share balances, vault details, and asset conversions. ### multiVaultGetShares[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#multivaultgetshares "Direct link to multiVaultGetShares") Get a user's share balance in a vault. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#function-signature-4 "Direct link to Function Signature") function multiVaultGetShares( config: ReadConfig, args: { args: [account: Address, termId: Hex] }): Promise #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#basic-example-4 "Direct link to Basic Example") import { multiVaultGetShares } from '@0xintuition/sdk'const shares = await multiVaultGetShares( { address, publicClient }, { args: [walletClient.account.address, vaultId] })console.log('Your shares:', shares.toString()) ### multiVaultGetVault[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#multivaultgetvault "Direct link to multiVaultGetVault") Get comprehensive vault details. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#function-signature-5 "Direct link to Function Signature") function multiVaultGetVault( config: ReadConfig, args: { args: [termId: Hex] }): Promise #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#basic-example-5 "Direct link to Basic Example") import { multiVaultGetVault } from '@0xintuition/sdk'const vault = await multiVaultGetVault( { address, publicClient }, { args: [vaultId] })console.log('Total assets:', vault.totalAssets)console.log('Total shares:', vault.totalShares) ### multiVaultCurrentSharePrice[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#multivaultcurrentshareprice "Direct link to multiVaultCurrentSharePrice") Get the current share price for a vault. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#function-signature-6 "Direct link to Function Signature") function multiVaultCurrentSharePrice( config: ReadConfig, args: { args: [termId: Hex, curveId: bigint] }): Promise #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#basic-example-6 "Direct link to Basic Example") import { multiVaultCurrentSharePrice } from '@0xintuition/sdk'import { formatEther } from 'viem'const price = await multiVaultCurrentSharePrice( { address, publicClient }, { args: [vaultId, 1n] })console.log('Share price:', formatEther(price), 'TRUST') * * * Preview Operations[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#preview-operations "Direct link to Preview Operations") ------------------------------------------------------------------------------------------------------------------------------------------------- Preview deposit and redemption operations to calculate expected outcomes before executing transactions. ### multiVaultPreviewDeposit[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#multivaultpreviewdeposit "Direct link to multiVaultPreviewDeposit") Preview how many shares you'll receive for a deposit. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#function-signature-7 "Direct link to Function Signature") function multiVaultPreviewDeposit( config: ReadConfig, args: { args: [termId: Hex, curveId: bigint, assets: bigint] }): Promise #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#basic-example-7 "Direct link to Basic Example") import { multiVaultPreviewDeposit } from '@0xintuition/sdk'import { parseEther, formatEther } from 'viem'const assets = parseEther('1')const expectedShares = await multiVaultPreviewDeposit( { address, publicClient }, { args: [vaultId, 1n, assets] })console.log('Depositing:', formatEther(assets), 'TRUST')console.log('Expected shares:', expectedShares.toString()) ### multiVaultPreviewRedeem[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#multivaultpreviewredeem "Direct link to multiVaultPreviewRedeem") Preview how many assets you'll receive for redeeming shares. #### Function Signature[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#function-signature-8 "Direct link to Function Signature") function multiVaultPreviewRedeem( config: ReadConfig, args: { args: [termId: Hex, curveId: bigint, shares: bigint] }): Promise #### Basic Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#basic-example-8 "Direct link to Basic Example") import { multiVaultPreviewRedeem } from '@0xintuition/sdk'import { formatEther } from 'viem'const shares = 1000000nconst expectedAssets = await multiVaultPreviewRedeem( { address, publicClient }, { args: [vaultId, 1n, shares] })console.log('Redeeming:', shares.toString(), 'shares')console.log('Expected assets:', formatEther(expectedAssets), 'TRUST') ### Use Cases[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#use-cases "Direct link to Use Cases") #### Calculate Slippage Protection[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#calculate-slippage-protection "Direct link to Calculate Slippage Protection") import { multiVaultPreviewDeposit, deposit } from '@0xintuition/sdk'import { parseEther } from 'viem'const depositAmount = parseEther('1')// Previewconst expectedShares = await multiVaultPreviewDeposit( { address, publicClient }, { args: [vaultId, 1n, depositAmount] })// Set 2% slippage toleranceconst minShares = (expectedShares * 98n) / 100n// Deposit with protectionawait deposit(config, [ walletClient.account.address, vaultId, 1n, depositAmount, minShares,]) #### Compare Multiple Vaults[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#compare-multiple-vaults "Direct link to Compare Multiple Vaults") import { multiVaultPreviewDeposit } from '@0xintuition/sdk'import { parseEther } from 'viem'const amount = parseEther('1')const vaults = [vault1, vault2, vault3]// Preview all vaultsconst previews = await Promise.all( vaults.map(vaultId => multiVaultPreviewDeposit( { address, publicClient }, { args: [vaultId, 1n, amount] } ) ))// Find best vaultconst bestIndex = previews.indexOf(Math.max(...previews.map(Number)))console.log('Best vault:', vaults[bestIndex]) * * * Complete Examples[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#complete-examples "Direct link to Complete Examples") ---------------------------------------------------------------------------------------------------------------------------------------------- See working examples in the SDK Examples section Next Steps[​](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------- * [Search and Discovery](https://www.docs.intuition.systems/docs/intuition-sdk/search-guide) - Find atoms and triples * [SDK Integrations](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react) - Use with React * [Protocol Reference](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults) - Low-level vault operations * [Table of Contents](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#table-of-contents) * [Deposits](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#deposits) * [deposit](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#deposit) * [batchDeposit](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#batchdeposit) * [Common Use Cases](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#common-use-cases) * [Understanding Shares](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#understanding-shares) * [Slippage Protection](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#slippage-protection) * [Redemptions](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#redemptions) * [redeem](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#redeem) * [batchRedeem](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#batchredeem) * [Common Use Cases](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#common-use-cases-1) * [Understanding Exit Fees](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#understanding-exit-fees) * [Slippage Protection](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#slippage-protection-1) * [Vault Queries](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#vault-queries) * [multiVaultGetShares](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#multivaultgetshares) * [multiVaultGetVault](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#multivaultgetvault) * [multiVaultCurrentSharePrice](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#multivaultcurrentshareprice) * [Preview Operations](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#preview-operations) * [multiVaultPreviewDeposit](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#multivaultpreviewdeposit) * [multiVaultPreviewRedeem](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#multivaultpreviewredeem) * [Use Cases](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#use-cases) * [Complete Examples](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#complete-examples) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-sdk/vaults-guide#next-steps) --- # Trust Mechanisms Overview | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#__docusaurus_skipToContent_fallback) On this page Intuition creates a decentralized trust layer through its primitives and economic incentives. This guide explains how trust emerges and is validated in the system. Many-to-One Attestations[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#many-to-one-attestations "Direct link to Many-to-One Attestations") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Unlike traditional systems where a single authority issues certificates or attestations, Intuition enables **many-to-one non-deterministic attestations**: ### Key Characteristics[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#key-characteristics "Direct link to Key Characteristics") * **Multiple Validators**: Any number of users can signal their belief * **Weighted Consensus**: Aggregate signal determines confidence level * **No Single Point of Failure**: Truth emerges from collective validation * **Dynamic Evolution**: Attestations change as new information emerges Trust Generation Mechanisms[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#trust-generation-mechanisms "Direct link to Trust Generation Mechanisms") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Explicit Trust[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#explicit-trust "Direct link to Explicit Trust") Direct attestations through staking: * Users lock tokens to express belief * Economic skin in the game * Clear, verifiable positions * Trackable over time ### Implicit Trust[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#implicit-trust "Direct link to Implicit Trust") Derived from usage patterns: * Frequency of references * Inclusion in applications * Query patterns * Network effects ### Transitive Trust[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#transitive-trust "Direct link to Transitive Trust") Trust propagates through relationships: * Trusted sources carry more weight * Web-of-trust effects * Personalized trust graphs * Reality Tunnels leverage this Attestation Types[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#attestation-types "Direct link to Attestation Types") ------------------------------------------------------------------------------------------------------------------------------------------------------- ### Identity Attestations[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#identity-attestations "Direct link to Identity Attestations") Verifying entities are who they claim: [Address X] - [is controlled by] - [Person Y][Account] - [verified by] - [KYC Provider] ### Fact Attestations[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#fact-attestations "Direct link to Fact Attestations") Asserting truth of statements: [Company X] - [acquired] - [Company Y][Event Z] - [occurred on] - [Date] ### Credential Attestations[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#credential-attestations "Direct link to Credential Attestations") Verifying qualifications: [Person] - [has degree from] - [University][Developer] - [contributed to] - [Project] Trust Evaluation[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#trust-evaluation "Direct link to Trust Evaluation") ---------------------------------------------------------------------------------------------------------------------------------------------------- ### Factors Considered[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#factors-considered "Direct link to Factors Considered") 1. **Stake Amount**: Economic backing of claim 2. **Attestor Quality**: Reputation and history 3. **Attestor Diversity**: Number of independent validators 4. **Time Factor**: How long has consensus held 5. **Counter-Signal**: Strength of opposing views ### Consensus Calculation[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#consensus-calculation "Direct link to Consensus Calculation") // Example simplified consensusconst totalFor = sumStakes(positiveAttestors)const totalAgainst = sumStakes(negativeAttestors)const consensus = totalFor / (totalFor + totalAgainst)// Weighted by attestor reputationconst weightedConsensus = sumWeightedStakes(attestors, reputations) Trust Discovery[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#trust-discovery "Direct link to Trust Discovery") ------------------------------------------------------------------------------------------------------------------------------------------------- ### Finding Trusted Data[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#finding-trusted-data "Direct link to Finding Trusted Data") Users can filter information by trust criteria: // Minimum trust thresholdsconst trustedClaims = query({ minStake: 10000, minConsensus: 0.8, minAttestors: 10})// Specific attestor requirementsconst verified = query({ requireSignalFrom: ["Official Source", "Domain Expert"]}) ### Reality Tunnels[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#reality-tunnels "Direct link to Reality Tunnels") Create personalized trust lenses: * Define whose signals matter to you * Weight different attestor types * Filter based on trust criteria * Multiple valid worldviews Verification Mechanisms[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#verification-mechanisms "Direct link to Verification Mechanisms") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### On-Chain Verification[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#on-chain-verification "Direct link to On-Chain Verification") * All stakes are transparent * View who attested to what * See stake amounts and timing * Verify bonding curve positions ### Off-Chain Verification[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#off-chain-verification "Direct link to Off-Chain Verification") * IPFS-stored data integrity * DID document validation * External source linking * Cross-reference checking Trust Building Over Time[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#trust-building-over-time "Direct link to Trust Building Over Time") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Reputation Accumulation[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#reputation-accumulation "Direct link to Reputation Accumulation") * Consistent accurate signals build reputation * Early correct attestations rewarded * Historical track record visible * Stake-weighted influence ### Network Effects[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#network-effects "Direct link to Network Effects") * More participants increase reliability * Diverse attestors strengthen consensus * Cross-validation improves accuracy * System self-improves Trust Anti-Patterns[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#trust-anti-patterns "Direct link to Trust Anti-Patterns") ------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Centralization Risks[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#centralization-risks "Direct link to Centralization Risks") * Whale dominance * Cartel formation * Sybil attempts * Mitigated through diverse signals ### Quality Issues[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#quality-issues "Direct link to Quality Issues") * Popularity β‰  accuracy * Echo chambers * Misinformation campaigns * Addressed through counter-signals * * * Next Steps[​](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#next-steps "Direct link to Next Steps") ---------------------------------------------------------------------------------------------------------------------------------- * [Signal Fundamentals](https://www.docs.intuition.systems/docs/primitives/signals/fundamentals) - How trust is expressed * [Architecture Overview](https://www.docs.intuition.systems/docs/architecture/system-design) - System design for trust * [Economics](https://www.docs.intuition.systems/docs/economics/bonding-curves) - Economic trust incentives * [Many-to-One Attestations](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#many-to-one-attestations) * [Key Characteristics](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#key-characteristics) * [Trust Generation Mechanisms](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#trust-generation-mechanisms) * [Explicit Trust](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#explicit-trust) * [Implicit Trust](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#implicit-trust) * [Transitive Trust](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#transitive-trust) * [Attestation Types](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#attestation-types) * [Identity Attestations](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#identity-attestations) * [Fact Attestations](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#fact-attestations) * [Credential Attestations](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#credential-attestations) * [Trust Evaluation](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#trust-evaluation) * [Factors Considered](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#factors-considered) * [Consensus Calculation](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#consensus-calculation) * [Trust Discovery](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#trust-discovery) * [Finding Trusted Data](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#finding-trusted-data) * [Reality Tunnels](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#reality-tunnels) * [Verification Mechanisms](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#verification-mechanisms) * [On-Chain Verification](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#on-chain-verification) * [Off-Chain Verification](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#off-chain-verification) * [Trust Building Over Time](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#trust-building-over-time) * [Reputation Accumulation](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#reputation-accumulation) * [Network Effects](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#network-effects) * [Trust Anti-Patterns](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#trust-anti-patterns) * [Centralization Risks](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#centralization-risks) * [Quality Issues](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#quality-issues) * [Next Steps](https://www.docs.intuition.systems/docs/intuition-concepts/trust-mechanisms#next-steps) --- # TanStack Query Integration | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#__docusaurus_skipToContent_fallback) On this page Integrate the Intuition SDK with TanStack Query (React Query) for powerful data fetching, caching, and synchronization. Setup[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#setup "Direct link to Setup") ------------------------------------------------------------------------------------------------------------------------- npm install @tanstack/react-query App.tsx import { QueryClient, QueryClientProvider } from '@tanstack/react-query'const queryClient = new QueryClient()function App() { return ( )} Query Hooks[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#query-hooks "Direct link to Query Hooks") ------------------------------------------------------------------------------------------------------------------------------------------- Create reusable query hooks for SDK functions: ### useAtomDetails[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#useatomdetails "Direct link to useAtomDetails") hooks/useAtomDetails.ts import { useQuery } from '@tanstack/react-query'import { getAtomDetails } from '@0xintuition/sdk'export function useAtomDetails(atomId: string | undefined) { return useQuery({ queryKey: ['atom', atomId], queryFn: () => atomId ? getAtomDetails(atomId) : null, enabled: !!atomId, staleTime: 1000 * 60 * 5, // 5 minutes })} ### useGlobalSearch[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#useglobalsearch "Direct link to useGlobalSearch") hooks/useGlobalSearch.ts import { useQuery } from '@tanstack/react-query'import { globalSearch } from '@0xintuition/sdk'export function useGlobalSearch( query: string, options?: { atomsLimit?: number }) { return useQuery({ queryKey: ['search', query, options], queryFn: () => globalSearch(query, options), enabled: query.length > 2, staleTime: 1000 * 60, // 1 minute })} Mutation Hooks[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#mutation-hooks "Direct link to Mutation Hooks") ---------------------------------------------------------------------------------------------------------------------------------------------------- Create mutation hooks for write operations: ### useCreateAtom[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#usecreateatom "Direct link to useCreateAtom") hooks/useCreateAtom.ts import { useMutation, useQueryClient } from '@tanstack/react-query'import { usePublicClient, useWalletClient, useChainId } from 'wagmi'import { createAtomFromString, getMultiVaultAddressFromChainId,} from '@0xintuition/sdk'import { parseEther } from 'viem'export function useCreateAtom() { const queryClient = useQueryClient() const chainId = useChainId() const publicClient = usePublicClient() const { data: walletClient } = useWalletClient() return useMutation({ mutationFn: async ({ data, deposit }: { data: string, deposit?: string }) => { if (!publicClient || !walletClient) { throw new Error('Wallet not connected') } const address = getMultiVaultAddressFromChainId(chainId) return createAtomFromString( { walletClient, publicClient, address }, data, deposit ? parseEther(deposit) : undefined ) }, onSuccess: (result) => { // Invalidate search queries to refetch queryClient.invalidateQueries({ queryKey: ['search'] }) // Optionally prefetch the new atom details queryClient.setQueryData(['atom', result.state.termId], result) }, })} ### useCreateTriple[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#usecreatetriple "Direct link to useCreateTriple") hooks/useCreateTriple.ts import { useMutation, useQueryClient } from '@tanstack/react-query'import { usePublicClient, useWalletClient, useChainId } from 'wagmi'import { createTripleStatement, getMultiVaultAddressFromChainId,} from '@0xintuition/sdk'import { parseEther } from 'viem'export function useCreateTriple() { const queryClient = useQueryClient() const chainId = useChainId() const publicClient = usePublicClient() const { data: walletClient } = useWalletClient() return useMutation({ mutationFn: async ({ subjectId, predicateId, objectId, deposit, }: { subjectId: string predicateId: string objectId: string deposit: string }) => { if (!publicClient || !walletClient) { throw new Error('Wallet not connected') } const address = getMultiVaultAddressFromChainId(chainId) const depositAmount = parseEther(deposit) return createTripleStatement( { walletClient, publicClient, address }, { args: [ [subjectId as `0x${string}`], [predicateId as `0x${string}`], [objectId as `0x${string}`], [depositAmount], ], value: depositAmount, } ) }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['search'] }) queryClient.invalidateQueries({ queryKey: ['triple'] }) }, })} Complete Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#complete-example "Direct link to Complete Example") ---------------------------------------------------------------------------------------------------------------------------------------------------------- Full React component with TanStack Query: AtomExplorer.tsx import { useState } from 'react'import { useCreateAtom, useGlobalSearch, useAtomDetails } from './hooks'export function AtomExplorer() { const [searchQuery, setSearchQuery] = useState('') const [newAtomData, setNewAtomData] = useState('') const [selectedAtomId, setSelectedAtomId] = useState() // Queries const search = useGlobalSearch(searchQuery, { atomsLimit: 10 }) const atomDetails = useAtomDetails(selectedAtomId) // Mutations const createAtom = useCreateAtom() const handleCreateAtom = async () => { try { const result = await createAtom.mutateAsync({ data: newAtomData, deposit: '0.01', }) setNewAtomData('') setSelectedAtomId(result.state.termId) } catch (error) { console.error('Failed to create atom:', error) } } return (
{/* Search */}

Search Atoms

setSearchQuery(e.target.value)} placeholder="Search..." /> {search.isLoading &&

Searching...

} {search.data?.atoms.map(atom => (
setSelectedAtomId(atom.id)} style={{ cursor: 'pointer' }} > {atom.label}
))}
{/* Create */}

Create Atom

setNewAtomData(e.target.value)} placeholder="Atom data..." /> {createAtom.isError && (

Error: {createAtom.error.message}

)}
{/* Details */} {selectedAtomId && (

Atom Details

{atomDetails.isLoading &&

Loading...

} {atomDetails.data && (

Label: {atomDetails.data.label}

Creator: {atomDetails.data.creator}

Shares: {atomDetails.data.vault.totalShares}

)}
)}
)} Advanced Patterns[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#advanced-patterns "Direct link to Advanced Patterns") ------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Optimistic Updates[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#optimistic-updates "Direct link to Optimistic Updates") const createAtom = useMutation({ mutationFn: createAtomFunction, onMutate: async (newAtom) => { // Cancel outgoing refetches await queryClient.cancelQueries({ queryKey: ['search'] }) // Snapshot previous value const previous = queryClient.getQueryData(['search']) // Optimistically update queryClient.setQueryData(['search'], (old: any) => ({ ...old, atoms: [...(old?.atoms || []), { id: 'temp', label: newAtom.data }], })) return { previous } }, onError: (err, newAtom, context) => { // Rollback on error queryClient.setQueryData(['search'], context?.previous) }, onSettled: () => { queryClient.invalidateQueries({ queryKey: ['search'] }) },}) ### Dependent Queries[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#dependent-queries "Direct link to Dependent Queries") function AtomWithTriples({ atomId }: { atomId: string }) { const atom = useAtomDetails(atomId) const triples = useQuery({ queryKey: ['triples', atomId], queryFn: () => fetchTriplesForAtom(atomId), enabled: !!atom.data, // Only fetch when atom is loaded }) return (/* ... */)} Related Resources[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#related-resources "Direct link to Related Resources") ------------------------------------------------------------------------------------------------------------------------------------------------------------- * [React Integration](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react) * [TanStack Query Documentation](https://tanstack.com/query) See Also[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#see-also "Direct link to See Also") ---------------------------------------------------------------------------------------------------------------------------------- * [Wagmi Hooks](https://wagmi.sh/) * [SDK Query Functions](https://www.docs.intuition.systems/docs/intuition-sdk/search/global-search.md) * [Setup](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#setup) * [Query Hooks](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#query-hooks) * [useAtomDetails](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#useatomdetails) * [useGlobalSearch](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#useglobalsearch) * [Mutation Hooks](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#mutation-hooks) * [useCreateAtom](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#usecreateatom) * [useCreateTriple](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#usecreatetriple) * [Complete Example](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#complete-example) * [Advanced Patterns](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#advanced-patterns) * [Optimistic Updates](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#optimistic-updates) * [Dependent Queries](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#dependent-queries) * [Related Resources](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#related-resources) * [See Also](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query#see-also) --- # Triple Functions | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#__docusaurus_skipToContent_fallback) On this page Functions for creating and managing triples (statements) in the MultiVault contract. multiVaultCreateTriples[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultcreatetriples "Direct link to multiVaultCreateTriples") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Create one or more triples (subject-predicate-object statements). ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `WriteConfig` | Contract address, publicClient, walletClient | Yes | | args | `[bytes32[], bytes32[], bytes32[], bigint[]]` | Subject IDs, predicate IDs, object IDs, deposit amounts | Yes | | value | `bigint` | Total ETH to send | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns "Direct link to Returns") Promise // Transaction hash ### Basic Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#basic-example "Direct link to Basic Example") import { multiVaultCreateTriples, multiVaultGetTripleCost } from '@0xintuition/protocol'const tripleCost = await multiVaultGetTripleCost({ address, publicClient })const txHash = await multiVaultCreateTriples( { address, walletClient, publicClient }, { args: [ [subjectId], [predicateId], [objectId], [tripleCost], ], value: tripleCost, }) ### Advanced Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#advanced-example "Direct link to Advanced Example") import { parseEther } from 'viem'import { eventParseTripleCreated } from '@0xintuition/protocol'const tripleCost = await multiVaultGetTripleCost({ address, publicClient })// Create multiple triplesconst subjects = [aliceId, bobId, charlieId]const predicates = [followsId, followsId, followsId]const objects = [bobId, charlieId, aliceId]const deposits = subjects.map(() => tripleCost + parseEther('0.1'))const totalValue = deposits.reduce((a, b) => a + b, 0n)const txHash = await multiVaultCreateTriples( { address, walletClient, publicClient }, { args: [subjects, predicates, objects, deposits], value: totalValue, })const events = await eventParseTripleCreated(publicClient, txHash)console.log('Created triple IDs:', events.map(e => e.args.tripleId)) ### Related Functions[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#related-functions "Direct link to Related Functions") * [multiVaultGetTriple](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultgettriple) - Query triple details * [multiVaultGetTripleCost](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultgettriplecost) - Get creation cost * * * multiVaultGetTriple[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultgettriple "Direct link to multiVaultGetTriple") ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Query triple details by ID. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32]` | Triple ID | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-1 "Direct link to Returns") Promise<[bigint, bigint, bigint, bigint, bigint, bigint]>// [id, subjectId, predicateId, objectId, counterVaultId, creatorAtomId] ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example "Direct link to Example") const triple = await multiVaultGetTriple({ address, publicClient }, { args: [tripleId] })console.log('Triple ID:', triple[0])console.log('Subject:', triple[1])console.log('Predicate:', triple[2])console.log('Object:', triple[3])console.log('Counter vault:', triple[4])console.log('Creator:', triple[5]) * * * multiVaultGetTripleCost[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultgettriplecost "Direct link to multiVaultGetTripleCost") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get the base cost to create a triple. ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-2 "Direct link to Returns") Promise // Triple creation cost in wei ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example-1 "Direct link to Example") import { formatEther } from 'viem'const cost = await multiVaultGetTripleCost({ address, publicClient })console.log('Triple cost:', formatEther(cost), 'ETH') * * * multiVaultIsTriple[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultistriple "Direct link to multiVaultIsTriple") ---------------------------------------------------------------------------------------------------------------------------------------------------------------- Check if a vault ID represents a triple. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters-2 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32]` | Vault ID to check | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-3 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example-2 "Direct link to Example") const isTriple = await multiVaultIsTriple({ address, publicClient }, { args: [vaultId] })if (isTriple) { console.log('This is a triple vault')} else { console.log('This is an atom vault')} * * * multiVaultIsCounterTriple[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultiscountertriple "Direct link to multiVaultIsCounterTriple") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Check if two triples are counter-triples (opposing positions). ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters-3 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32, bytes32]` | Two triple IDs to compare | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-4 "Direct link to Returns") Promise ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example-3 "Direct link to Example") const isCounter = await multiVaultIsCounterTriple( { address, publicClient }, { args: [tripleId1, tripleId2] })if (isCounter) { console.log('These triples represent opposing positions')} * * * multiVaultGetInverseTripleId[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultgetinversetripleid "Direct link to multiVaultGetInverseTripleId") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get the counter-triple ID for a given triple. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters-4 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32]` | Triple ID | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-5 "Direct link to Returns") Promise // Counter-triple vault ID ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example-4 "Direct link to Example") const inverseId = await multiVaultGetInverseTripleId( { address, publicClient }, { args: [tripleId] })// Deposit to counter-triple (stake against)const txHash = await multiVaultDeposit( { address, walletClient, publicClient }, { args: [account.address, inverseId, curveId, minShares], value: depositAmount, }) * * * multiVaultCreateTriplesEncode[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultcreatetriplesencode "Direct link to multiVaultCreateTriplesEncode") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Encode triple creation call data. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters-5 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | subjects | `bytes32[]` | Subject atom IDs | Yes | | predicates | `bytes32[]` | Predicate atom IDs | Yes | | objects | `bytes32[]` | Object atom IDs | Yes | | deposits | `bigint[]` | Deposit amounts | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-6 "Direct link to Returns") Hex // Encoded function call data ### Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example-5 "Direct link to Example") const data = multiVaultCreateTriplesEncode( [subjectId], [predicateId], [objectId], [tripleCost])const tx = { to: address, data, value: tripleCost,}const hash = await walletClient.sendTransaction(tx) * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#see-also "Direct link to See Also") ---------------------------------------------------------------------------------------------------------------------------------- * [Core Concepts: Triples](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) * [Triple Events](https://www.docs.intuition.systems/docs/protocol/events/triple-events) * [Examples: Creating Triples](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples) * [multiVaultCreateTriples](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultcreatetriples) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns) * [Basic Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#basic-example) * [Advanced Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#advanced-example) * [Related Functions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#related-functions) * [multiVaultGetTriple](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultgettriple) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters-1) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-1) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example) * [multiVaultGetTripleCost](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultgettriplecost) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-2) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example-1) * [multiVaultIsTriple](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultistriple) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters-2) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-3) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example-2) * [multiVaultIsCounterTriple](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultiscountertriple) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters-3) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-4) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example-3) * [multiVaultGetInverseTripleId](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultgetinversetripleid) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters-4) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-5) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example-4) * [multiVaultCreateTriplesEncode](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#multivaultcreatetriplesencode) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#parameters-5) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#returns-6) * [Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#example-5) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/triples#see-also) --- # React Integration | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#__docusaurus_skipToContent_fallback) On this page Use the Intuition SDK with React applications via Wagmi hooks for wallet connectivity and blockchain interactions. Setup[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#setup "Direct link to Setup") ---------------------------------------------------------------------------------------------------------------- Install required dependencies: npm install wagmi viem @tanstack/react-query Wagmi Configuration[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#wagmi-configuration "Direct link to Wagmi Configuration") ---------------------------------------------------------------------------------------------------------------------------------------------------------- Set up Wagmi provider in your app: wagmi-config.ts import { http, createConfig } from 'wagmi'import { intuitionTestnet } from '@0xintuition/sdk'import { injected } from 'wagmi/connectors'export const config = createConfig({ chains: [intuitionTestnet], connectors: [injected()], transports: { [intuitionTestnet.id]: http(), },}) App.tsx import { WagmiProvider } from 'wagmi'import { QueryClient, QueryClientProvider } from '@tanstack/react-query'import { config } from './wagmi-config'const queryClient = new QueryClient()function App() { return ( )} Creating Atoms[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#creating-atoms "Direct link to Creating Atoms") ------------------------------------------------------------------------------------------------------------------------------------------- Use SDK functions with Wagmi hooks: CreateAtomButton.tsx import { usePublicClient, useWalletClient, useChainId } from 'wagmi'import { createAtomFromString, getMultiVaultAddressFromChainId,} from '@0xintuition/sdk'import { parseEther } from 'viem'import { useState } from 'react'export function CreateAtomButton() { const chainId = useChainId() const publicClient = usePublicClient() const { data: walletClient } = useWalletClient() const [loading, setLoading] = useState(false) const [atomId, setAtomId] = useState(null) const handleCreateAtom = async () => { if (!publicClient || !walletClient) { alert('Connect wallet first') return } setLoading(true) try { const address = getMultiVaultAddressFromChainId(chainId) const atom = await createAtomFromString( { walletClient, publicClient, address }, 'My Atom', parseEther('0.01') ) setAtomId(atom.state.termId) console.log('Created atom:', atom.state.termId) } catch (error) { console.error('Error:', error) alert('Failed to create atom') } finally { setLoading(false) } } return (
{atomId &&

Created: {atomId}

}
)} Custom Hooks[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#custom-hooks "Direct link to Custom Hooks") ------------------------------------------------------------------------------------------------------------------------------------- Create reusable hooks for SDK operations: useCreateAtom.ts import { useMutation } from '@tanstack/react-query'import { usePublicClient, useWalletClient, useChainId } from 'wagmi'import { createAtomFromString, getMultiVaultAddressFromChainId,} from '@0xintuition/sdk'import { parseEther } from 'viem'export function useCreateAtom() { const chainId = useChainId() const publicClient = usePublicClient() const { data: walletClient } = useWalletClient() return useMutation({ mutationFn: async ({ data, deposit }: { data: string, deposit?: string }) => { if (!publicClient || !walletClient) { throw new Error('Wallet not connected') } const address = getMultiVaultAddressFromChainId(chainId) return createAtomFromString( { walletClient, publicClient, address }, data, deposit ? parseEther(deposit) : undefined ) }, })}// Usage in componentfunction MyComponent() { const createAtom = useCreateAtom() const handleCreate = async () => { const result = await createAtom.mutateAsync({ data: 'My Atom', deposit: '0.01', }) console.log('Created:', result.state.termId) } return ( )} Query Hooks[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#query-hooks "Direct link to Query Hooks") ---------------------------------------------------------------------------------------------------------------------------------- Fetch data with React Query: useAtomDetails.ts import { useQuery } from '@tanstack/react-query'import { getAtomDetails } from '@0xintuition/sdk'export function useAtomDetails(atomId: string | undefined) { return useQuery({ queryKey: ['atom', atomId], queryFn: () => atomId ? getAtomDetails(atomId) : null, enabled: !!atomId, staleTime: 30000, // 30 seconds })}// Usagefunction AtomDisplay({ atomId }: { atomId: string }) { const { data: atom, isLoading, error } = useAtomDetails(atomId) if (isLoading) return
Loading...
if (error) return
Error loading atom
if (!atom) return null return (

{atom.label}

Creator: {atom.creator}

Shares: {atom.vault.totalShares}

)} Complete Example[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#complete-example "Direct link to Complete Example") ------------------------------------------------------------------------------------------------------------------------------------------------- Full-featured React component: AtomManager.tsx import { useState } from 'react'import { useAccount, usePublicClient, useWalletClient, useChainId } from 'wagmi'import { useQuery, useMutation } from '@tanstack/react-query'import { createAtomFromString, getAtomDetails, globalSearch, getMultiVaultAddressFromChainId,} from '@0xintuition/sdk'import { parseEther } from 'viem'export function AtomManager() { const chainId = useChainId() const { address: accountAddress } = useAccount() const publicClient = usePublicClient() const { data: walletClient } = useWalletClient() const [searchQuery, setSearchQuery] = useState('') const [newAtomData, setNewAtomData] = useState('') // Search atoms const { data: searchResults } = useQuery({ queryKey: ['search', searchQuery], queryFn: () => globalSearch(searchQuery, { atomsLimit: 10 }), enabled: searchQuery.length > 2, }) // Create atom mutation const createAtom = useMutation({ mutationFn: async (data: string) => { if (!publicClient || !walletClient) throw new Error('Not connected') const address = getMultiVaultAddressFromChainId(chainId) return createAtomFromString( { walletClient, publicClient, address }, data, parseEther('0.01') ) }, onSuccess: (result) => { console.log('Created:', result.state.termId) setNewAtomData('') }, }) return (

Atom Manager

{/* Search */}

Search Atoms

setSearchQuery(e.target.value)} placeholder="Search..." /> {searchResults?.atoms.map(atom => (
{atom.label}
))}
{/* Create */}

Create Atom

setNewAtomData(e.target.value)} placeholder="Atom data..." />
)} Related Resources[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#related-resources "Direct link to Related Resources") ---------------------------------------------------------------------------------------------------------------------------------------------------- * [TanStack Query Integration](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/tanstack-query) * [Wagmi Documentation](https://wagmi.sh/) * [SDK Quick Start](https://www.docs.intuition.systems/docs/intuition-sdk/getting-started/quick-start.md) See Also[​](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#see-also "Direct link to See Also") ------------------------------------------------------------------------------------------------------------------------- * [Wagmi Hooks Reference](https://wagmi.sh/react/hooks) * [TanStack Query](https://tanstack.com/query) * [Setup](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#setup) * [Wagmi Configuration](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#wagmi-configuration) * [Creating Atoms](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#creating-atoms) * [Custom Hooks](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#custom-hooks) * [Query Hooks](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#query-hooks) * [Complete Example](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#complete-example) * [Related Resources](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#related-resources) * [See Also](https://www.docs.intuition.systems/docs/intuition-sdk/integrations/react#see-also) --- # Using the SDK | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#__docusaurus_skipToContent_fallback) On this page Get started building with Intuition in minutes. This guide provides direct code snippets to create atoms, triples, and signal on them. Before starting development, we recommend adding the Intuition Testnet and Mainnet networks to your preferred wallet. You can find the networks in the [Network Details](https://www.docs.intuition.systems/docs/quick-start/network-details) page. Installation[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#installation "Direct link to Installation") ------------------------------------------------------------------------------------------------------------------------------ In most cases, you will only need to install the `@0xintuition/sdk` package. This package provides a high-level API for interacting with the Intuition protocol, plus exports the core `@0xintuition/protocol` and `@0xintuition/graphql` functionality. **Primary dependencies:** The `@0xintuition/sdk` package is the only required package to get started. * npm * pnpm * yarn * bun npm install @0xintuition/sdk@latest pnpm add @0xintuition/sdk@latest yarn add @0xintuition/sdk@latest bun add @0xintuition/sdk@latest If you're starting a new project entirely, be sure to install the required peer dependencies as well. * npm * pnpm * yarn * bun npm install @0xintuition/sdk@latest viem@latest pnpm add @0xintuition/sdk@latest viem@latest yarn add @0xintuition/sdk@latest viem@latest bun add @0xintuition/sdk@latest viem@latest **Secondary dependencies:** If you need to interact with the Intuition contracts directly, you will need to install the `@0xintuition/protocol` package. * npm * pnpm * yarn * bun npm install @0xintuition/protocol@latest @0xintuition/graphql@latest pnpm add @0xintuition/protocol@latest @0xintuition/graphql@latest yarn add @0xintuition/protocol@latest @0xintuition/graphql@latest bun add @0xintuition/protocol@latest @0xintuition/graphql@latest Prerequisites[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#prerequisites "Direct link to Prerequisites") --------------------------------------------------------------------------------------------------------------------------------- * Node.js 18+ and npm/pnpm/bun * An Ethereum wallet (MetaMask, Coinbase Wallet, etc.) * Basic knowledge of React and TypeScript Version Compatibility This guide uses the v2 contract architecture and requires the following package versions: * [`@0xintuition/sdk@^2.0.0`](https://www.npmjs.com/package/@0xintuition/sdk) * [`@0xintuition/protocol@^2.0.0`](https://www.npmjs.com/package/@0xintuition/protocol) * [`@0xintuition/graphql@^2.0.0`](https://www.npmjs.com/package/@0xintuition/graphql) ### Setup A Public and Wallet Provider[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#setup-a-public-and-wallet-provider "Direct link to Setup A Public and Wallet Provider") The Intuition SDK is designed to work with the [viem](https://viem.sh/) library. You will need to setup a public client and a wallet client to interact with the Intuition contracts via the `@0xintuition/sdk` and `@0xintuition/protocol` packages. ### Setup a Public Client[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#setup-a-public-client "Direct link to Setup a Public Client") Testnet import { intuitionTestnet } from '@0xintuition/sdk' // or `@0xintuition/protocol`import { createPublicClient, http } from 'viem'export const publicClient = createPublicClient({ chain: intuitionTestnet, transport: http(),}) Mainnet import { intuitionMainnet } from '@0xintuition/sdk' // or `@0xintuition/protocol`import { createPublicClient, http } from 'viem'export const publicClient = createPublicClient({ chain: intuitionMainnet, transport: http(),}) ### Setup a Wallet Client[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#setup-a-wallet-client "Direct link to Setup a Wallet Client") If you are using wagmi, you can use the `useWalletClient` hook to get the wallet client. And won't need to setup a wallet client manually. The code snippets below are for reference if you are not using wagmi. #### Testnet[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#testnet "Direct link to Testnet") When developing an application us the `intuitionTestnet` chain. import { intuitionTestnet } from '@0xintuition/sdk' // or `@0xintuition/protocol`import { createWalletClient, custom } from 'viem'import { privateKeyToAccount } from 'viem/accounts'const account = privateKeyToAccount('0x...')export const walletClient = createWalletClient({ chain: intuitionTestnet, transport: custom(window.ethereum!)}) #### Mainnet[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#mainnet "Direct link to Mainnet") When deploying to production remember to use the `intuitionMainnet` chain. import { intuitionMainnet } from '@0xintuition/sdk' // or `@0xintuition/protocol`import { createWalletClient, custom } from 'viem'import { privateKeyToAccount } from 'viem/accounts'const account = privateKeyToAccount('0x...')export const walletClient = createWalletClient({ chain: intuitionMainnet, transport: custom(window.ethereum!),}) Adding Data to the Knowledge Graph ================================== Data in the Intuition protocol is represented as atoms and triples. As a developer you will help users create atoms and triples in the protocol via onchain smart contracts, and retrieving data from the knowledge graph via offchain services. Create Atoms[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#create-atoms "Direct link to Create Atoms") ------------------------------------------------------------------------------------------------------------------------------ Atoms are the foundational building blocks of Intuition's knowledge graph – the words in our global dictionary. Think of Intuition as a vast, collaborative dictionary where anyone can create a new word, and each word has its own globally persistent, unique digital identifier that can be used to reference it across the entire internet! [Learn more about Atoms β†’](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals) ### Create an Atom from a String[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#create-an-atom-from-a-string "Direct link to Create an Atom from a String") import { createAtomFromString } from '@0xintuition/sdk'import { getMultiVaultAddressFromChainId } from '@0xintuition/protocol'import { useWalletClient, usePublicClient, useChainId } from 'wagmi'function CreateAtom() { const chainId = useChainId() const publicClient = usePublicClient() const { data: walletClient } = useWalletClient() const handleCreate = async () => { const address = getMultiVaultAddressFromChainId(chainId) const result = await createAtomFromString( { walletClient, publicClient, address }, 'My First Atom' ) console.log('Atom created:', result.transactionHash) console.log('Atom ID:', result.state.termId) } return } ### Create an Atom from a Thing (with metadata)[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#create-an-atom-from-a-thing-with-metadata "Direct link to Create an Atom from a Thing (with metadata)") import { createAtomFromThing } from '@0xintuition/sdk'const result = await createAtomFromThing( { walletClient, publicClient, address }, { url: 'https://example.com', name: 'Example Project', description: 'A cool Web3 project', image: 'https://example.com/image.png', }) ### Create an Atom from Ethereum Account[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#create-an-atom-from-ethereum-account "Direct link to Create an Atom from Ethereum Account") import { createAtomFromEthereumAccount } from '@0xintuition/sdk'const result = await createAtomFromEthereumAccount( { walletClient, publicClient, address }, { address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', chainId: 1, // Mainnet }) Reading Data[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#reading-data "Direct link to Reading Data") ------------------------------------------------------------------------------------------------------------------------------ ### Get Atom Details[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#get-atom-details "Direct link to Get Atom Details") Retrieve detailed information about an atom using its ID: import { getAtomDetails } from '@0xintuition/sdk'const atomData = await getAtomDetails( '0x57d94c116a33bb460428eced262b7ae2ec6f865e7aceef6357cec3d034e8ea21')console.log('Atom data:', atomData)// Returns atom information including metadata, vault details, and more ### Get Triple Details[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#get-triple-details "Direct link to Get Triple Details") Retrieve information about a triple relationship: import { getTripleDetails } from '@0xintuition/sdk'const tripleData = await getTripleDetails( '0x4957d3f442acc301ad71e73f26efd6af78647f57dacf2b3a686d91fa773fe0b6')console.log('Triple data:', tripleData)// Returns subject, predicate, object atoms and relationship metadata ### Search the Knowledge Graph[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#search-the-knowledge-graph "Direct link to Search the Knowledge Graph") Perform a global search across atoms, triples, accounts, and collections: import { globalSearch } from '@0xintuition/sdk'const results = await globalSearch('ethereum', { atomsLimit: 10, accountsLimit: 5, triplesLimit: 10, collectionsLimit: 5,})console.log('Search results:', results) ### Semantic Search[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#semantic-search "Direct link to Semantic Search") Use AI-powered semantic search to find relevant atoms: import { semanticSearch } from '@0xintuition/sdk'const results = await semanticSearch( 'decentralized identity protocols', { limit: 5 })console.log('Semantic search results:', results) ### Read On-Chain Atom Data[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#read-on-chain-atom-data "Direct link to Read On-Chain Atom Data") Read atom data directly from the smart contract: import { getAtom } from '@0xintuition/protocol'const atomOnChain = await getAtom( { publicClient, address }, { args: [BigInt(atomId)] })console.log('On-chain atom:', atomOnChain)// Returns [walletAddress, vaultId, atomData] Creating Triples[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#creating-triples "Direct link to Creating Triples") ------------------------------------------------------------------------------------------------------------------------------------------ If Atoms are the words in Intuition's global dictionary, Triples are the sentences we create from those words. A Triple connects three Atoms to assert a relationship or fact in the form **\[Subject\] – \[Predicate\] – \[Object\]**. You can string these sentences together to express any arbitrarily-complex concept, all while retaining a discrete, referenceable structure! [Learn more about Triples β†’](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Triples/fundamentals) import { createAtomFromString, createTripleStatement } from '@0xintuition/sdk'// First create three atomsconst subject = await createAtomFromString( { walletClient, publicClient, address }, 'Alice')const predicate = await createAtomFromString( { walletClient, publicClient, address }, 'knows')const object = await createAtomFromString( { walletClient, publicClient, address }, 'Bob')// Create the triple: "Alice knows Bob"const triple = await createTripleStatement( { walletClient, publicClient, address }, { args: [ subject.state.termId, predicate.state.termId, object.state.termId ], value: 1000000000000000000n, // 1 ETH deposit in wei })console.log('Triple created:', triple.transactionHash) Signaling (Staking on Atoms/Triples)[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#signaling-staking-on-atomstriples "Direct link to Signaling (Staking on Atoms/Triples)") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Signals represent the trust, confidence, or relevance that the community assigns to Atoms and Triples in the Intuition knowledge graph. Think of the knowledge graph as a weighted graph where Signal is the weight on each node (Atom) or edge (Triple), indicating how strongly people believe in or care about this information. [Learn more about Signals β†’](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Signals/fundamentals) ### Deposit (Signal Support)[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#deposit-signal-support "Direct link to Deposit (Signal Support)") import { deposit } from '@0xintuition/protocol'// Deposit on an atom or triple vaultconst txHash = await deposit( { walletClient, publicClient, address }, { args: [ BigInt(vaultId), // The vault ID (atom or triple) BigInt(depositAmount), // Amount in wei walletClient.account.address // Receiver address ], value: BigInt(depositAmount), })console.log('Deposited:', txHash) ### Redeem (Remove Signal)[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#redeem-remove-signal "Direct link to Redeem (Remove Signal)") import { redeem } from '@0xintuition/protocol'// Redeem from a vaultconst txHash = await redeem( { walletClient, publicClient, address }, { args: [ BigInt(vaultId), // The vault ID BigInt(sharesToRedeem), // Amount of shares to redeem walletClient.account.address, // Receiver address walletClient.account.address, // Owner address ] })console.log('Redeemed:', txHash) ### Preview Redeem[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#preview-redeem "Direct link to Preview Redeem") Preview how many assets you'll receive when redeeming shares: import { previewRedeem } from '@0xintuition/protocol'// Preview redeem to see assets receivedconst assetsToReceive = await previewRedeem( { walletClient, publicClient, address }, { args: [BigInt(vaultId), BigInt(sharesToRedeem)] })console.log('Assets you will receive:', assetsToReceive) Complete Example Component[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#complete-example-component "Direct link to Complete Example Component") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ import { useState } from 'react'import { useWalletClient, usePublicClient, useChainId } from 'wagmi'import { createAtomFromString, createTripleStatement } from '@0xintuition/sdk'import { getMultiVaultAddressFromChainId, deposit } from '@0xintuition/protocol'function IntuitionQuickstart() { const chainId = useChainId() const publicClient = usePublicClient() const { data: walletClient } = useWalletClient() const [atomId, setAtomId] = useState('') const address = getMultiVaultAddressFromChainId(chainId) const createAtom = async () => { const result = await createAtomFromString( { walletClient, publicClient, address }, 'My Cool Idea' ) setAtomId(result.state.termId) console.log('Created atom:', result.state.termId) } const signalAtom = async () => { if (!atomId) return const depositAmount = 100000000000000000n // 0.1 ETH await deposit( { walletClient, publicClient, address }, { args: [BigInt(atomId), depositAmount, walletClient.account.address], value: depositAmount, } ) console.log('Signaled support!') } return (

Intuition Quickstart

{atomId && ( )}
)} Advanced Concepts[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#advanced-concepts "Direct link to Advanced Concepts") --------------------------------------------------------------------------------------------------------------------------------------------- ### Batch Create Atoms[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#batch-create-atoms "Direct link to Batch Create Atoms") Create multiple atoms in a single transaction for efficiency and gas savings: import { batchCreateAtomsFromThings } from '@0xintuition/sdk'// Batch create multiple atoms at onceconst atomData = [ { url: 'https://example.com/project1', name: 'Project 1', description: 'First amazing project', image: 'https://example.com/project1.png', }, { url: 'https://example.com/project2', name: 'Project 2', description: 'Second amazing project', image: 'https://example.com/project2.png', }, { url: 'https://example.com/project3', name: 'Project 3', description: 'Third amazing project', image: 'https://example.com/project3.png', },]const result = await batchCreateAtomsFromThings( { walletClient, publicClient, address }, atomData, 1000000000000000000n // Optional: 1 ETH deposit per atom)console.log('Created atoms:', result.state)console.log('Transaction:', result.transactionHash) ### Batch Create Triples[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#batch-create-triples "Direct link to Batch Create Triples") Create multiple triple relationships in a single transaction: import { batchCreateTripleStatements } from '@0xintuition/sdk'// Assuming you have atom IDs already createdconst tripleData = [ [subjectId1, predicateId1, objectId1], // Triple 1 [subjectId2, predicateId2, objectId2], // Triple 2 [subjectId3, predicateId3, objectId3], // Triple 3]const result = await batchCreateTripleStatements( { walletClient, publicClient, address }, tripleData, 1000000000000000000n // Optional: 1 ETH deposit)console.log('Created triples:', result.state) ### Batch Deposit[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#batch-deposit "Direct link to Batch Deposit") Deposit on multiple vaults (atoms or triples) in a single transaction: import { batchDepositStatement } from '@0xintuition/sdk'// Deposit on multiple vaults at onceconst depositData = [ [vaultId1, vaultId2, vaultId3], // Vault IDs [amount1, amount2, amount3], // Amounts in wei [receiverAddress, receiverAddress, receiverAddress], // Receiver addresses]const result = await batchDepositStatement( { walletClient, publicClient, address }, depositData)console.log('Batch deposit completed:', result.transactionHash) Gas Optimization Batch operations significantly reduce gas costs when working with multiple atoms or triples. Instead of paying gas fees for each individual transaction, you pay once for the entire batch. Use Cases[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#use-cases "Direct link to Use Cases") --------------------------------------------------------------------------------------------------------------------- Now that you know the basics, explore what you can build: * **[List Curation & Ranking](https://www.docs.intuition.systems/docs/getting-started/use-cases#list-curation--ranking-systems) ** - Create curated lists and reputation systems * **[Verification & Fraud Protection](https://www.docs.intuition.systems/docs/getting-started/use-cases#verification-and-fraud-protection) ** - Build trust and safety mechanisms * **[Social Platforms](https://www.docs.intuition.systems/docs/getting-started/use-cases#community-owned-social-platforms) ** - Portable identities and attestations * **[Reputation Scores](https://www.docs.intuition.systems/docs/getting-started/use-cases#reputation-scores) ** - Context-aware trust scoring * **[Q&A Platforms](https://www.docs.intuition.systems/docs/getting-started/use-cases#qa-platforms) ** - Knowledge sharing with proof * **[Oracles](https://www.docs.intuition.systems/docs/getting-started/use-cases#oracles) ** - Decentralized data feeds [View all use cases β†’](https://www.docs.intuition.systems/docs/getting-started/use-cases) Next Steps[​](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#next-steps "Direct link to Next Steps") ------------------------------------------------------------------------------------------------------------------------ * **[Build Your First App](https://www.docs.intuition.systems/docs/tutorials/overview) ** - Complete tutorial for a full application * **[Network Configuration](https://www.docs.intuition.systems/docs/quick-start/network-details) ** - Detailed network setup * **[Explore the SDK](https://www.docs.intuition.systems/docs/intuition-sdk/quick-start) ** - Deep dive into SDK capabilities * **[Smart Contracts](https://www.docs.intuition.systems/docs/protocol/getting-started/overview) ** - Contract architecture and ABIs * **[GraphQL API](https://www.docs.intuition.systems/docs/graphql-api/overview) ** - Query the knowledge graph * **[Join the Community](https://www.docs.intuition.systems/docs/resources/community-and-support) ** - Get help and share ideas Not sure which tool to use? Check out [Choose Your Path](https://www.docs.intuition.systems/docs/getting-started/choose-your-path) to find the best starting point for your project. * [Installation](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#installation) * [Prerequisites](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#prerequisites) * [Setup A Public and Wallet Provider](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#setup-a-public-and-wallet-provider) * [Setup a Public Client](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#setup-a-public-client) * [Setup a Wallet Client](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#setup-a-wallet-client) * [Create Atoms](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#create-atoms) * [Create an Atom from a String](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#create-an-atom-from-a-string) * [Create an Atom from a Thing (with metadata)](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#create-an-atom-from-a-thing-with-metadata) * [Create an Atom from Ethereum Account](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#create-an-atom-from-ethereum-account) * [Reading Data](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#reading-data) * [Get Atom Details](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#get-atom-details) * [Get Triple Details](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#get-triple-details) * [Search the Knowledge Graph](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#search-the-knowledge-graph) * [Semantic Search](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#semantic-search) * [Read On-Chain Atom Data](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#read-on-chain-atom-data) * [Creating Triples](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#creating-triples) * [Signaling (Staking on Atoms/Triples)](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#signaling-staking-on-atomstriples) * [Deposit (Signal Support)](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#deposit-signal-support) * [Redeem (Remove Signal)](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#redeem-remove-signal) * [Preview Redeem](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#preview-redeem) * [Complete Example Component](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#complete-example-component) * [Advanced Concepts](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#advanced-concepts) * [Batch Create Atoms](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#batch-create-atoms) * [Batch Create Triples](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#batch-create-triples) * [Batch Deposit](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#batch-deposit) * [Use Cases](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#use-cases) * [Next Steps](https://www.docs.intuition.systems/docs/quick-start/using-the-sdk#next-steps) --- # Atom Functions | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#__docusaurus_skipToContent_fallback) On this page Functions for creating and querying atoms in the MultiVault contract. multiVaultCreateAtoms[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultcreateatoms "Direct link to multiVaultCreateAtoms") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Create one or more atoms with optional initial deposits. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#parameters "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `WriteConfig` | Contract address, publicClient, walletClient | Yes | | args | `[bytes[], bigint[]]` | Array of atom URIs (hex) and deposit amounts | Yes | | value | `bigint` | Total ETH to send (sum of deposits) | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#returns "Direct link to Returns") Promise // Transaction hash ### Basic Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#basic-example "Direct link to Basic Example") import { multiVaultCreateAtoms, multiVaultGetAtomCost, getMultiVaultAddressFromChainId,} from '@0xintuition/protocol'import { toHex } from 'viem'const address = getMultiVaultAddressFromChainId(chainId)const atomCost = await multiVaultGetAtomCost({ address, publicClient })const txHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [[toHex('Hello, Intuition!')], [atomCost]], value: atomCost, }) ### Advanced Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#advanced-example "Direct link to Advanced Example") import { parseEther } from 'viem'import { eventParseAtomCreated } from '@0xintuition/protocol'try { const atomCost = await multiVaultGetAtomCost({ address, publicClient }) // Create multiple atoms with deposits const atomUris = [ toHex('ethereum:0x1234...'), toHex('TypeScript'), toHex('Web3'), ] const deposits = [ atomCost + parseEther('0.1'), atomCost + parseEther('0.05'), atomCost, ] const totalValue = deposits.reduce((a, b) => a + b, 0n) const txHash = await multiVaultCreateAtoms( { address, walletClient, publicClient }, { args: [atomUris, deposits], value: totalValue, } ) // Parse events to get atom IDs const events = await eventParseAtomCreated(publicClient, txHash) events.forEach((event, i) => { console.log(`Atom ${i}: ${event.args.termId}`) })} catch (error) { console.error('Failed to create atoms:', error)} ### Related Functions[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#related-functions "Direct link to Related Functions") * [multiVaultGetAtomCost](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultgetatomcost) - Get atom creation cost * [multiVaultPreviewAtomCreate](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultpreviewatomcreate) - Preview atom creation * [eventParseAtomCreated](https://www.docs.intuition.systems/docs/protocol/events/atom-events#eventparseatomcreated) - Parse creation events ### Common Use Cases[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#common-use-cases "Direct link to Common Use Cases") * **Create identity atoms**: Represent Ethereum addresses on-chain * **Create tag atoms**: Build categorization systems * **Batch creation**: Create multiple related atoms in one transaction * * * multiVaultGetAtom[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultgetatom "Direct link to multiVaultGetAtom") ----------------------------------------------------------------------------------------------------------------------------------------------------------- Query atom details by ID. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#parameters-1 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | | args | `[bytes32]` | Atom ID to query | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#returns-1 "Direct link to Returns") Promise<[bigint, bytes, bigint]> // [id, termData, creatorAtomId] ### Basic Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#basic-example-1 "Direct link to Basic Example") import { multiVaultGetAtom } from '@0xintuition/protocol'const atom = await multiVaultGetAtom( { address, publicClient }, { args: [atomId] })console.log('Atom ID:', atom[0])console.log('Atom URI:', atom[1])console.log('Creator:', atom[2]) ### Advanced Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#advanced-example-1 "Direct link to Advanced Example") import { hexToString } from 'viem'try { const atom = await multiVaultGetAtom( { address, publicClient }, { args: [atomId] } ) const atomData = { id: atom[0], uri: atom[1], uriString: hexToString(atom[1]), creator: atom[2], } console.log('Atom details:', atomData) // Query creator atom const creator = await multiVaultGetAtom( { address, publicClient }, { args: [atom[2]] } ) console.log('Creator URI:', hexToString(creator[1]))} catch (error) { console.error('Atom not found:', error)} ### Related Functions[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#related-functions-1 "Direct link to Related Functions") * [multiVaultCreateAtoms](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultcreateatoms) - Create atoms * [multiVaultIsTermCreated](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vault-queries#multivaultistermcreated) - Check if atom exists ### Common Use Cases[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#common-use-cases-1 "Direct link to Common Use Cases") * **Verify atom data**: Check atom URI and creator * **Resolve references**: Get detailed information about atoms referenced in triples * * * multiVaultGetAtomCost[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultgetatomcost "Direct link to multiVaultGetAtomCost") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Get the base cost to create an atom (protocol fee). ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#parameters-2 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `ReadConfig` | Contract address and publicClient | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#returns-2 "Direct link to Returns") Promise // Atom creation cost in wei ### Basic Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#basic-example-2 "Direct link to Basic Example") import { multiVaultGetAtomCost } from '@0xintuition/protocol'import { formatEther } from 'viem'const cost = await multiVaultGetAtomCost({ address, publicClient })console.log('Atom cost:', formatEther(cost), 'ETH') ### Advanced Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#advanced-example-2 "Direct link to Advanced Example") import { parseEther, formatEther } from 'viem'try { const atomCost = await multiVaultGetAtomCost({ address, publicClient }) // Calculate total cost with initial deposit const initialDeposit = parseEther('0.1') const totalCost = atomCost + initialDeposit console.log('Protocol fee:', formatEther(atomCost)) console.log('Initial deposit:', formatEther(initialDeposit)) console.log('Total cost:', formatEther(totalCost)) // Check user balance const balance = await publicClient.getBalance({ address: account.address }) if (balance < totalCost) { throw new Error('Insufficient balance') }} catch (error) { console.error('Cost calculation failed:', error)} ### Related Functions[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#related-functions-2 "Direct link to Related Functions") * [multiVaultCreateAtoms](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultcreateatoms) - Create atoms with this cost * [multiVaultGetAtomConfig](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/configuration#multivaultgetatomconfig) - Get detailed atom configuration ### Common Use Cases[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#common-use-cases-2 "Direct link to Common Use Cases") * **Budget estimation**: Calculate total cost before creating atoms * **Wallet preparation**: Ensure sufficient funds for atom creation * * * multiVaultPreviewAtomCreate[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultpreviewatomcreate "Direct link to multiVaultPreviewAtomCreate") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Preview atom creation results before executing the transaction. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#parameters-3 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | config | `WriteConfig` | Contract address, publicClient, walletClient | Yes | | args | `[bytes, bigint]` | Atom URI and deposit amount | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#returns-3 "Direct link to Returns") Promise<[bigint, bigint, bigint]> // [shares, assetsAfterFixedFees, assetsAfterFees] ### Basic Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#basic-example-3 "Direct link to Basic Example") import { multiVaultPreviewAtomCreate } from '@0xintuition/protocol'import { parseEther, formatEther } from 'viem'const atomUri = toHex('example')const deposit = parseEther('1')const [shares, afterFixed, afterFees] = await multiVaultPreviewAtomCreate( { address, publicClient, walletClient }, { args: [atomUri, deposit] })console.log('Expected shares:', formatEther(shares))console.log('After fixed fees:', formatEther(afterFixed))console.log('After all fees:', formatEther(afterFees)) ### Advanced Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#advanced-example-3 "Direct link to Advanced Example") try { const atomCost = await multiVaultGetAtomCost({ address, publicClient }) const initialDeposit = parseEther('0.5') const totalDeposit = atomCost + initialDeposit const [shares, afterFixed, afterFees] = await multiVaultPreviewAtomCreate( { address, publicClient, walletClient }, { args: [toHex('My Atom'), totalDeposit] } ) const fees = totalDeposit - afterFees const effectivePrice = afterFees / shares console.log('Preview Results:') console.log('- Shares to receive:', formatEther(shares)) console.log('- Total fees:', formatEther(fees)) console.log('- Effective price per share:', formatEther(effectivePrice)) // Check if acceptable const maxAcceptableFees = parseEther('0.01') if (fees > maxAcceptableFees) { console.warn('Fees too high!') }} catch (error) { console.error('Preview failed:', error)} ### Related Functions[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#related-functions-3 "Direct link to Related Functions") * [multiVaultCreateAtoms](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultcreateatoms) - Execute atom creation * [multiVaultEntryFeeAmount](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/fees#multivaultentryfeeamount) - Calculate entry fees ### Common Use Cases[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#common-use-cases-3 "Direct link to Common Use Cases") * **Fee estimation**: Calculate fees before creating atoms * **Share calculation**: Determine expected shares from deposit * * * multiVaultCreateAtomsEncode[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultcreateatomsencode "Direct link to multiVaultCreateAtomsEncode") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Encode atom creation call data for building transactions manually. ### Parameters[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#parameters-4 "Direct link to Parameters") | Parameter | Type | Description | Required | | --- | --- | --- | --- | | atomUris | `bytes[]` | Array of atom URIs (hex-encoded) | Yes | | deposits | `bigint[]` | Array of deposit amounts | Yes | ### Returns[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#returns-4 "Direct link to Returns") Hex // Encoded function call data ### Basic Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#basic-example-4 "Direct link to Basic Example") import { multiVaultCreateAtomsEncode } from '@0xintuition/protocol'const data = multiVaultCreateAtomsEncode( [toHex('atom1'), toHex('atom2')], [parseEther('1'), parseEther('0.5')])console.log('Encoded data:', data) ### Advanced Example[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#advanced-example-4 "Direct link to Advanced Example") import { encodeFunctionData } from 'viem'try { const atomUris = [toHex('atom1'), toHex('atom2'), toHex('atom3')] const deposits = [parseEther('1'), parseEther('0.5'), parseEther('0.25')] // Encode using helper const data = multiVaultCreateAtomsEncode(atomUris, deposits) // Build custom transaction const tx = { to: address, data, value: deposits.reduce((a, b) => a + b, 0n), from: account.address, } // Estimate gas const gas = await publicClient.estimateGas(tx) console.log('Estimated gas:', gas) // Send transaction const hash = await walletClient.sendTransaction({ ...tx, gas }) console.log('Transaction sent:', hash)} catch (error) { console.error('Encoding failed:', error)} ### Related Functions[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#related-functions-4 "Direct link to Related Functions") * [multiVaultCreateAtoms](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultcreateatoms) - Higher-level creation function * [multiVaultDepositEncode](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/vaults#multivaultdepositencode) - Encode deposit calls ### Common Use Cases[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#common-use-cases-4 "Direct link to Common Use Cases") * **Multicall batching**: Combine multiple contract calls * **Custom transaction builders**: Build transactions with specific gas/nonce settings * **Smart contract interactions**: Call from another contract * * * See Also[​](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#see-also "Direct link to See Also") -------------------------------------------------------------------------------------------------------------------------------- * [Core Concepts: Atoms](https://www.docs.intuition.systems/docs/intuition-concepts/primitives/Atoms/fundamentals) * [Atom Events](https://www.docs.intuition.systems/docs/protocol/events/atom-events) * [Examples: Creating Atoms](https://www.docs.intuition.systems/docs/protocol/examples/creating-atoms-triples) * [multiVaultCreateAtoms](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultcreateatoms) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#parameters) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#returns) * [Basic Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#basic-example) * [Advanced Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#advanced-example) * [Related Functions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#related-functions) * [Common Use Cases](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#common-use-cases) * [multiVaultGetAtom](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultgetatom) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#parameters-1) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#returns-1) * [Basic Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#basic-example-1) * [Advanced Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#advanced-example-1) * [Related Functions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#related-functions-1) * [Common Use Cases](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#common-use-cases-1) * [multiVaultGetAtomCost](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultgetatomcost) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#parameters-2) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#returns-2) * [Basic Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#basic-example-2) * [Advanced Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#advanced-example-2) * [Related Functions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#related-functions-2) * [Common Use Cases](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#common-use-cases-2) * [multiVaultPreviewAtomCreate](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultpreviewatomcreate) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#parameters-3) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#returns-3) * [Basic Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#basic-example-3) * [Advanced Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#advanced-example-3) * [Related Functions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#related-functions-3) * [Common Use Cases](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#common-use-cases-3) * [multiVaultCreateAtomsEncode](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#multivaultcreateatomsencode) * [Parameters](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#parameters-4) * [Returns](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#returns-4) * [Basic Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#basic-example-4) * [Advanced Example](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#advanced-example-4) * [Related Functions](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#related-functions-4) * [Common Use Cases](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#common-use-cases-4) * [See Also](https://www.docs.intuition.systems/docs/protocol/api-reference/multivault/atoms#see-also) --- # Writes | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/graphql-api/writes#__docusaurus_skipToContent_fallback) On this page Understanding Mutations vs Smart Contract Operations[​](https://www.docs.intuition.systems/docs/graphql-api/writes#understanding-mutations-vs-smart-contract-operations "Direct link to Understanding Mutations vs Smart Contract Operations") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The Intuition GraphQL API provides mutations for **off-chain operations** like uploading metadata to IPFS. For **on-chain operations** like creating atoms, triples, and positions, you must use the [Intuition SDK](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup) or interact directly with the smart contracts. GraphQL vs Smart Contracts **GraphQL mutations** handle: * Uploading metadata to IPFS (pinThing, pinPerson, pinOrganization) **Smart contract operations** handle: * Creating atoms * Creating triples * Taking positions (depositing/redeeming) * All on-chain state changes Use the [SDK](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup) for smart contract interactions. Available Mutations[​](https://www.docs.intuition.systems/docs/graphql-api/writes#available-mutations "Direct link to Available Mutations") -------------------------------------------------------------------------------------------------------------------------------------------- ### IPFS & Metadata Mutations[​](https://www.docs.intuition.systems/docs/graphql-api/writes#ipfs--metadata-mutations "Direct link to IPFS & Metadata Mutations") | Mutation | Description | Documentation | | --- | --- | --- | | `pinThing` | Pin Thing metadata to IPFS | [Pin Thing](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-thing) | | `pinPerson` | Pin Person metadata to IPFS | [Pin Person](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-person) | | `pinOrganization` | Pin Organization metadata to IPFS | [Pin Organization](https://www.docs.intuition.systems/docs/graphql-api/mutations/pin-organization) | | `uploadImage` | Upload base64 image to IPFS | [Upload Image](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image) | | `uploadImageFromUrl` | Upload image from URL to IPFS | [Upload from URL](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-image-from-url) | | `uploadJsonToIpfs` | Upload JSON metadata to IPFS | [Upload JSON](https://www.docs.intuition.systems/docs/graphql-api/mutations/images/upload-json-to-ipfs) | Read-Only Operations Chart and PnL operations are **queries**, not mutations. See: * [PnL Queries](https://www.docs.intuition.systems/docs/graphql-api/queries/pnl/overview) - Profit & Loss tracking * [Chart Queries](https://www.docs.intuition.systems/docs/graphql-api/queries/charts/overview) - Chart generation Pin Mutations[​](https://www.docs.intuition.systems/docs/graphql-api/writes#pin-mutations "Direct link to Pin Mutations") -------------------------------------------------------------------------------------------------------------------------- ### pinThing Mutation[​](https://www.docs.intuition.systems/docs/graphql-api/writes#pinthing-mutation "Direct link to pinThing Mutation") Pin a Thing entity to IPFS: mutation PinThing($thing: PinThingInput!) { pinThing(thing: $thing) { uri }} **Variables:** { "thing": { "name": "Ethereum", "description": "A decentralized blockchain platform", "image": "ipfs://QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy", "url": "https://ethereum.org" }} ### pinPerson Mutation[​](https://www.docs.intuition.systems/docs/graphql-api/writes#pinperson-mutation "Direct link to pinPerson Mutation") Pin a Person entity to IPFS: mutation PinPerson($person: PinPersonInput!) { pinPerson(person: $person) { uri }} **Variables:** { "person": { "name": "Vitalik Buterin", "description": "Co-founder of Ethereum", "email": "vitalik@ethereum.org", "identifier": "vitalik.eth", "image": "ipfs://Qm...", "url": "https://vitalik.ca" }} ### pinOrganization Mutation[​](https://www.docs.intuition.systems/docs/graphql-api/writes#pinorganization-mutation "Direct link to pinOrganization Mutation") Pin an Organization entity to IPFS: mutation PinOrganization($organization: PinOrganizationInput!) { pinOrganization(organization: $organization) { uri }} **Variables:** { "organization": { "name": "Ethereum Foundation", "description": "Non-profit supporting Ethereum", "email": "info@ethereum.org", "image": "ipfs://Qm...", "url": "https://ethereum.foundation" }} Image Upload Mutations[​](https://www.docs.intuition.systems/docs/graphql-api/writes#image-upload-mutations "Direct link to Image Upload Mutations") ----------------------------------------------------------------------------------------------------------------------------------------------------- ### uploadImage[​](https://www.docs.intuition.systems/docs/graphql-api/writes#uploadimage "Direct link to uploadImage") Upload a base64-encoded image: mutation UploadImage($image: UploadImageInput!) { uploadImage(image: $image) { images { url original_url safe score model created_at } }} ### uploadImageFromUrl[​](https://www.docs.intuition.systems/docs/graphql-api/writes#uploadimagefromurl "Direct link to uploadImageFromUrl") Upload an image from a URL: mutation UploadImageFromUrl($image: UploadImageFromUrlInput!) { uploadImageFromUrl(image: $image) { images { url original_url safe score } }} ### uploadJsonToIpfs[​](https://www.docs.intuition.systems/docs/graphql-api/writes#uploadjsontoipfs "Direct link to uploadJsonToIpfs") Upload JSON metadata: mutation UploadJsonToIpfs($json: jsonb!) { uploadJsonToIpfs(json: $json) { hash name size }} Complete Workflow Example[​](https://www.docs.intuition.systems/docs/graphql-api/writes#complete-workflow-example "Direct link to Complete Workflow Example") -------------------------------------------------------------------------------------------------------------------------------------------------------------- Here's how to prepare metadata for atom creation: import { GraphQLClient } from 'graphql-request'import { API_URL_PROD } from '@0xintuition/graphql'import { createMultivaultClient } from '@0xintuition/sdk'const graphqlClient = new GraphQLClient(API_URL_PROD)// Step 1: Upload image to IPFS (via GraphQL)const imageResult = await graphqlClient.request(` mutation UploadImageFromUrl($image: UploadImageFromUrlInput!) { uploadImageFromUrl(image: $image) { images { url } } }`, { image: { url: 'https://example.com/logo.png' } })// Step 2: Upload metadata to IPFS (via GraphQL)const metadataResult = await graphqlClient.request(` mutation PinThing($thing: PinThingInput!) { pinThing(thing: $thing) { uri } }`, { thing: { name: 'My Project', description: 'Description of my project', image: imageResult.uploadImageFromUrl.images[0].url, url: 'https://example.com' }})// Step 3: Create atom on-chain (via SDK)const multivault = createMultivaultClient(walletClient)const atomId = await multivault.createAtom({ uri: metadataResult.pinThing.uri}) Best Practices[​](https://www.docs.intuition.systems/docs/graphql-api/writes#best-practices "Direct link to Best Practices") ----------------------------------------------------------------------------------------------------------------------------- ### 1\. Complete Metadata[​](https://www.docs.intuition.systems/docs/graphql-api/writes#1-complete-metadata "Direct link to 1. Complete Metadata") Provide comprehensive metadata for better discoverability: const thing = { name: 'Project Name', // Required description: 'Full description', // Recommended image: 'ipfs://...', // Recommended url: 'https://...' // Optional} ### 2\. Use IPFS URLs[​](https://www.docs.intuition.systems/docs/graphql-api/writes#2-use-ipfs-urls "Direct link to 2. Use IPFS URLs") Always reference images using IPFS URLs for permanence: // Good - permanentimage: 'ipfs://QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy'// Avoid - may changeimage: 'https://example.com/image.png' ### 3\. Error Handling[​](https://www.docs.intuition.systems/docs/graphql-api/writes#3-error-handling "Direct link to 3. Error Handling") try { const result = await graphqlClient.request(UPLOAD_IMAGE, { image: input }) console.log('Uploaded:', result.uploadImage.images[0].url)} catch (error) { if (error.message.includes('File too large')) { console.error('Image exceeds size limit') } else if (error.message.includes('Invalid')) { console.error('Invalid image format') }} ### 4\. Size Limits[​](https://www.docs.intuition.systems/docs/graphql-api/writes#4-size-limits "Direct link to 4. Size Limits") | Upload Type | Maximum Size | | --- | --- | | Image (base64) | 5 MB | | Image from URL | 10 MB | | JSON | 1 MB | TypeScript Integration[​](https://www.docs.intuition.systems/docs/graphql-api/writes#typescript-integration "Direct link to TypeScript Integration") ----------------------------------------------------------------------------------------------------------------------------------------------------- Use the `@0xintuition/graphql` package for type-safe mutations: import { usePinThingMutation, useUploadImageFromUrlMutation} from '@0xintuition/graphql'function CreateAtomForm() { const [pinThing] = usePinThingMutation() const [uploadImage] = useUploadImageFromUrlMutation() const handleSubmit = async (data: FormData) => { // Upload image first const imageResult = await uploadImage({ variables: { image: { url: data.imageUrl } } }) // Then pin metadata const thingResult = await pinThing({ variables: { thing: { name: data.name, description: data.description, image: imageResult.data.uploadImageFromUrl.images[0].url, url: data.url } } }) // Use the IPFS URI for atom creation const ipfsUri = thingResult.data.pinThing.uri // ... create atom via SDK } return
...
} Related Resources[​](https://www.docs.intuition.systems/docs/graphql-api/writes#related-resources "Direct link to Related Resources") -------------------------------------------------------------------------------------------------------------------------------------- * [PnL Queries](https://www.docs.intuition.systems/docs/graphql-api/queries/pnl/overview) - Profit & Loss tracking * [Chart Queries](https://www.docs.intuition.systems/docs/graphql-api/queries/charts/overview) - Chart generation * [SDK Documentation](https://www.docs.intuition.systems/docs/intuition-sdk/installation-and-setup) - On-chain operations * [GraphQL Reads](https://www.docs.intuition.systems/docs/graphql-api/reads) - Query documentation * [Understanding Mutations vs Smart Contract Operations](https://www.docs.intuition.systems/docs/graphql-api/writes#understanding-mutations-vs-smart-contract-operations) * [Available Mutations](https://www.docs.intuition.systems/docs/graphql-api/writes#available-mutations) * [IPFS & Metadata Mutations](https://www.docs.intuition.systems/docs/graphql-api/writes#ipfs--metadata-mutations) * [Pin Mutations](https://www.docs.intuition.systems/docs/graphql-api/writes#pin-mutations) * [pinThing Mutation](https://www.docs.intuition.systems/docs/graphql-api/writes#pinthing-mutation) * [pinPerson Mutation](https://www.docs.intuition.systems/docs/graphql-api/writes#pinperson-mutation) * [pinOrganization Mutation](https://www.docs.intuition.systems/docs/graphql-api/writes#pinorganization-mutation) * [Image Upload Mutations](https://www.docs.intuition.systems/docs/graphql-api/writes#image-upload-mutations) * [uploadImage](https://www.docs.intuition.systems/docs/graphql-api/writes#uploadimage) * [uploadImageFromUrl](https://www.docs.intuition.systems/docs/graphql-api/writes#uploadimagefromurl) * [uploadJsonToIpfs](https://www.docs.intuition.systems/docs/graphql-api/writes#uploadjsontoipfs) * [Complete Workflow Example](https://www.docs.intuition.systems/docs/graphql-api/writes#complete-workflow-example) * [Best Practices](https://www.docs.intuition.systems/docs/graphql-api/writes#best-practices) * [1\. Complete Metadata](https://www.docs.intuition.systems/docs/graphql-api/writes#1-complete-metadata) * [2\. Use IPFS URLs](https://www.docs.intuition.systems/docs/graphql-api/writes#2-use-ipfs-urls) * [3\. Error Handling](https://www.docs.intuition.systems/docs/graphql-api/writes#3-error-handling) * [4\. Size Limits](https://www.docs.intuition.systems/docs/graphql-api/writes#4-size-limits) * [TypeScript Integration](https://www.docs.intuition.systems/docs/graphql-api/writes#typescript-integration) * [Related Resources](https://www.docs.intuition.systems/docs/graphql-api/writes#related-resources) --- # Building a Non-Resolving Prediction Market | Intuition Docs [Skip to main content](https://www.docs.intuition.systems/docs/tutorials/prediction-market#__docusaurus_skipToContent_fallback) On this page Create a prediction market where forecasts don't need formal resolution. Instead, track record and reputation emerge from the accuracy of past predictions. **Time to complete:** 2 hours **Difficulty:** Advanced **Prerequisites:** * SDK installed * Understanding of signals and triples * GraphQL knowledge What We'll Build[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#what-well-build "Direct link to What We'll Build") ------------------------------------------------------------------------------------------------------------------------------------------- A prediction platform featuring: * βœ… Event atoms (future events to predict) * βœ… Prediction triples with confidence levels * βœ… Track record calculation based on accuracy * βœ… Forecaster reputation scores * βœ… Confidence-weighted predictions * βœ… Historical accuracy metrics Unlike traditional prediction markets, this doesn't require formal resolution oracles. Community consensus emerges naturally. Architecture Overview[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#architecture-overview "Direct link to Architecture Overview") ----------------------------------------------------------------------------------------------------------------------------------------------------------- **How It Works:** 1. **Events** are atoms representing future states 2. **Predictions** are triples: `[Event] [will_happen] [TRUE/FALSE]` 3. **Confidence** is expressed via signal strength 4. **Resolution** happens through community consensus 5. **Track records** are calculated from past accuracy Part 1: Data Model[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#part-1-data-model "Direct link to Part 1: Data Model") ------------------------------------------------------------------------------------------------------------------------------------------------- ### Atoms[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#atoms "Direct link to Atoms") **Event Atoms:** { type: 'thing', value: 'ETH will reach $5000 by end of 2025'} **Outcome Atoms:** { type: 'thing', value: 'true'}{ type: 'thing', value: 'false'} ### Predicates[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#predicates "Direct link to Predicates") * `will_happen` - Binary prediction * `probability` - Numeric probability (0-100) * `resolved_as` - Final outcome ### Triple Examples[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#triple-examples "Direct link to Triple Examples") **Prediction:** [ETH $5000 Event] [will_happen] [true] **Resolution:** [ETH $5000 Event] [resolved_as] [false] Part 2: Creating Events[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#part-2-creating-events "Direct link to Part 2: Creating Events") ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Initialize SDK[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#initialize-sdk "Direct link to Initialize SDK") import { createMultivault, getAtomId } from '@0xintuition/sdk'const multivault = createMultivault({ privateKey: process.env.PRIVATE_KEY!, rpcUrl: 'https://sepolia.base.org', multivaultAddress: '0x...'}) ### Create Boolean Atoms[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#create-boolean-atoms "Direct link to Create Boolean Atoms") async function initializeBooleans() { const trueAtom = { type: 'thing', value: 'true' } const falseAtom = { type: 'thing', value: 'false' } const trueId = getAtomId(trueAtom) const falseId = getAtomId(falseAtom) for (const { atom, id } of [ { atom: trueAtom, id: trueId }, { atom: falseAtom, id: falseId } ]) { const exists = await multivault.atomExists(id) if (!exists) { await multivault.createAtom({ atomUri: atom }) } } return { trueId, falseId }}const { trueId, falseId } = await initializeBooleans() ### Create an Event[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#create-an-event "Direct link to Create an Event") interface EventOptions { description: string category?: string resolutionDate?: number source?: string}async function createEvent(options: EventOptions) { try { const atomData = { type: 'thing', value: options.description } const result = await multivault.createAtom({ atomUri: atomData }) // Store metadata off-chain await storeEventMetadata(result.atomId, { description: options.description, category: options.category || 'general', resolutionDate: options.resolutionDate, source: options.source, creator: multivault.getWalletAddress(), createdAt: Date.now() }) console.log('Event created:', result.atomId) return result.atomId } catch (error) { console.error('Error creating event:', error) throw error }}// Create example eventsconst ethEvent = await createEvent({ description: 'ETH will reach $5000 by end of 2025', category: 'crypto', resolutionDate: new Date('2025-12-31').getTime()})const electionEvent = await createEvent({ description: 'Candidate X will win 2024 election', category: 'politics', resolutionDate: new Date('2024-11-05').getTime()}) ### Create Predicates[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#create-predicates "Direct link to Create Predicates") async function createPredictionPredicates() { const predicates = ['will_happen', 'resolved_as', 'probability'] const predicateIds: Record = {} for (const pred of predicates) { const atomData = { type: 'thing', value: pred } const predicateId = getAtomId(atomData) const exists = await multivault.atomExists(predicateId) if (!exists) { await multivault.createAtom({ atomUri: atomData }) } predicateIds[pred] = predicateId } return predicateIds}const predicates = await createPredictionPredicates() Part 3: Making Predictions[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#part-3-making-predictions "Direct link to Part 3: Making Predictions") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Submit a Prediction[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#submit-a-prediction "Direct link to Submit a Prediction") interface PredictionOptions { eventAtomId: string outcome: boolean confidence: number // 0-100 stake: bigint reasoning?: string}async function submitPrediction(options: PredictionOptions) { try { // Create prediction triple: [Event] [will_happen] [true/false] const outcomeAtomId = options.outcome ? trueId : falseId const result = await multivault.createTriple({ subjectId: options.eventAtomId, predicateId: predicates.will_happen, objectId: outcomeAtomId }) // Signal with stake (stake represents confidence) await multivault.depositTriple({ id: result.tripleId, amount: options.stake, receiver: multivault.getWalletAddress() }) // Store prediction metadata await storePredictionMetadata(result.tripleId, { forecaster: multivault.getWalletAddress(), confidence: options.confidence, reasoning: options.reasoning, timestamp: Date.now() }) console.log('Prediction submitted:', result.tripleId) return result.tripleId } catch (error) { console.error('Error submitting prediction:', error) throw error }}// Alice predicts ETH will reach $5000await submitPrediction({ eventAtomId: ethEvent, outcome: true, confidence: 75, stake: BigInt('500000000000000000'), // 0.5 ETH reasoning: 'ETF inflows and halvening cycle support this target'})// Bob predicts it won'tawait submitPrediction({ eventAtomId: ethEvent, outcome: false, confidence: 60, stake: BigInt('200000000000000000'), // 0.2 ETH reasoning: 'Regulatory headwinds and macroeconomic conditions'}) ### Update Prediction Confidence[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#update-prediction-confidence "Direct link to Update Prediction Confidence") async function updatePredictionStake( tripleId: string, additionalStake: bigint) { // Add more stake to increase confidence return multivault.depositTriple({ id: tripleId, amount: additionalStake, receiver: multivault.getWalletAddress() })}// Alice increases her confidenceawait updatePredictionStake( alicePredictionId, BigInt('250000000000000000') // +0.25 ETH) Part 4: Querying Predictions[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#part-4-querying-predictions "Direct link to Part 4: Querying Predictions") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Get All Predictions for an Event[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#get-all-predictions-for-an-event "Direct link to Get All Predictions for an Event") import { request, gql } from 'graphql-request'const GRAPHQL_ENDPOINT = 'https://mainnet.intuition.sh/v1/graphql'const GET_EVENT_PREDICTIONS = gql` query GetEventPredictions($eventAtomId: String!) { triples( where: { subject_id: { _eq: $eventAtomId } predicate: { label: { _eq: "will_happen" } } } ) { term_id object { label data } term { vaults(where: { curve_id: { _eq: "2" } }) { total_shares positions { account_id shares created_at } } } } }`async function getEventPredictions(eventAtomId: string) { const data = await request(GRAPHQL_ENDPOINT, GET_EVENT_PREDICTIONS, { eventAtomId }) return data.triples} ### Calculate Market Consensus[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#calculate-market-consensus "Direct link to Calculate Market Consensus") interface MarketConsensus { probabilityTrue: number // 0-100 totalStake: bigint forecasterCount: number predictions: Array<{ forecaster: string outcome: boolean stake: bigint confidence: number }>}async function calculateConsensus(eventAtomId: string): Promise { const predictions = await getEventPredictions(eventAtomId) let totalStakeTrue = BigInt(0) let totalStakeFalse = BigInt(0) const forecasters = new Set() const predictionList: any[] = [] for (const pred of predictions) { const isTrue = pred.object.value === 'true' for (const signal of pred.signals) { forecasters.add(signal.accountId) const stake = BigInt(signal.delta) if (isTrue) { totalStakeTrue += stake } else { totalStakeFalse += stake } // Get metadata for confidence const metadata = await getPredictionMetadata(pred.id) predictionList.push({ forecaster: signal.accountId, outcome: isTrue, stake, confidence: metadata?.confidence || 50 }) } } const totalStake = totalStakeTrue + totalStakeFalse // Probability based on stake distribution let probabilityTrue = 50 if (totalStake > 0) { probabilityTrue = Number((totalStakeTrue * BigInt(100)) / totalStake) } return { probabilityTrue, totalStake, forecasterCount: forecasters.size, predictions: predictionList }}// Get consensusconst consensus = await calculateConsensus(ethEvent)console.log('Market probability:', consensus.probabilityTrue + '%')console.log('Total stake:', Number(consensus.totalStake) / 1e18 + ' ETH') Part 5: Event Resolution[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#part-5-event-resolution "Direct link to Part 5: Event Resolution") ------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Community Resolution[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#community-resolution "Direct link to Community Resolution") async function resolveEvent( eventAtomId: string, outcome: boolean, evidence: string[]) { try { // Create resolution triple: [Event] [resolved_as] [true/false] const outcomeAtomId = outcome ? trueId : falseId const resolvedAsPredicate = predicates.resolved_as const result = await multivault.createTriple({ subjectId: eventAtomId, predicateId: resolvedAsPredicate, objectId: outcomeAtomId }) // Store resolution metadata await storeResolutionMetadata(result.tripleId, { resolver: multivault.getWalletAddress(), outcome, evidence, resolvedAt: Date.now() }) console.log('Event resolved:', outcome) return result.tripleId } catch (error) { console.error('Error resolving event:', error) throw error }}// After event concludesawait resolveEvent( ethEvent, false, // ETH did not reach $5000 [ 'https://coinmarketcap.com/currencies/ethereum/', 'Price on Dec 31, 2025: $4,800' ]) ### Verify Resolution[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#verify-resolution "Direct link to Verify Resolution") Multiple users can signal agreement: async function confirmResolution(resolutionTripleId: string, stake: bigint) { return multivault.depositTriple({ id: resolutionTripleId, amount: stake, receiver: multivault.getWalletAddress() })}// Others verify the resolutionawait confirmResolution(resolutionTripleId, BigInt('100000000000000000')) Part 6: Track Record Calculation[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#part-6-track-record-calculation "Direct link to Part 6: Track Record Calculation") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### Calculate Forecaster Accuracy[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#calculate-forecaster-accuracy "Direct link to Calculate Forecaster Accuracy") interface TrackRecord { totalPredictions: number correctPredictions: number accuracy: number averageConfidence: number brierScore: number calibration: number}async function calculateTrackRecord( forecasterAddress: string): Promise { // Get all prediction positions by this forecaster const query = gql` query GetForecasterPredictions($address: String!) { positions( where: { account_id: { _eq: $address } } ) { shares vault { term { triple { term_id subject { term_id data } object { label data } predicate { label } } } } } } ` const data = await request(GRAPHQL_ENDPOINT, query, { address: forecasterAddress.toLowerCase() }) // Filter only prediction positions (triples with "will_happen" predicate) const predictions = data.positions.filter( (p: any) => p.vault?.term?.triple?.predicate?.label === 'will_happen' ) let correct = 0 let total = 0 let totalConfidence = 0 let brierScoreSum = 0 for (const pred of predictions) { const triple = pred.vault?.term?.triple if (!triple) continue // Check if event is resolved const eventAtomId = triple.subject.term_id const resolution = await getEventResolution(eventAtomId) if (!resolution) continue // Event not resolved yet total++ const predictedOutcome = triple.object.label === 'true' const actualOutcome = resolution.outcome // Check if correct if (predictedOutcome === actualOutcome) { correct++ } // Get prediction metadata const metadata = await getPredictionMetadata(triple.term_id) const confidence = metadata?.confidence || 50 totalConfidence += confidence // Brier score: (forecast - outcome)^2 // Convert confidence to probability (0-1) const forecast = confidence / 100 const outcome = actualOutcome ? 1 : 0 brierScoreSum += Math.pow(forecast - outcome, 2) } const accuracy = total > 0 ? correct / total : 0 const averageConfidence = total > 0 ? totalConfidence / total : 0 const brierScore = total > 0 ? brierScoreSum / total : 0 // Calibration: how well confidence matches accuracy const calibration = 1 - Math.abs((averageConfidence / 100) - accuracy) return { totalPredictions: total, correctPredictions: correct, accuracy, averageConfidence, brierScore, calibration }}// Get track recordconst aliceRecord = await calculateTrackRecord('0xAlice...')console.log('Accuracy:', (aliceRecord.accuracy * 100).toFixed(1) + '%')console.log('Brier Score:', aliceRecord.brierScore.toFixed(3))console.log('Calibration:', (aliceRecord.calibration * 100).toFixed(1) + '%') ### Leaderboard[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#leaderboard "Direct link to Leaderboard") async function getTopForecasters(limit: number = 10) { // Get all unique forecasters const forecasters = await getAllForecasters() // Calculate track records const records = await Promise.all( forecasters.map(async (address) => ({ address, record: await calculateTrackRecord(address) })) ) // Filter to those with at least 10 predictions const qualified = records.filter(r => r.record.totalPredictions >= 10) // Sort by Brier score (lower is better) qualified.sort((a, b) => a.record.brierScore - b.record.brierScore) return qualified.slice(0, limit)}const leaderboard = await getTopForecasters()leaderboard.forEach((entry, i) => { console.log(`#${i + 1} ${entry.address}`) console.log(` Accuracy: ${(entry.record.accuracy * 100).toFixed(1)}%`) console.log(` Brier: ${entry.record.brierScore.toFixed(3)}`)}) Part 7: UI Components[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#part-7-ui-components "Direct link to Part 7: UI Components") ---------------------------------------------------------------------------------------------------------------------------------------------------------- ### Event Card Component[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#event-card-component "Direct link to Event Card Component") import React, { useEffect, useState } from 'react'export function EventCard({ eventAtomId }: { eventAtomId: string }) { const [event, setEvent] = useState(null) const [consensus, setConsensus] = useState(null) const [loading, setLoading] = useState(true) useEffect(() => { async function loadEvent() { const metadata = await getEventMetadata(eventAtomId) const marketConsensus = await calculateConsensus(eventAtomId) setEvent(metadata) setConsensus(marketConsensus) setLoading(false) } loadEvent() }, [eventAtomId]) if (loading) return
Loading event...
return (

{event.description}

{event.category}
{consensus?.probabilityTrue.toFixed(1)}% chance
{consensus?.forecasterCount} forecasters {(Number(consensus?.totalStake) / 1e18).toFixed(2)} ETH staked
)} ### Prediction Form[​](https://www.docs.intuition.systems/docs/tutorials/prediction-market#prediction-form "Direct link to Prediction Form") export function PredictionForm({ eventAtomId }: { eventAtomId: string }) { const [outcome, setOutcome] = useState(true) const [confidence, setConfidence] = useState(50) const [stake, setStake] = useState('0.1') const [reasoning, setReasoning] = useState('') const [loading, setLoading] = useState(false) async function handleSubmit() { setLoading(true) try { const stakeWei = BigInt(parseFloat(stake) * 1e18) await submitPrediction({ eventAtomId, outcome, confidence, stake: stakeWei, reasoning }) alert('Prediction submitted!') } catch (error) { alert('Error submitting prediction') } finally { setLoading(false) } } return (

Make Your Prediction

setConfidence(parseInt(e.target.value))} />
setStake(e.target.value)} placeholder="Stake (ETH)" />