Skip to content

Commit

Permalink
feat(protocol): enable AddressManager not to load from storage (#17250)
Browse files Browse the repository at this point in the history
  • Loading branch information
dantaik authored May 20, 2024
1 parent e36d5b7 commit c8207d3
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 13 deletions.
8 changes: 7 additions & 1 deletion packages/protocol/contracts/common/AddressManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,14 @@ contract AddressManager is EssentialContract, IAddressManager {

/// @inheritdoc IAddressManager
function getAddress(uint64 _chainId, bytes32 _name) external view override returns (address) {
return __addresses[_chainId][_name];
address addr = _getOverride(_chainId, _name);
if (addr != address(0)) return addr;
else return __addresses[_chainId][_name];
}

/// @notice Gets the address mapped to a specific chainId-name pair.
/// @dev Sub-contracts can override this method to avoid reading from storage.
function _getOverride(uint64 _chainId, bytes32 _name) internal pure virtual returns (address) { }

function _authorizePause(address, bool) internal pure override notImplemented { }
}
59 changes: 59 additions & 0 deletions packages/protocol/contracts/mainnet/L1RollupAddressManager.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import "../common/AddressManager.sol";
import "../common/LibStrings.sol";

/// @title L1RollupAddressManager
/// @notice See the documentation in {IAddressManager}.
/// @dev This contract shall NOT be used to upgrade existing implementation unless the name-address
/// registration becomes stable in 0x579f40D0BE111b823962043702cabe6Aaa290780.
/// @custom:security-contact [email protected]
contract L1RollupAddressManager is AddressManager {
/// @notice Gets the address mapped to a specific chainId-name pair.
/// @dev Sub-contracts can override this method to avoid reading from storage.
/// The following names are not cached:
/// - B_PROPOSER
/// - B_PROPOSER_ONE
/// - B_TIER_PROVIDER
function _getOverride(
uint64 _chainId,
bytes32 _name
)
internal
pure
override
returns (address addr_)
{
if (_chainId == 1) {
if (_name == LibStrings.B_TAIKO_TOKEN) {
return 0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800;
}
if (_name == LibStrings.B_SIGNAL_SERVICE) {
return 0x9e0a24964e5397B566c1ed39258e21aB5E35C77C;
}
if (_name == LibStrings.B_BRIDGE) {
return 0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC;
}
if (_name == LibStrings.B_TAIKO) {
return 0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a;
}
if (_name == LibStrings.B_TIER_SGX) {
return 0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81;
}
if (_name == LibStrings.B_TIER_GUARDIAN_MINORITY) {
return 0x579A8d63a2Db646284CBFE31FE5082c9989E985c;
}
if (_name == LibStrings.B_TIER_GUARDIAN) {
return 0xE3D777143Ea25A6E031d1e921F396750885f43aC;
}
if (_name == LibStrings.B_AUTOMATA_DCAP_ATTESTATION) {
return 0x8d7C954960a36a7596d7eA4945dDf891967ca8A3;
}
if (_name == LibStrings.B_ASSIGNMENT_HOOK) {
return 0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6;
}
}
return address(0);
}
}
77 changes: 77 additions & 0 deletions packages/protocol/contracts/mainnet/L1SharedAddressManager.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import "../common/AddressManager.sol";
import "../common/LibStrings.sol";

/// @title L1SharedAddressManager
/// @notice See the documentation in {IAddressManager}.
/// @dev This contract shall NOT be used to upgrade existing implementation unless the name-address
/// registration becomes stable in 0xEf9EaA1dd30a9AA1df01c36411b5F082aA65fBaa.
/// @custom:security-contact [email protected]
contract L1SharedAddressManager is AddressManager {
/// @notice Gets the address mapped to a specific chainId-name pair.
/// @dev Sub-contracts can override this method to avoid reading from storage.
/// The following names are not cached:
/// - B_BRIDGE_WATCHDOG
function _getOverride(
uint64 _chainId,
bytes32 _name
)
internal
pure
override
returns (address addr_)
{
if (_chainId == 1) {
if (_name == LibStrings.B_TAIKO_TOKEN) {
return 0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800;
}
if (_name == LibStrings.B_SIGNAL_SERVICE) {
return 0x9e0a24964e5397B566c1ed39258e21aB5E35C77C;
}
if (_name == LibStrings.B_BRIDGE) {
return 0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC;
}
if (_name == LibStrings.B_ERC20_VAULT) {
return 0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab;
}
if (_name == LibStrings.B_ERC721_VAULT) {
return 0x0b470dd3A0e1C41228856Fb319649E7c08f419Aa;
}
if (_name == LibStrings.B_ERC1155_VAULT) {
return 0xaf145913EA4a56BE22E120ED9C24589659881702;
}
if (_name == LibStrings.B_BRIDGED_ERC20) {
return 0x79BC0Aada00fcF6E7AB514Bfeb093b5Fae3653e3;
}
if (_name == LibStrings.B_BRIDGED_ERC721) {
return 0xC3310905E2BC9Cfb198695B75EF3e5B69C6A1Bf7;
}
if (_name == LibStrings.B_BRIDGED_ERC1155) {
return 0x3c90963cFBa436400B0F9C46Aa9224cB379c2c40;
}
if (_name == LibStrings.B_QUOTA_MANAGER) {
return 0x91f67118DD47d502B1f0C354D0611997B022f29E;
}
} else if (_chainId == 167_000) {
if (_name == LibStrings.B_BRIDGE) {
return 0x1670000000000000000000000000000000000001;
}
if (_name == LibStrings.B_ERC20_VAULT) {
return 0x1670000000000000000000000000000000000002;
}
if (_name == LibStrings.B_ERC721_VAULT) {
return 0x1670000000000000000000000000000000000003;
}
if (_name == LibStrings.B_ERC1155_VAULT) {
return 0x1670000000000000000000000000000000000004;
}
if (_name == LibStrings.B_SIGNAL_SERVICE) {
return 0x1670000000000000000000000000000000000005;
}
}

return address(0);
}
}
11 changes: 4 additions & 7 deletions packages/protocol/deployments/mainnet-contract-logs.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@
- erc721_vault@167000: `0x1670000000000000000000000000000000000003`
- erc1155_vault: `0xaf145913EA4a56BE22E120ED9C24589659881702`
- erc1155_vault@167000: `0x1670000000000000000000000000000000000004`
- bridged_erc1155: `0x3c90963cfba436400b0f9c46aa9224cb379c2c40`
- bridged_erc721: `0xc3310905e2bc9cfb198695b75ef3e5b69c6a1bf7`
- bridged_erc20: `0x79bc0aada00fcf6e7ab514bfeb093b5fae3653e3`
- bridged_erc1155: `0x3c90963cFBa436400B0F9C46Aa9224cB379c2c40`
- bridged_erc721: `0xC3310905E2BC9Cfb198695B75EF3e5B69C6A1Bf7`
- bridged_erc20: `0x79BC0Aada00fcF6E7AB514Bfeb093b5Fae3653e3`
- bridge_watchdog: `0x00000291ab79c55dc4fcd97dfba4880df4b93624`
- quota_manager: `0x91f67118DD47d502B1f0C354D0611997B022f29E`
- logs:
Expand Down Expand Up @@ -143,20 +143,17 @@
- taiko: `0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a`
- tier_provider: `0x4cffe56C947E26D07C14020499776DB3e9AE3a23`
- tier_sgx: `0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81`
- guardian_prover_minority: `0x579A8d63a2Db646284CBFE31FE5082c9989E985c`
- tier_guardian_minority: `0x579A8d63a2Db646284CBFE31FE5082c9989E985c`
- guardian_prover: `0xE3D777143Ea25A6E031d1e921F396750885f43aC`
- tier_guardian: `0xE3D777143Ea25A6E031d1e921F396750885f43aC`
- automata_dcap_attestation: `0x8d7C954960a36a7596d7eA4945dDf891967ca8A3`
- assignment_hook: `0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6`
- proposer_one: `0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045` vitalik.eth
- proposer: `0x000000633b68f5d8d3a86593ebb815b4663bcbe0`
- logs:
- deployed on May 1, 2024 @commit `56dddf2b6`
- admin.taiko.eth accepted the ownership @tx`0x0ed114fee6de4e3e2206cea44e6632ec0c4588f73648d98d8df5dc0183b07885`
- Upgraded from `0xd912aB787624c9eb96a37e658e9596e114360440` to `0xF1cA1F1A068468E1dcF90dA6add185467de80943` @commit `b90b932` @tx`0x416560cd96dc75ccffebe889e8d1ab3e08b33f814dc4a2bf7c6f9555071d1f6f`
- `Init2()` called @tx `0x7311fee56f87294e336393b55939489bc1e810c402f304013475d04c90ca32a9`
- todo:
- register `assignment_hook` for `0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6`

#### taikoL1

Expand Down
6 changes: 2 additions & 4 deletions packages/protocol/script/DeployOnL1.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -288,17 +288,15 @@ contract DeployOnL1 is DeployCapability {
address guardianProverMinority = deployProxy({
name: "guardian_prover_minority",
impl: guardianProverImpl,
data: abi.encodeCall(GuardianProver.init, (address(0), rollupAddressManager)),
registerTo: rollupAddressManager
data: abi.encodeCall(GuardianProver.init, (address(0), rollupAddressManager))
});

GuardianProver(guardianProverMinority).enableTaikoTokenAllowance(true);

address guardianProver = deployProxy({
name: "guardian_prover",
impl: guardianProverImpl,
data: abi.encodeCall(GuardianProver.init, (address(0), rollupAddressManager)),
registerTo: rollupAddressManager
data: abi.encodeCall(GuardianProver.init, (address(0), rollupAddressManager))
});

register(rollupAddressManager, "tier_guardian_minority", guardianProverMinority);
Expand Down
1 change: 0 additions & 1 deletion packages/protocol/test/L1/TaikoL1TestBase.sol
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,6 @@ abstract contract TaikoL1TestBase is TaikoTest {
registerAddress("tier_guardian", address(gp));
registerAddress("tier_provider", address(cp));
registerAddress("signal_service", address(ss));
registerAddress("guardian_prover", address(gp));
registerL2Address("taiko", address(L2));
registerL2Address("signal_service", address(L2SS));
registerL2Address("taiko_l2", address(L2));
Expand Down

0 comments on commit c8207d3

Please sign in to comment.