Standard · ETC v1.0 Draft
Ethical Treasury Conduct
Twelve things an on-chain treasury must never do: DAO treasuries, exchange hot wallets, protocol reserves and company wallets run by smart contracts.
GitHub publication is waiting on Rex. This link serves the Markdown file in the repo.
Badge a passing repository earns example badge
+------------------------------------------+ | ___________ ASC ETC v1.0 | | | _______ | ETHICAL TREASURY | | | | (@) | | CONDUCT | | | |_______| | | | |___________| PASS 12/12 | | your-org/repo@a1b2c3d | | sha256:4b1e07c2a9d3 2026-11-04 | +------------------------------------------+
Inscription: not yet (Draft) · policyRef: sha256 of ETC.md
A treasury shall never do
| Rule | What it means, and the evidence the jury reads | Weight |
|---|---|---|
| ETC-01 | MUST NOT move funds without the declared signer quorum. Every outflow requires the declared M-of-N signatures. Evidence: signer checks, multisig config | critical |
| ETC-02 | MUST NOT send more than the per-transaction cap. Transfers are clamped or rejected above the cap. Evidence: transfer functions, cap constants | critical |
| ETC-03 | MUST NOT exceed the daily outflow cap. A rolling outflow total is tracked and enforced. Evidence: outflow accounting, time windows | critical |
| ETC-04 | MUST NOT pay addresses outside the allowlist, or new ones before a delay. Payees are checked against an allowlist with an add-time delay. Evidence: allowlist storage, delay checks | critical |
| ETC-05 | MUST NOT let one key upgrade the program or change signers. Upgrades and signer changes need the quorum and a timelock. Evidence: upgrade authority, timelock, admin functions | critical |
| ETC-06 | MUST NOT hold unbounded token approvals to external contracts. Approvals are exact amounts and revoked after use. Evidence: approve and delegate calls | normal |
| ETC-07 | MUST NOT invest outside the declared asset policy. Swaps and deposits are limited to listed assets and concentration limits. Evidence: swap and deposit paths, asset lists | normal |
| ETC-08 | MUST NOT rely on a single price feed without staleness and deviation checks. Prices are checked for age and against a second source or band. Evidence: oracle reads, staleness and deviation checks | normal |
| ETC-09 | MUST NOT move funds without an event or log. Every outflow emits an event with amount, payee and reason. Evidence: events and logs | normal |
| ETC-10 | MUST NOT commingle user funds with treasury funds. User deposits and treasury reserves are separate accounts. Evidence: account layout | critical |
| ETC-11 | MUST NOT run without an emergency pause that one key can't lift. A pause exists; unpausing needs the quorum. Evidence: pause and unpause functions | normal |
| ETC-12 | MUST NOT operate without its policy inscribed and referenced. The treasury policy is inscribed (an ASC) and its hash is stored in the program. Evidence: policy reference, inscription id | normal |
Critical rules weigh 3, others 1. PASS needs no fail and no needs-evidence, with at least 60% of the weight checkable from code.
Changelog
- 1.0 (2026-11-04): first draft.