--- id: task-009 title: 'NLA Oracle - Base Sepolia deployment and integration' status: In Progress assignee: [] created_date: '2026-03-15 07:00' labels: - blockchain - ai - infrastructure dependencies: [] priority: high --- ## Description Deploy and operate a Natural Language Agreements (NLA) oracle on Base Sepolia. The oracle uses AI (Anthropic Claude) to arbitrate blockchain escrows defined in plain English. Contracts are pre-deployed by Alkahest on Base Sepolia. The oracle container (`nla-oracle`) is running and listening for arbitration requests. **Oracle address**: `0x2d2E0a49B733E3CBB2B6C04C417aa5E24cd2A70F` **Repo**: `/opt/apps/natural-language-agreements` **Container**: `nla-oracle` **Network**: Base Sepolia (chain 84532) ## Acceptance Criteria - [x] #1 Oracle container deployed and running on Base Sepolia - [x] #2 Secrets stored in Infisical (private key, Anthropic API key) - [x] #3 Oracle starts from current block (avoids public RPC getLogs limit) - [ ] #4 Fund oracle wallet with Base Sepolia ETH for gas - [ ] #5 Create and test a demo escrow end-to-end - [ ] #6 Explore integration with DefectFi / CRDT escrow project - [ ] #7 Consider upgrading to paid RPC (Alchemy) for production reliability - [ ] #8 Optionally add OpenAI provider as fallback alongside Anthropic ## Notes ### Completed (2026-03-15) - Cloned `arkhai-io/natural-language-agreements` to `/opt/apps/natural-language-agreements` - Created Dockerfile (bun-based single-stage) and docker-compose.yml - Patched oracle to use `fromBlock: currentBlock` to avoid public RPC 10k block limit - Stored secrets in Infisical `/ai/` folder (`NLA_ORACLE_PRIVATE_KEY`, `ANTHROPIC_API_KEY`) - Container `nla-oracle` running, polling every 10s on Base Sepolia - Created demo script at `demo/demo.ts` — Content Creation Bounty use case - Alice locks 1000 BOUNTY tokens, demands a blog post about regenerative economics - Bob submits a blog post, oracle (Claude) evaluates and arbitrates ### Blocking: Fund 3 wallets with Base Sepolia ETH | Wallet | Address | Needed | |--------|---------|--------| | Oracle | `0x2d2E0a49B733E3CBB2B6C04C417aa5E24cd2A70F` | ~0.005 ETH | | Alice (demo) | `0x2E9d13530C3880edB42f2b18fC0Bdc7d527872Ae` | ~0.01 ETH | | Bob (demo) | `0x739C83BEbdDb8A68c0a76f2F59E40729A7F184F9` | ~0.005 ETH | Faucets: [Alchemy](https://www.alchemy.com/faucets/base-sepolia) or [Coinbase](https://portal.cdp.coinbase.com/products/faucet) ### Technical details - Alkahest TrustedOracleArbiter: `0x3664b11BcCCeCA27C21BBAB43548961eD14d4D6D` - ERC20EscrowObligation: `0x1Fe964348Ec42D9Bb1A072503ce8b4744266FF43` - Public RPC `https://sepolia.base.org` has 10k block getLogs limit — handled via `fromBlock: currentBlock` - Polling interval: 10s - Demo state file: `demo/.demo-state.json` ### Run demo after funding ```bash cd /opt/apps/natural-language-agreements bun run demo/demo.ts create # deploy token + create escrow bun run demo/demo.ts fulfill # Bob submits blog post docker logs -f nla-oracle # watch Claude evaluate bun run demo/demo.ts collect # Bob collects tokens ```