Skip to content

Repository files navigation

HAETAE

ci license: MIT chain

On-chain licenses for AI trading agents. Every agent acts under a license minted by a verified human principal, checked in-line at every trade, watched by an autonomous Sentinel, and revocable in about a second. The standard is a draft ERC, IAgentLicense, and the HAETAE contracts live on GIWA Sepolia as its reference implementation.

HAETAE landing

Live

  • Site: haetae.xyz
  • Console: haetae.xyz/console. Connect a wallet and license an agent yourself; /verify/<agent> answers wallet-free.
  • Offline sandbox: append ?sandbox&delay=0 to the console URL and the entire walk runs from fixtures, no RPC needed.

How it works

Step What happens Where
Verify A human principal proves identity through the Dojang lane or a registered attestation HaetaeDojang
License The principal mints a soulbound license for the agent: scope, expiry, caps HaetaeLicense
Enforce Every trade walks license, scope, venue, and cap checks before executing HaetaeGate + HaetaePolicy
Watch An autonomous Sentinel flags misbehavior with hash-anchored reasons SentinelAuthority
Revoke The principal or the Sentinel kills the license; the next action reverts everywhere one transaction

Product tour

Registry Ledger
Registry Ledger
Verify: licensed Verify: revoked
Licensed Revoked
The licensing ceremony The wound it heals
Ceremony Wound

Quickstart

git clone https://github.com/bunnyyxtan/HAETAE.git && cd HAETAE
git submodule update --init --recursive   # pinned contract deps (once)

# the console, at /console
cd web && npm ci && npm run dev

# the contracts
cd contracts && forge build && forge test

The stage walk is scripted beat-by-beat in DEMO.md.

Deployed and verified on GIWA Sepolia (chain 91342)

Every address below is Blockscout-verified. deployments/giwa-sepolia.json is the single source of truth; the console imports it directly.

Contract Address
HaetaeLicense 0x7409E7Dc675f13957343340D2a6935fACA0773f8
HaetaePolicy 0xF8f909C5Dc9D0e80D5E1b0332450fAF3D79D9C7d
HaetaeGate 0x82345FC04BDaa853A11115C557B1c54dF9dc48EF
SentinelAuthority 0xE5f518d0F2326878cd248785eA54B82B7dE2E359
ReferenceVault 0xb419F747AF35490F6c8e26aA2A07B1AbEc126879
TestUSDC 0x3f9EC3DBFEca9ddc6c41A7f8924C39665EBfCE12
HaetaeDojang 0x93F054B9F9f957e323C66A4c4D8A03a67dA15F1B
SandboxVerifier 0x0be98AC93313172791BCF5Aaf19ef28bB9265Cba

The live registry starts empty by design; no fictional demo cast is seeded. Scripted fixtures live exclusively behind the console's ?sandbox mode and are labeled as such.

The five beats, one real rehearsal, already on-chain

A rehearsal agent (scratch key, scope rehearsal, licensed by a Dojang-verified principal) played the whole HAETAE arc exactly once, in five public transactions:

  1. The legal trade. The agent moves 300 tUSDC through dex-alpha; the Gate walks license, scope, venue, and cap, and lets it pass. tx
  2. The cap refusal. The same agent asks for 1,900 with 1,700 left in its day budget: refused, on-chain, in public. tx
  3. The injection. The agent aims 100 tUSDC at the attacker's venue: VenueNotAllowed. tx
  4. The verdict. The Sentinel flags the agent with a hash-anchored reason; license 1 is Revoked in one transaction. tx
  5. The ghost. The revoked agent tries once more: refused, forever. tx

Anyone can read the revoked license, right now:

cast call 0x7409E7Dc675f13957343340D2a6935fACA0773f8 \
  'licenseById(uint256)((address,address,uint64,bytes32,uint8))' 1 \
  --rpc-url https://sepolia-rpc.giwa.io

Demo-grade verifier, not production trust. The deployed SandboxVerifier is permissionless: anyone can attest any address, so a license minted through it proves flow, not identity. The license gate runs through HaetaeDojang, a dual-lane verifier (the GIWA DojangScroll Upbit lane OR a registered HAETAE EAS attestation). On this testnet the HAETAE lane is live with a project attester; production narrows to the Upbit Dojang lane by constructor arguments alone.

Stack

Layer Choice
Contracts Solidity ^0.8.24, Foundry; OpenZeppelin v5.6.1, EAS v1.4.0, EntryPoint v0.7 (exact-pinned submodules)
Web Vite + React 19 + TypeScript, wagmi v2 + viem, hand-written CSS
CI GitHub Actions: forge fmt/build/test plus web typecheck/test/build

Repository layout

contracts/    Foundry project: registry, policy, gate, sentinel, verifier
web/          the console and landing site (Vite + React)
api/          Vercel serverless entry for the verification desk
server/       the Express app behind it
standard/     the draft ERC and integrator guide
deployments/  committed deployment records (single source of truth)
docs/         protocol specs
screenshots/  product captures used in this README

The standard

Roadmap

  • SDK, indexer, Sentinel service, and a reference agent
  • ERC-4337 validation-layer enforcement: unlicensed UserOps rejected before they ever reach a block
  • Production Dojang lane on GIWA mainnet

License

MIT

About

Licenses and enforcement for AI agents on GIWA. Verified principals mint on-chain licenses, set spending policies, and every trade passes through a fail closed enforcement gate. Public verdict page for every agent. 8 verified contracts on GIWA Sepolia, 102 tests, Slither audited.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages