Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
vincentgeneste committed Jan 10, 2024
2 parents 522fecd + b52a562 commit 08ebdec
Show file tree
Hide file tree
Showing 20 changed files with 362 additions and 986 deletions.
18 changes: 9 additions & 9 deletions .config.js
Original file line number Diff line number Diff line change
Expand Up @@ -149,15 +149,15 @@ const shardeum_testnet = {

const neoevm_testnet = {
fees: 0,
transferProxy: '0x55F02AcD0ba21AFaC507c8C79cF5Bc25A92A6754',
erc20TransferProxy: '0x92E20C3534535db17D4c7c622538eB0930544230',
erc721LazyMintTransferProxy: '0x31E02e8d1Fbb0bdeC82f46336BD3eb1759D44B3d',
erc1155LazyMintTransferProxy: '0xC881B96b13da75ccBd35Dad5443238ae982e479b',
royalties_proxy: '0xC61F536aa86b84c042349BB88bE3c87E5daC9f75',
exchange_proxy: '0x7B1B9c24A04f45C7FB7A8f9aD90b909443dEeCbD',
exchange_wrapper_proxy: '0x67cA3f0135457FfB2F967bFf912536304E1E4f4C',
customMatcher: '0x7e303d1cCDA88e6b3d5528B1D98533Fdf8d102fC',
wrapped: '',
transferProxy: '0x07C68e07F33C4Ec796166390722d50429EFd63E4',
erc20TransferProxy: '0x80762F5ce7d145a1fB61c5527Fa0730E87E0142d',
erc721LazyMintTransferProxy: '0xbf975661571d8b6c8970497ed3A45bF59795dF05',
erc1155LazyMintTransferProxy: '0x994b6d56934cC4CD0A887f3256432317c72A6A6B',
royalties_proxy: '0x54cd0F7627597b8Ea25DFC1dD0cC81F952c2d900',
exchange_proxy: '0x6C262F81C9b2B290a8f387A33733cD6E38077e41',
exchange_wrapper_proxy: '0x73D4fc9C87869Ae8da40041F4Bad7799B272c533',
customMatcher: '0x13198470055c28D5Ebab51B7A9BB4D76c34f49E9',
wrapped: '0x1CE16390FD09040486221e912B87551E4e44Ab17',
uniswapV2: '',
uniswapV3: '',
};
Expand Down
22 changes: 11 additions & 11 deletions deploy/023_set_wrapper_settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ async function main() {
const WRAPPER = getSettings(CHAIN).exchange_wrapper_proxy;
const WRAPPED_TOKEN = getSettings(CHAIN).wrapped;
// const RARIBLE_ERC20_TRANSFER_PROXY = ZERO; // CUSTOM ERC20 PROXY
const OPENSEA_1_5_ERC20_TRANSFER_PROXY = getSettings(CHAIN).seaport_1_5;
const OPENSEA_1_4_ERC20_TRANSFER_PROXY = getSettings(CHAIN).seaport_1_4;
// const OPENSEA_1_5_ERC20_TRANSFER_PROXY = getSettings(CHAIN).seaport_1_5;
// const OPENSEA_1_4_ERC20_TRANSFER_PROXY = getSettings(CHAIN).seaport_1_4;
// const LOOKSRARE_ERC20_TRANSFER_PROXY = getSettings(CHAIN).looksrare;
// const X2Y2_ERC20_TRANSFER_PROXY = getSettings(CHAIN).x2y2;
// const UNISWAP_V2 = getSettings(CHAIN).uniswapV2;
Expand All @@ -25,27 +25,27 @@ async function main() {

console.log(`Setting wrapper settings on ${CHAIN} start`);

// const proxyContract = await ethers.getContractAt('ERC20TransferProxy', ERC20_TRANSFER_PROXY);
const proxyContract = await ethers.getContractAt('ERC20TransferProxy', ERC20_TRANSFER_PROXY);
// set wrapper as an operator
// await proxyContract.addOperator(WRAPPER);
await proxyContract.addOperator(WRAPPER);

const wrapperContract = await ethers.getContractAt('ExchangeWrapper', WRAPPER);
// set wrapped token on wrapper
// await wrapperContract.setWrapped(WRAPPED_TOKEN);
await wrapperContract.setWrapped(WRAPPED_TOKEN);
// set erc20 transfer proxy for wrapper
// await wrapperContract.setTransferProxy(ERC20_TRANSFER_PROXY);
await wrapperContract.setTransferProxy(ERC20_TRANSFER_PROXY);
// set ghostmarket erc20 transfer proxy on wrapper
// await wrapperContract.setMarketProxy(MARKET_ID_GHOSTMARKET, ERC20_TRANSFER_PROXY);
await wrapperContract.setMarketProxy(MARKET_ID_GHOSTMARKET, ERC20_TRANSFER_PROXY);

// set other erc20 transfer proxy on wrapper
// await wrapperContract.setMarketProxy(MARKET_ID_RARIBLE, RARIBLE_ERC20_TRANSFER_PROXY);
await wrapperContract.setMarketProxy(MARKET_ID_SEAPORT_1_5, OPENSEA_1_5_ERC20_TRANSFER_PROXY);
await wrapperContract.setMarketProxy(MARKET_ID_SEAPORT_1_4, OPENSEA_1_4_ERC20_TRANSFER_PROXY);
// await wrapperContract.setMarketProxy(MARKET_ID_SEAPORT_1_5, OPENSEA_1_5_ERC20_TRANSFER_PROXY);
// await wrapperContract.setMarketProxy(MARKET_ID_SEAPORT_1_4, OPENSEA_1_4_ERC20_TRANSFER_PROXY);
// await wrapperContract.setMarketProxy(MARKET_ID_LOOKSRARE, LOOKSRARE_ERC20_TRANSFER_PROXY);
// await wrapperContract.setMarketProxy(MARKET_ID_X2Y2, X2Y2_ERC20_TRANSFER_PROXY);

await wrapperContract.setSeaport14(getSettings(CHAIN).seaport_1_4);
await wrapperContract.setSeaport15(getSettings(CHAIN).seaport_1_5);
// await wrapperContract.setSeaport14(getSettings(CHAIN).seaport_1_4);
// await wrapperContract.setSeaport15(getSettings(CHAIN).seaport_1_5);

// set uniswap config on wrapper
//await wrapperContract.setUniswapV2(UNISWAP_V2);
Expand Down
2 changes: 1 addition & 1 deletion deployments/neoevm_testnet/.chainId
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2970385
12227329
20 changes: 10 additions & 10 deletions deployments/neoevm_testnet/AssetMatcherCollection.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"address": "0x7e303d1cCDA88e6b3d5528B1D98533Fdf8d102fC",
"address": "0x13198470055c28D5Ebab51B7A9BB4D76c34f49E9",
"abi": [
{
"inputs": [
Expand Down Expand Up @@ -62,25 +62,25 @@
"type": "function"
}
],
"transactionHash": "0x6ab293e9bfe8bea9aec4476d78736408bb8aa0568c11d1755a0d5513b6afe6f1",
"transactionHash": "0xb676593ee820e6169e534401cf233cc9487a41fdfab7a56234a9785d6552a641",
"receipt": {
"to": null,
"from": "0x07714A8BF073510996D948D8aA39f8E32627fe62",
"contractAddress": "0x7e303d1cCDA88e6b3d5528B1D98533Fdf8d102fC",
"from": "0x9E1bd73820A607b06086b5B5173765a61CEEE7dC",
"contractAddress": "0x13198470055c28D5Ebab51B7A9BB4D76c34f49E9",
"transactionIndex": 0,
"gasUsed": "1442663",
"gasUsed": "289095",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"blockHash": "0xb3181499f714037f010970c4d800e43150c412b293ace209830a7823fb8739c2",
"transactionHash": "0x6ab293e9bfe8bea9aec4476d78736408bb8aa0568c11d1755a0d5513b6afe6f1",
"blockHash": "0xb66da4cc099dd2f313b67e61c8e088931932c9a52c8292fc57f734644fb58cf2",
"transactionHash": "0xb676593ee820e6169e534401cf233cc9487a41fdfab7a56234a9785d6552a641",
"logs": [],
"blockNumber": 754685,
"cumulativeGasUsed": "1442663",
"blockNumber": 260837,
"cumulativeGasUsed": "289095",
"status": 1,
"byzantium": true
},
"args": [],
"numDeployments": 1,
"solcInputHash": "2e1631ab269086387667f91d00ac6cf6",
"solcInputHash": "b409e2163f540739a526753a3a6c5675",
"metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"assetClass\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct LibAsset.AssetType\",\"name\":\"leftAssetType\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"assetClass\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct LibAsset.AssetType\",\"name\":\"rightAssetType\",\"type\":\"tuple\"}],\"name\":\"matchAssets\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"assetClass\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct LibAsset.AssetType\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/custom-matcher/AssetMatcherCollection.sol\":\"AssetMatcherCollection\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"src/custom-matcher/AssetMatcherCollection.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.9;\\n\\nimport \\\"../interfaces/IAssetMatcher.sol\\\";\\nimport \\\"../librairies/LibERC721LazyMint.sol\\\";\\nimport \\\"../librairies/LibERC1155LazyMint.sol\\\";\\n\\ncontract AssetMatcherCollection is IAssetMatcher {\\n bytes internal constant EMPTY = \\\"\\\";\\n\\n function matchAssets(\\n LibAsset.AssetType memory leftAssetType,\\n LibAsset.AssetType memory rightAssetType\\n ) external pure override returns (LibAsset.AssetType memory) {\\n if (\\n (rightAssetType.assetClass == LibAsset.ERC721_ASSET_CLASS) ||\\n (rightAssetType.assetClass == LibAsset.ERC1155_ASSET_CLASS) ||\\n (rightAssetType.assetClass == LibERC721LazyMint.ERC721_LAZY_ASSET_CLASS) ||\\n (rightAssetType.assetClass == LibERC1155LazyMint.ERC1155_LAZY_ASSET_CLASS) ||\\n (rightAssetType.assetClass == LibAsset.CRYPTO_PUNKS)\\n ) {\\n address leftToken = abi.decode(leftAssetType.data, (address));\\n (address rightToken, ) = abi.decode(rightAssetType.data, (address, uint));\\n if (leftToken == rightToken) {\\n return LibAsset.AssetType(rightAssetType.assetClass, rightAssetType.data);\\n }\\n }\\n return LibAsset.AssetType(0, EMPTY);\\n }\\n}\\n\",\"keccak256\":\"0xcdf04264c6e26ed8a626cf1e14c27aa611ec61f80a0bbb4a203b639b094c4f95\",\"license\":\"MIT\"},\"src/interfaces/IAssetMatcher.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.9;\\n\\nimport \\\"../librairies/LibAsset.sol\\\";\\n\\ninterface IAssetMatcher {\\n function matchAssets(\\n LibAsset.AssetType memory leftAssetType,\\n LibAsset.AssetType memory rightAssetType\\n ) external view returns (LibAsset.AssetType memory);\\n}\\n\",\"keccak256\":\"0x07d4f1a0fb8742e578f746cd326cc56856eed9c50ac74acd8978d273dc580a19\",\"license\":\"MIT\"},\"src/librairies/LibAsset.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.9;\\n\\nlibrary LibAsset {\\n bytes4 public constant ETH_ASSET_CLASS = bytes4(keccak256(\\\"ETH\\\"));\\n bytes4 public constant ERC20_ASSET_CLASS = bytes4(keccak256(\\\"ERC20\\\"));\\n bytes4 public constant ERC721_ASSET_CLASS = bytes4(keccak256(\\\"ERC721\\\"));\\n bytes4 public constant ERC1155_ASSET_CLASS = bytes4(keccak256(\\\"ERC1155\\\"));\\n bytes4 public constant COLLECTION = bytes4(keccak256(\\\"COLLECTION\\\"));\\n bytes4 public constant CRYPTO_PUNKS = bytes4(keccak256(\\\"CRYPTO_PUNKS\\\"));\\n\\n bytes32 public constant ASSET_TYPE_TYPEHASH = keccak256(\\\"AssetType(bytes4 assetClass,bytes data)\\\");\\n\\n bytes32 public constant ASSET_TYPEHASH =\\n keccak256(\\\"Asset(AssetType assetType,uint256 value)AssetType(bytes4 assetClass,bytes data)\\\");\\n\\n struct AssetType {\\n bytes4 assetClass;\\n bytes data;\\n }\\n\\n struct Asset {\\n AssetType assetType;\\n uint256 value;\\n }\\n\\n function hash(AssetType memory assetType) internal pure returns (bytes32) {\\n return keccak256(abi.encode(ASSET_TYPE_TYPEHASH, assetType.assetClass, keccak256(assetType.data)));\\n }\\n\\n function hash(Asset memory asset) internal pure returns (bytes32) {\\n return keccak256(abi.encode(ASSET_TYPEHASH, hash(asset.assetType), asset.value));\\n }\\n}\\n\",\"keccak256\":\"0x10f962b944a4ffa957d22d70073318bc5376a3666d6e6b858affc8eb258d7d8d\",\"license\":\"MIT\"},\"src/librairies/LibERC1155LazyMint.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.9;\\n\\nimport \\\"./LibPart.sol\\\";\\n\\nlibrary LibERC1155LazyMint {\\n bytes4 public constant ERC1155_LAZY_ASSET_CLASS = bytes4(keccak256(\\\"ERC1155_LAZY\\\"));\\n\\n struct Mint1155Data {\\n uint tokenId;\\n string tokenURI;\\n uint amount;\\n address minter;\\n LibPart.Part[] royalties;\\n bytes signature;\\n }\\n\\n bytes32 public constant MINT_AND_TRANSFER_TYPEHASH =\\n keccak256(\\n \\\"Mint1155(uint256 tokenId,string tokenURI,uint256 amount,address minter,Part[] royalties)Part(address recipient,uint256 value)\\\"\\n );\\n\\n function hash(Mint1155Data memory data) internal pure returns (bytes32) {\\n bytes32[] memory royaltiesBytes = new bytes32[](data.royalties.length);\\n uint length = data.royalties.length;\\n for (uint i; i < length; ++i) {\\n royaltiesBytes[i] = LibPart.hash(data.royalties[i]);\\n }\\n return\\n keccak256(\\n abi.encode(\\n MINT_AND_TRANSFER_TYPEHASH,\\n data.tokenId,\\n keccak256(bytes(data.tokenURI)),\\n data.amount,\\n data.minter,\\n keccak256(abi.encodePacked(royaltiesBytes))\\n )\\n );\\n }\\n}\\n\",\"keccak256\":\"0x47be425101670fa8dce1529ea5c1e2890c833040fbf9a13ce4cbe2eaa4e690e7\",\"license\":\"MIT\"},\"src/librairies/LibERC721LazyMint.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.9;\\n\\nimport \\\"./LibPart.sol\\\";\\n\\nlibrary LibERC721LazyMint {\\n bytes4 public constant ERC721_LAZY_ASSET_CLASS = bytes4(keccak256(\\\"ERC721_LAZY\\\"));\\n\\n struct Mint721Data {\\n uint tokenId;\\n string tokenURI;\\n address minter;\\n LibPart.Part[] royalties;\\n bytes signature;\\n }\\n\\n bytes32 public constant MINT_AND_TRANSFER_TYPEHASH =\\n keccak256(\\n \\\"Mint721(uint256 tokenId,string tokenURI,address minter,Part[] royalties)Part(address recipient,uint256 value)\\\"\\n );\\n\\n function hash(Mint721Data memory data) internal pure returns (bytes32) {\\n bytes32[] memory royaltiesBytes = new bytes32[](data.royalties.length);\\n uint length = data.royalties.length;\\n for (uint i; i < length; ++i) {\\n royaltiesBytes[i] = LibPart.hash(data.royalties[i]);\\n }\\n return\\n keccak256(\\n abi.encode(\\n MINT_AND_TRANSFER_TYPEHASH,\\n data.tokenId,\\n keccak256(bytes(data.tokenURI)),\\n data.minter,\\n keccak256(abi.encodePacked(royaltiesBytes))\\n )\\n );\\n }\\n}\\n\",\"keccak256\":\"0xd0a8924d168e58094773f3602b8029b3c8c999410c123569e093dfb81f89ac8a\",\"license\":\"MIT\"},\"src/librairies/LibPart.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.9;\\n\\nlibrary LibPart {\\n bytes32 public constant TYPE_HASH = keccak256(\\\"Part(address account,uint96 value)\\\");\\n\\n struct Part {\\n address payable account;\\n uint96 value;\\n }\\n\\n function hash(Part memory part) internal pure returns (bytes32) {\\n return keccak256(abi.encode(TYPE_HASH, part.account, part.value));\\n }\\n}\\n\",\"keccak256\":\"0xedbb696dbf7cd7d5325fc114fd5b7531cf1b1676df98cc5a4cf6330b609ef651\",\"license\":\"MIT\"}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b50610444806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636d3f7cb014610030575b600080fd5b61004361003e3660046102d0565b610059565b6040516100509190610334565b60405180910390f35b60408051808201909152600081526060602082015281516001600160e01b0319166339d690a360e11b148061009f575081516001600160e01b03191663025ceed960e61b145b806100bb575081516001600160e01b03191663d8f960c160e01b145b806100d6575081516001600160e01b03191662737ea960e61b145b806100f2575081516001600160e01b031916630f9ae27560e21b145b15610178576000836020015180602001905181019061011191906103c0565b90506000836020015180602001905181019061012d91906103e2565b509050806001600160a01b0316826001600160a01b031614156101755750506040805180820190915282516001600160e01b031916815260208084015190820152905061019c565b50505b50604080518082018252600080825282516020818101909452908152918101919091525b92915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156101db576101db6101a2565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561020a5761020a6101a2565b604052919050565b60006040828403121561022457600080fd5b61022c6101b8565b905081356001600160e01b03198116811461024657600080fd5b815260208281013567ffffffffffffffff8082111561026457600080fd5b818501915085601f83011261027857600080fd5b81358181111561028a5761028a6101a2565b61029c601f8201601f191685016101e1565b915080825286848285010111156102b257600080fd5b80848401858401376000908201840152918301919091525092915050565b600080604083850312156102e357600080fd5b823567ffffffffffffffff808211156102fb57600080fd5b61030786838701610212565b9350602085013591508082111561031d57600080fd5b5061032a85828601610212565b9150509250929050565b6000602080835263ffffffff60e01b8451168184015280840151604080850152805180606086015260005b8181101561037b5782810184015186820160800152830161035f565b8181111561038d576000608083880101525b50601f01601f191693909301608001949350505050565b80516001600160a01b03811681146103bb57600080fd5b919050565b6000602082840312156103d257600080fd5b6103db826103a4565b9392505050565b600080604083850312156103f557600080fd5b6103fe836103a4565b915060208301519050925092905056fea264697066735822122040b9e675911b3dfcf3d976026d5ebe6ca1f8f6cb9b0946f4e44b966d9b4939d264736f6c63430008090033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636d3f7cb014610030575b600080fd5b61004361003e3660046102d0565b610059565b6040516100509190610334565b60405180910390f35b60408051808201909152600081526060602082015281516001600160e01b0319166339d690a360e11b148061009f575081516001600160e01b03191663025ceed960e61b145b806100bb575081516001600160e01b03191663d8f960c160e01b145b806100d6575081516001600160e01b03191662737ea960e61b145b806100f2575081516001600160e01b031916630f9ae27560e21b145b15610178576000836020015180602001905181019061011191906103c0565b90506000836020015180602001905181019061012d91906103e2565b509050806001600160a01b0316826001600160a01b031614156101755750506040805180820190915282516001600160e01b031916815260208084015190820152905061019c565b50505b50604080518082018252600080825282516020818101909452908152918101919091525b92915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156101db576101db6101a2565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561020a5761020a6101a2565b604052919050565b60006040828403121561022457600080fd5b61022c6101b8565b905081356001600160e01b03198116811461024657600080fd5b815260208281013567ffffffffffffffff8082111561026457600080fd5b818501915085601f83011261027857600080fd5b81358181111561028a5761028a6101a2565b61029c601f8201601f191685016101e1565b915080825286848285010111156102b257600080fd5b80848401858401376000908201840152918301919091525092915050565b600080604083850312156102e357600080fd5b823567ffffffffffffffff808211156102fb57600080fd5b61030786838701610212565b9350602085013591508082111561031d57600080fd5b5061032a85828601610212565b9150509250929050565b6000602080835263ffffffff60e01b8451168184015280840151604080850152805180606086015260005b8181101561037b5782810184015186820160800152830161035f565b8181111561038d576000608083880101525b50601f01601f191693909301608001949350505050565b80516001600160a01b03811681146103bb57600080fd5b919050565b6000602082840312156103d257600080fd5b6103db826103a4565b9392505050565b600080604083850312156103f557600080fd5b6103fe836103a4565b915060208301519050925092905056fea264697066735822122040b9e675911b3dfcf3d976026d5ebe6ca1f8f6cb9b0946f4e44b966d9b4939d264736f6c63430008090033",
Expand Down
Loading

0 comments on commit 08ebdec

Please sign in to comment.