ReceiverSetup.sol 1022 B

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