ReceiverSetup.sol 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  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.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. setGovernanceChainId(governanceChainId);
  23. setGovernanceContract(governanceContract);
  24. _upgradeTo(implementation);
  25. }
  26. }