Skip to content

Commit 13ab0fe

Browse files
committed
docs: complete testnet addresses and remove third-party references
- README: show full contract addresses and transaction hashes for the Arc x402 and Tempo MPP live tests. - docs/design.md: remove references to the external capability-token reference project; describe the authz-layer design principles in LedgerFlow's own terms. - .gitignore: drop the stale third-party directory exclusion.
1 parent 3d7f981 commit 13ab0fe

3 files changed

Lines changed: 31 additions & 28 deletions

File tree

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ bun.lockb
3333
# Leptos
3434
/site/
3535
.rumdl_cache/
36-
tenuo/
3736
x402-docs/
3837
mutants.out/
3938
mutants.out.old/

README.md

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,29 +77,33 @@ a real wallet (OneCipher) signing the payment credentials.
7777
### x402 exact (EIP-3009) on Arc Testnet
7878

7979
- **Network**: `https://rpc.testnet.arc.io` (chainId 5042002); native USDC
80-
with an ERC-20 interface at `0x3600...` (6 decimals; gas token is the
81-
18-decimal native USDC).
80+
with an ERC-20 interface at `0x3600000000000000000000000000000000000000`
81+
(6 decimals; gas token is the 18-decimal native USDC).
8282
- **Flow**: merchant issues a 402 `PaymentRequired` (advertising
8383
`scheme=exact, asset=USDC@eip155:5042002, payTo=merchant`) → OneCipher signs
8484
an EIP-3009 `TransferWithAuthorization` typed-data message → merchant settles
8585
on-chain via `transferWithAuthorization`.
86-
- **On-chain confirmation**: tx `0x38a531c9...` status=0x1 with both
87-
`AuthorizationUsed` and `Transfer` (10000 units) events.
86+
- **On-chain confirmation**: tx
87+
`0x38a531c917b44c2bceec7cf9d2bbe9f9a7c8e696fc5bcf4926d9a034038abb5f`
88+
status=0x1 with both `AuthorizationUsed` and `Transfer` (10000 units)
89+
events.
8890
- **Signature correctness**: OneCipher's EIP-712 signature is byte-identical
89-
to `cast wallet sign --data` (`66a4352d...`), proving standards-compliant
90-
EIP-712 signing.
91+
to `cast wallet sign --data` (signature prefix `66a4352d...`), proving
92+
standards-compliant EIP-712 signing.
9193

9294
### MPP charge on Tempo Moderato
9395

9496
- **Network**: `https://rpc.moderato.tempo.xyz` (chainId 42431); escrow
95-
contract `0xe1c4d3dc...`, pathUSD `0x20c0...`.
97+
contract `0xe1c4d3dce17bc111181ddf716f75bae49e61a336`, pathUSD
98+
`0x20c0000000000000000000000000000000000000`.
9699
- **Flow**: server issues a `WWW-Authenticate: Payment` challenge (realm
97100
"MPP Payment", intent charge, method tempo) → the client signs a TIP-20
98101
transfer transaction → the server broadcasts a fee-sponsored transaction
99102
(Tempo type-0x76 with `feePayerSignature` / `feeToken` / `calls`).
100-
- **On-chain confirmation**: tx `0xa678fb46...` status=0x1, sender is the
101-
payer account, 3 logs (2× `Transfer` + fee event), pathUSD balance decreased
102-
by exactly 0.01 + a small fee.
103+
- **On-chain confirmation**: tx
104+
`0xa678fb46754092655ef8a3f2587ccfc1c61764ab3b31deb34b88a90190ea5f38`
105+
status=0x1, sender is the payer account, 3 logs (2× `Transfer` + fee event),
106+
pathUSD balance decreased by exactly 0.01 + a small fee.
103107

104108
Reusable live-test scripts live in [`testnet-tests/`](testnet-tests/); the
105109
gaps found and fixes applied to the wallet are tracked in

docs/design.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,13 @@ services.
107107

108108
## 3. Research and Benchmarking
109109

110-
### 3.1 Deep Reference: tenuo (Authz-layer template)
110+
### 3.1 Authz-Layer Design Principles
111111

112-
`/home/akagi201/tmp/tenuo` is the **primary reference** for the Authz-layer
113-
design, but the protocol and brand are independent (LedgerFlow naming).
112+
The Authz-layer design builds on well-established capability-token patterns
113+
(attenuating capability systems and signed-delegation chains) and adapts them
114+
to payment semantics under the LedgerFlow naming.
114115

