Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Indexes

Two contracts, three proxies.

AccountsIndex

Enumerable address set with activation. clc-core calls add with its master key on user registration.

Proxy: 0xB1Ec3942dc9258de62056Febb0dc544D9EB1ED1a.

CallWhoEffect
add(account)owner / writerinsert; revert if present
remove(account)owner / writerswap-and-pop (order not stable)
activate / deactivateowner / writertoggle have without dropping the entry
have(account)anyonepresent and active
contains(account)anyonepresent, including deactivated
entry(i) / entryCount()anyoneenumerate
time(account)anyoneadd timestamp; NotFound if absent

Deactivation: contains stays true, have / isActive go false.

add reverts Access() unless writers[msg.sender] || msg.sender == owner().

Events: AddressAdded, AddressRemoved, AddressActive(account, active), WriterAdded, WriterDeleted.

TokenUniqueSymbolIndex

Token registry keyed by unique ERC-20 symbol(). Used as:

  • Network TokenIndex
  • Network PoolIndex (pools, not tokens; same ABI)
  • Per-pool SwapPool.tokenRegistry
CallNotes
register(token) / add(token)reads symbol(); unique address + unique symbol; ≤32 bytes; owner/writer
remove(token)owner/writer
have(token)SwapPool whitelist check
addressOf(bytes32 symbolKey)lookup
entry(i) / entryCount()enumerate addresses
identifier(i) / identifierCount()enumerate symbol keys

time / activate / deactivate are inert stubs (0 / false) for interface compatibility.

isWriter on this contract is the raw mapping. It does not treat owner as writer.

Events: AddressKey(symbol, token), AddressAdded, AddressRemoved.

Tracker bootstrap walks TokenIndex and PoolIndex with entryCount / entry, then each pool's tokenRegistry().