From 5097665612301b3266f813e5c0fc371eddbfc73e Mon Sep 17 00:00:00 2001 From: Totis Date: Tue, 15 Mar 2022 12:51:16 +0900 Subject: [PATCH 1/3] Mainnet launch contracts --- .openzeppelin/mainnet.json | 645 +++++++++++++++++++++++++++++++ .openzeppelin/rinkeby.json | 386 ++++++++++++++++++ .openzeppelin/unknown-31337.json | 88 +++-- contracts/FeeSharingSetter.sol | 4 +- contracts/FraktalAirdrop.sol | 7 + contracts/FraktalMarket.sol | 6 + hardhat.config.js | 4 + scripts/deploy.js | 93 +++-- 8 files changed, 1175 insertions(+), 58 deletions(-) create mode 100644 .openzeppelin/mainnet.json diff --git a/.openzeppelin/mainnet.json b/.openzeppelin/mainnet.json new file mode 100644 index 0000000..c88f190 --- /dev/null +++ b/.openzeppelin/mainnet.json @@ -0,0 +1,645 @@ +{ + "manifestVersion": "3.2", + "admin": { + "address": "0xfA4b3c3A375ED28E830c7309b9B7d3057373cb32", + "txHash": "0x15777aaf4323f05a54391e5aed6dd3f851655fca1b3b811091742d788a2ed67a", + "deployTransaction": { + "hash": "0x15777aaf4323f05a54391e5aed6dd3f851655fca1b3b811091742d788a2ed67a", + "type": 2, + "accessList": [], + "blockHash": null, + "blockNumber": null, + "transactionIndex": null, + "confirmations": 0, + "from": "0x101Abf65Bea7d6f19E7E539967424e6e90b7bDB7", + "gasPrice": { + "type": "BigNumber", + "hex": "0x04b7b79d89" + }, + "maxPriorityFeePerGas": { + "type": "BigNumber", + "hex": "0x59682f00" + }, + "maxFeePerGas": { + "type": "BigNumber", + "hex": "0x04b7b79d89" + }, + "gasLimit": { + "type": "BigNumber", + "hex": "0x0762b4" + }, + "to": null, + "value": { + "type": "BigNumber", + "hex": "0x00" + }, + "nonce": 5, + "data": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610759806100616000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead146101645761007b565b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610515565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee366004610554565b610292565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461058c565b61031c565b34801561013057600080fd5b506100d161013f366004610554565b6103ad565b34801561015057600080fd5b506100d161015f366004610515565b610405565b34801561017057600080fd5b506100a061017f366004610515565b6104ef565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d9190610538565b949350505050565b6000546001600160a01b031633146102485760405162461bcd60e51b815260040161023f906106c0565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102bc5760405162461bcd60e51b815260040161023f906106c0565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561030057600080fd5b505af1158015610314573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146103465760405162461bcd60e51b815260040161023f906106c0565b60405163278f794360e11b81526001600160a01b03841690634f1ef286903490610376908690869060040161065d565b6000604051808303818588803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146103d75760405162461bcd60e51b815260040161023f906106c0565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe6906024016102e6565b6000546001600160a01b0316331461042f5760405162461bcd60e51b815260040161023f906106c0565b6001600160a01b0381166104945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b600060208284031215610526578081fd5b81356105318161070b565b9392505050565b600060208284031215610549578081fd5b81516105318161070b565b60008060408385031215610566578081fd5b82356105718161070b565b915060208301356105818161070b565b809150509250929050565b6000806000606084860312156105a0578081fd5b83356105ab8161070b565b925060208401356105bb8161070b565b9150604084013567ffffffffffffffff808211156105d7578283fd5b818601915086601f8301126105ea578283fd5b8135818111156105fc576105fc6106f5565b604051601f8201601f19908116603f01168101908382118183101715610624576106246106f5565b8160405282815289602084870101111561063c578586fd5b82602086016020830137856020848301015280955050505050509250925092565b600060018060a01b038416825260206040818401528351806040850152825b818110156106985785810183015185820160600152820161067c565b818111156106a95783606083870101525b50601f01601f191692909201606001949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461072057600080fd5b5056fea2646970667358221220d849f96f3086b9f82cdcf665adb8c697ace05638da1c7c16ab2d26293717af6764736f6c63430008020033", + "r": "0xaf9da3d38f7793b4b2aa98418e89346902313432deeb8409489f41cf2b4ce8f3", + "s": "0x5055ceed17cc345ba1696c34eafa50f9426018a2a897ec4c114eefb14b3952c6", + "v": 1, + "creates": "0xfA4b3c3A375ED28E830c7309b9B7d3057373cb32", + "chainId": 1 + } + }, + "proxies": [ + { + "address": "0x5DF977d385254D9a66ab8cD35e87E1E0c419b135", + "txHash": "0x27a29d0ebe2c8b1f71925fbabef789f23ce663567bfe7e0ec36907d613665678", + "kind": "transparent" + }, + { + "address": "0x244763Ea2039D880B62D2BA427d8919Eba6ee50B", + "txHash": "0x7cc2fcfb07af5de7bac50a4fd3488aadef0f3ef9ac27cc4cf7e0119ad5c3b22d", + "kind": "transparent" + }, + { + "address": "0xa74a87Da1E4c6f3a742D3e4DDe6750a957Ca3aC3", + "txHash": "0x1f77f49739482bd6cb9fcce43c4750ce53d0f369c1422e78db2cfdd746758d3c", + "kind": "transparent" + } + ], + "impls": { + "3f49dc5b32ec07658e7b872a80a69acfff34f8bd7ad35514235a022d5a23ce21": { + "address": "0x9e7F9d3638Fe2EFda02672B22F3c09238fFa63Ca", + "txHash": "0x75756f10d22a9ac656aed26fc6c848981168b88c8f57c8b4be6750141832772e", + "layout": { + "storage": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:39" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:44" + }, + { + "contract": "ContextUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" + }, + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "contract": "OwnableUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)49_storage", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:82" + }, + { + "contract": "ERC165Upgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:36" + }, + { + "contract": "ERC1155ReceiverUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC1155/utils/ERC1155ReceiverUpgradeable.sol:27" + }, + { + "contract": "ERC1155HolderUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC1155/utils/ERC1155HolderUpgradeable.sol:40" + }, + { + "contract": "ERC721HolderUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/utils/ERC721HolderUpgradeable.sol:35" + }, + { + "contract": "FraktalFactory", + "label": "Fraktalimplementation", + "type": "t_address", + "src": "contracts/FraktalFactory.sol:16" + }, + { + "contract": "FraktalFactory", + "label": "revenueChannelImplementation", + "type": "t_address", + "src": "contracts/FraktalFactory.sol:17" + }, + { + "contract": "FraktalFactory", + "label": "fraktalNFTs", + "type": "t_struct(UintToAddressMap)9036_storage", + "src": "contracts/FraktalFactory.sol:18" + }, + { + "contract": "FraktalFactory", + "label": "lockedERC721s", + "type": "t_mapping(t_address,t_struct(ERC721Imported)11682_storage)", + "src": "contracts/FraktalFactory.sol:27" + }, + { + "contract": "FraktalFactory", + "label": "lockedERC1155s", + "type": "t_mapping(t_address,t_struct(ERC1155Imported)11687_storage)", + "src": "contracts/FraktalFactory.sol:28" + } + ], + "types": { + "t_address": { + "label": "address" + }, + "t_struct(UintToAddressMap)9036_storage": { + "label": "struct EnumerableMap.UintToAddressMap", + "members": [ + { + "label": "_inner", + "type": "t_struct(Map)8806_storage" + } + ] + }, + "t_struct(Map)8806_storage": { + "label": "struct EnumerableMap.Map", + "members": [ + { + "label": "_keys", + "type": "t_struct(Bytes32Set)9475_storage" + }, + { + "label": "_values", + "type": "t_mapping(t_bytes32,t_bytes32)" + } + ] + }, + "t_struct(Bytes32Set)9475_storage": { + "label": "struct EnumerableSet.Bytes32Set", + "members": [ + { + "label": "_inner", + "type": "t_struct(Set)9281_storage" + } + ] + }, + "t_mapping(t_bytes32,t_bytes32)": { + "label": "mapping(bytes32 => bytes32)" + }, + "t_bytes32": { + "label": "bytes32" + }, + "t_struct(Set)9281_storage": { + "label": "struct EnumerableSet.Set", + "members": [ + { + "label": "_values", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "label": "_indexes", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ] + }, + "t_array(t_bytes32)dyn_storage": { + "label": "bytes32[]" + }, + "t_mapping(t_bytes32,t_uint256)": { + "label": "mapping(bytes32 => uint256)" + }, + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_struct(ERC721Imported)11682_storage)": { + "label": "mapping(address => struct FraktalFactory.ERC721Imported)" + }, + "t_struct(ERC721Imported)11682_storage": { + "label": "struct FraktalFactory.ERC721Imported", + "members": [ + { + "label": "tokenAddress", + "type": "t_address" + }, + { + "label": "tokenIndex", + "type": "t_uint256" + } + ] + }, + "t_mapping(t_address,t_struct(ERC1155Imported)11687_storage)": { + "label": "mapping(address => struct FraktalFactory.ERC1155Imported)" + }, + "t_struct(ERC1155Imported)11687_storage": { + "label": "struct FraktalFactory.ERC1155Imported", + "members": [ + { + "label": "tokenAddress", + "type": "t_address" + }, + { + "label": "tokenIndex", + "type": "t_uint256" + } + ] + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]" + }, + "t_bool": { + "label": "bool" + } + } + } + }, + "abe9120fa0973fadff716b609fc7acce1b5246ec6eb2c891e75754def44472ad": { + "address": "0x583414B844Ecc120E4AcaBC952aD73E8FB331F5c", + "txHash": "0x9df78710eedbffe423b0a2ce5e571ab5a8a9231c2bc6cade4a3c6c8e4a440d8f", + "layout": { + "storage": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:39" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:44" + }, + { + "contract": "ContextUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" + }, + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "contract": "OwnableUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)49_storage", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:82" + }, + { + "contract": "ReentrancyGuardUpgradeable", + "label": "_status", + "type": "t_uint256", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" + }, + { + "contract": "ReentrancyGuardUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)49_storage", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:68" + }, + { + "contract": "FraktalMarket", + "label": "fee", + "type": "t_uint16", + "src": "contracts/FraktalMarket.sol:20" + }, + { + "contract": "FraktalMarket", + "label": "listingFee", + "type": "t_uint256", + "src": "contracts/FraktalMarket.sol:21" + }, + { + "contract": "FraktalMarket", + "label": "feesAccrued", + "type": "t_uint256", + "src": "contracts/FraktalMarket.sol:22" + }, + { + "contract": "FraktalMarket", + "label": "listings", + "type": "t_mapping(t_address,t_mapping(t_address,t_struct(Listing)12476_storage))", + "src": "contracts/FraktalMarket.sol:40" + }, + { + "contract": "FraktalMarket", + "label": "auctionListings", + "type": "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12487_storage)))", + "src": "contracts/FraktalMarket.sol:42" + }, + { + "contract": "FraktalMarket", + "label": "auctionNonce", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/FraktalMarket.sol:43" + }, + { + "contract": "FraktalMarket", + "label": "auctionReserve", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "src": "contracts/FraktalMarket.sol:44" + }, + { + "contract": "FraktalMarket", + "label": "auctionSellerRedeemed", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_bool))", + "src": "contracts/FraktalMarket.sol:45" + }, + { + "contract": "FraktalMarket", + "label": "participantContribution", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_uint256)))", + "src": "contracts/FraktalMarket.sol:47" + }, + { + "contract": "FraktalMarket", + "label": "offers", + "type": "t_mapping(t_address,t_mapping(t_address,t_struct(Proposal)12467_storage))", + "src": "contracts/FraktalMarket.sol:49" + }, + { + "contract": "FraktalMarket", + "label": "sellersBalance", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/FraktalMarket.sol:50" + }, + { + "contract": "FraktalMarket", + "label": "maxPriceRegistered", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/FraktalMarket.sol:51" + } + ], + "types": { + "t_uint16": { + "label": "uint16" + }, + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_mapping(t_address,t_struct(Listing)12476_storage))": { + "label": "mapping(address => mapping(address => struct FraktalMarket.Listing))" + }, + "t_address": { + "label": "address" + }, + "t_mapping(t_address,t_struct(Listing)12476_storage)": { + "label": "mapping(address => struct FraktalMarket.Listing)" + }, + "t_struct(Listing)12476_storage": { + "label": "struct FraktalMarket.Listing", + "members": [ + { + "label": "tokenAddress", + "type": "t_address" + }, + { + "label": "price", + "type": "t_uint256" + }, + { + "label": "numberOfShares", + "type": "t_uint256" + }, + { + "label": "name", + "type": "t_string_storage" + } + ] + }, + "t_string_storage": { + "label": "string" + }, + "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12487_storage)))": { + "label": "mapping(address => mapping(address => mapping(uint256 => struct FraktalMarket.AuctionListing)))" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12487_storage))": { + "label": "mapping(address => mapping(uint256 => struct FraktalMarket.AuctionListing))" + }, + "t_mapping(t_uint256,t_struct(AuctionListing)12487_storage)": { + "label": "mapping(uint256 => struct FraktalMarket.AuctionListing)" + }, + "t_struct(AuctionListing)12487_storage": { + "label": "struct FraktalMarket.AuctionListing", + "members": [ + { + "label": "tokenAddress", + "type": "t_address" + }, + { + "label": "reservePrice", + "type": "t_uint256" + }, + { + "label": "numberOfShares", + "type": "t_uint256" + }, + { + "label": "auctionEndTime", + "type": "t_uint256" + }, + { + "label": "name", + "type": "t_string_storage" + } + ] + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_uint256))": { + "label": "mapping(address => mapping(uint256 => uint256))" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_bool))": { + "label": "mapping(address => mapping(uint256 => bool))" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)" + }, + "t_bool": { + "label": "bool" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_uint256)))": { + "label": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))" + }, + "t_mapping(t_address,t_mapping(t_address,t_struct(Proposal)12467_storage))": { + "label": "mapping(address => mapping(address => struct FraktalMarket.Proposal))" + }, + "t_mapping(t_address,t_struct(Proposal)12467_storage)": { + "label": "mapping(address => struct FraktalMarket.Proposal)" + }, + "t_struct(Proposal)12467_storage": { + "label": "struct FraktalMarket.Proposal", + "members": [ + { + "label": "value", + "type": "t_uint256" + }, + { + "label": "winner", + "type": "t_bool" + } + ] + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]" + } + } + } + }, + "db0b04f4d1d3a47028794a1782f96ae8c9d13319d202a648994c0995c22a4b0e": { + "address": "0x1Cc3830FAA8fCa86D7Bd20E3d1E8C5FDf2a9D0F4", + "txHash": "0x15190c29a2175792a8d6c86a9872eb805dac39ddbbc3fa1579e6451afac04054", + "layout": { + "storage": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:39" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:44" + }, + { + "contract": "ReentrancyGuardUpgradeable", + "label": "_status", + "type": "t_uint256", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" + }, + { + "contract": "ReentrancyGuardUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)49_storage", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:68" + }, + { + "contract": "ContextUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" + }, + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "contract": "OwnableUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)49_storage", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:82" + }, + { + "contract": "FeeSharingSystem", + "label": "frakToken", + "type": "t_contract(IERC20Upgradeable)335", + "src": "contracts/FeeSharingSystem.sol:23" + }, + { + "contract": "FeeSharingSystem", + "label": "currentRewardPerBlock", + "type": "t_uint256", + "src": "contracts/FeeSharingSystem.sol:26" + }, + { + "contract": "FeeSharingSystem", + "label": "lastRewardAdjustment", + "type": "t_uint256", + "src": "contracts/FeeSharingSystem.sol:29" + }, + { + "contract": "FeeSharingSystem", + "label": "lastUpdateBlock", + "type": "t_uint256", + "src": "contracts/FeeSharingSystem.sol:32" + }, + { + "contract": "FeeSharingSystem", + "label": "periodEndBlock", + "type": "t_uint256", + "src": "contracts/FeeSharingSystem.sol:35" + }, + { + "contract": "FeeSharingSystem", + "label": "rewardPerTokenStored", + "type": "t_uint256", + "src": "contracts/FeeSharingSystem.sol:38" + }, + { + "contract": "FeeSharingSystem", + "label": "totalShares", + "type": "t_uint256", + "src": "contracts/FeeSharingSystem.sol:41" + }, + { + "contract": "FeeSharingSystem", + "label": "userInfo", + "type": "t_mapping(t_address,t_struct(UserInfo)876_storage)", + "src": "contracts/FeeSharingSystem.sol:43" + } + ], + "types": { + "t_contract(IERC20Upgradeable)335": { + "label": "contract IERC20Upgradeable" + }, + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_struct(UserInfo)876_storage)": { + "label": "mapping(address => struct FeeSharingSystem.UserInfo)" + }, + "t_address": { + "label": "address" + }, + "t_struct(UserInfo)876_storage": { + "label": "struct FeeSharingSystem.UserInfo", + "members": [ + { + "label": "shares", + "type": "t_uint256" + }, + { + "label": "userRewardPerTokenPaid", + "type": "t_uint256" + }, + { + "label": "rewards", + "type": "t_uint256" + } + ] + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]" + }, + "t_bool": { + "label": "bool" + } + } + } + } + } +} diff --git a/.openzeppelin/rinkeby.json b/.openzeppelin/rinkeby.json index b67b9e4..19f5203 100644 --- a/.openzeppelin/rinkeby.json +++ b/.openzeppelin/rinkeby.json @@ -92,6 +92,146 @@ "address": "0x1379cf637fc4cf09D89CDc9131C38DD4dd15D1c7", "txHash": "0x337c8e767db7b7d656d0af07818cc4f557c5a748fc858f827c1c9a16341075d6", "kind": "transparent" + }, + { + "address": "0x1FD4ADF21B1EacDd37d0E35A96d0B574BaAe6Ed2", + "txHash": "0x6b977424a62524718468c35d6ef05ebe22c0c9b574e9e470aa955d22c09e7034", + "kind": "transparent" + }, + { + "address": "0xeacC8fdB970DeB59982806ca88fDD5026CBB6b2D", + "txHash": "0x4b95770315360af41b7ed55401df7d3a4a3afa4662ddfa99c9dd642263527d07", + "kind": "transparent" + }, + { + "address": "0xa69bA82C8Fd82724b0160d0181277783826332BB", + "txHash": "0x9e701f9e18b691fe089a24b2f389afb024c759a96b67c0246bee49478ccaf825", + "kind": "transparent" + }, + { + "address": "0x3212578793D7f84Be50081Fa6595a986eD8e802C", + "txHash": "0x20549cbec950b3d9d043b1578feeff4098eb0cfc2974c9c24f7e6b040840d5fd", + "kind": "transparent" + }, + { + "address": "0x424B9C55Af06701b10be750A37419a83Fcf4399A", + "txHash": "0xb34bcb2470b772e681f9fcece59e15ef3c8bfe70174ab6eb098dd3204867d63a", + "kind": "transparent" + }, + { + "address": "0x583414B844Ecc120E4AcaBC952aD73E8FB331F5c", + "txHash": "0xabad438671bd41813ec6d9fc0dc7e2d732b547b32bb9bf2085683d60f7c55ea0", + "kind": "transparent" + }, + { + "address": "0x9286Ea5E9b22262D4C1f142F1DD35Ffb1EaacD03", + "txHash": "0xdd37984cc9644d268af03bf3f5d72b3c31aa8eb89c9d5a6721a876a9b52e3cee", + "kind": "transparent" + }, + { + "address": "0x2BA1B4cE0dedc2eE0dA59EEf31a25de42AdBe0C5", + "txHash": "0xf423793a83c7264d38a10db4f15203b45c187350ad33d3224cc98d1b1ab89b04", + "kind": "transparent" + }, + { + "address": "0xA907eAdb672BeecdeA6e27b4E0567943FabC8407", + "txHash": "0xe032d4f454e8f7e99951c0055c3bb2345a45eb8b55c1def2403db5249b8d371c", + "kind": "transparent" + }, + { + "address": "0x7C10904Cb76592cbae799f4999525f945884e986", + "txHash": "0xb8bf2546f6794fb71a0a8effbc7f1b965b26854de6b0ee04739fad68e979f1f8", + "kind": "transparent" + }, + { + "address": "0x6fFb746E53Adb1C80D73Ff48897639A0a3fa0f92", + "txHash": "0x63f031eb0741a904c7967d5f0092f7c36b94600e1d509b9516f931f39a6455c2", + "kind": "transparent" + }, + { + "address": "0x898721a9F5891c458Af3bACF033E5622cfA7ef67", + "txHash": "0xe303a3b5a7e7ccd5b3708741cec6a480db21ab85cb5fb91b494098993122ccb2", + "kind": "transparent" + }, + { + "address": "0x40E6c70CEA82cdD6Ba8C65B6f14C3549Fb470FB8", + "txHash": "0x231e0dc88af187bb26ee9ee422609a355f59f83048f1d78a4aa598d86af37928", + "kind": "transparent" + }, + { + "address": "0x9C3096AB64fE58BbC1961e05161724F73165d9CD", + "txHash": "0x2f9f340a19ef7c7e79b58fd48f1b5aa12d7cd28cec234e4f06da8a8c5b23d166", + "kind": "transparent" + }, + { + "address": "0x933c4258a71AF34dbB75DBb55931bbD33Ed0c780", + "txHash": "0x70ded5b66092b5b38fff7401642c8a5c98eafba4473d8bc0f8cf7648de446095", + "kind": "transparent" + }, + { + "address": "0xa76fF27D15d261FE678969C040b153536D6f4bE9", + "txHash": "0xbf061f8d5a3cc4259f6505f198bf3d9ada9555ad7b6dd517db9bf84b765c7142", + "kind": "transparent" + }, + { + "address": "0x418A5396e7E5d28CF64A58863382A5FB2671487E", + "txHash": "0x6d9eb91818a8c6bf22f8523b147a70b4072a104d87fdecda52ffa6948454cc45", + "kind": "transparent" + }, + { + "address": "0x19B56b1Ea1522509B7Ab260cBC3989D8Dc024837", + "txHash": "0xa96bc7593d19af58de4d3b95d0a4bef5c46cb2e9374bf56dd358491af74c259f", + "kind": "transparent" + }, + { + "address": "0x909AEc7A3D204Bfa13EB75E5ff0421506b3F4194", + "txHash": "0x04d03af3331b6344d1b621917b85fdb2ecc521e623e24cfcf29d690f3de0fdee", + "kind": "transparent" + }, + { + "address": "0xB44345BD52d7CA3770780Cc3c0a425B7d41fdF87", + "txHash": "0x94efee2fa45d96e39ac909424be8cdef91b7f503525e198c3ab224b698fa6c6d", + "kind": "transparent" + }, + { + "address": "0xCc0c7dC73479eb7F746FEb2D3175268bd7890BDB", + "txHash": "0x7d4ee980c3e09072ff2d667e39628329a77607d2a38916341ebd97b466709822", + "kind": "transparent" + }, + { + "address": "0xE924f19f2672952F8C6774981A8eC3e09F2da72e", + "txHash": "0x24f17f76d9c6acf87cbd7570b9cc8263ef36e37f1c3e4db089f98fb25f034f36", + "kind": "transparent" + }, + { + "address": "0x20A2920e438CaCC3461CC9Fe8BC7ef967a9d98C9", + "txHash": "0x5e7e2074a7a7564a4dffd34b5d563d14e90bed83f386ab1ffa9e5e98503e45ad", + "kind": "transparent" + }, + { + "address": "0xdC2cB4c17534B97c3E863C05Efd08689Cb87f43F", + "txHash": "0x404fd273c9beb5e9f2173b4e1a5b9e12a681aecf434bfb0ad71edebc3ee2c292", + "kind": "transparent" + }, + { + "address": "0x686E238ee236B7E5775BB2B6B0762E638B9A527A", + "txHash": "0x9ec87c1aab2c47e5647b41e87b0b2a09a37ca303e951f186174ce6a3b34a6df8", + "kind": "transparent" + }, + { + "address": "0xB0d97E27bC728DC55d5Fe8E84fEaBd8BC066Ab0e", + "txHash": "0x0d3628dc2acd1c167a34bd923ed693e9cbe34a364b766a88d0aa5d8b18524f53", + "kind": "transparent" + }, + { + "address": "0x8FA22654042c2610a26C70d034F03c54cDB342c1", + "txHash": "0x1fbd2091e33b8bd0048bcc75f591ebdd0480a4411efb1e3dcc3327c1ceaec227", + "kind": "transparent" + }, + { + "address": "0xeDA73A3478e3156f0d6F45317a38C6a8103dD433", + "txHash": "0x007eb89e2dc43d31aec5120e1c3001c2f8b59f93e14afb77f08c81c1b2c4a00e", + "kind": "transparent" } ], "impls": { @@ -2282,6 +2422,252 @@ } } } + }, + "abe9120fa0973fadff716b609fc7acce1b5246ec6eb2c891e75754def44472ad": { + "address": "0x4403a6A0dB49244e5dfb9A05f08Ed88A132D2824", + "txHash": "0xb4b71ee78d405f4cd5e1a3f42bcf51490264e467540e2b6ec9ffff7b28214d47", + "layout": { + "storage": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:39" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:44" + }, + { + "contract": "ContextUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" + }, + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "contract": "OwnableUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)49_storage", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:82" + }, + { + "contract": "ReentrancyGuardUpgradeable", + "label": "_status", + "type": "t_uint256", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:38" + }, + { + "contract": "ReentrancyGuardUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)49_storage", + "src": "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:68" + }, + { + "contract": "FraktalMarket", + "label": "fee", + "type": "t_uint16", + "src": "contracts/FraktalMarket.sol:20" + }, + { + "contract": "FraktalMarket", + "label": "listingFee", + "type": "t_uint256", + "src": "contracts/FraktalMarket.sol:21" + }, + { + "contract": "FraktalMarket", + "label": "feesAccrued", + "type": "t_uint256", + "src": "contracts/FraktalMarket.sol:22" + }, + { + "contract": "FraktalMarket", + "label": "listings", + "type": "t_mapping(t_address,t_mapping(t_address,t_struct(Listing)12473_storage))", + "src": "contracts/FraktalMarket.sol:40" + }, + { + "contract": "FraktalMarket", + "label": "auctionListings", + "type": "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12484_storage)))", + "src": "contracts/FraktalMarket.sol:42" + }, + { + "contract": "FraktalMarket", + "label": "auctionNonce", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/FraktalMarket.sol:43" + }, + { + "contract": "FraktalMarket", + "label": "auctionReserve", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_uint256))", + "src": "contracts/FraktalMarket.sol:44" + }, + { + "contract": "FraktalMarket", + "label": "auctionSellerRedeemed", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_bool))", + "src": "contracts/FraktalMarket.sol:45" + }, + { + "contract": "FraktalMarket", + "label": "participantContribution", + "type": "t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_uint256)))", + "src": "contracts/FraktalMarket.sol:47" + }, + { + "contract": "FraktalMarket", + "label": "offers", + "type": "t_mapping(t_address,t_mapping(t_address,t_struct(Proposal)12464_storage))", + "src": "contracts/FraktalMarket.sol:49" + }, + { + "contract": "FraktalMarket", + "label": "sellersBalance", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/FraktalMarket.sol:50" + }, + { + "contract": "FraktalMarket", + "label": "maxPriceRegistered", + "type": "t_mapping(t_address,t_uint256)", + "src": "contracts/FraktalMarket.sol:51" + } + ], + "types": { + "t_uint16": { + "label": "uint16" + }, + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_mapping(t_address,t_struct(Listing)12473_storage))": { + "label": "mapping(address => mapping(address => struct FraktalMarket.Listing))" + }, + "t_address": { + "label": "address" + }, + "t_mapping(t_address,t_struct(Listing)12473_storage)": { + "label": "mapping(address => struct FraktalMarket.Listing)" + }, + "t_struct(Listing)12473_storage": { + "label": "struct FraktalMarket.Listing", + "members": [ + { + "label": "tokenAddress", + "type": "t_address" + }, + { + "label": "price", + "type": "t_uint256" + }, + { + "label": "numberOfShares", + "type": "t_uint256" + }, + { + "label": "name", + "type": "t_string_storage" + } + ] + }, + "t_string_storage": { + "label": "string" + }, + "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12484_storage)))": { + "label": "mapping(address => mapping(address => mapping(uint256 => struct FraktalMarket.AuctionListing)))" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12484_storage))": { + "label": "mapping(address => mapping(uint256 => struct FraktalMarket.AuctionListing))" + }, + "t_mapping(t_uint256,t_struct(AuctionListing)12484_storage)": { + "label": "mapping(uint256 => struct FraktalMarket.AuctionListing)" + }, + "t_struct(AuctionListing)12484_storage": { + "label": "struct FraktalMarket.AuctionListing", + "members": [ + { + "label": "tokenAddress", + "type": "t_address" + }, + { + "label": "reservePrice", + "type": "t_uint256" + }, + { + "label": "numberOfShares", + "type": "t_uint256" + }, + { + "label": "auctionEndTime", + "type": "t_uint256" + }, + { + "label": "name", + "type": "t_string_storage" + } + ] + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_uint256))": { + "label": "mapping(address => mapping(uint256 => uint256))" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_bool))": { + "label": "mapping(address => mapping(uint256 => bool))" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)" + }, + "t_bool": { + "label": "bool" + }, + "t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_uint256)))": { + "label": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { + "label": "mapping(uint256 => mapping(address => uint256))" + }, + "t_mapping(t_address,t_mapping(t_address,t_struct(Proposal)12464_storage))": { + "label": "mapping(address => mapping(address => struct FraktalMarket.Proposal))" + }, + "t_mapping(t_address,t_struct(Proposal)12464_storage)": { + "label": "mapping(address => struct FraktalMarket.Proposal)" + }, + "t_struct(Proposal)12464_storage": { + "label": "struct FraktalMarket.Proposal", + "members": [ + { + "label": "value", + "type": "t_uint256" + }, + { + "label": "winner", + "type": "t_bool" + } + ] + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]" + } + } + } } } } diff --git a/.openzeppelin/unknown-31337.json b/.openzeppelin/unknown-31337.json index 45c179c..5d4844e 100644 --- a/.openzeppelin/unknown-31337.json +++ b/.openzeppelin/unknown-31337.json @@ -7,7 +7,7 @@ "hash": "0x06ab90f2dd54ae1881999f06ab4ed342730787af8dd7d9bd24b235cd4a2bd6c0", "type": 2, "accessList": [], - "blockHash": "0x0da43d8128f4ea82d23325e81064ce4dda1b934def58a781f28bbc1518ea3c9e", + "blockHash": "0x93f69707805bdac535f054f59c4e3b7fb1a55df236a75368ed00ddf597bd86a1", "blockNumber": 4, "transactionIndex": 0, "confirmations": 1, @@ -63,14 +63,29 @@ "txHash": "0x9701f3772d38767317bd8fab23535618c5c9566cfee079e5b57a46677ddde657", "kind": "transparent" }, + { + "address": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", + "txHash": "0x3c496cbf370d70c4e9b3c23a6bd20819767c7343fe0f3a380c7f95a1b4b10bc7", + "kind": "transparent" + }, + { + "address": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed", + "txHash": "0x7be06fa95730dfac41ad9379a46a8e9c9731058ee704fce44e5ca92ba59155e8", + "kind": "transparent" + }, + { + "address": "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f", + "txHash": "0x6631c61c99f651ecf0d39bc7fd70a4885775b580b82f36a9b1dc9f08a293ca95", + "kind": "transparent" + }, { "address": "0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E", - "txHash": "0x02f225c9c582906edd20dbf6860503d0a5b4559074812d449d0cc73565564abe", + "txHash": "0x14c2afaf3ec77744d69f452c249d7906f8a44d5df7489d1e59e9e7d6e91b11c6", "kind": "transparent" }, { - "address": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "txHash": "0x3c496cbf370d70c4e9b3c23a6bd20819767c7343fe0f3a380c7f95a1b4b10bc7", + "address": "0x8f86403A4DE0BB5791fa46B8e795C547942fE4Cf", + "txHash": "0xd42fc510c15654bd556a94e34f04e51451aee741a68e8e8ffa621345bd16a66c", "kind": "transparent" }, { @@ -80,14 +95,19 @@ }, { "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "txHash": "0xf534664a4c5ecce9e756be2ede1f87360d55b512e9f2818e91add0c4d9ee5123", + "txHash": "0x217669950ce464a06e0076ffc356d08eb2480ad7c3b2deca5c5d55e54783adae", + "kind": "transparent" + }, + { + "address": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "txHash": "0xdfa44094eeb5dc934823e54f027740cdb9c22313c9d55e5668ea3211ad3bd2dc", "kind": "transparent" } ], "impls": { "db0b04f4d1d3a47028794a1782f96ae8c9d13319d202a648994c0995c22a4b0e": { - "address": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "txHash": "0x8f0c677084647246925ec8792698e58346754adf81f01050fc0b5d3f704bb758", + "address": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "txHash": "0x75f082712df090d58c0a104ce58bc9f6b5e655a6ebf9fbe77f0c57de4fb66e2f", "layout": { "storage": [ { @@ -135,7 +155,7 @@ { "contract": "FeeSharingSystem", "label": "frakToken", - "type": "t_contract(IERC20Upgradeable)1854", + "type": "t_contract(IERC20Upgradeable)335", "src": "contracts/FeeSharingSystem.sol:23" }, { @@ -177,24 +197,24 @@ { "contract": "FeeSharingSystem", "label": "userInfo", - "type": "t_mapping(t_address,t_struct(UserInfo)10439_storage)", + "type": "t_mapping(t_address,t_struct(UserInfo)876_storage)", "src": "contracts/FeeSharingSystem.sol:43" } ], "types": { - "t_contract(IERC20Upgradeable)1854": { + "t_contract(IERC20Upgradeable)335": { "label": "contract IERC20Upgradeable" }, "t_uint256": { "label": "uint256" }, - "t_mapping(t_address,t_struct(UserInfo)10439_storage)": { + "t_mapping(t_address,t_struct(UserInfo)876_storage)": { "label": "mapping(address => struct FeeSharingSystem.UserInfo)" }, "t_address": { "label": "address" }, - "t_struct(UserInfo)10439_storage": { + "t_struct(UserInfo)876_storage": { "label": "struct FeeSharingSystem.UserInfo", "members": [ { @@ -225,7 +245,7 @@ }, "3f49dc5b32ec07658e7b872a80a69acfff34f8bd7ad35514235a022d5a23ce21": { "address": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "txHash": "0x007c4a8c6f5dfb22a4031305b5547b42df7620e3b1dd860b6e3d6af143444638", + "txHash": "0x08650f5842a20f502cc414bf1b67b90707bdcc217e22d1012980f24c31ff25d1", "layout": { "storage": [ { @@ -303,13 +323,13 @@ { "contract": "FraktalFactory", "label": "lockedERC721s", - "type": "t_mapping(t_address,t_struct(ERC721Imported)11679_storage)", + "type": "t_mapping(t_address,t_struct(ERC721Imported)11682_storage)", "src": "contracts/FraktalFactory.sol:27" }, { "contract": "FraktalFactory", "label": "lockedERC1155s", - "type": "t_mapping(t_address,t_struct(ERC1155Imported)11684_storage)", + "type": "t_mapping(t_address,t_struct(ERC1155Imported)11687_storage)", "src": "contracts/FraktalFactory.sol:28" } ], @@ -376,10 +396,10 @@ "t_uint256": { "label": "uint256" }, - "t_mapping(t_address,t_struct(ERC721Imported)11679_storage)": { + "t_mapping(t_address,t_struct(ERC721Imported)11682_storage)": { "label": "mapping(address => struct FraktalFactory.ERC721Imported)" }, - "t_struct(ERC721Imported)11679_storage": { + "t_struct(ERC721Imported)11682_storage": { "label": "struct FraktalFactory.ERC721Imported", "members": [ { @@ -392,10 +412,10 @@ } ] }, - "t_mapping(t_address,t_struct(ERC1155Imported)11684_storage)": { + "t_mapping(t_address,t_struct(ERC1155Imported)11687_storage)": { "label": "mapping(address => struct FraktalFactory.ERC1155Imported)" }, - "t_struct(ERC1155Imported)11684_storage": { + "t_struct(ERC1155Imported)11687_storage": { "label": "struct FraktalFactory.ERC1155Imported", "members": [ { @@ -420,9 +440,9 @@ } } }, - "52e657c0d7f415fe8d7184fada339b47eeecbd8935de77af4e8158f28ef5f631": { + "abe9120fa0973fadff716b609fc7acce1b5246ec6eb2c891e75754def44472ad": { "address": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "txHash": "0xccca2d5f3b64d03a3231d1355487c47b15f0cd2eca7d7c65a8aaeb9d41757f2f", + "txHash": "0xcb46515754f9c4b7b7fc27c6cf5e2c8b9372205536e3352790d5acee89b4a3b3", "layout": { "storage": [ { @@ -488,13 +508,13 @@ { "contract": "FraktalMarket", "label": "listings", - "type": "t_mapping(t_address,t_mapping(t_address,t_struct(Listing)12473_storage))", + "type": "t_mapping(t_address,t_mapping(t_address,t_struct(Listing)12476_storage))", "src": "contracts/FraktalMarket.sol:40" }, { "contract": "FraktalMarket", "label": "auctionListings", - "type": "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12484_storage)))", + "type": "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12487_storage)))", "src": "contracts/FraktalMarket.sol:42" }, { @@ -524,7 +544,7 @@ { "contract": "FraktalMarket", "label": "offers", - "type": "t_mapping(t_address,t_mapping(t_address,t_struct(Proposal)12464_storage))", + "type": "t_mapping(t_address,t_mapping(t_address,t_struct(Proposal)12467_storage))", "src": "contracts/FraktalMarket.sol:49" }, { @@ -547,16 +567,16 @@ "t_uint256": { "label": "uint256" }, - "t_mapping(t_address,t_mapping(t_address,t_struct(Listing)12473_storage))": { + "t_mapping(t_address,t_mapping(t_address,t_struct(Listing)12476_storage))": { "label": "mapping(address => mapping(address => struct FraktalMarket.Listing))" }, "t_address": { "label": "address" }, - "t_mapping(t_address,t_struct(Listing)12473_storage)": { + "t_mapping(t_address,t_struct(Listing)12476_storage)": { "label": "mapping(address => struct FraktalMarket.Listing)" }, - "t_struct(Listing)12473_storage": { + "t_struct(Listing)12476_storage": { "label": "struct FraktalMarket.Listing", "members": [ { @@ -580,16 +600,16 @@ "t_string_storage": { "label": "string" }, - "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12484_storage)))": { + "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12487_storage)))": { "label": "mapping(address => mapping(address => mapping(uint256 => struct FraktalMarket.AuctionListing)))" }, - "t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12484_storage))": { + "t_mapping(t_address,t_mapping(t_uint256,t_struct(AuctionListing)12487_storage))": { "label": "mapping(address => mapping(uint256 => struct FraktalMarket.AuctionListing))" }, - "t_mapping(t_uint256,t_struct(AuctionListing)12484_storage)": { + "t_mapping(t_uint256,t_struct(AuctionListing)12487_storage)": { "label": "mapping(uint256 => struct FraktalMarket.AuctionListing)" }, - "t_struct(AuctionListing)12484_storage": { + "t_struct(AuctionListing)12487_storage": { "label": "struct FraktalMarket.AuctionListing", "members": [ { @@ -638,13 +658,13 @@ "t_mapping(t_uint256,t_mapping(t_address,t_uint256))": { "label": "mapping(uint256 => mapping(address => uint256))" }, - "t_mapping(t_address,t_mapping(t_address,t_struct(Proposal)12464_storage))": { + "t_mapping(t_address,t_mapping(t_address,t_struct(Proposal)12467_storage))": { "label": "mapping(address => mapping(address => struct FraktalMarket.Proposal))" }, - "t_mapping(t_address,t_struct(Proposal)12464_storage)": { + "t_mapping(t_address,t_struct(Proposal)12467_storage)": { "label": "mapping(address => struct FraktalMarket.Proposal)" }, - "t_struct(Proposal)12464_storage": { + "t_struct(Proposal)12467_storage": { "label": "struct FraktalMarket.Proposal", "members": [ { diff --git a/contracts/FeeSharingSetter.sol b/contracts/FeeSharingSetter.sol index a1ce90f..1abed33 100644 --- a/contracts/FeeSharingSetter.sol +++ b/contracts/FeeSharingSetter.sol @@ -52,7 +52,7 @@ contract FeeSharingSetter is ReentrancyGuard, AccessControl { event NewRewardConvertor(address rewardConvertor); constructor( - address payable _feeSharingSystem, + address _feeSharingSystem, uint256 _minRewardDurationInBlocks, uint256 _maxRewardDurationInBlocks, uint256 _rewardDurationInBlocks @@ -66,7 +66,7 @@ contract FeeSharingSetter is ReentrancyGuard, AccessControl { MIN_REWARD_DURATION_IN_BLOCKS = _minRewardDurationInBlocks; MAX_REWARD_DURATION_IN_BLOCKS = _maxRewardDurationInBlocks; - feeSharingSystem = FeeSharingSystem(_feeSharingSystem); + feeSharingSystem = FeeSharingSystem(payable(_feeSharingSystem)); // rewardToken = feeSharingSystem.rewardToken(); frakToken = feeSharingSystem.frakToken(); diff --git a/contracts/FraktalAirdrop.sol b/contracts/FraktalAirdrop.sol index a2b9511..317e550 100644 --- a/contracts/FraktalAirdrop.sol +++ b/contracts/FraktalAirdrop.sol @@ -1,6 +1,13 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; +/*** + * _______ ______ _______ _ _ _______ _______ + * |______ |_____/ |_____| |____/ | |_____| | + * | | \_ | | | \_ | | | |_____ + * + */ + import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol"; import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; diff --git a/contracts/FraktalMarket.sol b/contracts/FraktalMarket.sol index 546e5e3..5cf3adf 100644 --- a/contracts/FraktalMarket.sol +++ b/contracts/FraktalMarket.sol @@ -86,6 +86,7 @@ ERC1155Holder event AdminWithdrawFees(uint256 feesAccrued); event OfferMade(address offerer, address tokenAddress, uint256 value); event OfferVoted(address voter, address offerer, address tokenAddress, bool sold); + event Volume(address user, uint256 volume); function initialize() public initializer { __Ownable_init(); @@ -151,6 +152,7 @@ ERC1155Holder (bool sent,) = _msgSender().call{value: totalForSeller}(""); auctionSellerRedeemed[_seller][_sellerNonce] = true; + emit Volume(_msgSender(),totalForSeller); require(sent);//check if ether failed to send } @@ -187,6 +189,8 @@ ERC1155Holder uint256 eligibleFrak = (_participantContribution * auctionFraks) / _auctionReserve; participantContribution[_seller][_sellerNonce][_msgSender()] = 0; + emit Volume(_msgSender(),_participantContribution); + FraktalNFT(_tokenAddress).safeTransferFrom( address(this), _msgSender(), @@ -257,6 +261,8 @@ ERC1155Holder "" ); emit Bought(_msgSender(), from, tokenAddress, _numberOfShares); + emit Volume(_msgSender(),msg.value); + emit Volume(from,msg.value); } function participateAuction( diff --git a/hardhat.config.js b/hardhat.config.js index eb1b5e3..947c83c 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -36,6 +36,10 @@ module.exports = { url: `https://rinkeby.infura.io/v3/${process.env.RINKEBY_INFURA}`, accounts: [process.env.PRIVATE_KEY], }, + mainnet: { + url: `https://mainnet.infura.io/v3/${process.env.MAINNET_INFURA}`, + accounts: [process.env.PRIVATE_KEY], + }, }, etherscan: { // Your API key for Etherscan diff --git a/scripts/deploy.js b/scripts/deploy.js index 6e514fa..e13ee03 100644 --- a/scripts/deploy.js +++ b/scripts/deploy.js @@ -14,47 +14,96 @@ async function main(){ const PaymentSpliter = await hre.ethers.getContractFactory("PaymentSplitterUpgradeable"); const FraktalFactory = await hre.ethers.getContractFactory("FraktalFactory"); const FraktalMarket = await hre.ethers.getContractFactory("FraktalMarket"); - const StakingPoolForUniswapV2Tokens = await hre.ethers.getContractFactory("StakingPoolForUniswapV2Tokens"); - const FraktalAirdrop = await hre.ethers.getContractFactory("FraktalAirdrop"); + const TradingRewardsDistributor = await hre.ethers.getContractFactory("TradingRewardsDistributor"); const FeeSharingSystem = await hre.ethers.getContractFactory("FeeSharingSystem"); const FeeSharingSetter = await hre.ethers.getContractFactory("FeeSharingSetter"); + const frakAddress = "0x1f81f8f262714cc932141c7C79495B481eF27258"; + + const fraktalNFT = await FraktalNFT.deploy(); console.log(`FraktalNFT deployed to: ${fraktalNFT.address}`); const paymentSpliter = await PaymentSpliter.deploy(); console.log(`PaymentSpliter deployed to: ${paymentSpliter.address}`); + const fraktalAddress = "0x8F3D19eFE7c9e7411EC8B14e02c2699b5F669628"; + const paymentSplitterAddress = "0x65fD1b44f13222E6e3e5c722e104cb22AB24B4D8"; + // const fraktalFactory = await FraktalFactory.deploy(fraktalNFT.address, paymentSpliter.address); - const fraktalFactory = await upgrades.deployProxy(FraktalFactory,[fraktalNFT.address, paymentSpliter.address]);//deploy by proxy(upgradable) + // const fraktalFactory = await upgrades.deployProxy(FraktalFactory,[fraktalNFT.address, paymentSpliter.address]);//deploy by proxy(upgradable) + const fraktalFactory = await upgrades.deployProxy(FraktalFactory,[fraktalAddress, paymentSplitterAddress]);//deploy by proxy(upgradable) console.log(`FraktalFactory deployed to: ${fraktalFactory.address}`); // const fraktalMarket = await FraktalMarket.deploy(); const fraktalMarket = await upgrades.deployProxy(FraktalMarket,[]);//deploy by proxy(upgradable) console.log(`FraktalMarket deployed to: ${fraktalMarket.address}`); - // console.log("Wait 1 min for etherscan to propagate deployed bytecode"); - // await new Promise(r=>setTimeout(r,60*1000));//wait 1 min - // console.log("Verifying.."); + //////////////////////////////////////////////// Airdrop////////////////////////////////////////////// + const FraktalAirdrop = await hre.ethers.getContractFactory("FraktalAirdrop"); + + // for testnet account + // change for lp, frak, startblock for mainnet + const startTimestamp = 1647518400; + const endTimestamp = 1648382400; + const maxClaim = ethers.utils.parseEther("10000"); + // const frakAddress = "0x468065C8B00C7cB3cd6B9fD76dAe9dD49e1C30e0"; + const marketAddress = fraktalMarket.address; + const merkleRoot = "0x8dfab5f1445c86bab8ddecc22981110b60bb14aa0e326226e3974785643a4e57"; + + const fraktalAirdrop = await FraktalAirdrop.deploy( + startTimestamp, + endTimestamp, + maxClaim, + frakAddress, + marketAddress, + merkleRoot + ); + console.log(`FraktalAirdrop deployed to: ${fraktalAirdrop.address}`); + + ////////////////////////////////////////////////lp staking////////////////////////////////////////////// + const lpAddress = "0x2763f944fc85CAEECD559F0f0a4667A68256144d"; + // const frakAddress = "0x468065C8B00C7cB3cd6B9fD76dAe9dD49e1C30e0"; + const frakPerBlock = ethers.utils.parseEther("50"); + //https://etherscan.io/block/countdown/14404250 + const startBlock = 14404250; + const endBlock = startBlock+1000000; + + const stakingPoolLp = await StakingPoolForUniswapV2Tokens.deploy( + lpAddress, + frakAddress, + frakPerBlock, + startBlock, + endBlock + ); + console.log(`StakingPoolForUniswapV2Tokens deployed to: ${stakingPoolLp.address}`); + + ////////////////////////////////////////////////trading rewards////////////////////////////////////////////// + + const tradingRewardsDistributor = await TradingRewardsDistributor.deploy( + frakAddress + ); + console.log(`TradingRewardsDistributor deployed to: ${tradingRewardsDistributor.address}`); + + ////////////////////////////////////////////////fee sharing ////////////////////////////////////////////// + + const feeSharingSystem = await upgrades.deployProxy(FeeSharingSystem,[frakAddress]); + console.log(`FeeSharingSystem deployed to: ${feeSharingSystem.address}`); + + // const feeSharingAddress = "0xF915c5Fd027ca2A9ee7890a20efaE2DE59A03929"; + + const feeSharingSetter = await FeeSharingSetter.deploy( + feeSharingSystem.address, + // feeSharingAddress, + 1000, + 10000, + 6500 + ); + console.log(`FeeSharingSetter deployed to: ${feeSharingSetter.address}`); + - // await hre.run("verify:verify", { - // address: fraktalNFT.address, - // constructorArguments: [], - // }); - // await hre.run("verify:verify", { - // address: paymentSpliter.address, - // constructorArguments: [], - // }); - // await hre.run("verify:verify", { - // address: fraktalFactory.address, - // constructorArguments: [fraktalNFT.address,paymentSpliter.address], - // }); - // await hre.run("verify:verify", { - // address: fraktalMarket.address, - // constructorArguments: [], - // }); } main() From e8d4333a1bf5fb41753e95c74f5ce909546e9dfc Mon Sep 17 00:00:00 2001 From: Totis Date: Sat, 26 Mar 2022 20:39:51 +0900 Subject: [PATCH 2/3] Launch Partner Airdrop --- contracts/FraktalLaunchPartnerAirdrop.sol | 121 ++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 contracts/FraktalLaunchPartnerAirdrop.sol diff --git a/contracts/FraktalLaunchPartnerAirdrop.sol b/contracts/FraktalLaunchPartnerAirdrop.sol new file mode 100644 index 0000000..dfd6174 --- /dev/null +++ b/contracts/FraktalLaunchPartnerAirdrop.sol @@ -0,0 +1,121 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +/*** + * _ _ _ ___ + * /_`/_//_//_///_// + * / / \/ //`\// //_, + * + */ + +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol"; +import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; +import {MerkleProof} from "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; + +import {IERC20, SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; + +contract FraktalLaunchPartnerAirdrop is Pausable, ReentrancyGuard, Ownable { + using SafeERC20 for IERC20; + + IERC20 public immutable fraktalToken; + uint256 public immutable MAXIMUM_AMOUNT_TO_CLAIM; + + bool public isMerkleRootSet; + + bytes32 public merkleRoot; + + uint256 public endTimestamp; + + uint256 public startBlock; + + mapping(address => bool) public hasClaimed; + + event AirdropRewardsClaim(address indexed user, uint256 amount); + event MerkleRootSet(bytes32 merkleRoot); + event NewEndTimestamp(uint256 endTimestamp); + event TokensWithdrawn(uint256 amount); + + constructor( + uint256 _startBlock, + uint256 _endTimestamp, + uint256 _maximumAmountToClaim, + address _fraktalToken, + bytes32 _merkleRoot + ) { + startBlock = _startBlock;//1648382400 + endTimestamp = _endTimestamp;//1649246400 + MAXIMUM_AMOUNT_TO_CLAIM = _maximumAmountToClaim; + + fraktalToken = IERC20(_fraktalToken); + merkleRoot = _merkleRoot; + isMerkleRootSet = true; + } + + function claim( + uint256 amount, + bytes32[] calldata merkleProof + ) external whenNotPaused nonReentrant { + require(isMerkleRootSet, "Airdrop: Merkle root not set"); + require(amount <= MAXIMUM_AMOUNT_TO_CLAIM, "Airdrop: Amount too high"); + require(block.timestamp > startBlock, "Airdrop: Too early to claim"); + require(block.timestamp <= endTimestamp, "Airdrop: Too late to claim"); + require(amount > 0, "Airdrop: Amount to low"); + + // Verify the user has claimed + require(!hasClaimed[msg.sender], "Airdrop: Already claimed"); + + + // Compute the node and verify the merkle proof + bytes32 node = keccak256(abi.encodePacked(msg.sender,amount)); + require(MerkleProof.verify(merkleProof, merkleRoot, node), "Airdrop: Invalid proof"); + + // Set as claimed + hasClaimed[msg.sender] = true; + + // parse to Fraktal distribution + uint256 frakAmount = amount * 10**18; + + // Transfer tokens + fraktalToken.safeTransfer(msg.sender, frakAmount); + + emit AirdropRewardsClaim(msg.sender, frakAmount); + } + + function canClaim( + address user, + uint256 amount, + bytes32[] calldata merkleProof + ) external view returns (bool) { + if (block.timestamp <= endTimestamp) { + // Compute the node and verify the merkle proof + bytes32 node = keccak256(abi.encodePacked(user,amount)); + return MerkleProof.verify(merkleProof, merkleRoot, node); + } else { + return false; + } + } + + function pauseAirdrop() external onlyOwner whenNotPaused { + _pause(); + } + + function unpauseAirdrop() external onlyOwner whenPaused { + _unpause(); + } + + function updateEndTimestamp(uint256 newEndTimestamp) external onlyOwner { + require(block.timestamp + 30 days > newEndTimestamp, "Owner: New timestamp too far"); + endTimestamp = newEndTimestamp; + + emit NewEndTimestamp(newEndTimestamp); + } + + function withdrawTokenRewards() external onlyOwner { + require(block.timestamp > (endTimestamp + 1 days), "Owner: Too early to remove rewards"); + uint256 balanceToWithdraw = fraktalToken.balanceOf(address(this)); + fraktalToken.safeTransfer(msg.sender, balanceToWithdraw); + + emit TokensWithdrawn(balanceToWithdraw); + } +} \ No newline at end of file From 7c3641d92041c80d2182aefd7f806bd80cfe5ce1 Mon Sep 17 00:00:00 2001 From: Totis Date: Thu, 31 Mar 2022 13:43:38 +0900 Subject: [PATCH 3/3] Factory to compatible with old contract (^0.4.0) --- .openzeppelin/mainnet.json | 197 ++++++++++++++++++++++++++ .openzeppelin/unknown-31337.json | 235 ++++++++++++++++++++++++++++--- contracts/FraktalFactoryV2.sol | 182 ++++++++++++++++++++++++ scripts/upgrade-factory-to-v2.js | 33 +++++ 4 files changed, 628 insertions(+), 19 deletions(-) create mode 100644 contracts/FraktalFactoryV2.sol create mode 100644 scripts/upgrade-factory-to-v2.js diff --git a/.openzeppelin/mainnet.json b/.openzeppelin/mainnet.json index c88f190..6916a9c 100644 --- a/.openzeppelin/mainnet.json +++ b/.openzeppelin/mainnet.json @@ -640,6 +640,203 @@ } } } + }, + "abdf92094f4a56d809602c12d966bdd9772000aa77850a54a4cf725f5149f4e1": { + "address": "0x00B3443339Ad09253925404A3385823c2CB9D2bD", + "txHash": "0xb892d50b3064007f3a0d8c286de8ae71a0708007bafd9c78359513d144176180", + "layout": { + "storage": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:39" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:44" + }, + { + "contract": "ContextUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" + }, + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "contract": "OwnableUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)49_storage", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:82" + }, + { + "contract": "ERC165Upgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:36" + }, + { + "contract": "ERC1155ReceiverUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC1155/utils/ERC1155ReceiverUpgradeable.sol:27" + }, + { + "contract": "ERC1155HolderUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC1155/utils/ERC1155HolderUpgradeable.sol:40" + }, + { + "contract": "ERC721HolderUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/utils/ERC721HolderUpgradeable.sol:35" + }, + { + "contract": "FraktalFactoryV2", + "label": "Fraktalimplementation", + "type": "t_address", + "src": "contracts/FraktalFactoryV2.sol:16" + }, + { + "contract": "FraktalFactoryV2", + "label": "revenueChannelImplementation", + "type": "t_address", + "src": "contracts/FraktalFactoryV2.sol:17" + }, + { + "contract": "FraktalFactoryV2", + "label": "fraktalNFTs", + "type": "t_struct(UintToAddressMap)9036_storage", + "src": "contracts/FraktalFactoryV2.sol:18" + }, + { + "contract": "FraktalFactoryV2", + "label": "lockedERC721s", + "type": "t_mapping(t_address,t_struct(ERC721Imported)12473_storage)", + "src": "contracts/FraktalFactoryV2.sol:27" + }, + { + "contract": "FraktalFactoryV2", + "label": "lockedERC1155s", + "type": "t_mapping(t_address,t_struct(ERC1155Imported)12478_storage)", + "src": "contracts/FraktalFactoryV2.sol:28" + } + ], + "types": { + "t_address": { + "label": "address" + }, + "t_struct(UintToAddressMap)9036_storage": { + "label": "struct EnumerableMap.UintToAddressMap", + "members": [ + { + "label": "_inner", + "type": "t_struct(Map)8806_storage" + } + ] + }, + "t_struct(Map)8806_storage": { + "label": "struct EnumerableMap.Map", + "members": [ + { + "label": "_keys", + "type": "t_struct(Bytes32Set)9475_storage" + }, + { + "label": "_values", + "type": "t_mapping(t_bytes32,t_bytes32)" + } + ] + }, + "t_struct(Bytes32Set)9475_storage": { + "label": "struct EnumerableSet.Bytes32Set", + "members": [ + { + "label": "_inner", + "type": "t_struct(Set)9281_storage" + } + ] + }, + "t_mapping(t_bytes32,t_bytes32)": { + "label": "mapping(bytes32 => bytes32)" + }, + "t_bytes32": { + "label": "bytes32" + }, + "t_struct(Set)9281_storage": { + "label": "struct EnumerableSet.Set", + "members": [ + { + "label": "_values", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "label": "_indexes", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ] + }, + "t_array(t_bytes32)dyn_storage": { + "label": "bytes32[]" + }, + "t_mapping(t_bytes32,t_uint256)": { + "label": "mapping(bytes32 => uint256)" + }, + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_struct(ERC721Imported)12473_storage)": { + "label": "mapping(address => struct FraktalFactoryV2.ERC721Imported)" + }, + "t_struct(ERC721Imported)12473_storage": { + "label": "struct FraktalFactoryV2.ERC721Imported", + "members": [ + { + "label": "tokenAddress", + "type": "t_address" + }, + { + "label": "tokenIndex", + "type": "t_uint256" + } + ] + }, + "t_mapping(t_address,t_struct(ERC1155Imported)12478_storage)": { + "label": "mapping(address => struct FraktalFactoryV2.ERC1155Imported)" + }, + "t_struct(ERC1155Imported)12478_storage": { + "label": "struct FraktalFactoryV2.ERC1155Imported", + "members": [ + { + "label": "tokenAddress", + "type": "t_address" + }, + { + "label": "tokenIndex", + "type": "t_uint256" + } + ] + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]" + }, + "t_bool": { + "label": "bool" + } + } + } } } } diff --git a/.openzeppelin/unknown-31337.json b/.openzeppelin/unknown-31337.json index 5d4844e..2184d65 100644 --- a/.openzeppelin/unknown-31337.json +++ b/.openzeppelin/unknown-31337.json @@ -1,20 +1,20 @@ { "manifestVersion": "3.2", "admin": { - "address": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "txHash": "0x06ab90f2dd54ae1881999f06ab4ed342730787af8dd7d9bd24b235cd4a2bd6c0", + "address": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", + "txHash": "0xf2295a3896c71d29dcb3bbd2942a2c251a94dcf4817418bd9cf19bc98fee4f35", "deployTransaction": { - "hash": "0x06ab90f2dd54ae1881999f06ab4ed342730787af8dd7d9bd24b235cd4a2bd6c0", + "hash": "0xf2295a3896c71d29dcb3bbd2942a2c251a94dcf4817418bd9cf19bc98fee4f35", "type": 2, "accessList": [], - "blockHash": "0x93f69707805bdac535f054f59c4e3b7fb1a55df236a75368ed00ddf597bd86a1", - "blockNumber": 4, + "blockHash": "0xc8b8e846b7aa1eea9405fb753e1bba574b370dce8d62b863b65ebb7bb3de5a65", + "blockNumber": 2, "transactionIndex": 0, "confirmations": 1, "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "gasPrice": { "type": "BigNumber", - "hex": "0x60b01693" + "hex": "0x6a218399" }, "maxPriorityFeePerGas": { "type": "BigNumber", @@ -22,7 +22,7 @@ }, "maxFeePerGas": { "type": "BigNumber", - "hex": "0x85c56326" + "hex": "0x98a83d32" }, "gasLimit": { "type": "BigNumber", @@ -33,21 +33,16 @@ "type": "BigNumber", "hex": "0x00" }, - "nonce": 3, + "nonce": 1, "data": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610759806100616000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead146101645761007b565b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610515565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee366004610554565b610292565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461058c565b61031c565b34801561013057600080fd5b506100d161013f366004610554565b6103ad565b34801561015057600080fd5b506100d161015f366004610515565b610405565b34801561017057600080fd5b506100a061017f366004610515565b6104ef565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d9190610538565b949350505050565b6000546001600160a01b031633146102485760405162461bcd60e51b815260040161023f906106c0565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102bc5760405162461bcd60e51b815260040161023f906106c0565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561030057600080fd5b505af1158015610314573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146103465760405162461bcd60e51b815260040161023f906106c0565b60405163278f794360e11b81526001600160a01b03841690634f1ef286903490610376908690869060040161065d565b6000604051808303818588803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146103d75760405162461bcd60e51b815260040161023f906106c0565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe6906024016102e6565b6000546001600160a01b0316331461042f5760405162461bcd60e51b815260040161023f906106c0565b6001600160a01b0381166104945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b600060208284031215610526578081fd5b81356105318161070b565b9392505050565b600060208284031215610549578081fd5b81516105318161070b565b60008060408385031215610566578081fd5b82356105718161070b565b915060208301356105818161070b565b809150509250929050565b6000806000606084860312156105a0578081fd5b83356105ab8161070b565b925060208401356105bb8161070b565b9150604084013567ffffffffffffffff808211156105d7578283fd5b818601915086601f8301126105ea578283fd5b8135818111156105fc576105fc6106f5565b604051601f8201601f19908116603f01168101908382118183101715610624576106246106f5565b8160405282815289602084870101111561063c578586fd5b82602086016020830137856020848301015280955050505050509250925092565b600060018060a01b038416825260206040818401528351806040850152825b818110156106985785810183015185820160600152820161067c565b818111156106a95783606083870101525b50601f01601f191692909201606001949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461072057600080fd5b5056fea2646970667358221220d849f96f3086b9f82cdcf665adb8c697ace05638da1c7c16ab2d26293717af6764736f6c63430008020033", - "r": "0x69c319d0b10ba734301d2db9cb9e8376b12c42059e2e5fd500c9e7db480d2e5f", - "s": "0x016132c54cc6a920af600eda5e3355d4290953c28339fd7408dacb56aebb7d5d", - "v": 0, - "creates": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", + "r": "0x02049158f16466d27a92bb4220f0b8f721e9490e139de632dd6d60a939782473", + "s": "0x7c0f23162980124bc2700aabd38fb49de1880961f4e1a36afb7e8dd95558efce", + "v": 1, + "creates": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", "chainId": 31337 } }, "proxies": [ - { - "address": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "txHash": "0x32bc7d14a47df8fe13432091f3fc0aeb56fee0865f8788bae768c5bb57af3adc", - "kind": "transparent" - }, { "address": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", "txHash": "0x73a61c2e5196136596171b0b993b90daf733ea71b2a7828665d6bcbeb888f8a7", @@ -102,6 +97,11 @@ "address": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", "txHash": "0xdfa44094eeb5dc934823e54f027740cdb9c22313c9d55e5668ea3211ad3bd2dc", "kind": "transparent" + }, + { + "address": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "txHash": "0x183fa06b17ae7106db37513b5497df5d425698acbd98e9bdca828418a4e3d315", + "kind": "transparent" } ], "impls": { @@ -244,8 +244,8 @@ } }, "3f49dc5b32ec07658e7b872a80a69acfff34f8bd7ad35514235a022d5a23ce21": { - "address": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "txHash": "0x08650f5842a20f502cc414bf1b67b90707bdcc217e22d1012980f24c31ff25d1", + "address": "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "txHash": "0xc46b61b640a7458266417c36983afc675b5f92094dc2ce4eb85f4b97776b1526", "layout": { "storage": [ { @@ -685,6 +685,203 @@ } } } + }, + "abdf92094f4a56d809602c12d966bdd9772000aa77850a54a4cf725f5149f4e1": { + "address": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", + "txHash": "0x6e6ec85a0cc0992f59e9829cf1c07ad3b2cce35d2a7c91b744771a3d5c867b54", + "layout": { + "storage": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:39" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:44" + }, + { + "contract": "ContextUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:31" + }, + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "contract": "OwnableUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)49_storage", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:82" + }, + { + "contract": "ERC165Upgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:36" + }, + { + "contract": "ERC1155ReceiverUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC1155/utils/ERC1155ReceiverUpgradeable.sol:27" + }, + { + "contract": "ERC1155HolderUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC1155/utils/ERC1155HolderUpgradeable.sol:40" + }, + { + "contract": "ERC721HolderUpgradeable", + "label": "__gap", + "type": "t_array(t_uint256)50_storage", + "src": "@openzeppelin/contracts-upgradeable/token/ERC721/utils/ERC721HolderUpgradeable.sol:35" + }, + { + "contract": "FraktalFactoryV2", + "label": "Fraktalimplementation", + "type": "t_address", + "src": "contracts/FraktalFactoryV2.sol:16" + }, + { + "contract": "FraktalFactoryV2", + "label": "revenueChannelImplementation", + "type": "t_address", + "src": "contracts/FraktalFactoryV2.sol:17" + }, + { + "contract": "FraktalFactoryV2", + "label": "fraktalNFTs", + "type": "t_struct(UintToAddressMap)9036_storage", + "src": "contracts/FraktalFactoryV2.sol:18" + }, + { + "contract": "FraktalFactoryV2", + "label": "lockedERC721s", + "type": "t_mapping(t_address,t_struct(ERC721Imported)12473_storage)", + "src": "contracts/FraktalFactoryV2.sol:27" + }, + { + "contract": "FraktalFactoryV2", + "label": "lockedERC1155s", + "type": "t_mapping(t_address,t_struct(ERC1155Imported)12478_storage)", + "src": "contracts/FraktalFactoryV2.sol:28" + } + ], + "types": { + "t_address": { + "label": "address" + }, + "t_struct(UintToAddressMap)9036_storage": { + "label": "struct EnumerableMap.UintToAddressMap", + "members": [ + { + "label": "_inner", + "type": "t_struct(Map)8806_storage" + } + ] + }, + "t_struct(Map)8806_storage": { + "label": "struct EnumerableMap.Map", + "members": [ + { + "label": "_keys", + "type": "t_struct(Bytes32Set)9475_storage" + }, + { + "label": "_values", + "type": "t_mapping(t_bytes32,t_bytes32)" + } + ] + }, + "t_struct(Bytes32Set)9475_storage": { + "label": "struct EnumerableSet.Bytes32Set", + "members": [ + { + "label": "_inner", + "type": "t_struct(Set)9281_storage" + } + ] + }, + "t_mapping(t_bytes32,t_bytes32)": { + "label": "mapping(bytes32 => bytes32)" + }, + "t_bytes32": { + "label": "bytes32" + }, + "t_struct(Set)9281_storage": { + "label": "struct EnumerableSet.Set", + "members": [ + { + "label": "_values", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "label": "_indexes", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ] + }, + "t_array(t_bytes32)dyn_storage": { + "label": "bytes32[]" + }, + "t_mapping(t_bytes32,t_uint256)": { + "label": "mapping(bytes32 => uint256)" + }, + "t_uint256": { + "label": "uint256" + }, + "t_mapping(t_address,t_struct(ERC721Imported)12473_storage)": { + "label": "mapping(address => struct FraktalFactoryV2.ERC721Imported)" + }, + "t_struct(ERC721Imported)12473_storage": { + "label": "struct FraktalFactoryV2.ERC721Imported", + "members": [ + { + "label": "tokenAddress", + "type": "t_address" + }, + { + "label": "tokenIndex", + "type": "t_uint256" + } + ] + }, + "t_mapping(t_address,t_struct(ERC1155Imported)12478_storage)": { + "label": "mapping(address => struct FraktalFactoryV2.ERC1155Imported)" + }, + "t_struct(ERC1155Imported)12478_storage": { + "label": "struct FraktalFactoryV2.ERC1155Imported", + "members": [ + { + "label": "tokenAddress", + "type": "t_address" + }, + { + "label": "tokenIndex", + "type": "t_uint256" + } + ] + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]" + }, + "t_bool": { + "label": "bool" + } + } + } } } } diff --git a/contracts/FraktalFactoryV2.sol b/contracts/FraktalFactoryV2.sol new file mode 100644 index 0000000..cb72651 --- /dev/null +++ b/contracts/FraktalFactoryV2.sol @@ -0,0 +1,182 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import './FraktalNFT.sol'; +import '@openzeppelin/contracts-upgradeable/proxy/ClonesUpgradeable.sol'; +import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC1155/utils/ERC1155HolderUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC721/utils/ERC721HolderUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import "@openzeppelin/contracts/utils/structs/EnumerableMap.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; + +contract FraktalFactoryV2 is Initializable,OwnableUpgradeable, ERC1155HolderUpgradeable, ERC721HolderUpgradeable { + using EnumerableMap for EnumerableMap.UintToAddressMap; + address public Fraktalimplementation; + address public revenueChannelImplementation; + EnumerableMap.UintToAddressMap private fraktalNFTs; + struct ERC721Imported { + address tokenAddress; + uint256 tokenIndex; + } + struct ERC1155Imported { + address tokenAddress; + uint256 tokenIndex; + } + mapping(address => ERC721Imported) public lockedERC721s; + mapping(address => ERC1155Imported) public lockedERC1155s; + + event Minted(address creator,string urlIpfs,address tokenAddress,uint256 nftId); + event ERC721Locked(address locker, address tokenAddress, address fraktal, uint256 tokenId); + event ERC721UnLocked(address owner, uint256 tokenId, address collateralNft, uint256 index); + event ERC1155Locked(address locker, address tokenAddress, address fraktal, uint256 tokenId); + event ERC1155UnLocked(address owner, address tokenAddress, address collateralNft, uint256 index); + event RevenuesProtocolUpgraded(address _newAddress); + event FraktalProtocolUpgraded(address _newAddress); + event CollateralChanged(address fraktal, address collateral); + + // constructor(address _implementation, address _revenueChannelImplementation) { + // Fraktalimplementation = _implementation; + // revenueChannelImplementation = _revenueChannelImplementation; + // } + + function initialize(address _implementation, address _revenueChannelImplementation) public initializer { + __Ownable_init(); + Fraktalimplementation = _implementation; + revenueChannelImplementation = _revenueChannelImplementation; + } + +// Admin Functions +////////////////////////////////// + function setFraktalImplementation(address _newAddress) external onlyOwner { + Fraktalimplementation = _newAddress; + emit FraktalProtocolUpgraded(_newAddress); + } + function setRevenueImplementation(address _newAddress) external onlyOwner { + revenueChannelImplementation = _newAddress; + emit RevenuesProtocolUpgraded(_newAddress); + } + +// Users Functions +////////////////////////////////// + function mint(string memory urlIpfs, uint16 majority, string memory _name, string memory _symbol) public returns (address _clone) { + _clone = ClonesUpgradeable.clone(Fraktalimplementation); + FraktalNFT(_clone).init(_msgSender(), revenueChannelImplementation, urlIpfs, majority,_name,_symbol); + uint256 index = fraktalNFTs.length(); + fraktalNFTs.set(index, _clone); + emit Minted(_msgSender(), urlIpfs, _clone,index); + } + + function importERC721(address _tokenAddress, uint256 _tokenId, uint16 majority) external returns (address _clone) { + string memory uri = ERC721Upgradeable(_tokenAddress).tokenURI(_tokenId); + string memory name = ERC721Upgradeable(_tokenAddress).name(); + string memory symbol = ERC721Upgradeable(_tokenAddress).symbol(); + name = string(abi.encodePacked("FraktalNFT(",name,")")); + symbol = string(abi.encodePacked("F",symbol,"#",uint2str(_tokenId))); + _clone = this.mint(uri, majority, name, symbol); + ERC721Imported memory nft = ERC721Imported({ + tokenAddress: _tokenAddress, + tokenIndex: _tokenId + }); + ERC721Upgradeable(_tokenAddress).transferFrom(_msgSender(), _clone, _tokenId); + // ERC721Upgradeable(_tokenAddress).transferFrom(_msgSender(), address(this), _tokenId); + FraktalNFT(_clone).setCollateral(_tokenAddress); + lockedERC721s[_clone] = nft; + FraktalNFT(_clone).safeTransferFrom(address(this), _msgSender(), 0, 1, ''); + emit ERC721Locked(_msgSender(), _tokenAddress, _clone, _tokenId); + } + function importERC1155(address _tokenAddress, uint256 _tokenId, uint16 majority) external returns (address _clone) { + string memory uri = ERC1155Upgradeable(_tokenAddress).uri(_tokenId); + _clone = this.mint(uri, majority,"",""); + ERC1155Imported memory nft = ERC1155Imported({ + tokenAddress: _tokenAddress, + tokenIndex: _tokenId + }); + ERC1155Upgradeable(_tokenAddress).safeTransferFrom(_msgSender(), _clone, _tokenId, 1, ''); + // ERC1155Upgradeable(_tokenAddress).safeTransferFrom(_msgSender(), address(this), _tokenId, 1, ''); + FraktalNFT(_clone).setCollateral(_tokenAddress); + lockedERC1155s[_clone] = nft; + FraktalNFT(_clone).safeTransferFrom(address(this), _msgSender(), 0, 1, ''); + emit ERC1155Locked(_msgSender(), _tokenAddress, _clone, _tokenId); + } + function claimERC721(uint256 _tokenId) external { + address fraktalAddress = fraktalNFTs.get(_tokenId); + ERC721Imported storage collateralNft = lockedERC721s[fraktalAddress]; + address abandonedFraktal = collateralNft.tokenAddress; + uint256 abandonedIndex = collateralNft.tokenIndex; + FraktalNFT(fraktalAddress).safeTransferFrom(_msgSender(), address(this),0,1,''); + FraktalNFT(fraktalAddress).claimContainedERC721(abandonedFraktal,abandonedIndex); + ERC721Upgradeable(collateralNft.tokenAddress).transferFrom(address(this), _msgSender(), collateralNft.tokenIndex); + fraktalNFTs.set(_tokenId, address(0)); + lockedERC721s[fraktalAddress] = ERC721Imported(address(0),0); + emit ERC721UnLocked(_msgSender(), _tokenId, abandonedFraktal, abandonedIndex); + } + function claimERC1155(uint256 _tokenId) external { + address fraktalAddress = fraktalNFTs.get(_tokenId); + ERC1155Imported storage collateralNft = lockedERC1155s[fraktalAddress]; + address abandonedFraktal = collateralNft.tokenAddress; + uint256 abandonedIndex = collateralNft.tokenIndex; + FraktalNFT(fraktalAddress).safeTransferFrom(_msgSender(), address(this),0,1,''); + uint256 balance = ERC1155Upgradeable(collateralNft.tokenAddress).balanceOf(fraktalAddress, abandonedIndex); + FraktalNFT(fraktalAddress).claimContainedERC1155(abandonedFraktal,abandonedIndex,balance); + ERC1155Upgradeable(collateralNft.tokenAddress).safeTransferFrom(address(this), _msgSender(), collateralNft.tokenIndex,balance,''); + fraktalNFTs.set(_tokenId, address(0)); + lockedERC1155s[fraktalAddress] = ERC1155Imported(address(0),0); + emit ERC1155UnLocked(_msgSender(), fraktalAddress, abandonedFraktal, abandonedIndex); + } + +// GETTERS +////////////////////////////////// + function getFraktalAddress(uint256 _tokenId) public view returns(address){ + return address(fraktalNFTs.get(_tokenId)); + } + function getERC721Collateral(address fraktalAddress) public view returns(address){ + return(lockedERC721s[fraktalAddress].tokenAddress); + } + function getERC1155Collateral(address fraktalAddress) public view returns(address){ + return(lockedERC1155s[fraktalAddress].tokenAddress); + } + function getFraktalsLength() public view returns(uint256){ + return(fraktalNFTs.length()); + } + + + function uint2str(uint256 _i) internal pure returns (string memory _uintAsString) { + if (_i == 0) { + return "0"; + } + uint j = _i; + uint len; + while (j != 0) { + len++; + j /= 10; + } + bytes memory bstr = new bytes(len); + uint k = len; + while (_i != 0) { + k = k-1; + uint8 temp = (48 + uint8(_i - _i / 10 * 10)); + bytes1 b1 = bytes1(temp); + bstr[k] = b1; + _i /= 10; + } + return string(bstr); + } + + function onERC721Received( + address, + uint256, + bytes memory + ) public pure returns (bytes4) { + return bytes4(keccak256("onERC721Received(address,uint256,bytes)")); + } + + function changeFraktalCollateral(address _tokenAddress, address _newCollateralAddress) public onlyOwner{ + FraktalNFT(_tokenAddress).setCollateral(_newCollateralAddress); + emit CollateralChanged(_tokenAddress,_newCollateralAddress); + } +} + +// Helpers +////////////////////////// diff --git a/scripts/upgrade-factory-to-v2.js b/scripts/upgrade-factory-to-v2.js new file mode 100644 index 0000000..702e9a9 --- /dev/null +++ b/scripts/upgrade-factory-to-v2.js @@ -0,0 +1,33 @@ +const { ethers, upgrades } = require('hardhat') +const hre = require("hardhat"); + +require('dotenv').config() + +async function main(){ + const [deployer] = await ethers.getSigners(); + + console.log("Deploying contracts with the account:", deployer.address); + console.log("Account balance:", (await deployer.getBalance()).toString()); + +/// +// const FraktalFactory = await ethers.getContractFactory("FraktalFactory"); +// const fraktalFactory = await upgrades.deployProxy(FraktalFactory, [deployer.address,deployer.address]); +// await fraktalFactory.deployed(); +// console.log("FraktalFactory deployed to:", fraktalFactory.address); + /// + + + let proxyAddress = "0x5DF977d385254D9a66ab8cD35e87E1E0c419b135"; + + + const newMarket = await ethers.getContractFactory("FraktalFactoryV2"); + const upgradedMarket = await upgrades.upgradeProxy(proxyAddress, newMarket); + console.log("Market upgraded"); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); \ No newline at end of file