Execution infrastructure for Robinhood Chain

Define a condition and a policy. When it holds, a keeper simulates the exact transaction, sends it inside your limits and records a public receipt.

A contract can know the price. It can't notice it.

Smart contracts only run when someone sends a transaction. Conditions become true and nothing happens until an external caller shows up. ACTUATE is that caller, bounded by your policy.

2,310
≥ 2,450 condition

Contract alone

Waiting.

  • rebalance() is public
  • condition readable onchain: true
  • no caller → no transaction
Blocks since condition met0

Contract + ACTUATE job

Armed.

  1. observed block
  2. condition evaluated
  3. simulated: success
  4. sent within policy
Receipt—

Illustration. The price is a local control, not a market feed.

How ACTUATE works

Five stages between a condition and a receipt.

Observe

Keepers read every new block.

Each active job is checked against fresh chain state: a time window, a block interval, a contract event, a balance or an oracle value. Nothing is polled from a private API.

Stage 1 / 5 · scroll-driven illustration
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

Reading block …100

Execution path

Every run passes five gates.

Trigger, policy, simulation, execution, receipt. Nothing is sent unless every gate passes. Select a stage to see what it checks.

actuate /execution path5 gates
Execution pathVisual demonstration · not a live transaction
  1. Trigger
  2. Policy
  3. Simulation
  4. Execution
  5. Receipt
Ready

Each automation passes the same five gates, in order. A failure at any gate stops the run.

Every receipt is publicExecution explorer →
Module registry

Install a module instead of writing a bot.

Open registry · 0 published

Demonstration. No modules are published on mainnet yet; these are concepts, not live listings.

EXECUTION NETWORK · JobManager · KeeperRegistrykeeper 1keeper 2keeper 3Treasury sweepMSE

M monitors · S simulates · E executes. Select a module to inspect it.

Job builder

Five decisions. Then it runs.

Pick a module, define the trigger, cap the policy, review the simulation, prepare the job. The preview is local; the real builder lives in the console after you connect.

new job · draftIllustrative · nothing is sent
Choose a module
For developers

Write a manifest. Earn when it runs.

A module declares one trigger, one action, the selectors it may call and the permissions it requests. Published versions are immutable. Confirmed, paid runs feed the epoch reward score.

module manifestfields per /docs/modules
{name: "treasury-sweep",version: "1.0.0",trigger: { type: "balance", gte: "{{config.floor}}" },action: { type: "call", target: "{{config.vault}}" },selectors: ["deposit(uint256)"],permissions: ["monitor", "simulate", "execute"],}
what happens next
  1. manifest hashed → AutomationRegistry
  2. version 1.0.0 published (immutable)
  3. installer pins version + config
  4. keeper evaluates trigger each block
  5. confirmed runs score epoch rewards
ACT token

Three functions, one loop. Nothing else.

paid confirmed runs → scorecredits subsidize runsbetter modules → premium valueACTExecutionsDevelopersHolders
0 credits left this epoch

Execution credits

Holding ACT grants a quota of subsidized executions per epoch, scaled by tier and capped by the credit program’s remaining budget.

Details

Set the condition. Actuate.

THRESHOLD0.28CONDITION / 0.70POLICY GATEOBSERVEblock readEVALUATEcondition trueSIMULATEeth_call okEXECUTEwithin policyVERIFYreceiptRECEIPTstatus confirmedpolicy passedillustration
Turn the dial past the threshold to actuate.