Files
linea-monorepo/contracts/docs/StatusNetwork.md

3.9 KiB

Status Network

Devnet

📬 Devnet Deployed Contracts

These are the official contract deployments on the Holesky for L1 and Status Devnet for L2.

Chain Contract Address
Hoodi Yield Manager 0xF62923E542BdEA2DeC8Da020480197A54c4CE53A
Hoodi L1ETHBridge (Proxy) 0x0958faaa350be3d11c9f9a2ba366af3dab16c792
Hoodi L1ETHBridge (Implementation) 0x968b487d38d93fd5a36aed69da52febcc043c3e7
Status Devnet L2ETHBridge (Proxy) 0x99751AD60328ABf73e8c938c0B7A9F9FD370f453
Status Devnet L2ETHBridge (Implementation) 0xCaF71dEe9d59d0095eC37c1FFa7E4b8fD3114Bc2

The devnet test deployer is 0xD631542acd56eeBe466F16CBfEb937637b8b43c1.

YieldManager

Deploy a Dummy YieldManager contract on the Status Devnet.

export ETH_FROM=0xD631542acd56eeBe466F16CBfEb937637b8b43c1

forge script \
  script/yield/bridge/l1/DeployDummyYieldManager.s.sol \
  --rpc-url https://rpc.hoodi.ethpandaops.io \
  --private-key $STATUS_DEVNET_DEPLOYER_KEY \
  --broadcast

Verify the contract on Etherscan:

forge verify-contract --chain hoodi CONTRACT_ADDRESS ETHYieldManagerMock

L1ETHBridge

Update the deployment config (script/yield/bridge/l1/DeploymentConfig.s.sol) to include the address of the YieldManager contract deployed above.

The deployment config requires the address of the L2ETHBridge contract, which is the bridge on the L2 chain (Status Devnet). If it's the first deployment, you won't have the L2ETHBridge deployed yet, so you need to set a temporary one like 0x1 in the config script that must different from the zero address otherwise the deployment will fail.

export ETH_FROM=0xD631542acd56eeBe466F16CBfEb937637b8b43c1

forge script \
  script/yield/bridge/l1/DeployL1ETHBridge.s.sol \
  --rpc-url https://rpc.hoodi.ethpandaops.io \
  --private-key $STATUS_DEVNET_DEPLOYER_KEY \
  --broadcast

Verify the implementation contract on Blockscout:

forge verify-contract --chain hoodi CONTRACT_ADDRESS L1ETHBridge

L2ETHBridge

Update the deployment config (script/yield/bridge/l2/DeploymentConfig.s.sol) to include the address of the L1ETHBridge contract deployed above.

export ETH_FROM=0xD631542acd56eeBe466F16CBfEb937637b8b43c1

forge script \
  script/yield/bridge/l2/DeployL2ETHBridge.s.sol \
  --rpc-url https://sunti-rpc.eu-north-2.gateway.fm/ \
  --private-key $STATUS_DEVNET_DEPLOYER_KEY \
  --broadcast

Verify the implementation contract on Blockscout:

forge verify-contract \
  --verifier blockscout \
  --compilation-profile london \
  --verifier-url https://sunti-blockscout.eu-north-2.gateway.fm/api \
  --chain 1706707152 \
  IMPLEMENTATION_ADDRESS \
  L2ETHBridge

Verify the proxy contract in case it hasn't been verified yet automatically by Blockscout:

forge verify-contract \
  --verifier blockscout \
  --compilation-profile london \
  --verifier-url https://sunti-blockscout.eu-north-2.gateway.fm/api \
  --chain 1706707152 \
  PROXY_ADDRESS \
  node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol:ERC1967Proxy

Remember to set the L2ETHBridge address in the L1ETHBridge contract calling the setRemoteSender function.