Subgraph
Overview
The InkDAO Subgraph is a GraphQL API that indexes and provides efficient access to on-chain data from the InkDAO protocol. Built on The Graph, it tracks all content creation, subscriptions, and user activity across the platform in real-time.
The subgraph monitors events from the MarketPlace contract (ERC-6909 multi-token implementation), maintaining a comprehensive view of the entire InkDAO ecosystem within a single contract.
Why Use the Subgraph?
While you can query blockchain data directly, the subgraph provides several advantages:
Fast Queries: Pre-indexed data means instant access to complex queries
Historical Data: Access complete historical records of all platform activity
Aggregated Stats: Get platform-wide statistics and user metrics without manual calculations
GraphQL Interface: Flexible, efficient queries with exactly the data you need
Real-time Updates: Data updates as new blocks are mined
Event Handlers
The subgraph listens to the following smart contract events from the MarketPlace contract:
PostCreated
Event Signature:
event PostCreated(
uint256 indexed tokenId,
string postTitle,
string postCid,
string thumbnailCid,
address indexed author,
uint256 costInNativeInWei
);Handler: handlePostCreated
Actions:
Creates or updates Asset entity with post metadata
Creates or updates Creator entity for the author
Increments creator's total assets and asset worth
Updates GlobalStats (total assets, creators, asset worth)
Tracks user statistics
Use Case: Triggered when a creator publishes a new post on the platform
PostSubscribed
Event Signature:
event PostSubscribed(
uint256 indexed tokenId,
address indexed subscriber,
uint256 totalCost
);Handler: handlePostSubscribed
Actions:
Updates Asset entity (increments total subscribers)
Updates Creator entity (increments total subscribers and earnings)
Creates or updates Holder entity for the subscriber
Updates GlobalStats (purchases, volume, revenue)
Tracks user statistics
Use Case: Triggered when a user subscribes to a post (purchases access)
Architecture
┌──────────────────────┐
│ Smart Contract │
│ │
│ MarketPlace │
│ (ERC-6909) │
│ │
│ Events: │
│ - PostCreated │
│ - PostSubscribed │
└──────────┬───────────┘
│ Events
▼
┌──────────────────────┐
│ Subgraph │
│ │
│ Event Handlers: │
│ - handlePostCreated │
│ - handlePostSubscribed│
│ │
│ Mappings: │
│ - marketPlace.ts │
└──────────┬───────────┘
│ Indexes
▼
┌──────────────────────┐
│ GraphQL API │
│ │
│ Entities: │
│ - Asset │
│ - Creator │
│ - Holder │
│ - GlobalStats │
└──────────────────────┘Key Features
Real-time Indexing
Events are indexed as soon as blocks are mined
Sub-second query response times
Automatic updates on new transactions
ERC-6909 Optimization
Single contract to monitor (vs. N contracts in ERC-20 approach)
Simpler event structure
More efficient indexing
Lower infrastructure costs
Non-Transferable Tokens
No secondary market transfer events to track
Simpler holder tracking
Permanent subscription records
Clear ownership history
Platform Analytics
Real-time creator earnings (100% to creators)
User engagement metrics
Content performance analytics
Benefits Over Direct Contract Queries
Query Speed
Slow (RPC calls)
Fast (indexed)
Historical Data
Limited
Complete
Complex Queries
Multiple calls
Single query
Filtering
Client-side
Server-side
Sorting
Manual
Built-in
Aggregations
Manual calculation
Pre-computed
Pagination
Complex
Simple
Cost
RPC rate limits
Free queries
Resources
Last updated