115-
| tenuo design | LedgerFlow adoption / adaptation |
116+
| Established pattern | LedgerFlow adaptation |
116117
|---|---|
117118
| Warrant: signed envelope (CBOR payload + Ed25519 signature), UUIDv7 id | adopted; fields redefined for payment semantics (§6.1) |
118119
| Delegation chain: `parent_hash` cryptographic link + `depth/max_depth`, six invariants I1–I6 | adopted and adapted; **attenuation now uses runtime conjunction** (§6.2), avoiding the undecidable static-subset problem |
@@ -124,10 +125,10 @@ design, but the protocol and brand are independent (LedgerFlow naming).
124125
| Control/Data plane separation (feature gated) | adopted as deployment modes rather than crate splits (§5.3) |
125126
| IETF AAT draft alignment | conceptual alignment only; no spec-chasing |
126127

127-
**Deliberately not done** (tenuo has it, LedgerFlow does not need it): 16+
128-
constraint types, CEL expressions, language-binding matrix (Python/WASM),
129-
orchestrator, gateway templates. LedgerFlow converges to the minimal complete
130-
set for payment semantics.
128+
**Deliberately not done** (other capability systems have it, LedgerFlow does
129+
not need it): 16+ constraint types, CEL expressions, language-binding matrix
130+
(Python/WASM), orchestrator, gateway templates. LedgerFlow converges to the
131+
minimal complete set for payment semantics.
131132

132133
### 3.2 Protocol Implementation References
133134

@@ -330,8 +331,8 @@ sponsorship deferred, extensions frozen):
330331
331332
### 6.2 Delegation and Attenuation (protocol invariants)
332333

333-
Adopts tenuo I1–I6 adapted for payment semantics; **attenuation uses runtime
334-
conjunction** (v0.2 revision):
334+
Defines invariants I1–I6 adapted for payment semantics; **attenuation uses
335+
runtime conjunction** (v0.2 revision):
335336

336337
| ID | Invariant |
337338
|---|---|
@@ -355,10 +356,9 @@ conjunction** (v0.2 revision):
355356
- fail-closed: unknown constraint types, unknown constraint fields, and
356357
unknown warrant extensions are all rejected.
357358

358-
> Design trade-off note: tenuo implements a full constraint lattice (partial
359-
> order + monotonic attenuation judgment), but its correctness depends on a
360-
> decidable subset of a custom DSL and is complex to implement
361-
> (constraints.rs ~224 KB). LedgerFlow trades static containment for
359+
> Design trade-off note: a full constraint lattice (partial order +
360+
> monotonic attenuation judgment) depends on a decidable subset of a custom
361+
> DSL and is complex to implement. LedgerFlow trades static containment for
362362
> decidability and interop via runtime conjunction; the cost is the loss of
363363
> immediate "static rejection of over-limit child at issuance". Since every
364364
> payment still verifies node-by-node, the security semantics are equivalent
@@ -421,7 +421,7 @@ paymaster (roadmap).
421421

422422
### 6.5 Approval Gates (m-of-n human approval)
423423

424-
For high-value / high-risk payments (inspired by tenuo approvals):
424+
For high-value / high-risk payments (m-of-n approval pattern):
425425

426426
```
427427
Agent initiates payment (no approval)
@@ -461,7 +461,7 @@ Agent initiates payment (no approval)
461461

462462
### 6.7 Signatures and Domain Separation
463463

464-
Reuses tenuo's domain-separation idea to prevent cross-purpose replay:
464+
Uses domain-separated signing to prevent cross-purpose replay:
465465

466466
| Domain prefix | Purpose |
467467
|---|---|
@@ -816,7 +816,7 @@ persistent implementation lives in `ledgerflow-facilitator` /
816816
| Clock-skew TTL/PoP bypass | time-server drift | expired tokens replayed | bidirectional clock-tolerance window (§6.3) |
817817
| MPP session revocation delay | streaming payments | continued consumption inside the pre-revocation window | next-tick effect + active stream close (§6.6) |
818818

819-
### 12.3 Explicitly Not Protected (aligned with tenuo)
819+
### 12.3 Explicitly Not Protected
820820

821821
- A fully compromised agent process (RCE) — requires sidecar/gateway
822822
deployment isolation (deployment docs);

0 commit comments

Comments
 (0)