@aifinpay/deployments 1.1.3 → 2.1.0
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/README.md +23 -13
- package/USAGE.md +25 -27
- package/dist/grabber.d.ts.map +1 -1
- package/dist/grabber.js +8 -18
- package/dist/grabber.js.map +1 -1
- package/dist/registry.d.ts +0 -5
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -14
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +0 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +25 -2
- package/registry/idl/casper/aifinpay-casper-schema.json +0 -2
- package/registry/splitter/INDEX.md +52 -156
- package/registry/splitter/casper/README.md +6 -97
- package/registry/splitter/casper/deployments.json +2 -5
- package/registry/splitter/evm/v1.1/README.md +16 -21
- package/registry/splitter/evm/v1.1/deployments.json +1 -3
- package/registry/splitter/evm/v1.2/README.md +21 -34
- package/registry/splitter/evm/v1.2/deployments.json +1 -5
- package/registry/splitter/evm/v1.3/README.md +27 -65
- package/registry/splitter/evm/v1.3/deployments.json +3 -23
- package/registry/splitter/evm/v1.4/README.md +27 -57
- package/registry/splitter/evm/v1.4/deployments.json +114 -14
- package/registry/splitter/solana/README.md +26 -39
- package/registry/splitter/solana/deployments.json +5 -9
- package/src/reference/payment-deployments.schema.json +392 -0
|
@@ -1,163 +1,59 @@
|
|
|
1
1
|
# Splitter Deployment Registry — Index
|
|
2
2
|
|
|
3
|
-
Versioned
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
3
|
+
Versioned deployment records and interface artifacts. Registry values are recorded
|
|
4
|
+
inputs to verification, not evidence of current runtime or backend availability.
|
|
5
|
+
|
|
6
|
+
## Registry lookup
|
|
7
|
+
|
|
8
|
+
| Registry | Machine-readable records | Guide |
|
|
9
|
+
|----------|--------------------------|-------|
|
|
10
|
+
| EVM v1.1 | [deployments.json](evm/v1.1/deployments.json) | [Legacy interface](evm/v1.1/README.md) |
|
|
11
|
+
| EVM v1.2 | [deployments.json](evm/v1.2/deployments.json) | [Replay guard](evm/v1.2/README.md) |
|
|
12
|
+
| EVM v1.3 | [deployments.json](evm/v1.3/deployments.json) | [Protocol routes](evm/v1.3/README.md) |
|
|
13
|
+
| EVM v1.4 | [deployments.json](evm/v1.4/deployments.json) | [Contract suite](evm/v1.4/README.md) |
|
|
14
|
+
| Solana | [deployments.json](solana/deployments.json) | [Program and IDL](solana/README.md) |
|
|
15
|
+
| Casper | [deployments.json](casper/deployments.json) | [Contract schema](casper/README.md) |
|
|
16
|
+
|
|
17
|
+
Read the selected record for chain/network identity, addresses or program IDs,
|
|
18
|
+
runtime hashes, governance, assets, policy fields and settlement flags. Read
|
|
19
|
+
`source`, `sourceArtifact` and `generatedAt` where present for provenance;
|
|
20
|
+
do not infer provenance from the age of this guide.
|
|
21
|
+
|
|
22
|
+
## Querying records
|
|
23
|
+
|
|
24
|
+
Use [AifinpayRegistry](../../src/registry.ts) and the
|
|
25
|
+
[usage guide](../../USAGE.md) for lookups and generated exports. A registry query
|
|
26
|
+
does not perform live verification. For v1.3, select the raw record by chain
|
|
27
|
+
**and** `_route`; the chain-keyed registry API cannot distinguish multiple routes
|
|
28
|
+
on the same chain.
|
|
29
|
+
|
|
30
|
+
## Refreshing and testing
|
|
31
|
+
|
|
32
|
+
The [grabber](../../src/grabber.ts) and [build CLI](../../src/build.ts) define
|
|
33
|
+
upstream selection and generated output locations. From `deployments/`:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm run build
|
|
37
|
+
npm test
|
|
38
|
+
# Explicit maintenance operation: fetches upstream and rewrites registry outputs.
|
|
39
|
+
npm run registry:build
|
|
28
40
|
```
|
|
29
41
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
| [v1.1](evm/v1.1/README.md) | EVM | Superseded | Base, Unichain | Initial production release |
|
|
35
|
-
| [v1.2](evm/v1.2/README.md) | EVM | Superseded | Polygon, Optimism, BOT Chain, XRPL EVM | `bytes32 paymentId` replay guard |
|
|
36
|
-
| [v1.3](evm/v1.3/README.md) | EVM | Active | 10 chains × 2 routes | Protocol routes with immutable fee splits |
|
|
37
|
-
| [v1.4](evm/v1.4/README.md) | EVM | Mostly disabled | 10 chains | Full contract suite (7 contracts per chain) |
|
|
38
|
-
| [v1.4](./solana/README.md) | Solana | Disabled | Devnet, Mainnet | Program ID + IDL (Anchor-style) |
|
|
39
|
-
| [v1/v2](./casper/README.md) | Casper | Testnet live | Testnet (live), Mainnet (historical v1) | Rust → Wasm contract; `register_agent` / `pay_agent` |
|
|
40
|
-
|
|
41
|
-
## Quick Lookup by Chain
|
|
42
|
-
|
|
43
|
-
### EVM Chains
|
|
44
|
-
|
|
45
|
-
| Chain | Chain ID | v1.1 | v1.2 | v1.3 Routes | v1.4 Status |
|
|
46
|
-
|-------|----------|------|------|-------------|-------------|
|
|
47
|
-
| Amoy | 80002 | — | — | `merchant-aifp1`, `agent-x402` (testnet, settlement enabled) | ✅ enabled |
|
|
48
|
-
| Arbitrum | 42161 | — | — | `merchant-aifp1`, `agent-x402` | ❌ disabled |
|
|
49
|
-
| Avalanche | 43114 | — | — | `merchant-aifp1`, `agent-x402` | ❌ disabled |
|
|
50
|
-
| Base | 8453 | ✓ | — | `merchant-aifp1`, `agent-x402` | ⚠️ invalid (redeploy required) |
|
|
51
|
-
| BNB | 56 | — | — | `merchant-aifp1`, `agent-x402` | ❌ disabled |
|
|
52
|
-
| BOT Chain | 677 | — | ✓ | `merchant-aifp1`, `agent-x402` | — |
|
|
53
|
-
| Optimism | 10 | — | ✓ | `merchant-aifp1`, `agent-x402` | ❌ disabled |
|
|
54
|
-
| Polygon | 137 | — | ✓ | `merchant-aifp1`, `agent-x402` | ❌ disabled |
|
|
55
|
-
| Robinhood | 4663 | — | — | — | ❌ disabled (TokenList empty) |
|
|
56
|
-
| Unichain | 130 | ✓ | — | `merchant-aifp1`, `agent-x402` | ❌ disabled |
|
|
57
|
-
| XRPL EVM | 1440000 | — | ✓ | `merchant-aifp1`, `agent-x402` | ❌ disabled (no stablecoin) |
|
|
58
|
-
|
|
59
|
-
### Non-EVM Ecosystems
|
|
60
|
-
|
|
61
|
-
| Ecosystem | Network | Program ID / Contract Hash | Status |
|
|
62
|
-
|-----------|---------|---------------------------|--------|
|
|
63
|
-
| [Solana](./solana/README.md) | Devnet | `8dty5bD738Z9TzEkDu8vLSnhpJNWtEGMUEcYaKCUTY6y` | ❌ disabled (no backend verification) |
|
|
64
|
-
| Solana | Mainnet | `724Ut31i4ecY4dJ25z8HuZetu3A43xtNkPdk4JdbsfdD` | ❌ disabled (no backend verification + upgrade authority not multisig) |
|
|
65
|
-
| [Casper](./casper/README.md) | Testnet | `hash-47df409829ddf0612617460293ba591a19b26fa0c06918878204088d3eb9b78a` | ✅ **live** (v2 verified) |
|
|
66
|
-
| Casper | Mainnet | `hash-7ad34a204952eef63d5dcf5159fb7d009e85dea4f49cbdf73dde190652dfa375` | ⚠️ **historical** (v1 — receipt only, no atomic transfer) |
|
|
67
|
-
|
|
68
|
-
## Governance
|
|
69
|
-
|
|
70
|
-
All v1.3 deployments are owned by the same governance Safe:
|
|
71
|
-
|
|
72
|
-
- **Safe:** `0xFd936f75D9221949f2FEaB54Cd342F7527154eD5`
|
|
73
|
-
- **Threshold:** 3 of 5
|
|
74
|
-
- **Owners:** 5 multisig signers
|
|
75
|
-
|
|
76
|
-
Legacy v1.1/v1.2 deployments have varying owners (see version-specific READMEs).
|
|
77
|
-
|
|
78
|
-
## Sources of Truth
|
|
79
|
-
|
|
80
|
-
### EVM v1.1-v1.3 (Route Table)
|
|
81
|
-
|
|
82
|
-
- **Source:** `AiFinPay/evm-contract/registry/generated/splitter-table.json`
|
|
83
|
-
- **Local copy:** `deployments/registry/reference/splitter-table.json`
|
|
84
|
-
- **Last updated:** 2026-08-30
|
|
85
|
-
|
|
86
|
-
### EVM v1.4 (Full Contract Suite)
|
|
87
|
-
|
|
88
|
-
- **Source:** `AiFinPay/evm-contract/deployments/*-v14-*-latest.json`
|
|
89
|
-
- **Local copy:** `deployments/registry/evm-splitter-v1.4.json`
|
|
90
|
-
- **Last generated:** 2026-09-13
|
|
91
|
-
- **Upstream commit:** `a54a4c107de7bb42f54e411e621d3897938bfc31`
|
|
92
|
-
|
|
93
|
-
### Solana v1.4 (Program)
|
|
94
|
-
|
|
95
|
-
- **Source:** `AiFinPay/solana-contract/deployments/splitter_v14/`
|
|
96
|
-
- **Local copy:** `deployments/registry/solana-splitter-v1.4.json`
|
|
97
|
-
- **Last generated:** 2026-09-13
|
|
98
|
-
- **Upstream commit:** `e5df8f5436cf646ab495381eee04e0d1a10b4e2f`
|
|
99
|
-
|
|
100
|
-
### Casper
|
|
101
|
-
|
|
102
|
-
- **Testnet (v2):** `hash-47df409829ddf0612617460293ba591a19b26fa0c06918878204088d3eb9b78a` — live, verified
|
|
103
|
-
- **Mainnet (v1):** `hash-7ad34a204952eef63d5dcf5159fb7d009e85dea4f49cbdf73dde190652dfa375` — historical, receipt-only (not valid settlement proof)
|
|
104
|
-
- **Source:** `AiFinPay/casper-contract` — Rust → Wasm contract
|
|
105
|
-
- **IDL:** Not applicable (Casper uses Rust contract schema, not Anchor-style IDL)
|
|
106
|
-
|
|
107
|
-
**Do not hand-edit** the JSON files in this directory. To update:
|
|
108
|
-
|
|
109
|
-
1. Change `registry/registry.json` in `AiFinPay/evm-contract`
|
|
110
|
-
2. Run `verify-registry.mjs` to verify against chain
|
|
111
|
-
3. Run `npm run registry:sync -- --from <path-to-evm-contract>` in `node/`
|
|
112
|
-
4. Copy updated `node/registry/splitter-table.json` to `deployments/registry/reference/`
|
|
113
|
-
5. Regenerate versioned files with a script (TODO: add generator)
|
|
114
|
-
|
|
115
|
-
## Related Artifacts
|
|
116
|
-
|
|
117
|
-
### EVM
|
|
118
|
-
|
|
119
|
-
- `registry/reference/splitter-table.json` — Raw upstream route table (v1.2 + v1.3)
|
|
120
|
-
- `registry/reference/splitter-table-source.json` — Provenance metadata
|
|
121
|
-
- `registry/evm-splitter-v1.4.json` — v1.4 full contract suite deployments
|
|
122
|
-
- `registry/abi/` — EVM ABI bundles and Tron ABI artifacts
|
|
123
|
-
|
|
124
|
-
### Solana
|
|
125
|
-
|
|
126
|
-
- `registry/solana-splitter-v1.4.json` — v1.4 program deployments
|
|
127
|
-
- `registry/idl/solana/splitter-v14/` — IDL copies (devnet + mainnet)
|
|
128
|
-
|
|
129
|
-
### Casper
|
|
130
|
-
|
|
131
|
-
- `registry/idl/casper/` — Casper IDL artifacts (contract schema, not Anchor-style)
|
|
132
|
-
- **Upstream:** `AiFinPay/casper-contract` — https://github.com/AiFinPay/casper-contract
|
|
133
|
-
|
|
134
|
-
### Combined
|
|
135
|
-
|
|
136
|
-
- `registry/evm-splitter-v1.4.json` — Generated EVM v1.4 deployments (matches `splitter/v1.4/deployments.json` schema)
|
|
137
|
-
- `registry/solana-splitter-v1.4.json` — Generated Solana v1.4 deployments (matches `splitter/solana/deployments.json` schema)
|
|
138
|
-
|
|
139
|
-
## Usage
|
|
140
|
-
|
|
141
|
-
### For SDK consumers
|
|
142
|
-
|
|
143
|
-
Use the `@aifinpay/agent` SDK's `resolveSplitterRoute(chain, route)` function — it reads from the generated `splitterRoutes.generated.ts` table.
|
|
144
|
-
|
|
145
|
-
### For auditors
|
|
146
|
-
|
|
147
|
-
1. Check `evm/v1.2` for superseded addresses
|
|
148
|
-
2. Verify migration guards in `node/tests/splitterV12.test.ts`
|
|
149
|
-
3. Compare runtime code hashes against on-chain `eth_getCode`
|
|
150
|
-
|
|
151
|
-
### For deployment verification
|
|
42
|
+
These commands build, test or refresh records; none proves live settlement.
|
|
43
|
+
Review upstream provenance and resulting JSON changes before adopting refreshed
|
|
44
|
+
records. The grabber does not regenerate the v1.3 route snapshot; preserve its
|
|
45
|
+
provenance when maintaining it. See the [package rules](../../AGENTS.md).
|
|
152
46
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
47
|
+
For downstream SDK generation, see
|
|
48
|
+
[the generator](../../../node/scripts/generate-splitter-routes.mjs).
|
|
49
|
+
Run `npm run registry:check` from `node/` to check generated files against the
|
|
50
|
+
installed deployment package. This is an offline consistency check, not runtime
|
|
51
|
+
or backend verification.
|
|
157
52
|
|
|
158
|
-
##
|
|
53
|
+
## Interface artifacts
|
|
159
54
|
|
|
160
|
-
-
|
|
161
|
-
-
|
|
162
|
-
-
|
|
163
|
-
-
|
|
55
|
+
- [Payment deployment JSON Schema](../../src/reference/payment-deployments.schema.json)
|
|
56
|
+
- [EVM ABI bundles](../abi/evm/)
|
|
57
|
+
- [Solana IDL copies](../idl/solana/splitter-v14/)
|
|
58
|
+
- [Casper contract schema](../idl/casper/aifinpay-casper-schema.json)
|
|
59
|
+
- [Artifact loading implementation](../../src/artifacts.ts)
|
|
@@ -1,101 +1,10 @@
|
|
|
1
|
-
# Casper Splitter
|
|
1
|
+
# Casper Splitter — Contract Registry
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Deployment lookup
|
|
4
4
|
|
|
5
|
-
Casper
|
|
5
|
+
Casper deployments use a contract hash and contract schema rather than an EVM contract suite. Read [deployments.json](deployments.json) for network, environment, contract hash, schema metadata and settlement flag.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Supports
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| Network | Contract Package Hash | Status | Notes |
|
|
12
|
-
|---------|----------------------|--------|-------|
|
|
13
|
-
| Casper Testnet | `hash-47df409829ddf0612617460293ba591a19b26fa0c06918878204088d3eb9b78a` | ✅ **live** | v2 — verified deployment |
|
|
14
|
-
| Casper Mainnet | `hash-7ad34a204952eef63d5dcf5159fb7d009e85dea4f49cbdf73dde190652dfa375` | ⚠️ **historical** | v1 — `pay_agent` recorded amount but did NOT transfer; separate transfer required |
|
|
15
|
-
|
|
16
|
-
## Contract Details
|
|
17
|
-
|
|
18
|
-
### Entry Points
|
|
19
|
-
|
|
20
|
-
| Entry Point | Args | Description |
|
|
21
|
-
|-------------|------|-------------|
|
|
22
|
-
| `register_agent` | `agent_id: String, wallet: String` | Self-register caller wallet → `AgentRegistered` event |
|
|
23
|
-
| `pay_agent` | `from_agent: String, to_agent: String, amount: U512, request_id: String` | Record settlement → `PaymentSettled` event (v2); v1 recorded only |
|
|
24
|
-
| `get_payment_count` | — | Total settled payments |
|
|
25
|
-
|
|
26
|
-
### Events
|
|
27
|
-
|
|
28
|
-
- `AgentRegistered` — `agent_id`, `wallet`
|
|
29
|
-
- `PaymentSettled` — `from`, `to`, `amount` (motes), `request_id`
|
|
30
|
-
|
|
31
|
-
## Live Testnet Deployment
|
|
32
|
-
|
|
33
|
-
**Contract Package Hash:**
|
|
34
|
-
```
|
|
35
|
-
hash-47df409829ddf0612617460293ba591a19b26fa0c06918878204088d3eb9b78a
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
**Explorer:** [cspr.live testnet](https://testnet.cspr.live/contract/47df409829ddf0612617460293ba591a19b26fa0c06918878204088d3eb9b78a)
|
|
39
|
-
|
|
40
|
-
**Network:** `casper-test` (Casper 2.0)
|
|
41
|
-
|
|
42
|
-
**Public RPC:** `https://node.testnet.casper.network/rpc`
|
|
43
|
-
|
|
44
|
-
### Sample Transactions (Testnet)
|
|
45
|
-
|
|
46
|
-
| Action | Deploy Hash | Explorer |
|
|
47
|
-
|--------|-------------|----------|
|
|
48
|
-
| Register agent (buyer) | `d4b7d0ad3b59a97a1165eab1dbc36dbee56ccf8a4bc48f3507071682427d23e0` | [view](https://testnet.cspr.live/deploy/d4b7d0ad3b59a97a1165eab1dbc36dbee56ccf8a4bc48f3507071682427d23e0) |
|
|
49
|
-
| Register agent (provider) | `6c41c8858f95af24afaf1267dcb8ced93c654f9a8bddfc722c6638825faac4e8` | [view](https://testnet.cspr.live/deploy/6c41c8858f95af24afaf1267dcb8ced93c654f9a8bddfc722c6638825faac4e8) |
|
|
50
|
-
| **PaymentSettled** (`pay_agent`) | `0b55b516058a3482beef0dac2d6997d84b402f82f71a97b3098e2aadaffb0137` | [view](https://testnet.cspr.live/deploy/0b55b516058a3482beef0dac2d6997d84b402f82f71a97b3098e2aadaffb0137) |
|
|
51
|
-
|
|
52
|
-
## Historical Mainnet Deployment (v1)
|
|
53
|
-
|
|
54
|
-
> ⚠️ **Warning:** The mainnet v1 deployment is **not valid settlement proof**. The `pay_agent` call recorded a receipt, but value was moved via a separate native transfer. Do not reproduce this flow.
|
|
55
|
-
|
|
56
|
-
**Contract Hash:** `contract-9903a5e3948e799196df54b17270bc6769338ac1cc36c9eb47e113f88d23f019`
|
|
57
|
-
|
|
58
|
-
**Package Hash:** `hash-7ad34a204952eef63d5dcf5159fb7d009e85dea4f49cbdf73dde190652dfa375`
|
|
59
|
-
|
|
60
|
-
**Explorer:** [cspr.live mainnet](https://cspr.live/contract/9903a5e3948e799196df54b17270bc6769338ac1cc36c9eb47e113f88d23f019)
|
|
61
|
-
|
|
62
|
-
## Key Differences from EVM/Solana
|
|
63
|
-
|
|
64
|
-
| Feature | EVM v1.4 | Solana v1.4 | Casper v1/v2 |
|
|
65
|
-
|---------|----------|-------------|--------------|
|
|
66
|
-
| Architecture | 7-contract suite | Single program | Single Wasm contract |
|
|
67
|
-
| Language | Solidity | Rust (Anchor) | Rust (Casper SDK) |
|
|
68
|
-
| Execution | EVM | SVM (Sealevel) | Casper Wasm |
|
|
69
|
-
| Identity | Contract addresses | Program-derived addresses | Account hashes |
|
|
70
|
-
| Settlement | Atomic transfer + receipt | Atomic transfer + receipt | v2: atomic; v1: receipt only |
|
|
71
|
-
|
|
72
|
-
## Source
|
|
73
|
-
|
|
74
|
-
Data sourced from upstream `AiFinPay/casper-contract` repository.
|
|
75
|
-
|
|
76
|
-
**Upstream repo:** https://github.com/AiFinPay/casper-contract
|
|
77
|
-
|
|
78
|
-
**Submission:** https://github.com/AiFinPay/casper-contract/blob/main/SUBMISSION.md
|
|
79
|
-
|
|
80
|
-
**Architecture docs:** https://github.com/AiFinPay/casper-contract/blob/main/docs/ARCHITECTURE.md
|
|
81
|
-
|
|
82
|
-
## Integration
|
|
83
|
-
|
|
84
|
-
Small, runnable examples live in [`examples/`](https://github.com/AiFinPay/casper-contract/tree/main/examples):
|
|
85
|
-
|
|
86
|
-
- `register-agent.js` — register an agent
|
|
87
|
-
- `pay-agent.js` — settle a payment
|
|
88
|
-
- `ai-agent-buys-compute.md` — x402 → Casper flow
|
|
89
|
-
- `merchant-integration.md` — gate an endpoint behind settlement
|
|
90
|
-
- `mcp-server.md` — drive settlements from Claude via MCP
|
|
91
|
-
|
|
92
|
-
## Reproduce Demo
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
git clone https://github.com/AiFinPay/casper-contract.git
|
|
96
|
-
cd casper-contract
|
|
97
|
-
make setup
|
|
98
|
-
make keygen
|
|
99
|
-
# Fund key at https://testnet.cspr.live/tools/faucet
|
|
100
|
-
make agent-demo
|
|
101
|
-
```
|
|
9
|
+
Current network was deprecated and removed from AiFinPay SDK v1.4. The Casper Splitter contract is no longer supported for settlement.
|
|
10
|
+
Deployment records are retained for historical reference and verification of past transactions. Do not attempt to use these records for new settlements.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "",
|
|
2
|
+
"$schema": "../../../src/reference/payment-deployments.schema.json",
|
|
3
3
|
"version": "2.0",
|
|
4
4
|
"description": "Casper Splitter — Rust → Wasm settlement contract for AI agent payments",
|
|
5
5
|
"schemaVersion": 2,
|
|
@@ -54,8 +54,7 @@
|
|
|
54
54
|
"network": "casper-test",
|
|
55
55
|
"environment": "testnet",
|
|
56
56
|
"testnet": true,
|
|
57
|
-
"
|
|
58
|
-
"settlementEnabled": true,
|
|
57
|
+
"settlementEnabled": false,
|
|
59
58
|
"contractPackageHash": "hash-47df409829ddf0612617460293ba591a19b26fa0c06918878204088d3eb9b78a",
|
|
60
59
|
"rpcEndpoint": "https://node.testnet.casper.network/rpc",
|
|
61
60
|
"explorer": "https://testnet.cspr.live/contract/47df409829ddf0612617460293ba591a19b26fa0c06918878204088d3eb9b78a",
|
|
@@ -84,7 +83,6 @@
|
|
|
84
83
|
"network": "casper",
|
|
85
84
|
"environment": "mainnet",
|
|
86
85
|
"testnet": false,
|
|
87
|
-
"status": "historical",
|
|
88
86
|
"settlementEnabled": false,
|
|
89
87
|
"contractHash": "contract-9903a5e3948e799196df54b17270bc6769338ac1cc36c9eb47e113f88d23f019",
|
|
90
88
|
"contractPackageHash": "hash-7ad34a204952eef63d5dcf5159fb7d009e85dea4f49cbdf73dde190652dfa375",
|
|
@@ -92,7 +90,6 @@
|
|
|
92
90
|
"explorer": "https://cspr.live/contract/9903a5e3948e799196df54b17270bc6769338ac1cc36c9eb47e113f88d23f019",
|
|
93
91
|
"version": "v1",
|
|
94
92
|
"idlPath": "../../idl/casper/aifinpay-casper-schema.json",
|
|
95
|
-
"disabledReason": "v1: pay_agent recorded receipt but did NOT transfer value; separate native transfer required — not valid settlement proof",
|
|
96
93
|
"warning": "Do not reproduce this v1 flow. Use v2 testnet deployment for valid atomic settlement."
|
|
97
94
|
}
|
|
98
95
|
],
|
|
@@ -2,31 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Legacy contract records are retained for reference and migration audits.
|
|
6
|
+
Read [deployments.json](deployments.json) for chain/address, owner/treasury,
|
|
7
|
+
runtime hash, fee and settlement fields. Inspect its provenance metadata instead
|
|
8
|
+
of relying on copied verification dates.
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## Chains
|
|
10
|
-
|
|
11
|
-
| Chain | Splitter Address | Owner/Treasury | Verified |
|
|
12
|
-
|-------|-----------------|----------------|----------|
|
|
13
|
-
| Base | `0x8Ad9830D16b1f10333866a3f38C949CbB19f4BAD` | `0x1D5eF769A024B3157c76884fbd10302d8d83fAB9` | 2026-08-07 |
|
|
14
|
-
| Unichain | `0xeE92807decAa3A02F1e165dd7Efcd92ab9aA83CB` | `0x1D5eF769A024B3157c76884fbd10302d8d83fAB9` | 2026-08-07 |
|
|
15
|
-
|
|
16
|
-
## Runtime Code Hash
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
0x545b3a4ba195edc6b728df8cc64f28da528c9e7805c15f1aa61ef58c3c562197
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Fee Structure
|
|
10
|
+
## Legacy fee structure
|
|
23
11
|
|
|
24
12
|
- `treasuryBps`: 100 (1%)
|
|
25
13
|
- `ipCreatorBps`: 1
|
|
26
14
|
- Merchant receives: 99% minus IP creator fee
|
|
27
15
|
|
|
28
|
-
|
|
16
|
+
These describe the legacy interface, not authorization to use it for a new
|
|
17
|
+
payment or a replacement for the selected record's economics.
|
|
18
|
+
|
|
19
|
+
## Verification
|
|
20
|
+
|
|
21
|
+
Compare the selected chain/version record with live runtime code and mutable
|
|
22
|
+
owner/treasury state. Check actual registry gates and backend receipt-verification
|
|
23
|
+
behavior; a historical record does not prove current availability. Disabled
|
|
24
|
+
records must not settle.
|
|
29
25
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
- `unichain:legacy`
|
|
26
|
+
See the [registry verification checklist](../../INDEX.md) and
|
|
27
|
+
[route selection guards](../../../../../node/src/splitterRoutes.ts).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "
|
|
2
|
+
"$schema": "../../../../src/reference/payment-deployments.schema.json",
|
|
3
3
|
"version": "1.1",
|
|
4
4
|
"description": "B2BSplitter v1.1 — Initial production version with immutable fee split",
|
|
5
5
|
"schemaVersion": 1,
|
|
@@ -41,7 +41,6 @@
|
|
|
41
41
|
"chainId": 8453,
|
|
42
42
|
"environment": "prod",
|
|
43
43
|
"testnet": false,
|
|
44
|
-
"status": "retired",
|
|
45
44
|
"settlementEnabled": false,
|
|
46
45
|
"runtimeCodeHash": "0x545b3a4ba195edc6b728df8cc64f28da528c9e7805c15f1aa61ef58c3c562197",
|
|
47
46
|
"contracts": {
|
|
@@ -65,7 +64,6 @@
|
|
|
65
64
|
"chainId": 130,
|
|
66
65
|
"environment": "prod",
|
|
67
66
|
"testnet": false,
|
|
68
|
-
"status": "retired",
|
|
69
67
|
"settlementEnabled": false,
|
|
70
68
|
"runtimeCodeHash": "0x545b3a4ba195edc6b728df8cc64f28da528c9e7805c15f1aa61ef58c3c562197",
|
|
71
69
|
"contracts": {
|
|
@@ -1,47 +1,34 @@
|
|
|
1
1
|
# B2BSplitter v1.2 — Legacy Deployments
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Interface and migration
|
|
4
4
|
|
|
5
|
-
v1.2 added a `bytes32 paymentId` replay guard to prevent double-payment.
|
|
5
|
+
v1.2 added a `bytes32 paymentId` replay guard to prevent double-payment.
|
|
6
|
+
The native-settlement entrypoint was renamed from `payMatic` to `payNative`.
|
|
7
|
+
Payment IDs can be derived deterministically from an order ID using
|
|
8
|
+
`keccak256(orderId)`.
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
Use [deployments.json](deployments.json) for historical chain/address,
|
|
11
|
+
owner/treasury, runtime hash, fee and settlement records. Read its provenance
|
|
12
|
+
fields rather than relying on copied verification dates.
|
|
8
13
|
|
|
9
|
-
##
|
|
10
|
-
|
|
11
|
-
| Chain | Splitter Address | Owner/Treasury | Verified |
|
|
12
|
-
|-------|-----------------|----------------|----------|
|
|
13
|
-
| Polygon | `0xbD1fa5453f212F096c0213788a645eC597FB4DDe` | `0xD31d82c4b35DABaA2ad7023C89A78A052D1f3c8e` | 2026-08-07 |
|
|
14
|
-
| Optimism | `0xF03B3387415D557b6ab709D06E8aF0b4ABD6Eb74` | `0x1D5eF769A024B3157c76884fbd10302d8d83fAB9` | 2026-08-07 |
|
|
15
|
-
| BOT Chain | `0x147d8fF8c027E24303b5B99CbC8843e1D3dF94cC` | `0x1D5eF769A024B3157c76884fbd10302d8d83fAB9` | 2026-08-07 |
|
|
16
|
-
| XRPL EVM | `0x147d8fF8c027E24303b5B99CbC8843e1D3dF94cC` | `0x1D5eF769A024B3157c76884fbd10302d8d83fAB9` | 2026-08-07 |
|
|
17
|
-
|
|
18
|
-
**Note:** BOT Chain and XRPL EVM share the same address — same CREATE deployment (deployer + nonce) produces identical addresses on both chains.
|
|
19
|
-
|
|
20
|
-
## Runtime Code Hashes
|
|
21
|
-
|
|
22
|
-
| Chain | Code Hash |
|
|
23
|
-
|-------|-----------|
|
|
24
|
-
| Polygon | `0x9001fbb7ec70097909415325dc70c5b2102c4312dcd8e01e7495cfcaca2edaff` |
|
|
25
|
-
| Optimism | `0xcdf939fd4f9a189e3dba991c5d538bd77b3d493d2ce4e356b61e5742dbde1899` |
|
|
26
|
-
| BOT Chain | `0xabd084ff64e98bb8ac7db7783d80c6a6bcc69716dfb8f64a4686bed5cf428d96` |
|
|
27
|
-
| XRPL EVM | `0xeb68cf314d335f888726a527dec10d989c26e2c5d6a8df68d117cc7d4dcec239` |
|
|
28
|
-
|
|
29
|
-
## Fee Structure
|
|
14
|
+
## Legacy fee structure
|
|
30
15
|
|
|
31
16
|
- `treasuryBps`: 100 (1%)
|
|
32
17
|
- `ipCreatorBps`: 1
|
|
33
18
|
- Merchant receives: 99% minus IP creator fee
|
|
34
19
|
|
|
35
|
-
|
|
20
|
+
These describe the legacy interface, not authorization to use it for a new
|
|
21
|
+
payment or a replacement for the selected record's economics.
|
|
22
|
+
|
|
23
|
+
## Verification
|
|
36
24
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
3. Deterministic paymentId derivation from order id: `keccak256(orderId)`
|
|
25
|
+
Select by chain and version, never address alone; matching addresses on different
|
|
26
|
+
chains do not imply matching runtime code or governance.
|
|
40
27
|
|
|
41
|
-
|
|
28
|
+
For migration audits, compare the actual record with live runtime code and
|
|
29
|
+
mutable owner/treasury state. Check settlement fields and the actual backend's
|
|
30
|
+
receipt verification before considering any settlement. A registry entry is
|
|
31
|
+
not proof of activation, and settlement-disabled records must not settle.
|
|
42
32
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- `optimism:legacy`
|
|
46
|
-
- `botchain:legacy`
|
|
47
|
-
- `xrplevm:legacy`
|
|
33
|
+
See the [registry verification checklist](../../INDEX.md) and
|
|
34
|
+
[route selection guards](../../../../../node/src/splitterRoutes.ts).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "
|
|
2
|
+
"$schema": "../../../../src/reference/payment-deployments.schema.json",
|
|
3
3
|
"version": "1.2",
|
|
4
4
|
"description": "B2BSplitter v1.2 — Added bytes32 paymentId replay guard",
|
|
5
5
|
"schemaVersion": 1,
|
|
@@ -41,7 +41,6 @@
|
|
|
41
41
|
"chainId": 137,
|
|
42
42
|
"environment": "prod",
|
|
43
43
|
"testnet": false,
|
|
44
|
-
"status": "retired",
|
|
45
44
|
"settlementEnabled": false,
|
|
46
45
|
"runtimeCodeHash": "0x9001fbb7ec70097909415325dc70c5b2102c4312dcd8e01e7495cfcaca2edaff",
|
|
47
46
|
"contracts": {
|
|
@@ -65,7 +64,6 @@
|
|
|
65
64
|
"chainId": 10,
|
|
66
65
|
"environment": "prod",
|
|
67
66
|
"testnet": false,
|
|
68
|
-
"status": "retired",
|
|
69
67
|
"settlementEnabled": false,
|
|
70
68
|
"runtimeCodeHash": "0xcdf939fd4f9a189e3dba991c5d538bd77b3d493d2ce4e356b61e5742dbde1899",
|
|
71
69
|
"contracts": {
|
|
@@ -89,7 +87,6 @@
|
|
|
89
87
|
"chainId": 677,
|
|
90
88
|
"environment": "prod",
|
|
91
89
|
"testnet": false,
|
|
92
|
-
"status": "retired",
|
|
93
90
|
"settlementEnabled": false,
|
|
94
91
|
"runtimeCodeHash": "0xabd084ff64e98bb8ac7db7783d80c6a6bcc69716dfb8f64a4686bed5cf428d96",
|
|
95
92
|
"contracts": {
|
|
@@ -113,7 +110,6 @@
|
|
|
113
110
|
"chainId": 1440000,
|
|
114
111
|
"environment": "prod",
|
|
115
112
|
"testnet": false,
|
|
116
|
-
"status": "retired",
|
|
117
113
|
"settlementEnabled": false,
|
|
118
114
|
"runtimeCodeHash": "0xeb68cf314d335f888726a527dec10d989c26e2c5d6a8df68d117cc7d4dcec239",
|
|
119
115
|
"contracts": {
|
|
@@ -1,78 +1,40 @@
|
|
|
1
|
-
# B2BSplitter v1.3 —
|
|
1
|
+
# B2BSplitter v1.3 — Protocol Route Registry
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Routes
|
|
4
4
|
|
|
5
|
-
v1.3 introduced
|
|
6
|
-
|
|
7
|
-
### Routes
|
|
5
|
+
v1.3 introduced protocol routes with immutable fee splits at construction.
|
|
8
6
|
|
|
9
7
|
| Route | Treasury Bps | IP Creator Bps | Description |
|
|
10
8
|
|-------|--------------|----------------|-------------|
|
|
11
9
|
| `merchant-aifp1` | 100 (1%) | 0 | AIFP-1 gross-inclusive settlement. Agent pays quoted gross; treasury receives 1%, merchant receives 99%. |
|
|
12
|
-
| `agent-x402` | 0 | 0 | AIFP-2/x402 negotiation. Provider receives 100% of quoted price; AiFinPay fee is 0
|
|
13
|
-
|
|
14
|
-
**Status:** Active. Policy window: 2026-08-27 to 2026-11-25. Settlement enabled only for Amoy testnet.
|
|
15
|
-
|
|
16
|
-
## Chains and Addresses
|
|
17
|
-
|
|
18
|
-
### merchant-aifp1 (100/0)
|
|
19
|
-
|
|
20
|
-
| Chain | Splitter Address | USDC | Verified |
|
|
21
|
-
|-------|-----------------|------|----------|
|
|
22
|
-
| Polygon | `0x27C1C07563c92C1AEa52cC9b4452dF49dC5a7942` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | 2026-08-27 |
|
|
23
|
-
| Optimism | `0x1Fe2021336596655Fac72bC7bC40F7FFFA501d55` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | 2026-08-27 |
|
|
24
|
-
| BNB | `0x79D481B835Cb050FAb7a045E619A6Fb9Cd73f510` | — | 2026-08-27 |
|
|
25
|
-
| Unichain | `0xF03B3387415D557b6ab709D06E8aF0b4ABD6Eb74` | `0x078D782b760474a361dDA0AF3839290b0EF57AD6` | 2026-08-27 |
|
|
26
|
-
| BOT Chain | `0xe855e491D0950140704DB9Cec6B7b3F725360a56` | — | 2026-08-27 |
|
|
27
|
-
| Base | `0xB385Cc32fe39CF5B5778DF0Df0e8E9978b5F662a` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | 2026-08-27 |
|
|
28
|
-
| Arbitrum | `0x80e2B445DFc44B3B2254aa376B31AEdDd3Ff934a` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | 2026-08-27 |
|
|
29
|
-
| Avalanche | `0xE34Fc0E6694821c600Fa0955C0F74720ea6d8440` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | 2026-08-27 |
|
|
30
|
-
| XRPL EVM | `0xe855e491D0950140704DB9Cec6B7b3F725360a56` | — | 2026-08-27 |
|
|
31
|
-
| Amoy (testnet) | `0xdB772E64F63854bf31f2366BF27e47D5699fe7fC` | `0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582` | 2026-08-29 |
|
|
32
|
-
|
|
33
|
-
### agent-x402 (0/0)
|
|
34
|
-
|
|
35
|
-
| Chain | Splitter Address | USDC | Verified |
|
|
36
|
-
|-------|-----------------|------|----------|
|
|
37
|
-
| Polygon | `0x660Cd915Fc54A7EaE5CEA6854505638bd2A08531` | `0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359` | 2026-08-27 |
|
|
38
|
-
| Optimism | `0x38Ef6173ce0AC540f129680C2Aa4Ef739787bdBf` | `0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85` | 2026-08-27 |
|
|
39
|
-
| BNB | `0x7656fb8B6627311A7d87273913D31b837Bb2b5A4` | — | 2026-08-27 |
|
|
40
|
-
| Unichain | `0xC701F45b3Bae9CA3a58cB33fCBA6291594D17843` | `0x078D782b760474a361dDA0AF3839290b0EF57AD6` | 2026-08-27 |
|
|
41
|
-
| BOT Chain | `0x7E92FbE28aAc3a3942FDf019d29172bd02c96Cf0` | — | 2026-08-27 |
|
|
42
|
-
| Base | `0x1Fe2021336596655Fac72bC7bC40F7FFFA501d55` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | 2026-08-27 |
|
|
43
|
-
| Arbitrum | `0xE34Fc0E6694821c600Fa0955C0F74720ea6d8440` | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | 2026-08-27 |
|
|
44
|
-
| Avalanche | `0xF03B3387415D557b6ab709D06E8aF0b4ABD6Eb74` | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` | 2026-08-27 |
|
|
45
|
-
| XRPL EVM | `0x7E92FbE28aAc3a3942FDf019d29172bd02c96Cf0` | — | 2026-08-27 |
|
|
46
|
-
| Amoy (testnet) | `0xFd1622847A89FB3De240d64DFCbd09C65c77D99d` | `0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582` | 2026-08-30 |
|
|
47
|
-
|
|
48
|
-
## Address Collisions (Important!)
|
|
49
|
-
|
|
50
|
-
Same address, different routes/chains — **selection must use chain + route**, never address alone:
|
|
10
|
+
| `agent-x402` | 0 | 0 | AIFP-2/x402 negotiation. Provider receives 100% of quoted price; AiFinPay fee is 0%. |
|
|
51
11
|
|
|
52
|
-
|
|
53
|
-
|---------|--------|
|
|
54
|
-
| `0x1Fe2021336596655Fac72bC7bC40F7FFFA501d55` | Optimism `merchant-aifp1`, Base `agent-x402` |
|
|
55
|
-
| `0xF03B3387415D557b6ab709D06E8aF0b4ABD6Eb74` | Unichain `merchant-aifp1`, Avalanche `agent-x402`, Optimism v1.2 legacy |
|
|
56
|
-
| `0xE34Fc0E6694821c600Fa0955C0F74720ea6d8440` | Arbitrum `agent-x402`, Avalanche `merchant-aifp1` |
|
|
57
|
-
| `0xe855e491D0950140704DB9Cec6B7b3F725360a56` | BOT Chain `merchant-aifp1`, XRPL EVM `merchant-aifp1` |
|
|
58
|
-
| `0x7E92FbE28aAc3a3942FDf019d29172bd02c96Cf0` | BOT Chain `agent-x402`, XRPL EVM `agent-x402` |
|
|
12
|
+
## Deployment lookup
|
|
59
13
|
|
|
60
|
-
|
|
14
|
+
Read [deployments.json](deployments.json) for addresses, assets, runtime hashes,
|
|
15
|
+
governance and settlement metadata. Select records using
|
|
16
|
+
`chainId` and `_route`, never address alone. The same address can occur on
|
|
17
|
+
different chains or routes with different economics.
|
|
61
18
|
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- `0x3C31dd9daCeC5473cC9B660CD69247A20701cF19`
|
|
67
|
-
- `0x25A834b6fEC79e9ee6ED04Ef5b97440149C6Cc24`
|
|
68
|
-
- `0x1D5eF769A024B3157c76884fbd10302d8d83fAB9`
|
|
69
|
-
- `0x849930eB20ED0a697c71BcE565f18702D202C0F8`
|
|
19
|
+
Do not use a chain-only lookup to select between v1.3 routes:
|
|
20
|
+
[AifinpayRegistry](../../../../src/registry.ts) keys its EVM map by chain ID.
|
|
21
|
+
The SDK's [route resolution code](../../../../../node/src/splitterRoutes.ts)
|
|
22
|
+
defines route-specific lookup and policy checks.
|
|
70
23
|
|
|
71
|
-
##
|
|
24
|
+
## Verification and provenance
|
|
72
25
|
|
|
73
|
-
|
|
74
|
-
|
|
26
|
+
Inspect the actual selected registry record and the consumed route table's
|
|
27
|
+
`validFrom`/`validUntil` policy before settlement. Compare deployed runtime code,
|
|
28
|
+
mutable owner/treasury and route economics with the expected values, and obtain
|
|
29
|
+
fresh backend receipt-verification and end-to-end settlement evidence.
|
|
75
30
|
|
|
76
|
-
|
|
31
|
+
See the [verification checklist](../../INDEX.md). Registry metadata and policy
|
|
32
|
+
dates do not establish current availability; settlement-disabled or
|
|
33
|
+
out-of-window routes must not settle.
|
|
77
34
|
|
|
78
|
-
|
|
35
|
+
Read `source`, `sourceArtifact` and `generatedAt` in the JSON for recorded
|
|
36
|
+
provenance. This route snapshot is not regenerated by the
|
|
37
|
+
[grabber](../../../../src/grabber.ts). Downstream generation is implemented in
|
|
38
|
+
[generate-splitter-routes.mjs](../../../../../node/scripts/generate-splitter-routes.mjs);
|
|
39
|
+
from `node/`, `npm run registry:check` checks consistency with the installed
|
|
40
|
+
deployment package, not live verification.
|