From 4f2d881ad6b589f1903552977eff0926f8f4bb0e Mon Sep 17 00:00:00 2001 From: bitbeckers Date: Mon, 20 May 2024 11:23:59 +0200 Subject: [PATCH] feat(fvm): deploy calibrationnet --- contracts/.openzeppelin/unknown-314159.json | 393 ++++++++++++++++++++ contracts/foundry.toml | 1 + contracts/hardhat.config.ts | 35 +- contracts/tasks/deploy-minter.ts | 7 +- 4 files changed, 425 insertions(+), 11 deletions(-) create mode 100644 contracts/.openzeppelin/unknown-314159.json diff --git a/contracts/.openzeppelin/unknown-314159.json b/contracts/.openzeppelin/unknown-314159.json new file mode 100644 index 00000000..422ec443 --- /dev/null +++ b/contracts/.openzeppelin/unknown-314159.json @@ -0,0 +1,393 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xa16DFb32Eb140a6f3F2AC68f41dAd8c7e83C4941", + "txHash": "0xa8dbe73011524ee4b2d8a0e2839bb66a0f713709f38181ae5dddd5cb5100fb1f", + "kind": "uups" + }, + { + "address": "0xC2d179166bc9dbB00A03686a5b17eCe2224c2704", + "txHash": "0xe6976f2858cdbbbf4518a6fc20171a793d36967db9fc63db6c22bc9f0a905d3d", + "kind": "uups" + }, + { + "address": "0xc756B203cA9e13BAB3a93F1dA756bb19ac3C395b", + "txHash": "0xaeb913f6bec55111f48c96c722cac573a4e233bca480a94b9c791e86516d5179", + "kind": "uups" + }, + { + "address": "0x034f8eB38F0AC305B5baEC6266FFDBCEfa67fBD8", + "txHash": "0xe7a6cc41d385e5b0febc5f17579c46cc2712d75baa2f039aaeeb07d516dcde80", + "kind": "uups" + } + ], + "impls": { + "125db54394ee349f18c5e7b6f717dff5868c4ccab68a96eeef38a6321b3f05b2": { + "address": "0x0a0DF97bDdb36eeF95fef089A4aEb7acEaBF2101", + "txHash": "0xd7b85dac85b83d390466c1d3ccaabf63f78f9a676b49bd8bd38f0a0be14369cc", + "layout": { + "solcVersion": "0.8.17", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol:36" + }, + { + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC165Upgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol:41" + }, + { + "label": "_balances", + "offset": 0, + "slot": "101", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_uint256))", + "contract": "ERC1155Upgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol:25" + }, + { + "label": "_operatorApprovals", + "offset": 0, + "slot": "102", + "type": "t_mapping(t_address,t_mapping(t_address,t_bool))", + "contract": "ERC1155Upgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol:28" + }, + { + "label": "_uri", + "offset": 0, + "slot": "103", + "type": "t_string_storage", + "contract": "ERC1155Upgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol:31" + }, + { + "label": "__gap", + "offset": 0, + "slot": "104", + "type": "t_array(t_uint256)47_storage", + "contract": "ERC1155Upgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol:528" + }, + { + "label": "__gap", + "offset": 0, + "slot": "151", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1155BurnableUpgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol:52" + }, + { + "label": "_baseURI", + "offset": 0, + "slot": "201", + "type": "t_string_storage", + "contract": "ERC1155URIStorageUpgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155URIStorageUpgradeable.sol:27" + }, + { + "label": "_tokenURIs", + "offset": 0, + "slot": "202", + "type": "t_mapping(t_uint256,t_string_storage)", + "contract": "ERC1155URIStorageUpgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155URIStorageUpgradeable.sol:30" + }, + { + "label": "__gap", + "offset": 0, + "slot": "203", + "type": "t_array(t_uint256)48_storage", + "contract": "ERC1155URIStorageUpgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/ERC1155URIStorageUpgradeable.sol:77" + }, + { + "label": "_owner", + "offset": 0, + "slot": "251", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "252", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol:94" + }, + { + "label": "__gap", + "offset": 0, + "slot": "301", + "type": "t_array(t_uint256)50_storage", + "contract": "ERC1967UpgradeUpgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol:211" + }, + { + "label": "__gap", + "offset": 0, + "slot": "351", + "type": "t_array(t_uint256)50_storage", + "contract": "UUPSUpgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol:107" + }, + { + "label": "typeCounter", + "offset": 0, + "slot": "401", + "type": "t_uint256", + "contract": "SemiFungible1155", + "src": "src/protocol/SemiFungible1155.sol:27" + }, + { + "label": "owners", + "offset": 0, + "slot": "402", + "type": "t_mapping(t_uint256,t_address)", + "contract": "SemiFungible1155", + "src": "src/protocol/SemiFungible1155.sol:38" + }, + { + "label": "creators", + "offset": 0, + "slot": "403", + "type": "t_mapping(t_uint256,t_address)", + "contract": "SemiFungible1155", + "src": "src/protocol/SemiFungible1155.sol:41" + }, + { + "label": "tokenValues", + "offset": 0, + "slot": "404", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "SemiFungible1155", + "src": "src/protocol/SemiFungible1155.sol:44" + }, + { + "label": "maxIndex", + "offset": 0, + "slot": "405", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "SemiFungible1155", + "src": "src/protocol/SemiFungible1155.sol:47" + }, + { + "label": "__gap", + "offset": 0, + "slot": "406", + "type": "t_array(t_uint256)25_storage", + "contract": "SemiFungible1155", + "src": "src/protocol/SemiFungible1155.sol:648" + }, + { + "label": "merkleRoots", + "offset": 0, + "slot": "431", + "type": "t_mapping(t_uint256,t_bytes32)", + "contract": "AllowlistMinter", + "src": "src/protocol/AllowlistMinter.sol:17" + }, + { + "label": "hasBeenClaimed", + "offset": 0, + "slot": "432", + "type": "t_mapping(t_uint256,t_mapping(t_bytes32,t_bool))", + "contract": "AllowlistMinter", + "src": "src/protocol/AllowlistMinter.sol:18" + }, + { + "label": "maxUnits", + "offset": 0, + "slot": "433", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "AllowlistMinter", + "src": "src/protocol/AllowlistMinter.sol:19" + }, + { + "label": "minted", + "offset": 0, + "slot": "434", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "AllowlistMinter", + "src": "src/protocol/AllowlistMinter.sol:20" + }, + { + "label": "__gap", + "offset": 0, + "slot": "435", + "type": "t_array(t_uint256)26_storage", + "contract": "AllowlistMinter", + "src": "src/protocol/AllowlistMinter.sol:75" + }, + { + "label": "_paused", + "offset": 0, + "slot": "461", + "type": "t_bool", + "contract": "PausableUpgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol:29" + }, + { + "label": "__gap", + "offset": 0, + "slot": "462", + "type": "t_array(t_uint256)49_storage", + "contract": "PausableUpgradeable", + "src": "lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol:116" + }, + { + "label": "typeRestrictions", + "offset": 0, + "slot": "511", + "type": "t_mapping(t_uint256,t_enum(TransferRestrictions)19459)", + "contract": "HypercertMinter", + "src": "src/protocol/HypercertMinter.sol:20" + }, + { + "label": "__gap", + "offset": 0, + "slot": "512", + "type": "t_array(t_uint256)29_storage", + "contract": "HypercertMinter", + "src": "src/protocol/HypercertMinter.sol:258" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)25_storage": { + "label": "uint256[25]", + "numberOfBytes": "800" + }, + "t_array(t_uint256)26_storage": { + "label": "uint256[26]", + "numberOfBytes": "832" + }, + "t_array(t_uint256)29_storage": { + "label": "uint256[29]", + "numberOfBytes": "928" + }, + "t_array(t_uint256)47_storage": { + "label": "uint256[47]", + "numberOfBytes": "1504" + }, + "t_array(t_uint256)48_storage": { + "label": "uint256[48]", + "numberOfBytes": "1536" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_enum(TransferRestrictions)19459": { + "label": "enum IHypercertToken.TransferRestrictions", + "members": [ + "AllowAll", + "DisallowAll", + "FromCreatorOnly" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_bool))": { + "label": "mapping(address => mapping(address => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_bool)": { + "label": "mapping(bytes32 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bytes32)": { + "label": "mapping(uint256 => bytes32)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_enum(TransferRestrictions)19459)": { + "label": "mapping(uint256 => enum IHypercertToken.TransferRestrictions)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_bytes32,t_bool))": { + "label": "mapping(uint256 => mapping(bytes32 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_string_storage)": { + "label": "mapping(uint256 => string)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "namespaces": {} + } + } + } +} diff --git a/contracts/foundry.toml b/contracts/foundry.toml index b85161c5..0c815ccf 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -40,6 +40,7 @@ goerli = "https://eth-goerli.g.alchemy.com/v2/${ALCHEMY_API_KEY}" optimism = "https://opt-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}" sepolia = "https://sepolia.infura.io/v3/${INFURA_API_KEY}" celo = "https://forno.celo.org" +calibrationnet = "https://rpc.ankr.com/filecoin_testnet" [fmt] number_underscore = "thousands" diff --git a/contracts/hardhat.config.ts b/contracts/hardhat.config.ts index 54f635b3..a453d866 100644 --- a/contracts/hardhat.config.ts +++ b/contracts/hardhat.config.ts @@ -70,6 +70,8 @@ const chainIds = { // Base "base-sepolia": 84532, "base-mainnet": 8453, + // Filecoin + calibrationnet: 314159, }; function getChainConfig(chain: keyof typeof chainIds) { @@ -116,6 +118,13 @@ function getChainConfig(chain: keyof typeof chainIds) { }; } + if (chain === "calibrationnet") { + config = { + ...config, + url: "https://api.calibration.node.glif.io/rpc/v1", + }; + } + return config; } @@ -161,16 +170,9 @@ const config: HardhatUserConfig = { celo: CELOSCAN_API_KEY!, base: BASESCAN_API_KEY!, "base-sepolia": BASESCAN_API_KEY!, + calibrationnet: "lol", }, customChains: [ - { - network: "celo", - chainId: 42220, - urls: { - apiURL: "https://api.celoscan.io/api", - browserURL: "https://celoscan.io/", - }, - }, { network: "base-sepolia", chainId: 84532, @@ -179,6 +181,22 @@ const config: HardhatUserConfig = { browserURL: "https://sepolia.basescan.org", }, }, + { + network: "calibrationnet", + chainId: 314159, + urls: { + apiURL: "https://calibration.filfox.info/api/v1/tools/verifyContract", + browserURL: "https://filfox.info/", + }, + }, + { + network: "celo", + chainId: 42220, + urls: { + apiURL: "https://api.celoscan.io/api", + browserURL: "https://celoscan.io/", + }, + }, ], }, networks: { @@ -211,6 +229,7 @@ const config: HardhatUserConfig = { "optimism-mainnet": getChainConfig("optimism-mainnet"), "base-sepolia": getChainConfig("base-sepolia"), "base-mainnet": getChainConfig("base-mainnet"), + calibrationnet: getChainConfig("calibrationnet"), }, paths: { cache: "./cache_hardhat", // Use a different cache for Hardhat than Foundry diff --git a/contracts/tasks/deploy-minter.ts b/contracts/tasks/deploy-minter.ts index a689f20a..e0647ed7 100644 --- a/contracts/tasks/deploy-minter.ts +++ b/contracts/tasks/deploy-minter.ts @@ -1,9 +1,10 @@ -import { task } from "hardhat/config"; +import { task, types } from "hardhat/config"; import { writeFile } from "node:fs/promises"; task("deploy-minter", "Deploy contracts and verify") .addOptionalParam("output", "write the details of the deployment to this file if this is set") - .setAction(async ({ output }, { ethers, upgrades, network, run }) => { + .addOptionalParam("verify", "verify the contract on etherscan", "true", types.boolean) + .setAction(async ({ output, verify }, { ethers, upgrades, network, run }) => { console.log("Using address: ", await ethers.getSigners().then((res) => res[0].address)); const HypercertMinter = await ethers.getContractFactory("HypercertMinter"); const hypercertMinter = await upgrades.deployProxy(HypercertMinter, { @@ -31,7 +32,7 @@ task("deploy-minter", "Deploy contracts and verify") ); } - if (network.name !== "hardhat" && network.name !== "localhost") { + if (verify && network.name !== "hardhat" && network.name !== "localhost") { try { const code = await hypercertMinter.instance?.provider.getCode(address); if (code === "0x") {