Deploy a Subgraph on Somnia using Ormi

The Graph is a decentralized indexing protocol that allows developers to query blockchain data using GraphQL. Instead of parsing complex raw logs and events directly from smart contracts, developers can build subgraphs that transform onchain activity into structured, queryable datasets.

This tutorial demonstrates how to deploy a subgraph on the Somnia Testnet using Ormi, a powerful gateway that simplifies subgraph deployment through a hosted Graph Node and IPFS infrastructure.

Prerequisites

  • GraphQL is installed and set up on your local machine.

  • A verified smart contract address deployed on Somnia.

  • An Ormi account and Private Key.

Install Graph CLI globally

npm install -g @graphprotocol/graph-cli

Initialize Your Subgraph

The Graph services rely on the existence of a deployed Smart Contract with onchain activity. The subgraph will be created based on indexing the events emitted from the Smart Contract. To set up a subgraph service for an example contract called MyToken run the following command to scaffold a new subgraph project:

graph init --contract-name MyToken --from-contract 0xYourTokenAddress --network somnia-testnet mytoken

mytoken is the folder that contains the subgraph files. Replace 0xYourTokenAddress with your actual deployed Smart Contract address on Somnia.

This command will generate the following files:

  • subgraph.yamlDefines the data sources and events to index

  • schema.graphql Structure of your data

  • src/mytoken.tsTypeScript logic to handle events

Define the Subgraph Schema

For the exampleMyToken Contract, which is an ERC20 Token, Edit schema.graphql to index all the Transfer events emitted from the Smart Contract.

type Transfer @entity(immutable: true) {
  id: Bytes!
  from: Bytes!
  to: Bytes!
  value: BigInt!
  blockNumber: BigInt!
  blockTimestamp: BigInt!
  transactionHash: Bytes!
}

Build the Subgraph

After customizing your schema and mapping logic, build the subgraph by running the command:

graph codegen && graph build

This will generate the necessary artifacts for deployment.

Deploy Using Ormi

Open the Somnia Ormi website https://subgraph.somnia.network/ and create an account.

On the left navigation menu, click the "key" icon to access your privateKey.

Deploy your subgraph to Ormi’s hosted infrastructure with the following command:

graph deploy mytoken --node https://api.subgraph.somnia.network/deploy --ipfs https://api.subgraph.somnia.network/ipfs --deploy-key yourORMIPrivateKey

Replace yourPrivateKey with your Somnia Ormi account private key.

Once deployed, Ormi will return a GraphQL endpoint where you can begin querying your subgraph.

Return to the dashboard to find your list of deployed subgraphs.

Open the deployed subgraph in the explorer to interact with it:

Conclusion

You have successfully deployed a subgraph to index events emitted from your Smart Contract. To challenge yourself even further, you can extend your build:

  • Expand your schema and mapping logic to cover more events.

  • Connect your subgraph to a frontend UI or analytics dashboard.

For more information, visit the Ormi docs.

Last updated