|
| 1 | +# v1.21 Live Verification Loop — turnkey runbook |
| 2 | + |
| 3 | +Goal: prove the headline claim on a real chain so we can ship the v1.21 release + the viral post WITHOUT misleading language. The claim: **set local policy to `unrestricted`, and the chain still refuses an over-cap transfer.** |
| 4 | + |
| 5 | +## Network: Base Sepolia (NOT Ethereum Sepolia) |
| 6 | + |
| 7 | +Fund the account on **Base Sepolia** (chainId 84532), not Ethereum Sepolia. The Smart Sessions module contracts are deployed on Base Sepolia (already verified live via eth_getCode). Wrong network = nothing resolves. |
| 8 | + |
| 9 | +- **Token to fund:** Base Sepolia ETH (it's still "ETH", just on the Base testnet). |
| 10 | +- **How much:** ~0.02–0.05 Base Sepolia ETH is plenty. Account deployment + a session grant + a couple of agent userOps cost a few cents of testnet gas. Round up so faucet rate-limits don't stall you. |
| 11 | +- **Faucets:** Coinbase Base Sepolia faucet (faucet.quicknode.com/base/sepolia or the Coinbase Developer Platform faucet); Alchemy Base Sepolia faucet. Most drip 0.05–0.1/day. |
| 12 | +- **Bundler:** a free Pimlico key → `https://api.pimlico.io/v2/base-sepolia/rpc?apikey=<KEY>` (Pimlico supports v0.7 on Base Sepolia). Alchemy's bundler works too. |
| 13 | + |
| 14 | +## What "the Sepolia account" is |
| 15 | + |
| 16 | +An ERC-7579 **smart account** (Biconomy Nexus 1.x) that YOU own — the grantor. The agent's wallet (the plugin's local keystore EOA) becomes its scoped session key. You need a throwaway EOA to own/deploy the Nexus account; never give me a private key. |
| 17 | + |
| 18 | +## Your part (one-time, ~10 min) |
| 19 | + |
| 20 | +1. Register Base Sepolia as a custom chain (dashboard "Custom chains" tab, or the env): chainId 84532, RPC `https://sepolia.base.org`, explorer `https://sepolia.basescan.org`, native ETH. |
| 21 | +2. Create + fund a Nexus 1.x account on Base Sepolia (Biconomy SDK quickstart, or the Rhinestone/Biconomy demo app). Fund it with the ~0.03 ETH above. Deploy a test ERC-20 (or use an existing Base Sepolia test token) and send the account, say, 100 of it. |
| 22 | +3. Tell me: the **smart-account address**, the **test-token address**, and the **Pimlico bundler URL**. (No keys.) |
| 23 | +4. When I hand you the grant payload + userOpHash, sign it with your throwaway OWNER key (in your own wallet) and give me back the signature — I submit it via `chaingpt_aa_submit_userop`. |
| 24 | + |
| 25 | +## My part (then, ~5 min, no keys of yours) |
| 26 | + |
| 27 | +1. `chaingpt_agent_wallet_init` (if not already) → the session key. |
| 28 | +2. `chaingpt_aa_session_build_grant` chain=base-sepolia account=<yours> tokenCaps=[{token, cap:"100"}] validUntil=<+24h> → you sign → `chaingpt_aa_submit_userop`. |
| 29 | +3. `chaingpt_aa_session_status` → permission ENABLED, cap 100. |
| 30 | +4. `chaingpt_agent_wallet_4337_sign_and_send` transfer 40 → succeeds. Again 40 → succeeds. Third 40 → **chain refuses** (cumulative 120 > 100). The agent signs with ITS OWN keystore key, never yours. |
| 31 | +5. **The headline:** set local `policy.json` to `unrestricted: true` (+ `erc4337.enabled: true`), retry the over-cap transfer → bundler/EntryPoint STILL refuses at validation. Screenshot that. |
| 32 | +6. Freeze the live permissionId as the golden vector in `smart_sessions.test.ts`. |
| 33 | + |
| 34 | +## Then (me, automatic) |
| 35 | + |
| 36 | +Tag + release v1.21.0 with the now-true on-chain claim; the screenshot anchors the launch thread. No claim ships before step 5 passes. |
0 commit comments