Deployment Status Oracle

DeploymentStatusOracle is a deployment-progress helper. It does not measure protocol readiness or initialization success. It only reports which configured deployment-step addresses currently contain runtime bytecode.

The mainnet manifest lists this contract directly, so operators and frontends need a precise explanation of the returned bitmask and the built-in 256-step ceiling.

What getDeploymentMask() Returns

The constructor stores one ordered address[] deploymentAddresses. getDeploymentMask() loops over that array and checks deploymentAddresses[index].code.length. When code exists, the oracle sets bit index in the returned uint256.

This is a code-presence bitmap. A set bit means code exists at the configured address. A clear bit means the address currently has no code. The oracle does not verify constructor args, ownership wiring, or post-deployment setup.

Deployment mask maps ordered deployment steps to bits A row of deployment steps on the left maps by index into bit positions in a uint256 mask on the right. Each step sets its bit only when code exists at that configured address. step 0 step 1 step 2 bit 0 bit 1 bit 2 ... code? code? code? returned uint256

Deployment Status MaskEach configured deployment step owns one bit position in the returned word. The oracle sets that bit only if the step's address currently contains code.

deployedMask = i = 0 codePresent ( i ) 2i

Deployment BitmaskEach configured deployment step contributes one bit position to the returned word.

How Bits Map To Deployment Steps

Bit positions are array positions. Bit 0 maps to the first constructor address, bit 1 to the second, and so on. Offchain decoding must use the same ordered list that seeded the oracle.

The constructor emits DeploymentAddressesSet(address[] deploymentAddresses) with that exact ordered list. It is the onchain source for recovering a particular oracle instance's bit mapping; the manifest below describes the current planned deployment and must match the constructor event for that instance.

The current UI and deployment helpers derive the constructor list from deploymentSteps with one exception: the oracle does not include its own address in its constructor array. The manifest still lists deploymentStatusOracle as a deployment step, but the UI tracks that step out-of-band and starts consuming mask bits from the remaining addresses.

The table below renders the complete bit mapping directly from the canonical mainnet deployment manifest, excluding deploymentStatusOracle.

Bit Mainnet step id Label
Loading the canonical manifest…

If the manifest's constructor order changes, the rendered bit meanings change with it; this page does not maintain a second list.

The manifest's derivedContracts list is separate. Those addresses are not part of the deployment-status mask unless they also appear in the constructor array.

Why The Cap Is 256 Steps

The constructor requires deploymentAddresses.length <= uint256(type(uint8).max) + 1, which is 256. The limit exists because the result is a single uint256, and each tracked step consumes one bit.

Indices 0...255 are supported. A deployment process with more than 256 tracked addresses must split status across multiple masks or use a different representation.

Sources