Solidarity demo log
A working demo of a solidarity log from the draft 3 solidarity proposal for x402: an agent's owner gives a small, fixed share of what the agent spends to a fund, each share becomes a line in a public log, and each month the log publishes a signed statement that a witness and the fund cosign. It is a proposal, not part of x402, and not affiliated with or endorsed by anyone. It was written with AI assistance.
Running. A purchase every 6 hours until 2027-03-31.
What is real
The purchases and shares below are real Base Sepolia transactions in test USDC, which has no value, settled through the public x402 facilitator at https://x402.org/facilitator, which pays the gas. Every settlement reference (exact:<transaction>) can be opened on sepolia.basescan.org.
What is simulated
- The fund. Shares go to the placeholder address
0x000000000000000000000000000000000000f00d, which nobody controls. No fund exists; test USDC sent there is gone. - The witness and the fund's cosignatures. Both are demo keys held by this Worker, next to the log's own key. They show the checks a witness and a fund make, not that anyone independent made them.
- The owner and the seller. Both are this Worker. Every 6 hours it buys 1 test USDC from itself (the purchase goes from the payer to the payer) and gives a 0.1% share, 0.001 USDC, to the placeholder fund.
Status
- Log
- https://solidarity-demo-log.craigm26.workers.dev/solidarity
- First month
- 2026-10
- Payer
0x425c543799fe6452BfCfc3197ccD249b4989ad0B- Payer balance
- 19.98 test USDC (read 2026-10-28 06:00:03Z)
- Last tick
- 2026-10-28 06:00:02Z: purchase 21
- Next close
- 2026-11-01 00:00:00Z (the month before is closed on the first tick after it)
- Log key
- Ed25519
b419d04359eeb33105df864f0430a471b8855d82ba3d6904d6f691bd750ff4b6,did:web:solidarity-demo-log.craigm26.workers.dev#log-1
The log's endpoints
- /solidarity: the descriptor (funds, accepted share kind, keys, witnesses)
- /solidarity/statements/2026-10: the signed statement and its cosignatures
- /solidarity/lines/2026-10: the month's lines
- /solidarity/settlements/2026-10: the settlements file
- /solidarity/proofs/caZ_H0Fkui-HZmWMgShmzA: one share's inclusion proof (or queued, uncollected, 404)
- did:web documents: the log, the demo witness, the demo fund's key
- /receipts/<id>: a full receipt for an included share, ready for verify.py
Latest statement
None yet. The first statement, for 2026-10, appears on the first tick after that month ends.
Recent purchases
| # | Signed (UTC) | Purchase, 1 USDC | Share id | Share | Status | Share transfer |
|---|---|---|---|---|---|---|
| 21 | 2026-10-28 06:00:03Z | failed: facilitator /settle (200): invalid_exact_evm_transaction_failed: Missing or invalid parameters. | caZ_H0Fkui-HZmWMgShmzA |
0.001 | skipped: purchase-not-final | |
| 20 | 2026-10-28 00:00:03Z | 0x2ff6c085...4efb7d |
oKC0e4PruveRVNTlyvvRtA |
0.001 | uncollected: facilitator /settle (200): invalid_exact_evm_transaction_failed: Missing or invalid parameters. | |
| 19 | 2026-10-27 18:00:04Z | 0x7febc8bd...a519dd |
d785Hgd3WJI_03vTt3nveg |
0.001 | collected | 0xd3f470b9...e66888 |
| 18 | 2026-10-27 12:00:03Z | 0xded2818b...257f36 |
OUPWI9ghTnwlF3HUBHqnZQ |
0.001 | collected | 0x2a0230e8...8e6b00 |
| 17 | 2026-10-27 06:00:02Z | 0x307256fd...a1436a |
4khEOcPblOFAYULPs2L4Qg |
0.001 | collected | 0xa3654662...e64742 |
| 16 | 2026-10-27 00:00:06Z | 0xc9b408a2...658fbf |
OHrSyaNsvhKI4oyrgnrIXw |
0.001 | collected | 0x44852833...7d5d92 |
| 15 | 2026-10-26 18:00:05Z | 0xdf7cba1d...240e15 |
YrlLAhZvhSfqP4Ynz-7vBQ |
0.001 | collected | 0x65eee994...ad462f |
| 14 | 2026-10-26 12:00:03Z | failed: not executed before validBefore | K8t81wbsnnnJu_hecX2CnQ |
0.001 | skipped: purchase-not-final | |
| 13 | 2026-10-26 06:00:03Z | 0x524ea38b...168405 |
MydrM6JNGll2MCpLe0ErNQ |
0.001 | collected | 0x9561ecbe...b7b6ba |
| 12 | 2026-10-26 00:00:08Z | 0x7eecbdab...f22d32 |
cgtNsNLFetZp4s2CcUpdDA |
0.001 | collected | 0x93d4bb4f...123449 |
| 11 | 2026-10-25 18:00:06Z | 0x38b272de...9843f6 |
HN0GQp5vNYtV-XJgszWp3w |
0.001 | collected | 0xe0b156f8...0c0be7 |
| 10 | 2026-10-25 12:00:03Z | 0xa635d71d...9ca4c1 |
z4Rg8iXPPl4U82yOXSIASw |
0.001 | collected | 0x2463fc38...790e68 |
| 9 | 2026-10-25 06:00:04Z | 0xf17cfc03...e7fd65 |
926SxzW8pLRuv-mz86_u-g |
0.001 | collected | 0x8e894ce2...cb59ec |
| 8 | 2026-10-25 00:00:05Z | 0x4add4331...d988ce |
-NFdK5C0neKh7GQImcSjQA |
0.001 | collected | 0xb8dbcb0a...61e0ef |
| 7 | 2026-10-24 18:00:09Z | 0x16c13492...2c8865 |
-RkvaEhkeAW3aXVqNSpcaQ |
0.001 | collected | 0xd87688a4...a1004e |
| 6 | 2026-10-24 12:00:04Z | 0xc96c1bd7...c14415 |
roJouCDy0Cmd4tu715XxkA |
0.001 | collected | 0x678efc06...ba20e0 |
| 5 | 2026-10-24 06:00:03Z | 0xab664e0e...39c48d |
uakWbAOD5JUuTjOz6QDL7A |
0.001 | collected | 0x71ef151a...1c92c1 |
| 4 | 2026-10-24 00:00:02Z | 0x5e302208...b543b5 |
2JZtsqNo77QylPBz5fUX_w |
0.001 | collected | 0xbf39e08b...ba39cf |
| 3 | 2026-10-23 18:00:04Z | 0x8117e410...752120 |
ImSYIFYtYh2v2Qcu4RN8OQ |
0.001 | collected | 0x331d2dd4...33d278 |
| 2 | 2026-10-23 12:01:28Z | 0x9880b3d2...97cbaa |
7mbVoUgg_rEUlDojBU2H6A |
0.001 | collected | 0xb2c5dd1e...c1565f |
How to check a month
Fetch verify.py and merkle.js from craigmerry.com/solidarity-levy/. verify.py needs Python 3 (signatures are checked when the cryptography package is installed).
L=https://solidarity-demo-log.craigm26.workers.dev/solidarity P=2026-10 curl -fsS $L/lines/$P -o lines.txt curl -fsS $L/settlements/$P -o settlements.txt curl -fsS $L/statements/$P -o s-$P.json python3 verify.py --lines lines.txt --statement s-$P.json --settlements settlements.txt # two months in a row chain by "previous" python3 verify.py --chain s-2026-10.json s-2026-11.json # one share: its receipt, with the log's Ed25519 public key curl -fsS https://solidarity-demo-log.craigm26.workers.dev/receipts/<id> -o receipt.json python3 verify.py receipt.json --key b419d04359eeb33105df864f0430a471b8855d82ba3d6904d6f691bd750ff4b6
merkle.js recomputes the same root in a browser or Node (buildBatch(lines) gives root, size and totals; verifyReceipt checks a receipt). Each exact:<transaction> in a settlements file can be opened on sepolia.basescan.org: it is a USDC transfer of the listed amount to 0x...f00d.
Source: examples/demo-log-worker in the x402-solidarity repository. Apache-2.0.