Skip to main content

Module origin_assignment

Module origin_assignment 

Source
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§

OriginAssignment
Module containing a contract’s types and functions.