Expand description
OriginAssignment contract ABI bindings (ADR 011 § Origin Assignment
Authority, ADR 022 § FIND_VALUE Flow “Origin discovery”).
Generated by the alloy::sol! macro from the Solidity surface in
contracts/src/OriginAssignment.sol. Only the read path, the publisher
control-plane writes the CLI submits, and the membership-mutating events the
node’s chain-backed origin directory (crate consumer
decdn-node::dht::chain_origin_directory) consumes are mirrored. The
directory keeps a namespaceId → authorized-operator cache current from
these events, falling back to getOrigins for the bootstrap snapshot.
The contract has two planes. Whether a publisher wallet may seat origins
is decided by a swappable IVettingPolicy (governance re-points it with
setVettingPolicy); a vetted publisher then seats and unseats origins for
its own namespaces instantly, one operator at a time. So every event here is
a single-operator delta — OriginAdded seats one, OriginRemoved /
InactiveOriginPruned remove one — and the directory treats each as a
signal to re-read getOrigins, not as history. Namespace 0 has no publisher
and no authorized origins, so getOrigins(0) is always empty.
Vetting is not a CLI flow: a VETTER_ROLE holder on the installed policy
(an operator, multisig, or governance) vets a wallet out-of-band, after
which it may seat origins immediately. OriginAssignment::vettingPolicy
exposes the installed policy address for tooling that wants to read it.
Modules§
- Origin
Assignment - Module containing a contract’s types and functions.