@airstack/subgraph-generator
v1.0.0-alpha.9
Published
Integrate Airstack schemas in any subgraph.
Downloads
278
Readme
Airstack Subgraphs
Introduction
Airstack is a web3 developer platform that provides powerful APIs for integrating on-chain and off-chain data into any application. With Airstack developers are able to easily connect their applications to the web3 ecosystem.
Airstack enables GraphQL queries that combine on-chain and off-chain data from multiple sources in a single response. Our goal is to enable developers to query and integrate relevant web3 data, and serve it up to users without requiring heavy infrastructure or even a back-end.
Airstack identity APIs map addresses and transactions across various sources, including: ENS, Farcaster, Lens, POAP, Dapps, and Marketplaces.
Airstack Substreams & Subgraphs
Airstack is a pioneer in utilizing Substreams to index on-chain transactions faster than RPC-based solutions. Substreams are used for real-time indexing of on-chain events and for high volume blockchains such as Polygon. Airstack Substreams are hosted in-house on our infra.
Airstack deploys Subgraphs with custom schemas for indexing historical events and sales data from specific dapps, marketplaces and protocols. Airstack subgraphs are hosted in-house on our infra.
Airstack schemas for Substreams and Subgraphs define how events and transactions are indexed, aggregated, and consumed across projects in standard formats, enabling seamless querying of like data across projects and chains. Example verticals: NFT Marketplace, Social, DAOs, DeFi.
Airstack augments on-chain data with off-chain metadata from IPFS, dapps and marketplaces (for example NFT images and descriptions). Wherever possible we default to on-chain data.
Data is stored in the Airstack backend and optimized with parallel processing for fast GraphQL querying.
Getting Started
1. Prerequisite:
You already have a subgraph for Dapp/Protocol. And you intend to integrate Airstack schemas into the project.
2. Install Airstack package:
npm install @airstack/subgraph-generator
3. Identify the vertical for the Dapp/Protocol:
We support
- NFT Marketplace:
nft-marketplace
- Domain Name:
domain-name
- DEX:
dex
- Bridges:
TBD
- DAO:
TBD
- Defi:
TBD
- Games:
TBD
Use the following command to add Airstack Schemas and Modules in your project
npx @airstack/subgraph-generator <vertical> --yaml <subgraph.yaml file path> --graphql <schema.graphql file path> --dataSourceNames <"name1, name2, ..."> --templates <"name1, name2">
Examples:
a. NFT Marketplace
npx @airstack/subgraph-generator nft-marketplace
Terminal will prompt these questions
Enter the name of the subgraph:
Enter the version of the subgraph:
Enter the slug of the subgraph:
Integration of the Airstack schemas is done. Now, move to the vertical-specific section for further integration.
3. Code integration
Example: NFT Marketplace
- Import
airstack
modules
import * as airstack from "../modules/airstack/nft-marketplace"
- Creation of NFT object
let nft = new airstack.nft.NFT(
collectionAddress, // Address
standard, // string "ERC721" or "ERC1155"
tokenId, // BigInt
amount // BigInt 1 for "ERC721" , n for "ERC1155"
)
- Creation of royalties array
let royalties = new Array<airstack.nft.CreatorRoyalty>()
let royalty = new airstack.nft.CreatorRoyalty(
fee, // BigInt
beneficiary // Address
)
royalties.push(royalty)
- Creation of NFT Sales array
let allSales = new Array<airstack.nft.Sale>()
let sale = new airstack.nft.Sale(
buyer, // Address
seller, // Address
nft, // airstack.nft.NFT
paymentAmount, // BigInt
paymentToken, // Address
protocolFees, // BigInt
protocolFeesBeneficiary, // Address
royalties // airstack.nft.CreatorRoyalty[]
)
allSales.push(sale)
- Use the trackNFTSaleTransactions function to process the data and store in Airstack schema
airstack.nft.trackNFTSaleTransactions(
chainId, // string eg: for mainnet: 1
txHash, // string eg: event.transaction.hash.toHexString()
txIndex, //string eg: event.transaction.index
allSales, // airstack.nft.Sale[]
isBundle, // boolean
protocolType, // string eg: "NFT_MARKET_PLACE"
protocolActionType, //string eg: "SELL"
timestamp, // BigInt eg: event.block.timestamp
blockHeight, // BigInt eg: event.block.number
blockHash // string eg: event.block.hash.toHexString()
)
Development status of each vertical
⌛ = Prioritized 💬 = In discussion 🔨 = In progress implementation ✅ = Completed
| Vertical | Status | | --------------- | :----: | | NFT Marketplace | ✅ | | Domain Name | ✅ | | DEX | 🔨 | | Bridges | 💬 | | DAO | ⌛ | | Defi | ⌛ | | Games | ⌛ |
To build the module
If you want to build the module yourself, please follow there steps.
- Clone the repo
- Run command
npx @airstack/subgraph-generator <vertical> --name <subgraph_name> --slug <subgraph_slug> --version <subgraph_version>
- Run the command
npm run build