Your agent has a wallet. Hold it to what you told it.
An owner sets an agent's spending scope in plain words, and the agent accepts it from its own key.
Then anyone can have GenLayer validators read what the agent really paid on another chain. One payment
outside the scope revokes it for good, and if the whole window cannot be read, the gate closes.
Payment rails read one thing: allowed(id).
1. Words, then consentThe owner writes the scope. Only the named agent's key can accept it, and its payments count from that moment.
2. The validators read the chainNobody reports anything. Each validator pages through the agent's outgoing activity on the explorer, from the last complete audit to the end of the feed.
3. Part of a window never passesA failed page, an explorer that lags, too many payments for one round: the leash is suspended and the gate closes until a complete audit.
Look at a leash
Looking up needs no wallet. An audit is open to anybody and runs a consensus round on Bradbury.
Try:
Every leash
Reading from chain...
For payment rails
True only while the leash is active and its last complete audit window ended within 7 days.
# a payment rail or treasury contract, before paying on an agent's behalf
assert gl.contract.get_at(Address(LEASH)).view().allowed(grant_id)