wormhole/ethereum/contracts/bridge/BridgeImplementation.sol

52 lines
1.1 KiB
Solidity

// contracts/Implementation.sol
// SPDX-License-Identifier: Apache 2
pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;
import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol";
import "./Bridge.sol";
contract BridgeImplementation is Bridge {
function initialize(
uint16 chainId,
address wormhole,
uint16 governanceChainId,
bytes32 governanceContract,
address tokenImplementation,
address WETH
) initializer public {
setChainId(chainId);
setWormhole(wormhole);
setGovernanceChainId(governanceChainId);
setGovernanceContract(governanceContract);
setTokenImplementation(tokenImplementation);
setWETH(WETH);
}
// Beacon getter for the token contracts
function implementation() public view returns (address) {
return tokenImplementation();
}
modifier initializer() {
address impl = ERC1967Upgrade._getImplementation();
require(
!isInitialized(impl),
"already initialized"
);
setInitialized(impl);
_;
}
}