52 lines
1.1 KiB
Solidity
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);
|
|
|
|
_;
|
|
}
|
|
}
|