ReceiverSetup.sol 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  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 chainId,
  12. uint16 governanceChainId,
  13. bytes32 governanceContract
  14. ) public {
  15. require(initialGuardians.length > 0, "no guardians specified");
  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. setChainId(chainId);
  21. setGovernanceChainId(governanceChainId);
  22. setGovernanceContract(governanceContract);
  23. _upgradeTo(implementation);
  24. }
  25. }