You can use the on-chain scheduler contract to schedule a recurring call to execute a given smart contract. Read more on use cases for the on-chain auto-scheduler here.
Contract source code here.
Note: the min_delay
is minimum number of blocks after current blocks before the scheduled call will be called. i.e. Pass 0 means it will be scheduled to be called on next block. Calling scheduleCall
with min_delay = 5
on block 10 will scheduled the call on block 10 + 1 + 5 = 16
. If the block are full or there are too many other scheduled tasks, the scheduled call could be deferred to later blocks until there is enough remaining spaces in the block.
ScheduleCall contract address: 0x0000000000000000000000000000000000000808
// Schedule call the contract.
// Returns the task_address(block_number, index).
function scheduleCall(
address contract_address, // The contract address to be called in future.
uint256 value, // How much native token to send alone with the call.
uint256 gas_limit, // The gas limit for the call. Corresponding fee will be reserved upfront and refunded after call.
uint256 storage_limit, // The storage limit for the call. Corresponding fee will be reserved upfront and refunded after call.
uint256 min_delay, // Minimum number of blocks before the scheduled call will be called.
bytes memory input_data // The input data to the call.
)
public
returns (uint256, uint256); // Returns a task id that can be used to cancel or reschedule call.
Here's a recurring payment contract example using the scheduler.
Follow this tutorial to write and deploy a basic automatic subscription contract on Acala EVM.