Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(protocol): enable AddressManager not to load from storage #17250

Merged
merged 9 commits into from
May 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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