ContractRegistry
bytes32 identifier → address. Identifiers are fixed in initialize; each set can run once.
Proxy: 0xaC95B1A09f2dbaf4542e3Ba8c4Cce0234895D389.
function initialize(address owner_, bytes32[] memory _identifiers) external initializer;
function set(bytes32 _identifier, address _address) external onlyOwner returns (bool);
function addressOf(bytes32) external view returns (address);
function identifier(uint256) external view returns (bytes32);
function identifierCount() external view returns (uint256);Event: AddressKey(identifier, address).
The key is ASCII, right-padded: cast format-bytes32-string AccountIndex. Case matters.
This registry has AccountIndex, TokenIndex, PoolIndex. clc-core reads AccountIndex; eth-tracker reads TokenIndex and PoolIndex.
Config
Same address in CORE_CHAIN__GE_REGISTRY and tracker bootstrap.ge_registry. Tracker cannot take a single env value (koanf Strings() treats it as a scalar), so put it in tracker-config.toml and leave TRACKER_BOOTSTRAP__GE_REGISTRY unset:
[bootstrap]
ge_registry = ["0xaC95B1A09f2dbaf4542e3Ba8c4Cce0234895D389"]