Transaction Science open standards monorepo. Each subdirectory is a self-contained reference protocol with its own README and licence. - openpay/ Apache-2.0 payment-acceptance stack (Rust, 26 crates) - smart-byte/ CC-BY-4.0 content-addressed value carrier (spec) - eoc/ CC-BY-4.0 energy-optimised compute (spec) The wire format and the right to fork are public. The optional hosted services are the offer; the protocols are not.
1.7 KiB
1.7 KiB
demo-merchant
The smallest end-to-end OpenPay payment demo. Generates a fresh EVM wallet, listens for op-server webhooks, polls Base for USDC balance changes, and exits on the first observed payment.
Whichever signal arrives first — an op-server intent.approved
webhook for our wallet, or a non-zero balanceOf result on the USDC
contract — wins.
Run
Terminal 1, op-server:
cargo run --release -p op-server
Terminal 2, demo merchant (testnet first, please):
cargo run --release -p demo-merchant -- --testnet
Output:
Merchant wallet: 0xabc123...
Explorer: https://sepolia.basescan.org/address/0xabc123...
Listening on http://127.0.0.1:9090 for op-server webhooks at /webhook
Polling https://sepolia.base.org every 30s for balanceOf updates.
Send USDC (Sepolia testnet faucet recommended) to the printed address.
The demo prints PAID: ... and exits 0.
Flags
--rpc-url URL— EVM JSON-RPC endpoint. Defaulthttps://mainnet.base.org.--listen ADDR— webhook bind address. Default127.0.0.1:9090.--amount-usdc N— expected amount, display only. Default0.10.--explorer URL— block-explorer base. Defaulthttps://basescan.org.--testnet— switch RPC + explorer to Base Sepolia.--poll-secs N—balanceOfpoll interval. Default30.
Caveats
- Real USDC on mainnet costs real money. Use
--testnetfor your first run. - The private key is generated in-process and never persisted; if you exit the demo, the funds at that address are effectively burned from your control.
- The webhook endpoint has no signature verification — it's a demo, not a production receiver.