Skip to main content

Contracts

Blacklight L1 is deployed to Ethereum mainnet (chain ID 1), with a testnet on Ethereum Sepolia (chain ID 11155111). Always resolve addresses from ProtocolConfig rather than hardcoding them.

Mainnet​

ContractAddress
ProtocolConfig0xa75716772c17818A73104344b5A8888ae24ADc03
TriggerMarket0xe04AB2338e53CEf004512687bd7957Ab18B85744
NodeRegistry0x9A2667ec55c769f49906d7aB718d36aE26c23be2
Staking0xAcD5D3d8Eacb9f60CfEb6F26D65FB9CB9b06D21b
Emissions0xeff51614B2ccB89264e75a1303A17878cEA59C62
NIL0x7Cf9a80db3B29eE8efE3710AadB7b95270572d47

Testnet (Sepolia)​

Tokens have no value, and the testnet deployment may be replaced without notice.

ContractAddress
ProtocolConfig0x137c8BFdEd755FD61486e648b2494BE1A1264619
TriggerMarket0x60Ab22031E47ff93bB9b88Aa2bfb9FEf90d435A6
NodeRegistry0xF90839b2e303Dc2190d69290F0f0303D3C7D652F
Staking0xDe9a9e0473F85D53AA7Cac29E15Aa91010894795
Emissions0x93B25ADaA711D0574548873BcEab76dB08AAfc35
NIL (testnet token)0x38E6D66fCbe15B7D68aa2E25Ba065A6c6da0c367

The NIL addresses are proxies. Always interact with the proxy, never with the implementation behind it.

Start from ProtocolConfig​

ProtocolConfig is the single entry point. Every other address, and every tunable protocol parameter, is readable from it — so tools and nodes only need one address configured.

cast call $CONFIG_ADDRESS "triggerMarket()(address)" --rpc-url $RPC_URL

This is why running a node only requires CONFIG_ADDRESS: the node resolves the market and registry itself at boot. See Run a Node.

What each contract does​

ProtocolConfig — holds protocol parameters (minimum stake, key TTL, gas ceilings) and the addresses of every other contract. Its address is stable across future redeployments of the contracts below.

TriggerMarket — the core. Accepts posted triggers with their sealed layers and escrow, accepts shares from committee nodes, verifies reconstruction against the author's commitment, pays out fees and bounties, and calls settlement hooks.

NodeRegistry — the record of who is on the network: each node's operator address, its current master public key (mpk), its key history and TTLs, and its markup.

Staking — bonds NIL at registration, tracks the owner of each node, and releases stake through an unbonding queue. Both stake withdrawal and earnings are controlled by the node's owner wallet.

Emissions — pays NIL emissions to eligible nodes, accruing every second and weighted by stake. Node owners claim them as availability rewards.

Verifying​

All contracts are verified on Etherscan; source is browsable from the address links.