Setup.sol 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // contracts/Implementation.sol
  2. // SPDX-License-Identifier: Apache 2
  3. pragma solidity ^0.8.0;
  4. pragma experimental ABIEncoderV2;
  5. import "./Governance.sol";
  6. import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol";
  7. contract Setup is Setters, ERC1967Upgrade {
  8. function setup(
  9. address implementation,
  10. address[] memory initialGuardians,
  11. uint16 chainId,
  12. uint16 governanceChainId,
  13. bytes32 governanceContract
  14. ) public {
  15. require(initialGuardians.length > 0, "no guardians specified");
  16. Structs.GuardianSet memory initialGuardianSet = Structs.GuardianSet({
  17. keys : initialGuardians,
  18. expirationTime : 0
  19. });
  20. storeGuardianSet(initialGuardianSet, 0);
  21. // initial guardian set index is 0, which is the default value of the storage slot anyways
  22. setChainId(chainId);
  23. setGovernanceChainId(governanceChainId);
  24. setGovernanceContract(governanceContract);
  25. _upgradeTo(implementation);
  26. }
  27. }