Vanilla Inference

Vanilla inference represents a regular inference to an AI or ML model in Vanna's decentralized filestore.

In order to run basic vanilla inference, you need to implement the ArbInference interface for inferCall.

model - The IPFS CID for the model

input - The input parameters to the inference request

function inferCall(bytes memory model, bytes memory input) external returns (bytes memory);

Below is an example of a minimal smart contract that runs vanilla inference:

ArbInference.sol
pragma solidity >=0.4.21 <0.9.0;

/// @title Infer Call
/// @notice This contract is used to run on-chain inference.
/// This custom contract will set on 0x000000000000000000000000000000000000011a since we set it in precompile.go.
interface ArbInference {
    function inferCall(bytes memory model, bytes memory input) external returns (bytes memory);
    function inferCallZK(bytes memory model, bytes memory input) external returns (bytes memory);
}
VanillaInference.sol
pragma solidity ^0.8.18;

import "contracts/ArbInference.sol";

contract VanillaInference {
    string value;

    function infer(
        string calldata modelName,
        string calldata inputData
    ) public {
        value = string(abi.encodePacked(ArbInference(address(0x11a)).inferCall(abi.encodePacked(modelName), abi.encodePacked(inputData))));
    }
    
    function getValue() public view returns (string memory) {
        return value;
    }
}

Last updated