Commit 4f54bcdb authored by mergify[bot]'s avatar mergify[bot] Committed by GitHub

Merge pull request #4879 from ethereum-optimism/fix/mintable-token-versions

contracts-bedrock: add semver to mintable tokens
parents fff7b7d6 1c9b5bca
This diff is collapsed.
This diff is collapsed.
...@@ -124,21 +124,21 @@ L2CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 122621) ...@@ -124,21 +124,21 @@ L2CrossDomainMessenger_Test:test_sendMessage_succeeds() (gas: 122621)
L2CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 134715) L2CrossDomainMessenger_Test:test_sendMessage_twice_succeeds() (gas: 134715)
L2CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 52578) L2CrossDomainMessenger_Test:test_xDomainMessageSender_reset_succeeds() (gas: 52578)
L2CrossDomainMessenger_Test:test_xDomainSender_senderNotSet_reverts() (gas: 10524) L2CrossDomainMessenger_Test:test_xDomainSender_senderNotSet_reverts() (gas: 10524)
L2ERC721Bridge_Test:test_bridgeERC721To_localTokenZeroAddress_reverts() (gas: 26432) L2ERC721Bridge_Test:test_bridgeERC721To_localTokenZeroAddress_reverts() (gas: 26454)
L2ERC721Bridge_Test:test_bridgeERC721To_remoteTokenZeroAddress_reverts() (gas: 21748) L2ERC721Bridge_Test:test_bridgeERC721To_remoteTokenZeroAddress_reverts() (gas: 21770)
L2ERC721Bridge_Test:test_bridgeERC721To_succeeds() (gas: 146998) L2ERC721Bridge_Test:test_bridgeERC721To_succeeds() (gas: 146997)
L2ERC721Bridge_Test:test_bridgeERC721To_wrongOwner_reverts() (gas: 29427) L2ERC721Bridge_Test:test_bridgeERC721To_wrongOwner_reverts() (gas: 29471)
L2ERC721Bridge_Test:test_bridgeERC721_fromContract_reverts() (gas: 22149) L2ERC721Bridge_Test:test_bridgeERC721_fromContract_reverts() (gas: 22171)
L2ERC721Bridge_Test:test_bridgeERC721_localTokenZeroAddress_reverts() (gas: 24244) L2ERC721Bridge_Test:test_bridgeERC721_localTokenZeroAddress_reverts() (gas: 24266)
L2ERC721Bridge_Test:test_bridgeERC721_remoteTokenZeroAddress_reverts() (gas: 19584) L2ERC721Bridge_Test:test_bridgeERC721_remoteTokenZeroAddress_reverts() (gas: 19606)
L2ERC721Bridge_Test:test_bridgeERC721_succeeds() (gas: 144600) L2ERC721Bridge_Test:test_bridgeERC721_succeeds() (gas: 144599)
L2ERC721Bridge_Test:test_bridgeERC721_wrongOwner_reverts() (gas: 29257) L2ERC721Bridge_Test:test_bridgeERC721_wrongOwner_reverts() (gas: 29301)
L2ERC721Bridge_Test:test_constructor_succeeds() (gas: 10133) L2ERC721Bridge_Test:test_constructor_succeeds() (gas: 10133)
L2ERC721Bridge_Test:test_finalizeBridgeERC721_alreadyExists_reverts() (gas: 29106) L2ERC721Bridge_Test:test_finalizeBridgeERC721_alreadyExists_reverts() (gas: 29128)
L2ERC721Bridge_Test:test_finalizeBridgeERC721_notFromRemoteMessenger_reverts() (gas: 19852) L2ERC721Bridge_Test:test_finalizeBridgeERC721_notFromRemoteMessenger_reverts() (gas: 19852)
L2ERC721Bridge_Test:test_finalizeBridgeERC721_notViaLocalMessenger_reverts() (gas: 16148) L2ERC721Bridge_Test:test_finalizeBridgeERC721_notViaLocalMessenger_reverts() (gas: 16148)
L2ERC721Bridge_Test:test_finalizeBridgeERC721_selfToken_reverts() (gas: 17637) L2ERC721Bridge_Test:test_finalizeBridgeERC721_selfToken_reverts() (gas: 17637)
L2ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 168905) L2ERC721Bridge_Test:test_finalizeBridgeERC721_succeeds() (gas: 168926)
L2OutputOracleTest:test_computeL2Timestamp_succeeds() (gas: 37206) L2OutputOracleTest:test_computeL2Timestamp_succeeds() (gas: 37206)
L2OutputOracleTest:test_constructor_badTimestamp_reverts() (gas: 70767) L2OutputOracleTest:test_constructor_badTimestamp_reverts() (gas: 70767)
L2OutputOracleTest:test_constructor_l2BlockTimeZero_reverts() (gas: 45786) L2OutputOracleTest:test_constructor_l2BlockTimeZero_reverts() (gas: 45786)
...@@ -167,32 +167,32 @@ L2OutputOracleUpgradeable_Test:test_initValuesOnProxy_succeeds() (gas: 26093) ...@@ -167,32 +167,32 @@ L2OutputOracleUpgradeable_Test:test_initValuesOnProxy_succeeds() (gas: 26093)
L2OutputOracleUpgradeable_Test:test_initializeImpl_alreadyInitialized_reverts() (gas: 15149) L2OutputOracleUpgradeable_Test:test_initializeImpl_alreadyInitialized_reverts() (gas: 15149)
L2OutputOracleUpgradeable_Test:test_initializeProxy_alreadyInitialized_reverts() (gas: 20131) L2OutputOracleUpgradeable_Test:test_initializeProxy_alreadyInitialized_reverts() (gas: 20131)
L2OutputOracleUpgradeable_Test:test_upgrading_succeeds() (gas: 180413) L2OutputOracleUpgradeable_Test:test_upgrading_succeeds() (gas: 180413)
L2StandardBridge_BridgeERC20To_Test:test_bridgeERC20To_succeeds() (gas: 387969) L2StandardBridge_BridgeERC20To_Test:test_bridgeERC20To_succeeds() (gas: 387796)
L2StandardBridge_BridgeERC20To_Test:test_withdrawTo_withdrawingERC20_succeeds() (gas: 388200) L2StandardBridge_BridgeERC20To_Test:test_withdrawTo_withdrawingERC20_succeeds() (gas: 388044)
L2StandardBridge_BridgeERC20_Test:test_bridgeERC20_succeeds() (gas: 383692) L2StandardBridge_BridgeERC20_Test:test_bridgeERC20_succeeds() (gas: 383520)
L2StandardBridge_BridgeERC20_Test:test_withdraw_notEOA_reverts() (gas: 251790) L2StandardBridge_BridgeERC20_Test:test_withdraw_notEOA_reverts() (gas: 251687)
L2StandardBridge_BridgeERC20_Test:test_withdraw_withdrawingERC20_succeeds() (gas: 383877) L2StandardBridge_BridgeERC20_Test:test_withdraw_withdrawingERC20_succeeds() (gas: 383722)
L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_incorrectValue_reverts() (gas: 23798) L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_incorrectValue_reverts() (gas: 23798)
L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 23960) L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_sendToMessenger_reverts() (gas: 23960)
L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_sendToSelf_reverts() (gas: 23848) L2StandardBridge_Bridge_Test:test_finalizeBridgeETH_sendToSelf_reverts() (gas: 23848)
L2StandardBridge_Bridge_Test:test_finalizeDeposit_depositingERC20_succeeds() (gas: 90989) L2StandardBridge_Bridge_Test:test_finalizeDeposit_depositingERC20_succeeds() (gas: 91011)
L2StandardBridge_Bridge_Test:test_finalizeDeposit_depositingETH_succeeds() (gas: 89821) L2StandardBridge_Bridge_Test:test_finalizeDeposit_depositingETH_succeeds() (gas: 89843)
L2StandardBridge_FinalizeBridgeETH_Test:test_finalizeBridgeETH_succeeds() (gas: 43155) L2StandardBridge_FinalizeBridgeETH_Test:test_finalizeBridgeETH_succeeds() (gas: 43155)
L2StandardBridge_Test:test_initialize_succeeds() (gas: 24247) L2StandardBridge_Test:test_initialize_succeeds() (gas: 24247)
L2StandardBridge_Test:test_receive_succeeds() (gas: 177145) L2StandardBridge_Test:test_receive_succeeds() (gas: 177167)
L2StandardBridge_Test:test_withdraw_insufficientValue_reverts() (gas: 19615) L2StandardBridge_Test:test_withdraw_insufficientValue_reverts() (gas: 19637)
L2ToL1MessagePasserTest:test_burn_succeeds() (gas: 112572) L2ToL1MessagePasserTest:test_burn_succeeds() (gas: 112572)
L2ToL1MessagePasserTest:test_initiateWithdrawal_fromContract_succeeds() (gas: 70423) L2ToL1MessagePasserTest:test_initiateWithdrawal_fromContract_succeeds() (gas: 70423)
L2ToL1MessagePasserTest:test_initiateWithdrawal_fromEOA_succeeds() (gas: 75874) L2ToL1MessagePasserTest:test_initiateWithdrawal_fromEOA_succeeds() (gas: 75874)
LegacyERC20ETH_Test:test_approve_doesNotExist_reverts() (gas: 10701) LegacyERC20ETH_Test:test_approve_doesNotExist_reverts() (gas: 10701)
LegacyERC20ETH_Test:test_burn_doesNotExist_reverts() (gas: 10615) LegacyERC20ETH_Test:test_burn_doesNotExist_reverts() (gas: 10592)
LegacyERC20ETH_Test:test_crossDomain_succeeds() (gas: 6362) LegacyERC20ETH_Test:test_crossDomain_succeeds() (gas: 6340)
LegacyERC20ETH_Test:test_decreaseAllowance_doesNotExist_reverts() (gas: 10679) LegacyERC20ETH_Test:test_decreaseAllowance_doesNotExist_reverts() (gas: 10701)
LegacyERC20ETH_Test:test_increaseAllowance_doesNotExist_reverts() (gas: 10689) LegacyERC20ETH_Test:test_increaseAllowance_doesNotExist_reverts() (gas: 10689)
LegacyERC20ETH_Test:test_metadata_succeeds() (gas: 15414) LegacyERC20ETH_Test:test_metadata_succeeds() (gas: 15492)
LegacyERC20ETH_Test:test_mint_doesNotExist_reverts() (gas: 10649) LegacyERC20ETH_Test:test_mint_doesNotExist_reverts() (gas: 10649)
LegacyERC20ETH_Test:test_transferFrom_doesNotExist_reverts() (gas: 12890) LegacyERC20ETH_Test:test_transferFrom_doesNotExist_reverts() (gas: 12890)
LegacyERC20ETH_Test:test_transfer_doesNotExist_reverts() (gas: 10733) LegacyERC20ETH_Test:test_transfer_doesNotExist_reverts() (gas: 10755)
LegacyMessagePasser_Test:test_passMessageToL1_succeeds() (gas: 34518) LegacyMessagePasser_Test:test_passMessageToL1_succeeds() (gas: 34518)
MerkleTrie_get_Test:test_get_corruptedProof_reverts() (gas: 5713) MerkleTrie_get_Test:test_get_corruptedProof_reverts() (gas: 5713)
MerkleTrie_get_Test:test_get_extraProofElements_reverts() (gas: 60653) MerkleTrie_get_Test:test_get_extraProofElements_reverts() (gas: 60653)
...@@ -225,27 +225,28 @@ MintManager_upgrade_Test:test_upgrade_fromNotOwner_reverts() (gas: 10929) ...@@ -225,27 +225,28 @@ MintManager_upgrade_Test:test_upgrade_fromNotOwner_reverts() (gas: 10929)
MintManager_upgrade_Test:test_upgrade_fromOwner_succeeds() (gas: 23411) MintManager_upgrade_Test:test_upgrade_fromOwner_succeeds() (gas: 23411)
MintManager_upgrade_Test:test_upgrade_toZeroAddress_reverts() (gas: 10958) MintManager_upgrade_Test:test_upgrade_toZeroAddress_reverts() (gas: 10958)
OptimismMintableERC20_Test:test_bridge_succeeds() (gas: 7643) OptimismMintableERC20_Test:test_bridge_succeeds() (gas: 7643)
OptimismMintableERC20_Test:test_burn_notBridge_reverts() (gas: 11165) OptimismMintableERC20_Test:test_burn_notBridge_reverts() (gas: 11142)
OptimismMintableERC20_Test:test_burn_succeeds() (gas: 51013) OptimismMintableERC20_Test:test_burn_succeeds() (gas: 50960)
OptimismMintableERC20_Test:test_erc165_supportsInterface_succeeds() (gas: 7742) OptimismMintableERC20_Test:test_erc165_supportsInterface_succeeds() (gas: 7742)
OptimismMintableERC20_Test:test_l1Token_succeeds() (gas: 7599) OptimismMintableERC20_Test:test_l1Token_succeeds() (gas: 7621)
OptimismMintableERC20_Test:test_l2Bridge_succeeds() (gas: 7665) OptimismMintableERC20_Test:test_l2Bridge_succeeds() (gas: 7621)
OptimismMintableERC20_Test:test_legacy_succeeds() (gas: 14344) OptimismMintableERC20_Test:test_legacy_succeeds() (gas: 14344)
OptimismMintableERC20_Test:test_mint_notBridge_reverts() (gas: 11121) OptimismMintableERC20_Test:test_mint_notBridge_reverts() (gas: 11143)
OptimismMintableERC20_Test:test_mint_succeeds() (gas: 63609) OptimismMintableERC20_Test:test_mint_succeeds() (gas: 63588)
OptimismMintableERC20_Test:test_remoteToken_succeeds() (gas: 7622) OptimismMintableERC20_Test:test_remoteToken_succeeds() (gas: 7644)
OptimismMintableERC20_Test:test_semver_succeeds() (gas: 8789)
OptimismMintableTokenFactory_Test:test_bridge_succeeds() (gas: 7602) OptimismMintableTokenFactory_Test:test_bridge_succeeds() (gas: 7602)
OptimismMintableTokenFactory_Test:test_createStandardL2Token_remoteIsZero_succeeds() (gas: 9390) OptimismMintableTokenFactory_Test:test_createStandardL2Token_remoteIsZero_succeeds() (gas: 9390)
OptimismMintableTokenFactory_Test:test_createStandardL2Token_sameTwice_succeeds() (gas: 2176667) OptimismMintableTokenFactory_Test:test_createStandardL2Token_sameTwice_succeeds() (gas: 2523203)
OptimismMintableTokenFactory_Test:test_createStandardL2Token_succeeds() (gas: 1095273) OptimismMintableTokenFactory_Test:test_createStandardL2Token_succeeds() (gas: 1268541)
OptimismMintableERC721_Test:test_burn_notBridge_reverts() (gas: 136922) OptimismMintableERC721_Test:test_burn_notBridge_reverts() (gas: 136922)
OptimismMintableERC721_Test:test_burn_succeeds() (gas: 118779) OptimismMintableERC721_Test:test_burn_succeeds() (gas: 118796)
OptimismMintableERC721_Test:test_constructor_succeeds() (gas: 24162) OptimismMintableERC721_Test:test_constructor_succeeds() (gas: 28279)
OptimismMintableERC721_Test:test_safeMint_notBridge_reverts() (gas: 11142) OptimismMintableERC721_Test:test_safeMint_notBridge_reverts() (gas: 11142)
OptimismMintableERC721_Test:test_safeMint_succeeds() (gas: 140502) OptimismMintableERC721_Test:test_safeMint_succeeds() (gas: 140524)
OptimismMintableERC721_Test:test_tokenURI_succeeds() (gas: 163420) OptimismMintableERC721_Test:test_tokenURI_succeeds() (gas: 163420)
OptimismMintableERC721Factory_Test:test_constructor_succeeds() (gas: 8262) OptimismMintableERC721Factory_Test:test_constructor_succeeds() (gas: 8262)
OptimismMintableERC721Factory_Test:test_createOptimismMintableERC721_succeeds() (gas: 2276440) OptimismMintableERC721Factory_Test:test_createOptimismMintableERC721_succeeds() (gas: 2336687)
OptimismMintableERC721Factory_Test:test_createOptimismMintableERC721_zeroRemoteToken_reverts() (gas: 9395) OptimismMintableERC721Factory_Test:test_createOptimismMintableERC721_zeroRemoteToken_reverts() (gas: 9395)
OptimismPortalUpgradeable_Test:test_initialize_cannotInitImpl_reverts() (gas: 10791) OptimismPortalUpgradeable_Test:test_initialize_cannotInitImpl_reverts() (gas: 10791)
OptimismPortalUpgradeable_Test:test_initialize_cannotInitProxy_reverts() (gas: 15833) OptimismPortalUpgradeable_Test:test_initialize_cannotInitProxy_reverts() (gas: 15833)
......
...@@ -12,8 +12,8 @@ contract OptimismMintableERC20_Test is Bridge_Initializer { ...@@ -12,8 +12,8 @@ contract OptimismMintableERC20_Test is Bridge_Initializer {
event Mint(address indexed account, uint256 amount); event Mint(address indexed account, uint256 amount);
event Burn(address indexed account, uint256 amount); event Burn(address indexed account, uint256 amount);
function setUp() public override { function test_semver_succeeds() external {
super.setUp(); assertEq(L2Token.version(), "1.0.0");
} }
function test_remoteToken_succeeds() external { function test_remoteToken_succeeds() external {
......
...@@ -44,6 +44,7 @@ contract OptimismMintableERC721_Test is ERC721Bridge_Initializer { ...@@ -44,6 +44,7 @@ contract OptimismMintableERC721_Test is ERC721Bridge_Initializer {
assertEq(L2Token.REMOTE_TOKEN(), address(L1Token)); assertEq(L2Token.REMOTE_TOKEN(), address(L1Token));
assertEq(L2Token.BRIDGE(), address(L2Bridge)); assertEq(L2Token.BRIDGE(), address(L2Bridge));
assertEq(L2Token.REMOTE_CHAIN_ID(), 1); assertEq(L2Token.REMOTE_CHAIN_ID(), 1);
assertEq(L2Token.version(), "1.0.0");
} }
function test_safeMint_succeeds() external { function test_safeMint_succeeds() external {
......
...@@ -4,6 +4,7 @@ pragma solidity 0.8.15; ...@@ -4,6 +4,7 @@ pragma solidity 0.8.15;
import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
import { ILegacyMintableERC20, IOptimismMintableERC20 } from "./IOptimismMintableERC20.sol"; import { ILegacyMintableERC20, IOptimismMintableERC20 } from "./IOptimismMintableERC20.sol";
import { Semver } from "../universal/Semver.sol";
/** /**
* @title OptimismMintableERC20 * @title OptimismMintableERC20
...@@ -13,7 +14,7 @@ import { ILegacyMintableERC20, IOptimismMintableERC20 } from "./IOptimismMintabl ...@@ -13,7 +14,7 @@ import { ILegacyMintableERC20, IOptimismMintableERC20 } from "./IOptimismMintabl
* Designed to be backwards compatible with the older StandardL2ERC20 token which was only * Designed to be backwards compatible with the older StandardL2ERC20 token which was only
* meant for use on L2. * meant for use on L2.
*/ */
contract OptimismMintableERC20 is IOptimismMintableERC20, ILegacyMintableERC20, ERC20 { contract OptimismMintableERC20 is IOptimismMintableERC20, ILegacyMintableERC20, ERC20, Semver {
/** /**
* @notice Address of the corresponding version of this token on the remote chain. * @notice Address of the corresponding version of this token on the remote chain.
*/ */
...@@ -49,6 +50,8 @@ contract OptimismMintableERC20 is IOptimismMintableERC20, ILegacyMintableERC20, ...@@ -49,6 +50,8 @@ contract OptimismMintableERC20 is IOptimismMintableERC20, ILegacyMintableERC20,
} }
/** /**
* @custom:semver 1.0.0
*
* @param _bridge Address of the L2 standard bridge. * @param _bridge Address of the L2 standard bridge.
* @param _remoteToken Address of the corresponding L1 token. * @param _remoteToken Address of the corresponding L1 token.
* @param _name ERC20 name. * @param _name ERC20 name.
...@@ -59,7 +62,7 @@ contract OptimismMintableERC20 is IOptimismMintableERC20, ILegacyMintableERC20, ...@@ -59,7 +62,7 @@ contract OptimismMintableERC20 is IOptimismMintableERC20, ILegacyMintableERC20,
address _remoteToken, address _remoteToken,
string memory _name, string memory _name,
string memory _symbol string memory _symbol
) ERC20(_name, _symbol) { ) ERC20(_name, _symbol) Semver(1, 0, 0) {
REMOTE_TOKEN = _remoteToken; REMOTE_TOKEN = _remoteToken;
BRIDGE = _bridge; BRIDGE = _bridge;
} }
......
...@@ -44,11 +44,15 @@ contract OptimismMintableERC20Factory is Semver { ...@@ -44,11 +44,15 @@ contract OptimismMintableERC20Factory is Semver {
); );
/** /**
* @custom:semver 1.0.0 * @custom:semver 1.1.0
*
* @notice The semver MUST be bumped any time that there is a change in
* the OptimismMintableERC20 token contract since this contract
* is responsible for deploying OptimismMintableERC20 contracts.
* *
* @param _bridge Address of the StandardBridge on this chain. * @param _bridge Address of the StandardBridge on this chain.
*/ */
constructor(address _bridge) Semver(1, 0, 0) { constructor(address _bridge) Semver(1, 1, 0) {
BRIDGE = _bridge; BRIDGE = _bridge;
} }
......
...@@ -8,6 +8,7 @@ import { ERC721 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol"; ...@@ -8,6 +8,7 @@ import { ERC721 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; import { Strings } from "@openzeppelin/contracts/utils/Strings.sol";
import { IOptimismMintableERC721 } from "./IOptimismMintableERC721.sol"; import { IOptimismMintableERC721 } from "./IOptimismMintableERC721.sol";
import { Semver } from "../universal/Semver.sol";
/** /**
* @title OptimismMintableERC721 * @title OptimismMintableERC721
...@@ -15,7 +16,7 @@ import { IOptimismMintableERC721 } from "./IOptimismMintableERC721.sol"; ...@@ -15,7 +16,7 @@ import { IOptimismMintableERC721 } from "./IOptimismMintableERC721.sol";
* typically an Optimism representation of an Ethereum-based token. Standard reference * typically an Optimism representation of an Ethereum-based token. Standard reference
* implementation that can be extended or modified according to your needs. * implementation that can be extended or modified according to your needs.
*/ */
contract OptimismMintableERC721 is ERC721Enumerable, IOptimismMintableERC721 { contract OptimismMintableERC721 is ERC721Enumerable, IOptimismMintableERC721, Semver {
/** /**
* @inheritdoc IOptimismMintableERC721 * @inheritdoc IOptimismMintableERC721
*/ */
...@@ -45,6 +46,8 @@ contract OptimismMintableERC721 is ERC721Enumerable, IOptimismMintableERC721 { ...@@ -45,6 +46,8 @@ contract OptimismMintableERC721 is ERC721Enumerable, IOptimismMintableERC721 {
} }
/** /**
* @custom:semver 1.0.0
*
* @param _bridge Address of the bridge on this network. * @param _bridge Address of the bridge on this network.
* @param _remoteChainId Chain ID where the remote token is deployed. * @param _remoteChainId Chain ID where the remote token is deployed.
* @param _remoteToken Address of the corresponding token on the other network. * @param _remoteToken Address of the corresponding token on the other network.
...@@ -57,7 +60,7 @@ contract OptimismMintableERC721 is ERC721Enumerable, IOptimismMintableERC721 { ...@@ -57,7 +60,7 @@ contract OptimismMintableERC721 is ERC721Enumerable, IOptimismMintableERC721 {
address _remoteToken, address _remoteToken,
string memory _name, string memory _name,
string memory _symbol string memory _symbol
) ERC721(_name, _symbol) { ) ERC721(_name, _symbol) Semver(1, 0, 0) {
require(_bridge != address(0), "OptimismMintableERC721: bridge cannot be address(0)"); require(_bridge != address(0), "OptimismMintableERC721: bridge cannot be address(0)");
require(_remoteChainId != 0, "OptimismMintableERC721: remote chain id cannot be zero"); require(_remoteChainId != 0, "OptimismMintableERC721: remote chain id cannot be zero");
require( require(
......
...@@ -38,12 +38,15 @@ contract OptimismMintableERC721Factory is Semver { ...@@ -38,12 +38,15 @@ contract OptimismMintableERC721Factory is Semver {
); );
/** /**
* @custom:semver 1.0.0 * @custom:semver 1.1.0
* @notice The semver MUST be bumped any time that there is a change in
* the OptimismMintableERC721 token contract since this contract
* is responsible for deploying OptimismMintableERC721 contracts.
* *
* @param _bridge Address of the ERC721 bridge on this network. * @param _bridge Address of the ERC721 bridge on this network.
* @param _remoteChainId Chain ID for the remote network. * @param _remoteChainId Chain ID for the remote network.
*/ */
constructor(address _bridge, uint256 _remoteChainId) Semver(1, 0, 0) { constructor(address _bridge, uint256 _remoteChainId) Semver(1, 1, 0) {
BRIDGE = _bridge; BRIDGE = _bridge;
REMOTE_CHAIN_ID = _remoteChainId; REMOTE_CHAIN_ID = _remoteChainId;
} }
......
...@@ -382,7 +382,8 @@ const check = { ...@@ -382,7 +382,8 @@ const check = {
await assertSemver( await assertSemver(
OptimismMintableERC20Factory, OptimismMintableERC20Factory,
'OptimismMintableERC20Factory' 'OptimismMintableERC20Factory',
'1.1.0'
) )
const BRIDGE = await OptimismMintableERC20Factory.BRIDGE() const BRIDGE = await OptimismMintableERC20Factory.BRIDGE()
...@@ -547,7 +548,8 @@ const check = { ...@@ -547,7 +548,8 @@ const check = {
await assertSemver( await assertSemver(
OptimismMintableERC721Factory, OptimismMintableERC721Factory,
'OptimismMintableERC721Factory' 'OptimismMintableERC721Factory',
'1.1.0'
) )
const BRIDGE = await OptimismMintableERC721Factory.BRIDGE() const BRIDGE = await OptimismMintableERC721Factory.BRIDGE()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment