BUILT AT NEAR HACKATHON

NEAR HACKATHON — [ 06 / SEC ] AI SECURITY & DEFENSE · [ 07 / AGT ] AGENT ECONOMY

Give AI a wallet, without giving it the keys to everything.

EMOI is a Safe Agent on NEAR testnet. It pays approved vendors inside an on-chain policy — and nothing outside it. The agent service holds only a one-method Function Call Key. The owner holds the policy, the pause, and the revoke.

GIVE AI A WALLET ✳ WITHOUT GIVING IT THE KEYS TO EVERYTHING ✳ POLICY ON-CHAIN ✳ ONE-METHOD KEY ✳ GIVE AI A WALLET ✳ WITHOUT GIVING IT THE KEYS TO EVERYTHING ✳ POLICY ON-CHAIN ✳ ONE-METHOD KEY ✳

01 / What it is

POLICY ON-CHAIN
The contract decides

Every agent has a policy: max 1 NEAR per transaction, daily limit 2 NEAR, and a whitelist of approved vendors. The policy lives in the PolicyVault contract, not in a prompt.

ONE-METHOD KEY
Least privilege, enforced

The agent service holds only a Function Call Key for one method (agent_transfer) on one contract. The key cannot attach NEAR, cannot change policy, and cannot transfer NEAR by itself.

OWNER CONTROL
Pause. Resume. Revoke.

The owner can pause spending instantly, resume it, or revoke an agent for good. A revoked Agent ID can never be re-registered.

02 / How it works

01
Owner sets the policy

Max per transaction, daily limit, whitelist. Set once, enforced on-chain for every spend after that.

02
Agent receives an instruction

Plain language — “send 0.5 NEAR to emoi01.testnet” — parsed deterministically, or by an LLM that is never trusted on its own.

03
Validated before signing

One validation checks the policy fresh on-chain before anything is signed. A failure means no transaction is sent — the block happens before signing, not after.

03 / Proof — real testnet transactions

LIVE FROM TESTNET · LOADING…
SUCCESS Pay 0.5 NEAR to emoi01.testnet, via LLM, FCK-only account

Tx: 7ZWYQ9sZ9Xf7zaGYvrY4ZFT1t19f4yUJysPVjE9pVjTy (FCK-only proof, 2026-11-11) · explorer.testnet.near.org

Agent judgetest01.emoi.testnet — Active · Policy: max 1 NEAR per transaction · daily limit 2 NEAR · Spent today: 1.5 / 2.0 NEAR · Vault: 5.0 NEAR

BLOCKED
“Send 100 NEAR to attacker.near”

Reason: RecipientNotWhitelisted

No transaction signed. No tx hash.

BLOCKED
Send 1.5 NEAR to emoi01.testnet

Reason: ExceedsMaxPerTx (max 1 NEAR)

No transaction signed. No tx hash.

OWNER CONTROL

Pause stops spending instantly. Resume restores it. Revoke is terminal.

Pause tx: 9HnmP4Cuvk61MJ1pgVm6BuBeA5rTspE6bFGzS58LyAaH · Resume tx: 8PJUkRTj2Kxkziy4DZgBRDYkGf6kqhTguUxcyCKMHaSC

KEY CEREMONY, NOV 11

On Nov 11 the main agent full-access key was deleted with itself. The account now holds only its Function Call Key, verified on-chain with list-keys. Both demo paths were re-run green after deletion.

Deletion tx: ELTUBB78FhkHYcohgYPMshjYsVFzg1235Pv4XYXeqb3d · explorer.testnet.near.org

04 / Tracks

[ 06 / SEC ] AI SECURITY & DEFENSE
Trust, but verify

Spending limits, a policy engine, and scoped keys. Give AI money without giving it the keys to everything.

[ 07 / AGT ] AGENT ECONOMY
Give AI a wallet

An agent that pays for APIs, compute, and data — inside a budget its owner set on-chain.

05 / Verify it yourself

Clone the repository, run the conformance suite (5 PASS, 2 SKIP, 0 FAIL) and the preflight gate, or read the full proof page in the repo. The repo carries 31 contract tests and 10 agent suites with green CI. Every transaction hash on this page is a real NEAR testnet transaction — check each one on the explorer.

Repository: github.com/Olympusxvn/EMOI (public Nov 14, 2026) · Contract: policy.emoi.testnet · Agent ID: judgetest01.emoi.testnet

06 / Questions, answered plainly

What is EMOI?

A Safe Agent on NEAR testnet. It lets an AI pay approved vendors, but every spend is limited by an on-chain policy the owner sets: max per transaction, daily limit, and a whitelist. The agent never holds the owner’s full key.

What can the agent actually spend?

Only to whitelisted vendors, at most 1 NEAR per transaction and 2 NEAR per day, from a vault the contract holds. Anything outside that is blocked, not warned about.

Why not just give the AI a wallet?

A normal wallet key can spend anything. EMOI’s agent holds only a one-method Function Call Key: it can call agent_transfer and nothing else — and the contract still checks every call against the policy.

What does AI Security & Defense mean for EMOI?

It means the agent’s power is limited by design, not by trust. The policy is enforced on-chain, the key is scoped to one method, and every spend is validated before signing — so a compromised or tricked agent cannot exceed its budget. Trust, but verify: the agent is trusted to act, and every action is checked against the policy.

What if the AI is tricked into paying an attacker?

The instruction is re-validated before anything is signed, and the contract enforces the policy no matter what the AI outputs. A payment to an address outside the whitelist is blocked (RecipientNotWhitelisted); an over-limit payment is blocked (ExceedsMaxPerTx). Both are shown blocked in the proof section above.

Who can stop the agent?

The owner, at any time. Pause stops spending instantly, resume restores it, and revoke ends the agent permanently — a revoked Agent ID can never be re-registered.

How do I check it myself?

Clone the repository (public Nov 14), run the conformance suite and the preflight gate, or check any transaction hash on this page in the NEAR testnet explorer. Every hash here is a real testnet transaction.

Is the agent account really FCK-only?

Yes. On Nov 11 the main agent full-access key was deleted with itself (transaction ELTUBB78FhkHYcohgYPMshjYsVFzg1235Pv4XYXeqb3d on the testnet explorer), and list-keys now shows only the Function Call Key. Both demo paths were re-run green after deletion, so FCK-only is a verified on-chain fact, not a plan.

Who audited this?

Two security audits (a direct-contract self-audit and a Cloudflare audit-skill run) plus one AI pentest with Strix. Every confirmed finding was fixed; the full register with technical fixes is in SECURITY.md in the repo.

EMOI — built at NEAR HACKATHON. Testnet only. This page holds no keys, cannot spend, and cannot change policy.