Remember·sync · inline

Scheduler

Self-waking contracts

Register callbacks at future blocks. Bypasses sender lock.

0x56e776BAE2DD60664b69Bd5F865F1180ffB7D58BExplorer
System contract (not a precompile). Calls bypass the sender lock — multiple scheduled jobs from the same EOA can run in parallel.
Setup before submit: (1) Pre-fund your RitualWallet escrow ( ≥ 0.01 RITUAL) — payer drains from this. (2) Authorize the Scheduler contract as a spender on your RitualWallet (one-time approve tx). (3) startBlock must be ≥ current block, and target must be a real callable contract. Validate (eth_call) will revert until all three are satisfied.
contract to call
e.g. "tick(uint256)"
match types in signature
0 = next block
blocks
blocks
who pays from RitualWallet
cost: gas only (no escrow)
Connect your wallet to submit a real transaction.
to: 0x56e776BAD58BchainId 1979 · system contract
Output
Click Validate call to encode and try the schedule call.
100 calls · every 600 blk · ~350 min total
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

interface IScheduler {
    function schedule(
        bytes calldata data,
        uint32 gas, uint32 startBlock, uint32 numCalls, uint32 frequency,
        uint32 ttl,
        uint256 maxFeePerGas, uint256 maxPriorityFeePerGas,
        uint256 value,
        address payer
    ) external returns (uint256 callId);
}

contract MyScheduler {
    IScheduler constant SCHEDULER =
        IScheduler(0x56e776BAE2DD60664b69Bd5F865F1180ffB7D58B);

    address public immutable target = "0x0000000000000000000000000000000000000000";

    /// @notice Register a recurring call. Scheduler bypasses the sender lock
    /// — multiple scheduled async jobs can run in parallel from the same
    /// contract.
    function setupSchedule() external returns (uint256 callId) {
        bytes memory data = abi.encodeWithSignature(
            "tick(uint256)"
            // , …args…
        );

        callId = SCHEDULER.schedule(
            data,
            300000, 0, 100, 600,
            100000,
            30000000000, 2000000000,
            0,
            "0x0000000000000000000000000000000000000000"
        );
    }
}