Automate Your On-Chain Game Loops

Three automation modes — Standard, Hybrid VRF, and Full VRF — with built-in verifiable randomness. No oracles. Just deploy and play.

~60%
Cheaper than Chainlink
0
Token Swaps Needed
3 Modes
Standard · Hybrid · Full VRF
Why Autoloop

Everything You Need for On-Chain Automation

A complete protocol for decentralized, permissioned, and cost-efficient smart contract automation.

Decentralized Loop Execution

Off-chain workers automatically detect when your contract is ready and execute game loops. No centralized servers, no single points of failure.

Built-in Verifiable Randomness

Native ECVRF proof generation and on-chain verification. Provably fair randomness on every tick for dice rolls, loot drops, and more — without external oracles.

Hybrid VRF — Randomness When You Need It

Standard-cost ticks with VRF only when your contract requests it. Your game decides when randomness matters — loot drops, critical hits, spawns — and pays VRF gas only on those ticks.

Fee-on-Execution Model

Pay only when loops actually run. Gas reimbursement plus a small base fee split between protocol and controllers. Transparent and predictable.

Developer Friendly

Simple functions, direct hooks. Sample contracts included.

Multi-Network Ready

Deploy on Ethereum mainnet, Sepolia testnet, or local Anvil for development. Configurable per-network with automatic deployment tooling.

Permissioned & Secure

Role-based access control ensures only registered controllers can trigger loops. On-chain VRF verification prevents manipulation.

Integration

Up and Running in 4 Steps

From contract to automated game loop in minutes, not months.

01

Inherit

Extend one of three base contracts:

  • AutoLoopCompatible — pure automation
  • AutoLoopHybridVRFCompatible — selective randomness (loot, crits, spawns)
  • AutoLoopVRFCompatible — randomness on every tick
02

Implement

Add shouldProgressLoop() to signal readiness and progressLoop() to execute your game logic.

03

Register & Fund

Register your contract on-chain and deposit ETH to cover gas and fees.

04

Let It Run

Workers automatically detect and execute your loops. Sit back and watch your game come alive.

Pricing

Games for Pennies

Three tiers of on-chain automation — from pure execution to full VRF on every tick. Here's what each costs at current gas prices.

Standard Autoloop
$0.0080
per tick
~90k gas @ ~0.05 gwei
Hybrid VRF Autoloop
$0.0094
per tick
~105k avg gas @ 10% VRF
VRF Autoloop
$0.022
per tick
~240k gas @ ~0.05 gwei
Ticks per minute by experience type
ExperienceTicks/minStd /minHybrid /minVRF /min
🕹Idle / passive game1$0.0080$0.0094$0.022
Turn-based strategy6$0.048$0.056$0.132
🎯Casual real-time30$0.240$0.282$0.660

1 tick/sec = 60 ticks/min. Most on-chain games run at 1–10 ticks/sec.

How does that compare?
21k
ETH transfer
65k
ERC-20 transfer
90k
Autoloop tick
~105k
Autoloop Hybrid tick
150k
NFT mint
170k
Chainlink Keeper
200k
Chainlink VRF
240k
Autoloop + VRF tick
250k
Uniswap swap
370k
Chainlink Keeper + VRF
Example session costs
SessionTicks/minDurationTotal cost
Idle game (1 hr)160 min$0.480
Turn-based match615 min$0.720
Casual real-time305 min$1.20
Hybrid strategy615 min$0.846
VRF card game610 min$1.32

Based on ~0.05 gwei gas price and ETH at ~$2,000. Actual costs vary with network conditions.

Fee Breakdown

Gas reimbursement + buffer
70% base fee (of gas cost)
50% of base fee to controller
50% of base fee to protocol
Gas
+
Base Fee
=
Controller
+
Protocol
Code

Simple by Design

Integrate Autoloop with just two functions. Here's a complete working contract.

NumberGoUp.sol
1// SPDX-License-Identifier: MIT
2pragma solidity ^0.8.13;
3
4// Import the base contract that makes any
5// contract compatible with AutoLoop workers
6import {AutoLoopCompatible} from
7 "autoloop/AutoLoopCompatible.sol";
8
9// A simple demo: number goes up every interval
10contract NumberGoUp is AutoLoopCompatible {
11 uint256 public number;
12 uint256 public interval;
13 uint256 public lastTimeStamp;
14 uint256 private _loopID;
15
16 constructor(uint256 _interval) {
17 interval = _interval;
18 lastTimeStamp = block.timestamp;
19 }
20
21 // Workers call this every block to check
22 // if the contract is ready for an update
23 function shouldProgressLoop()
24 external view override
25 returns (
26 bool loopIsReady,
27 bytes memory progressWithData
28 )
29 {
30 // Ready when enough time has passed
31 loopIsReady =
32 (block.timestamp - lastTimeStamp) > interval;
33 // Pass loop ID to prevent duplicate runs
34 progressWithData = abi.encode(_loopID);
35 }
36
37 // Called by AutoLoop when shouldProgressLoop
38 // returns true — this is your update logic
39 function progressLoop(
40 bytes calldata progressWithData
41 ) external override {
42 uint256 loopID =
43 abi.decode(progressWithData, (uint256));
44 // Guard against stale or replayed calls
45 require(loopID == _loopID, "stale loop");
46 lastTimeStamp = block.timestamp;
47 ++number;
48 ++_loopID;
49 }
50}
AutoLoop
vsChainlink

See How We Compare to Chainlink

Three automation modes — Standard, Hybrid VRF, and Full VRF — all in one protocol. No separate subscriptions. Cheaper than Chainlink in every tier.

~60%cheaper per execution
0token swaps needed
HybridHybrid VRF when you need it
View Full Comparison