Docs/Api Reference

API Reference

Complete Solidity API reference for all AutoLoop contracts.


AutoLoop (Core)

The core contract that manages loop execution, fee collection, and controller registration.

progressLoop

function progressLoop(
    address contractAddress,
    bytes progressWithData
) external

Progresses loop on an AutoLoop-compatible contract. Only callable by registered controllers.

ParameterTypeDescription
contractAddressaddressThe contract receiving the update
progressWithDatabytesData to pass to the contract's progressLoop()

balance

mapping(address => uint256) balance

ETH balance deposited for a registered contract.

deposit / requestRefund

function deposit(address registeredUser) external payable
function requestRefund(address registeredUser) external

addController / removeController

function addController(address controllerAddress) public
function removeController(address controllerAddress) public

AutoLoopCompatible

Base contract for standard automation. Implementors override:

function shouldProgressLoop()
    external view returns (bool loopIsReady, bytes progressWithData)

function progressLoop(bytes progressWithData) external

AutoLoopHybridVRFCompatible

Base contract for selective VRF. Implementors override:

function _needsVRF(uint256 loopID)
    internal view virtual returns (bool)

function _shouldProgress()
    internal view virtual returns (bool ready, bytes memory gameData)

function _onTick(bytes memory gameData) internal virtual

function _onVRFTick(bytes32 randomness, bytes memory gameData)
    internal virtual

Interface ID

bytes4 constant HYBRID_VRF_INTERFACE_ID =
    bytes4(keccak256("AutoLoopHybridVRFCompatible"))

Events

event StandardTick(uint256 indexed loopID, uint256 timestamp)
event HybridVRFTick(uint256 indexed loopID, bytes32 randomness, uint256 timestamp)

AutoLoopVRFCompatible

Base contract for full VRF on every tick. Key functions:

registerControllerKey

function registerControllerKey(
    address controller,
    uint256 pkX,
    uint256 pkY
) external

Register a controller's secp256k1 public key for VRF proof verification.

computeSeed

function computeSeed(uint256 loopID) public view returns (bytes memory)

Deterministic seed: keccak256(address(this), loopID).

_verifyAndExtractRandomness

function _verifyAndExtractRandomness(
    bytes calldata progressWithData,
    address controller
) internal returns (bytes32 randomness, bytes memory gameData)

Interface ID

bytes4 constant VRF_INTERFACE_ID =
    bytes4(keccak256("AutoLoopVRFCompatible"))

AutoLoopRegistrar

Handles registration of contracts and controllers.

function registerAutoLoop() external returns (bool success)
function registerAutoLoopFor(address contract) external returns (bool)
function deregisterAutoLoop() external returns (bool)
function registerController() external returns (bool)
function deregisterController() external
function canRegisterAutoLoop(address, address) public view returns (bool)
function canRegisterController(address) public view returns (bool)

AutoLoopRegistry

Tracks registered contracts and controllers.

mapping(address => bool) isRegisteredAutoLoop
mapping(address => bool) isRegisteredController
function getRegisteredAutoLoops() public view returns (address[])
function getRegisteredControllers() public view returns (address[])

VRFVerifier

Gas-efficient ECVRF proof verification using the ecrecover precompile (~3k gas instead of millions for full EC multiplication).

fastVerify

function fastVerify(
    uint256[2] memory publicKey,
    uint256[4] memory proof,
    bytes memory message,
    uint256[2] memory uPoint,
    uint256[4] memory vComponents
) internal pure returns (bool)

gammaToHash

function gammaToHash(uint256 gammaX, uint256 gammaY)
    internal pure returns (bytes32)

Derives deterministic random output from a verified VRF proof.