Infernet
SDK
Introduction

Infernet SDK

The Infernet SDK is a set of smart contracts that let users subscribe to outputs from off-chain compute workloads. Developers can inherit one of two simple interfaces, CallbackConsumer or SubscriptionConsumer in their smart contracts, and consume one-time or recurring computation.

The SDK closely resembles, and will come as second nature to those familiar with, common data callback systems. Smart contracts can request compute on- or off-chain (via EIP-712 signed subscriptions), and receive a callback from an Infernet Node when their compute workload has been processed and a response generated.

As the name implies, one of the primary use-cases for the SDK is to bring Machine Learning inference, on-chain. Developers can use Infernet to delegate computationally-intensive operations like ML-inference or ZK-proving workloads off-chain, consuming outputs and optional proofs in their smart contracts via on-chain callback. In this way, we primitively circumvent the limitations of common Blockchain smart contract execution environments.

The SDK also offers out-of-the-box rails to handle payments (between compute consumers and nodes), asynchronous callback consumption, common developer patterns (for example, node allowlists), and more.

🙋‍♂️

James is writing a Governor contract for his DAO. He wants all proposals to be run through his automated risk model when created, with a quantiatative risk score posted on-chain. Via Infernet, James can kickoff a request to run his risk model, with on-chain parameters like the proposal details as inputs, and receive both a risk score output and succinct proof of execution on-chain.

🙋‍♀️

Emily is developing a new NFT collection that lets minters automatically add new traits to their NFTs by posting what they'd like in plaintext (think, "an Infernet-green hoodie"). Via Infernet, Emily can kickoff an off-chain Stable Diffusion workload that parses her NFT's Base64 image, adds new traits read from on-chain, and returns a new image that can be updated directly in her smart contract.

Install the SDK

You can install the Infernet SDK directly as a dependency in your smart contract project.

ℹ️

If you are starting a new project or have yet to choose a Solidity development framework, we recommend using Foundry: forge (opens in a new tab) so that you can make the most out of our testing fixtures and helper utilities.

To install via Foundry: forge (opens in a new tab), run:

forge install ritual-net/infernet-sdk

It is also recommended to update your remappings.txt to simplify useful imports:

infernet/core=lib/infernet/contracts/src
infernet/tests=lib/infernet/contracts/test

Deployed contracts

For reference, the Infernet SDK's Registry entrypoint contract is deployed to the following networks:

v1.1.0 release (latest)

NetworkRegistry Address
Ethereum Mainnet (opens in a new tab)0xa0113fC5967707bF44d33CF9611D66726c7449B5 (opens in a new tab)
Base Mainnet (opens in a new tab)0xe2F36C4E23D67F81fE0B278E80ee85Cf0ccA3c8d (opens in a new tab)
Base Sepolia Testnet (opens in a new tab)0xa0113fC5967707bF44d33CF9611D66726c7449B5 (opens in a new tab)

v1.0.0 release

NetworkRegistry Address
Ethereum Mainnet (opens in a new tab)0x3B1554f346DFe5c482Bb4BA31b880c1C18412170 (opens in a new tab)
Base Mainnet (opens in a new tab)0x3B1554f346DFe5c482Bb4BA31b880c1C18412170 (opens in a new tab)
Base Sepolia Testnet (opens in a new tab)0x3B1554f346DFe5c482Bb4BA31b880c1C18412170 (opens in a new tab)

v0.1.0 release

NetworkCoordinator Address
Ethereum Mainnet (opens in a new tab)0xa612fca4652ef94ae3d0e0aefedb1932c5f1b61d (opens in a new tab)
Base Mainnet (opens in a new tab)0x8D871Ef2826ac9001fB2e33fDD6379b6aaBF449c (opens in a new tab)

Audits

Infernet SDK v1.1.0 has been audited by Trail of Bits (opens in a new tab) and Zellic (opens in a new tab).

Next steps

From here, you may choose to:

  • Follow an introductory quickstart implementing a consumer, if less familiar with common callback patterns
  • Read in-depth about the SDK architecture to better understand what's possible with Infernet
  • Dive right into the deep end with the developer reference