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

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

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 USDCShare idShareStatusShare 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.