oneERC

Aboutthe group

An independent group writing Ethereum standards. No foundation behind it, no token, and no position on which chain you deploy to.

What we do

Every contract on Ethereum is its own program, so there is no shared runtime to ask. We write the standards that let a contract answer for itself and that let you check the answer without trusting whoever wrote it.

The problem is the same at every layer, and it is not a missing capability. Fee-on-transfer, pausing, freezing, royalties, revocation — all of it ships today. What is missing is a way for a contract to say which of them it has, cheaply enough that reading it is not a favour, and a way to establish that the answer came from code somebody vetted.

So a standard here is not finished when the interface is agreed. It is finished when there is a reference implementation, a suite that proves the claim rather than restating it, and numbers that were measured. The first one, ONE-ERC, took four review rounds to reach that bar, and each round found something that changed the code.

Read the integration guide

Five modules

Behaviour flags

Nine bits, one word. Six describe what a transfer does. Three describe what an authority can do to you.

Decisions worth arguing with
The transfer pipeline

One _update, four phases

Every balance change passes through a single override that fixes the phase order. Modules override phases instead of chaining super calls, so a module cannot change the order by being listed first, and each phase sees the arguments it was designed for.

Read the pipeline
_update(from, to, value)

  1. restriction checks
       mint and burn arrive with the zero address intact
  2. fee collection
       own _rawUpdate, own Transfer event; skipped on mint/burn
  3. the transfer itself
       for value - fee
  4. the hook
       after balances settle, guarded, under a gas cap
ERC20OnchainMetadata
ERC20TransferFee
ERC20TransferRestriction
ERC20NonTransferable
ERC20TransferHook
ExtendedToken
ExtendedTokenUpgradeable
ONE-ERCRuntimeV1
ONE-ERCFactoryV1
ONE-ERCVerification