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
) externalProgresses loop on an AutoLoop-compatible contract. Only callable by registered controllers.
| Parameter | Type | Description |
|---|---|---|
contractAddress | address | The contract receiving the update |
progressWithData | bytes | Data to pass to the contract's progressLoop() |
balance
mapping(address => uint256) balanceETH balance deposited for a registered contract.
deposit / requestRefund
function deposit(address registeredUser) external payable
function requestRefund(address registeredUser) externaladdController / removeController
function addController(address controllerAddress) public
function removeController(address controllerAddress) publicAutoLoopCompatible
Base contract for standard automation. Implementors override:
function shouldProgressLoop()
external view returns (bool loopIsReady, bytes progressWithData)
function progressLoop(bytes progressWithData) externalAutoLoopHybridVRFCompatible
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 virtualInterface 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
) externalRegister 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.