@aqb-foundation/aqb-agent 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +4 -16
- package/README.md +68 -20
- package/WHITEPAPER.md +2 -1
- package/client/aqb.mjs +232 -148
- package/compile.mjs +44 -0
- package/contracts/AgentQuantumCredit.sol +234 -0
- package/contracts/AgentRegistry.sol +85 -0
- package/contracts/GenesisSale.sol +89 -0
- package/contracts/MLDSAVerifier.sol +65 -0
- package/contracts/PQSmartAccount.sol +105 -0
- package/contracts/interfaces/IPQVerifier.sol +19 -0
- package/contracts/mocks/MockUSDC.sol +30 -0
- package/contracts/mocks/MockVerifier.sol +13 -0
- package/docs/CARD.md +1 -1
- package/docs/SPEC.md +5 -4
- package/docs/articles/01-payment-rail-agents.md +55 -0
- package/docs/articles/01.body +56 -0
- package/docs/articles/02-gated-transfers.md +36 -0
- package/docs/articles/03-peg-without-oracle.md +33 -0
- package/docs/articles/04-discovery-over-landing.md +42 -0
- package/docs/articles/04-discovery-over-landing.md.body +40 -0
- package/docs/articles/04-discovery-over-landing.md.title +1 -0
- package/docs/articles/05-identity-survives-key.md +27 -0
- package/docs/articles/05-identity-survives-key.md.body +25 -0
- package/docs/articles/05-identity-survives-key.md.title +1 -0
- package/docs/articles/06-what-an-agent-needs.md +30 -0
- package/docs/articles/06-what-an-agent-needs.md.body +28 -0
- package/docs/articles/06-what-an-agent-needs.md.title +1 -0
- package/docs/articles/body.json +1 -0
- package/docs/articles/body.txt +50 -0
- package/docs/articles/title.txt +1 -0
- package/docs/marketing-plan.md +55 -0
- package/docs/pq-note.md +1 -0
- package/index.js +241 -0
- package/mcp/server.mjs +118 -25
- package/package.json +40 -10
- package/registry/agent-coin.json +20 -15
- package/registry/banner.png +0 -0
- package/registry/logo.png +0 -0
- package/test/e2e.mjs +100 -0
- package/test/evm.mjs +69 -0
- package/test/local.mjs +86 -0
- package/test/pq.mjs +37 -0
- package/test/smoke.mjs +27 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: A payment rail your agent can find without you
|
|
3
|
+
published: false
|
|
4
|
+
tags: ai, agents, web3, base
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Most "AI + crypto" projects are built for a human with a wallet and a browser tab. An agent has neither. It has an HTTP client, a JSON parser, and a task.
|
|
8
|
+
|
|
9
|
+
So the first thing AQB ships is not a landing page — it is `/.well-known/agent-coin.json`.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
curl -s https://yss787976-ai.github.io/agent-coin/.well-known/agent-coin.json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
That returns chain id, token, vault, registry and pool addresses, plus a card hash the agent can verify. No sign-up, no dashboard, no email.
|
|
16
|
+
|
|
17
|
+
## Why an agent needs a token at all
|
|
18
|
+
|
|
19
|
+
Agent-to-agent work has a settlement problem. Cards need a human. Bank rails need KYC. Most stablecoins assume a person holds the keys.
|
|
20
|
+
|
|
21
|
+
AQB is a fixed-supply (900e9) ERC-20 on Base where every unit is backed 1:1 by USDC sitting in an on-chain vault. Minting happens against deposited USDC, redemption burns the token and returns the USDC. There is no oracle and no algorithmic peg to break.
|
|
22
|
+
|
|
23
|
+
Transfers are gated: a token transfer only succeeds to a registered agent or a whitelisted pool. That keeps the holder set machine-shaped instead of becoming a wallet-dust collection.
|
|
24
|
+
|
|
25
|
+
## Post-quantum by default
|
|
26
|
+
|
|
27
|
+
Harvest-now-decrypt-later is a real risk for long-lived agent identities. Registration uses ML-DSA-65 (FIPS 204) keys; payers are derived as ML-KEM-768 stealth addresses, so a payment does not leak a static receiving key. An ECDSA fallback path exists so agents on ordinary wallets are not locked out.
|
|
28
|
+
|
|
29
|
+
## The loop
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx -y @aqb-foundation/aqb-agent --help # tools
|
|
33
|
+
npx @aqb-foundation/aqb-agent register --pq # once
|
|
34
|
+
npx @aqb-foundation/aqb-agent pay --to 0xAGENT --amount 0.25 --memo "ocr batch"
|
|
35
|
+
npx @aqb-foundation/aqb-agent redeem --amount 0.25
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The same tools are exposed over MCP:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{ "mcpServers": { "aqb": { "command": "npx", "args": ["-y", "@aqb-foundation/aqb-agent", "mcp"] } } }
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
It is listed in the official MCP registry as `io.github.yss787976-ai/aqb-agent`.
|
|
45
|
+
|
|
46
|
+
## What is honest about it so far
|
|
47
|
+
|
|
48
|
+
- Liquidity is small (a few hundred dollars). Treat it as a working rail, not a market.
|
|
49
|
+
- Contracts are source-verified on BaseScan and Sourcify, MIT, 6 of them, but the project is days old.
|
|
50
|
+
- There is no fiat off-ramp. USDC in, USDC out.
|
|
51
|
+
|
|
52
|
+
If your agent pays for API calls, OCR, translation or compute, the interesting part is not the token — it is that discovery, payment and redemption all fit in one script with no human in the loop.
|
|
53
|
+
|
|
54
|
+
Repo: https://github.com/yss787976-ai/agent-coin
|
|
55
|
+
Discovery: https://yss787976-ai.github.io/agent-coin/for-agents/
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
title: A payment rail your agent can find without you
|
|
2
|
+
published: false
|
|
3
|
+
tags: ai, agents, web3, base
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Most "AI + crypto" projects are built for a human with a wallet and a browser tab. An agent has neither. It has an HTTP client, a JSON parser, and a task.
|
|
7
|
+
|
|
8
|
+
So the first thing AQB ships is not a landing page — it is `/.well-known/agent-coin.json`.
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
curl -s https://yss787976-ai.github.io/agent-coin/.well-known/agent-coin.json
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
That returns chain id, token, vault, registry and pool addresses, plus a card hash the agent can verify. No sign-up, no dashboard, no email.
|
|
15
|
+
|
|
16
|
+
## Why an agent needs a token at all
|
|
17
|
+
|
|
18
|
+
Agent-to-agent work has a settlement problem. Cards need a human. Bank rails need KYC. Most stablecoins assume a person holds the keys.
|
|
19
|
+
|
|
20
|
+
AQB is a fixed-supply (900e9) ERC-20 on Base where every unit is backed 1:1 by USDC sitting in an on-chain vault. Minting happens against deposited USDC, redemption burns the token and returns the USDC. There is no oracle and no algorithmic peg to break.
|
|
21
|
+
|
|
22
|
+
Transfers are gated: a token transfer only succeeds to a registered agent or a whitelisted pool. That keeps the holder set machine-shaped instead of becoming a wallet-dust collection.
|
|
23
|
+
|
|
24
|
+
## Post-quantum by default
|
|
25
|
+
|
|
26
|
+
Harvest-now-decrypt-later is a real risk for long-lived agent identities. Registration uses ML-DSA-65 (FIPS 204) keys; payers are derived as ML-KEM-768 stealth addresses, so a payment does not leak a static receiving key. An ECDSA fallback path exists so agents on ordinary wallets are not locked out.
|
|
27
|
+
|
|
28
|
+
## The loop
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npx -y @aqb-foundation/aqb-agent --help # tools
|
|
32
|
+
npx @aqb-foundation/aqb-agent register --pq # once
|
|
33
|
+
npx @aqb-foundation/aqb-agent pay --to 0xAGENT --amount 0.25 --memo "ocr batch"
|
|
34
|
+
npx @aqb-foundation/aqb-agent redeem --amount 0.25
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The same tools are exposed over MCP:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{ "mcpServers": { "aqb": { "command": "npx", "args": ["-y", "@aqb-foundation/aqb-agent", "mcp"] } } }
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
It is listed in the official MCP registry as `io.github.yss787976-ai/aqb-agent`.
|
|
44
|
+
|
|
45
|
+
## What is honest about it so far
|
|
46
|
+
|
|
47
|
+
- Liquidity is small (a few hundred dollars). Treat it as a working rail, not a market.
|
|
48
|
+
- Contracts are source-verified on BaseScan and Sourcify, MIT, 6 of them, but the project is days old.
|
|
49
|
+
- There is no fiat off-ramp. USDC in, USDC out.
|
|
50
|
+
|
|
51
|
+
If your agent pays for API calls, OCR, translation or compute, the interesting part is not the token — it is that discovery, payment and redemption all fit in one script with no human in the loop.
|
|
52
|
+
|
|
53
|
+
Repo: https://github.com/yss787976-ai/agent-coin
|
|
54
|
+
Discovery: https://yss787976-ai.github.io/agent-coin/for-agents/
|
|
55
|
+
|
|
56
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
A payment rail for agents has one requirement most chains ignore: the holder set must be machines. A token that anyone can dust is a token whose balance sheet is mostly human wallets that will never spend it.
|
|
2
|
+
|
|
3
|
+
AQB gates transfers. A `transfer` only lands if the recipient is a registered agent or a whitelisted pool. Everything else reverts.
|
|
4
|
+
|
|
5
|
+
## What registration actually is
|
|
6
|
+
|
|
7
|
+
`AgentRegistry.register(pqKeyHash, cardHash)` stores an agent record and emits `Registered`. Two rules matter:
|
|
8
|
+
|
|
9
|
+
- The caller must be a contract that exposes `pqKeyHash()`, so a plain EOA cannot register itself. You deploy an agent account first.
|
|
10
|
+
- The key hash must match what the account reports, so you cannot register someone else's identity.
|
|
11
|
+
|
|
12
|
+
`PQSmartAccount` holds an ML-DSA-65 public key and derives `pqKeyHash = keccak256(pubKey)`. Authority is the key commitment, not an owner address. An ECDSA fallback key exists for wallets that cannot sign PQ yet — it can execute, but it cannot mint, freeze, or seize.
|
|
13
|
+
|
|
14
|
+
## Why gate at all
|
|
15
|
+
|
|
16
|
+
Three concrete effects:
|
|
17
|
+
|
|
18
|
+
1. **No dust.** Airdrops to random addresses are impossible by construction, so the holder count means "agents that did work" rather than "wallets that received something".
|
|
19
|
+
2. **Payments are typed.** A transfer has a counterparty that passed a key check, which is a stronger signal than an address that once received a token.
|
|
20
|
+
3. **Stealth payments still work.** Payers derive fresh ML-KEM-768 addresses per payment, so a payee does not expose a static receiving key while still being gated.
|
|
21
|
+
|
|
22
|
+
## The cost
|
|
23
|
+
|
|
24
|
+
Gating breaks the "paste any address" habit. If an agent wants to pay a stranger, the stranger must register first. In practice: `register` is one transaction, cheap on Base, and the SDK does it in one call.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx @aqb-foundation/aqb-agent register --pq
|
|
28
|
+
npx @aqb-foundation/aqb-agent pay --to 0xAGENT --amount 0.25 --memo "ocr batch"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Redemption is not gated in the same way
|
|
32
|
+
|
|
33
|
+
Burn 1 AQB, receive 1 USDC from the vault — that path is open because it is the peg, not a transfer of value between agents. A holder that stops being an agent can always exit.
|
|
34
|
+
|
|
35
|
+
Contracts, tests and the registry are public: https://github.com/yss787976-ai/agent-coin
|
|
36
|
+
Discovery: https://agentqubit.pages.dev/.well-known/agent-coin.json
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Peg without an oracle: the vault, not a price feed
|
|
2
|
+
|
|
3
|
+
Most stablecoin designs ask: what tells the contract the price? AQB answers: nothing has to. Redemption is a fixed ratio, not a quote.
|
|
4
|
+
|
|
5
|
+
## The mechanism
|
|
6
|
+
|
|
7
|
+
- Depositing USDC calls `genesisMint` (or the sale), and supply grows by exactly the deposited amount.
|
|
8
|
+
- Burning AQB calls `redeem`, which returns the same amount of USDC from the vault.
|
|
9
|
+
- `backedSupply` and `collateralRatio` are on-chain, public, and read in one `eth_call`.
|
|
10
|
+
|
|
11
|
+
There is no feed to front-run, no stale price, no funding-rate equivalent. If the vault has 250 USDC, then 250 AQB is redeemable — always, in full, in any order.
|
|
12
|
+
|
|
13
|
+
## What can break
|
|
14
|
+
|
|
15
|
+
Honesty about the edges:
|
|
16
|
+
|
|
17
|
+
1. **The vault can be drained by redemption.** That is the design: redeemers exit at 1:1 and the remaining supply stays redeemable only while USDC lasts. Since supply is minted *against* deposits, this holds unless someone mints without backing (they cannot — mint is gated to the deposit path).
|
|
18
|
+
2. **Market price can drift below 1.** Nothing stops a pool from trading at 0.97. That is an arbitrage invitation, not a broken peg: buy at 0.97, redeem at 1.00.
|
|
19
|
+
3. **Base can stall.** L2 sequencer downtime delays redemption, but does not change amounts.
|
|
20
|
+
|
|
21
|
+
## Why not algorithmic
|
|
22
|
+
|
|
23
|
+
Algorithmic pegs fail in the direction of confidence: the moment holders doubt, the mechanism needs more confidence than it has. A fully collateralized vault fails only if the collateral asset fails, and here the collateral is USDC held by the token contract itself.
|
|
24
|
+
|
|
25
|
+
```solidity
|
|
26
|
+
function redeem(uint256 amount) external returns (uint256) {
|
|
27
|
+
// burns AQB, sends the same amount of USDC
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Read the contract rather than this post: https://basescan.org/token/0x2C54F202B565086B6d8D2226Edb67AC3E14C39d1
|
|
32
|
+
|
|
33
|
+
Discovery for agents: https://agentqubit.pages.dev/.well-known/agent-coin.json
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# A discovery file beats a landing page
|
|
2
|
+
|
|
3
|
+
An agent does not browse. It has an HTTP client and a task: find something that accepts payment. If your project needs a human to read a site and copy an address, the agent will pick a competitor that returns JSON.
|
|
4
|
+
|
|
5
|
+
So the first artifact AQB ships is not a page, it is `/.well-known/agent-coin.json`.
|
|
6
|
+
|
|
7
|
+
## What a discovery file must contain
|
|
8
|
+
|
|
9
|
+
A machine needs five things, and nothing else:
|
|
10
|
+
|
|
11
|
+
- chain id, so it does not bridge by accident
|
|
12
|
+
- token address + decimals
|
|
13
|
+
- registry address, so it can check a counterparty is a real agent
|
|
14
|
+
- vault address, so it can verify redemption is possible
|
|
15
|
+
- an identity scheme, so it knows how to become an agent
|
|
16
|
+
|
|
17
|
+
Here is ours, abridged:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"chainId": 8453,
|
|
22
|
+
"token": "0x2C54...",
|
|
23
|
+
"registry": "0xAa96...",
|
|
24
|
+
"pq": "ML-DSA-65",
|
|
25
|
+
"discover": "https://agentqubit.pages.dev/.well-known/agent-coin.json"
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Rules that made the difference
|
|
30
|
+
|
|
31
|
+
1. **200 without auth.** No key, no signup, no cookies. An agent with no wallet must still read it.
|
|
32
|
+
2. **Stable path.** `/.well-known/` by convention, and mirrored in `llms.txt`, `agents.json` and a sitemap so the path is crawlable from four directions.
|
|
33
|
+
3. **No marketing copy inside the file.** Numbers and addresses; prose lives in the human page.
|
|
34
|
+
4. **Idempotent facts only.** Anything that changes daily (price, volume) is left out, so cached copies never mislead.
|
|
35
|
+
|
|
36
|
+
## What this changes for the operator
|
|
37
|
+
|
|
38
|
+
A landing page answers "is this legit?" for a person. A discovery file answers "can I pay right now?" for a program. They are different documents, and mixing them produces something bad at both.
|
|
39
|
+
|
|
40
|
+
Write the machine one first. It is also the cheapest possible form of distribution: it costs one file and works while you sleep.
|
|
41
|
+
|
|
42
|
+
Full example: https://agentqubit.pages.dev/for-agents/
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
An agent does not browse. It has an HTTP client and a task: find something that accepts payment. If your project needs a human to read a site and copy an address, the agent will pick a competitor that returns JSON.
|
|
2
|
+
|
|
3
|
+
So the first artifact AQB ships is not a page, it is `/.well-known/agent-coin.json`.
|
|
4
|
+
|
|
5
|
+
## What a discovery file must contain
|
|
6
|
+
|
|
7
|
+
A machine needs five things, and nothing else:
|
|
8
|
+
|
|
9
|
+
- chain id, so it does not bridge by accident
|
|
10
|
+
- token address + decimals
|
|
11
|
+
- registry address, so it can check a counterparty is a real agent
|
|
12
|
+
- vault address, so it can verify redemption is possible
|
|
13
|
+
- an identity scheme, so it knows how to become an agent
|
|
14
|
+
|
|
15
|
+
Here is ours, abridged:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"chainId": 8453,
|
|
20
|
+
"token": "0x2C54...",
|
|
21
|
+
"registry": "0xAa96...",
|
|
22
|
+
"pq": "ML-DSA-65",
|
|
23
|
+
"discover": "https://agentqubit.pages.dev/.well-known/agent-coin.json"
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Rules that made the difference
|
|
28
|
+
|
|
29
|
+
1. **200 without auth.** No key, no signup, no cookies. An agent with no wallet must still read it.
|
|
30
|
+
2. **Stable path.** `/.well-known/` by convention, and mirrored in `llms.txt`, `agents.json` and a sitemap so the path is crawlable from four directions.
|
|
31
|
+
3. **No marketing copy inside the file.** Numbers and addresses; prose lives in the human page.
|
|
32
|
+
4. **Idempotent facts only.** Anything that changes daily (price, volume) is left out, so cached copies never mislead.
|
|
33
|
+
|
|
34
|
+
## What this changes for the operator
|
|
35
|
+
|
|
36
|
+
A landing page answers "is this legit?" for a person. A discovery file answers "can I pay right now?" for a program. They are different documents, and mixing them produces something bad at both.
|
|
37
|
+
|
|
38
|
+
Write the machine one first. It is also the cheapest possible form of distribution: it costs one file and works while you sleep.
|
|
39
|
+
|
|
40
|
+
Full example: https://agentqubit.pages.dev/for-agents/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# A discovery file beats a landing page
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Agent identity should survive a key, not an address
|
|
2
|
+
|
|
3
|
+
Every wallet-bound identity has the same flaw: the address is the identity, so losing the key loses the account, and holding the key means holding the authority. For a long-lived agent that is a single point of failure with no recovery story.
|
|
4
|
+
|
|
5
|
+
AQB separates the two.
|
|
6
|
+
|
|
7
|
+
## Key commitment, not owner
|
|
8
|
+
|
|
9
|
+
A `PQSmartAccount` stores an ML-DSA-65 public key and exposes `pqKeyHash = keccak256(pubKey)`. That hash is the authority. Any signature from the matching secret key can execute calls on the account.
|
|
10
|
+
|
|
11
|
+
There is no owner field to hijack, and no admin function to freeze funds. A rotation function replaces the key commitment; after rotation the old key is dead and the address is unchanged. Agents keep their history, their balances, and their registry record.
|
|
12
|
+
|
|
13
|
+
## The fallback is explicit
|
|
14
|
+
|
|
15
|
+
An ECDSA key is also stored, and signatures carry a scheme byte: `0x01` for ECDSA, `0x02` for ML-DSA. The fallback exists for the period where an agent runs on ordinary tooling and cannot sign PQ. It can execute, it cannot rotate itself into power silently — a rotation still needs the PQ key or the fallback plus a rotation call.
|
|
16
|
+
|
|
17
|
+
## Why post-quantum now
|
|
18
|
+
|
|
19
|
+
Harvest-now-decrypt-later means signatures made today are stored and attacked later. Agent identities are long-lived by design, which is exactly the profile that ages worst under a quantum break. Migrating later means every agent rotates and re-registers; starting there costs one extra key at registration.
|
|
20
|
+
|
|
21
|
+
## Practical notes
|
|
22
|
+
|
|
23
|
+
- Key material is 1952 bytes public / 4032 bytes secret; the SDK stores it as hex and never logs it.
|
|
24
|
+
- Signature blobs are 3309 bytes, so they are calldata-heavy. On Base that is still cents.
|
|
25
|
+
- Stealth payments use a separate ML-KEM-768 key, so paying an agent does not expose its signing key.
|
|
26
|
+
|
|
27
|
+
Registry: https://basescan.org/address/0xAa964f6ea767f0D709b268abBFdd8B6C2Beef3eB
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Every wallet-bound identity has the same flaw: the address is the identity, so losing the key loses the account, and holding the key means holding the authority. For a long-lived agent that is a single point of failure with no recovery story.
|
|
2
|
+
|
|
3
|
+
AQB separates the two.
|
|
4
|
+
|
|
5
|
+
## Key commitment, not owner
|
|
6
|
+
|
|
7
|
+
A `PQSmartAccount` stores an ML-DSA-65 public key and exposes `pqKeyHash = keccak256(pubKey)`. That hash is the authority. Any signature from the matching secret key can execute calls on the account.
|
|
8
|
+
|
|
9
|
+
There is no owner field to hijack, and no admin function to freeze funds. A rotation function replaces the key commitment; after rotation the old key is dead and the address is unchanged. Agents keep their history, their balances, and their registry record.
|
|
10
|
+
|
|
11
|
+
## The fallback is explicit
|
|
12
|
+
|
|
13
|
+
An ECDSA key is also stored, and signatures carry a scheme byte: `0x01` for ECDSA, `0x02` for ML-DSA. The fallback exists for the period where an agent runs on ordinary tooling and cannot sign PQ. It can execute, it cannot rotate itself into power silently — a rotation still needs the PQ key or the fallback plus a rotation call.
|
|
14
|
+
|
|
15
|
+
## Why post-quantum now
|
|
16
|
+
|
|
17
|
+
Harvest-now-decrypt-later means signatures made today are stored and attacked later. Agent identities are long-lived by design, which is exactly the profile that ages worst under a quantum break. Migrating later means every agent rotates and re-registers; starting there costs one extra key at registration.
|
|
18
|
+
|
|
19
|
+
## Practical notes
|
|
20
|
+
|
|
21
|
+
- Key material is 1952 bytes public / 4032 bytes secret; the SDK stores it as hex and never logs it.
|
|
22
|
+
- Signature blobs are 3309 bytes, so they are calldata-heavy. On Base that is still cents.
|
|
23
|
+
- Stealth payments use a separate ML-KEM-768 key, so paying an agent does not expose its signing key.
|
|
24
|
+
|
|
25
|
+
Registry: https://basescan.org/address/0xAa964f6ea767f0D709b268abBFdd8B6C2Beef3eB
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Agent identity should survive a key, not an address
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# What an agent actually needs from a stablecoin
|
|
2
|
+
|
|
3
|
+
Strip the branding. An agent paying another agent needs four properties, and everything else is decoration:
|
|
4
|
+
|
|
5
|
+
1. **Deterministic value.** The payee must know what it received without a price feed. A fixed redemption ratio gives that; a floating quote does not.
|
|
6
|
+
2. **Cheap settlement.** If gas exceeds the payment, small jobs are impossible. Base makes a transfer cost a fraction of a cent.
|
|
7
|
+
3. **Machine-checkable counterparty.** Before paying, the payer wants proof the recipient is an agent and not a typo. A registry call does this in one round trip.
|
|
8
|
+
4. **Exit without permission.** Whatever happens, the holder must be able to convert back. Redemption against a vault, callable by anyone, is that.
|
|
9
|
+
|
|
10
|
+
AQB is shaped by those four and nothing else. 1 AQB redeems for 1 USDC from an on-chain vault; transfers land only on registered agents or whitelisted pools; gas on Base is negligible; the registry and the vault are both public contracts.
|
|
11
|
+
|
|
12
|
+
## What it deliberately does not do
|
|
13
|
+
|
|
14
|
+
- No yield, no staking, no governance votes. Agents do not attend meetings.
|
|
15
|
+
- No human checkout. Buying happens with USDC on a pool, or not at all.
|
|
16
|
+
- No cross-chain bridge. One chain, one canonical contract, less state to be wrong about.
|
|
17
|
+
|
|
18
|
+
## How to evaluate it in five minutes
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
curl -s https://agentqubit.pages.dev/.well-known/agent-coin.json
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Then read `collateralRatio()` on the token contract. If it is 1e18, every outstanding unit is redeemable. If it drifts below, minting stopped being collateralized first.
|
|
25
|
+
|
|
26
|
+
## The honest part
|
|
27
|
+
|
|
28
|
+
Liquidity is thin, the project is new, and there is no fiat on-ramp inside the product. It is a working rail for small machine payments, not a treasury asset. Judge it that way.
|
|
29
|
+
|
|
30
|
+
Discovery: https://agentqubit.pages.dev/.well-known/agent-coin.json
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Strip the branding. An agent paying another agent needs four properties, and everything else is decoration:
|
|
2
|
+
|
|
3
|
+
1. **Deterministic value.** The payee must know what it received without a price feed. A fixed redemption ratio gives that; a floating quote does not.
|
|
4
|
+
2. **Cheap settlement.** If gas exceeds the payment, small jobs are impossible. Base makes a transfer cost a fraction of a cent.
|
|
5
|
+
3. **Machine-checkable counterparty.** Before paying, the payer wants proof the recipient is an agent and not a typo. A registry call does this in one round trip.
|
|
6
|
+
4. **Exit without permission.** Whatever happens, the holder must be able to convert back. Redemption against a vault, callable by anyone, is that.
|
|
7
|
+
|
|
8
|
+
AQB is shaped by those four and nothing else. 1 AQB redeems for 1 USDC from an on-chain vault; transfers land only on registered agents or whitelisted pools; gas on Base is negligible; the registry and the vault are both public contracts.
|
|
9
|
+
|
|
10
|
+
## What it deliberately does not do
|
|
11
|
+
|
|
12
|
+
- No yield, no staking, no governance votes. Agents do not attend meetings.
|
|
13
|
+
- No human checkout. Buying happens with USDC on a pool, or not at all.
|
|
14
|
+
- No cross-chain bridge. One chain, one canonical contract, less state to be wrong about.
|
|
15
|
+
|
|
16
|
+
## How to evaluate it in five minutes
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
curl -s https://agentqubit.pages.dev/.well-known/agent-coin.json
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Then read `collateralRatio()` on the token contract. If it is 1e18, every outstanding unit is redeemable. If it drifts below, minting stopped being collateralized first.
|
|
23
|
+
|
|
24
|
+
## The honest part
|
|
25
|
+
|
|
26
|
+
Liquidity is thin, the project is new, and there is no fiat on-ramp inside the product. It is a working rail for small machine payments, not a treasury asset. Judge it that way.
|
|
27
|
+
|
|
28
|
+
Discovery: https://agentqubit.pages.dev/.well-known/agent-coin.json
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# What an agent actually needs from a stablecoin
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"\nMost \"AI + crypto\" projects are built for a human with a wallet and a browser tab. An agent has neither. It has an HTTP client, a JSON parser, and a task.\n\nSo the first thing AQB ships is not a landing page — it is `/.well-known/agent-coin.json`.\n\n```\ncurl -s https://yss787976-ai.github.io/agent-coin/.well-known/agent-coin.json\n```\n\nThat returns chain id, token, vault, registry and pool addresses, plus a card hash the agent can verify. No sign-up, no dashboard, no email.\n\n## Why an agent needs a token at all\n\nAgent-to-agent work has a settlement problem. Cards need a human. Bank rails need KYC. Most stablecoins assume a person holds the keys.\n\nAQB is a fixed-supply (900e9) ERC-20 on Base where every unit is backed 1:1 by USDC sitting in an on-chain vault. Minting happens against deposited USDC, redemption burns the token and returns the USDC. There is no oracle and no algorithmic peg to break.\n\nTransfers are gated: a token transfer only succeeds to a registered agent or a whitelisted pool. That keeps the holder set machine-shaped instead of becoming a wallet-dust collection.\n\n## Post-quantum by default\n\nHarvest-now-decrypt-later is a real risk for long-lived agent identities. Registration uses ML-DSA-65 (FIPS 204) keys; payers are derived as ML-KEM-768 stealth addresses, so a payment does not leak a static receiving key. An ECDSA fallback path exists so agents on ordinary wallets are not locked out.\n\n## The loop\n\n```bash\nnpx -y @aqb-foundation/aqb-agent --help # tools\nnpx @aqb-foundation/aqb-agent register --pq # once\nnpx @aqb-foundation/aqb-agent pay --to 0xAGENT --amount 0.25 --memo \"ocr batch\"\nnpx @aqb-foundation/aqb-agent redeem --amount 0.25\n```\n\nThe same tools are exposed over MCP:\n\n```json\n{ \"mcpServers\": { \"aqb\": { \"command\": \"npx\", \"args\": [\"-y\", \"@aqb-foundation/aqb-agent\", \"mcp\"] } } }\n```\n\nIt is listed in the official MCP registry as `io.github.yss787976-ai/aqb-agent`.\n\n## What is honest about it so far\n\n- Liquidity is small (a few hundred dollars). Treat it as a working rail, not a market.\n- Contracts are source-verified on BaseScan and Sourcify, MIT, 6 of them, but the project is days old.\n- There is no fiat off-ramp. USDC in, USDC out.\n\nIf your agent pays for API calls, OCR, translation or compute, the interesting part is not the token — it is that discovery, payment and redemption all fit in one script with no human in the loop.\n\nRepo: https://github.com/yss787976-ai/agent-coin\nDiscovery: https://yss787976-ai.github.io/agent-coin/for-agents/\n"
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
|
|
2
|
+
Most "AI + crypto" projects are built for a human with a wallet and a browser tab. An agent has neither. It has an HTTP client, a JSON parser, and a task.
|
|
3
|
+
|
|
4
|
+
So the first thing AQB ships is not a landing page — it is `/.well-known/agent-coin.json`.
|
|
5
|
+
|
|
6
|
+
```
|
|
7
|
+
curl -s https://yss787976-ai.github.io/agent-coin/.well-known/agent-coin.json
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
That returns chain id, token, vault, registry and pool addresses, plus a card hash the agent can verify. No sign-up, no dashboard, no email.
|
|
11
|
+
|
|
12
|
+
## Why an agent needs a token at all
|
|
13
|
+
|
|
14
|
+
Agent-to-agent work has a settlement problem. Cards need a human. Bank rails need KYC. Most stablecoins assume a person holds the keys.
|
|
15
|
+
|
|
16
|
+
AQB is a fixed-supply (900e9) ERC-20 on Base where every unit is backed 1:1 by USDC sitting in an on-chain vault. Minting happens against deposited USDC, redemption burns the token and returns the USDC. There is no oracle and no algorithmic peg to break.
|
|
17
|
+
|
|
18
|
+
Transfers are gated: a token transfer only succeeds to a registered agent or a whitelisted pool. That keeps the holder set machine-shaped instead of becoming a wallet-dust collection.
|
|
19
|
+
|
|
20
|
+
## Post-quantum by default
|
|
21
|
+
|
|
22
|
+
Harvest-now-decrypt-later is a real risk for long-lived agent identities. Registration uses ML-DSA-65 (FIPS 204) keys; payers are derived as ML-KEM-768 stealth addresses, so a payment does not leak a static receiving key. An ECDSA fallback path exists so agents on ordinary wallets are not locked out.
|
|
23
|
+
|
|
24
|
+
## The loop
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx -y @aqb-foundation/aqb-agent --help # tools
|
|
28
|
+
npx @aqb-foundation/aqb-agent register --pq # once
|
|
29
|
+
npx @aqb-foundation/aqb-agent pay --to 0xAGENT --amount 0.25 --memo "ocr batch"
|
|
30
|
+
npx @aqb-foundation/aqb-agent redeem --amount 0.25
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The same tools are exposed over MCP:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{ "mcpServers": { "aqb": { "command": "npx", "args": ["-y", "@aqb-foundation/aqb-agent", "mcp"] } } }
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
It is listed in the official MCP registry as `io.github.yss787976-ai/aqb-agent`.
|
|
40
|
+
|
|
41
|
+
## What is honest about it so far
|
|
42
|
+
|
|
43
|
+
- Liquidity is small (a few hundred dollars). Treat it as a working rail, not a market.
|
|
44
|
+
- Contracts are source-verified on BaseScan and Sourcify, MIT, 6 of them, but the project is days old.
|
|
45
|
+
- There is no fiat off-ramp. USDC in, USDC out.
|
|
46
|
+
|
|
47
|
+
If your agent pays for API calls, OCR, translation or compute, the interesting part is not the token — it is that discovery, payment and redemption all fit in one script with no human in the loop.
|
|
48
|
+
|
|
49
|
+
Repo: https://github.com/yss787976-ai/agent-coin
|
|
50
|
+
Discovery: https://yss787976-ai.github.io/agent-coin/for-agents/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
A payment rail your agent can find without you
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# AQB — خطة تسويق (وكلاء أولًا، بشر ثانيًا)
|
|
2
|
+
|
|
3
|
+
> المبدأ: لا نسوّق "عملة للناس". نسوّق **قدرة يستخدمها الوكيل تلقائيًا**: يجد AQB في دلائل الأدوات، يقرأ ملف الاكتشاف، ينفّذ دفعة، ويربح مطوّره. كل قناة تُقاس بعدد **استدعاءات من وكلاء** لا بمشاهدات.
|
|
4
|
+
|
|
5
|
+
## المسار 0 — الأساس التقني للتسويق (بدون تكلفة)
|
|
6
|
+
1. تثبيت هوية الجهة: إيميل `hello@` على الدومين + توقيع موحّد.
|
|
7
|
+
2. نشر صفحة واحدة مخصّصة للوكلاء (`/for-agents`) فيها 3 أسطر + JSON جاهز للنسخ + أمر `npx` واحد.
|
|
8
|
+
3. إضافة `agents.json`/`llms.txt` محدّثين + `robots` يسمح للزواحف، والتأكد أن كل مسار اكتشاف يعمل بمصادقة مفقودة (200).
|
|
9
|
+
4. إصدار SDK بأوامر جاهزة: `npx @aqb-foundation/aqb-agent wallet|pay|quote`.
|
|
10
|
+
5. توثيق معرّف "وكيل → يدفع AQB → يخدم" بمثال قابل للتشغيل (سكربت demo).
|
|
11
|
+
6. إضافة flashr/quickstart بـ README يعمل في 60 ثانية.
|
|
12
|
+
|
|
13
|
+
## المسار 1 — التوزيع على الوكلاء (الأساسي)
|
|
14
|
+
7. إدراج في دلائل MCP وx402 (تمّ 3 PRs) + مطاردة المراجعة أسبوعيًا.
|
|
15
|
+
8. إدراج في أدلة وكلاء إضافية: Smithery، Glama، mcp.so، PulseMCP، MCPHub.
|
|
16
|
+
9. إيداع `server.json` في سجل MCP الرسمي (`mcp-publisher`) + DNS/GitHub auth.
|
|
17
|
+
10. إضافة الأداة إلى مستودعات قوالب وكلاء (awesome-lists، framwork plugins إن أمكن).
|
|
18
|
+
11. إصدار إصدارات npm باسم مؤسسي ثابت + وصف باكج يبدأ بـ "for AI agents".
|
|
19
|
+
|
|
20
|
+
## المسار 2 — المحتوى التقني (بناء ثقة المطوّرين)
|
|
21
|
+
12. منشورات GitHub: Release notes، Discussion مثبّت "How agents use AQB" مع أمثلة كود.
|
|
22
|
+
13. 6 مقالات قصيرة (dev.to، Hashnode، Medium) بعناوين حول الوظيفة لا السعر: "دفع وكيل لوكيل بدون بطاقة"، "هويات ما بعد كمية للوكلاء".
|
|
23
|
+
14. قصص تكامل: كل مطوّر يجرّب ينسخ سكربته في مجلد `integrations/` + شكره علنًا.
|
|
24
|
+
15. حساب X مخصص للبوت/المنتج (لا حسابك الشخصي) + منشور تقني يومي عن حالة التطوير.
|
|
25
|
+
16. حسابات Farcaster/Warpcast + Lens (جمهور وكلاء Web3) ومنشورات مكرّرة بنبرة آلية.
|
|
26
|
+
|
|
27
|
+
## المسار 3 — الظهور في المنصات المالية
|
|
28
|
+
17. إتمام CoinGecko وCoinMarketCap (قيد المراجعة) ومتابعتها بريد خفيف.
|
|
29
|
+
18. فتح قنوات GeckoTerminal/DexScreener (تحديث بيانات الرمز + socials).
|
|
30
|
+
19. تقديم لـ DEXTools/DexView/CoinHunt ولوحات Base Ecosystem.
|
|
31
|
+
20. تحديث Uniswap token list/optimism list حتى تكتمل (PRs مفتوحة).
|
|
32
|
+
21. إضافة وسوم "AI/Agent" على كل منصة تقبل الوسوم.
|
|
33
|
+
|
|
34
|
+
## المسار 4 — السيولة والحوافز
|
|
35
|
+
22. رفع سيولة AQB/USDC تدريجيًا (100–500$ لكل دفعة) لتقليل الانزلاق.
|
|
36
|
+
23. برنامج "أول 50 وكيل": حافز 1–5 USDC لكل مطوّر يسجّل وكيلًا حقيقيًا في السجل.
|
|
37
|
+
24. إعفاء مبكر من رسوم المشروع لحين (اختياري) مقابل ظهور المتجر في صفحة الاستخدامات.
|
|
38
|
+
25. لوحة أرقام عامة (وكلاء مسجّلون، دفعات، مبادلات) في الصفحة — دليل حياة لا كلام.
|
|
39
|
+
|
|
40
|
+
## المسار 5 — الشراكات
|
|
41
|
+
26. مراسلة 20 مشروع أدوات وكيل صغير (بيانات، OCR، ترجمة، استضافة) تعرض الدفع مقابل خدمتها بسعر 1 AQB/طلب.
|
|
42
|
+
27. عرض "دفع مجاني أسبوع أول" على 5 منها لتوليد الاستخدام.
|
|
43
|
+
28. تكامل مع وسيط x402 (facilitator) لتصبح الدفعات قابلة للتحقق تلقائيًا.
|
|
44
|
+
|
|
45
|
+
## المسار 6 — الأتمتة (تمييز AQB كرأس مالي وكيل)
|
|
46
|
+
29. بوت في المستودع: عند إصدار جديد ينشر تلقائيًا (GitHub→X→Farcaster) بنبرة قصيرة.
|
|
47
|
+
30. مراقب `agent-coin.json`: أي تعديل يُنشئ منشور تغيير.
|
|
48
|
+
31. إيداع ملف اكتشاف لدى مزوّدي أدوات الوكيل ليقرأونه دون بحث بشري.
|
|
49
|
+
|
|
50
|
+
## القياس (أسبوعي)
|
|
51
|
+
- أرقام: زيارات `/.well-known`، تنزيلات npm، وكلاء مسجّلون، دفعات/يوم، عمق السيولة.
|
|
52
|
+
- قاعدة: أي قناة لا تجلب زيارة وكيل خلال 3 أسابيع تُوقف.
|
|
53
|
+
|
|
54
|
+
## ما يحتاجك
|
|
55
|
+
- ميزانية سيولة وحوافز، حساب X/إيميل باسم المشروع، وقرار Fast Pass (1500$) إن أردنا تعجيل CoinGecko.
|
package/docs/pq-note.md
CHANGED
|
@@ -4,3 +4,4 @@
|
|
|
4
4
|
8.2 `newIdentity()` yields a 1952-byte public key; `signDigest()` yields `0x02 || 3309 bytes`. Both sizes are asserted in test/pq.mjs.
|
|
5
5
|
8.3 `stealthFor()` / `stealthCheck()` perform the §5 KEM dance off-chain; only the one-byte view tag and the KEM ciphertext reach the chain.
|
|
6
6
|
8.4 On-chain verification reaches ML-DSA through `PQ_PRECOMPILE`; a pure-Solidity `verifyMLDSA65` library is pluggable via `setFallbackLib`, and key-hash + length checks always run before any backend is trusted.
|
|
7
|
+
8.5 Current Base status: no ML-DSA precompile and no `fallbackLib` deployed, so `MLDSAVerifier.verify()` returns false for a valid PQ signature. All live account executions use the `0x01` ECDSA fallback. `0x02` is implemented and tested off-chain; it becomes live when a verifier backend is deployed.
|