From 87ff08974106e447089efca4c7085f1e369548fa Mon Sep 17 00:00:00 2001 From: Trubnikov Sergey Date: Fri, 03 Jun 2022 14:38:43 +0000 Subject: [PATCH] CORE-386 Fix PR --- --- a/pallets/common/src/erc.rs +++ b/pallets/common/src/erc.rs @@ -261,13 +261,13 @@ Ok(()) } - fn set_collection_access(&mut self, caller: caller, mode: string) -> Result { + fn set_collection_access(&mut self, caller: caller, mode: uint8) -> Result { let caller = T::CrossAccountId::from_eth(caller); self.check_is_owner_or_admin(&caller) .map_err(dispatch_to_evm::)?; - self.collection.permissions.access = Some(match mode.as_str() { - "Normal" => AccessMode::Normal, - "AllowList" => AccessMode::AllowList, + self.collection.permissions.access = Some(match mode { + 0 => AccessMode::Normal, + 1 => AccessMode::AllowList, _ => return Err("Not supported access mode".into()), }); save(self); --- a/pallets/nonfungible/src/lib.rs +++ b/pallets/nonfungible/src/lib.rs @@ -543,6 +543,7 @@ token_owner, .. } => { + //TODO: исследовать угрозы при публичном минтинге. if is_token_create && (collection_admin || token_owner) { return Ok(()); } --- a/pallets/nonfungible/src/stubs/UniqueNFT.sol +++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol @@ -51,135 +51,6 @@ event MintingFinished(); } -// Selector: 1248b7d1 -contract Collection is Dummy, ERC165 { - // Selector: setCollectionProperty(string,bytes) 2f073f66 - function setCollectionProperty(string memory key, bytes memory value) - public - { - require(false, stub_error); - key; - value; - dummy = 0; - } - - // Selector: deleteCollectionProperty(string) 7b7debce - function deleteCollectionProperty(string memory key) public { - require(false, stub_error); - key; - dummy = 0; - } - - // Throws error if key not found - // - // Selector: collectionProperty(string) cf24fd6d - function collectionProperty(string memory key) - public - view - returns (bytes memory) - { - require(false, stub_error); - key; - dummy; - return hex""; - } - - // Selector: setCollectionSponsor(address) 7623402e - function setCollectionSponsor(address sponsor) public { - require(false, stub_error); - sponsor; - dummy = 0; - } - - // Selector: confirmCollectionSponsorship() 3c50e97a - function confirmCollectionSponsorship() public { - require(false, stub_error); - dummy = 0; - } - - // Selector: setCollectionLimit(string,uint32) 6a3841db - function setCollectionLimit(string memory limit, uint32 value) public { - require(false, stub_error); - limit; - value; - dummy = 0; - } - - // Selector: setCollectionLimit(string,bool) 993b7fba - function setCollectionLimit(string memory limit, bool value) public { - require(false, stub_error); - limit; - value; - dummy = 0; - } - - // Selector: contractAddress() f6b4dfb4 - function contractAddress() public view returns (address) { - require(false, stub_error); - dummy; - return 0x0000000000000000000000000000000000000000; - } - - // Selector: addCollectionAdmin(address) 92e462c7 - function addCollectionAdmin(address newAdmin) public view { - require(false, stub_error); - newAdmin; - dummy; - } - - // Selector: removeCollectionAdmin(address) fafd7b42 - function removeCollectionAdmin(address admin) public view { - require(false, stub_error); - admin; - dummy; - } - - // Selector: setCollectionNesting(bool) 112d4586 - function setCollectionNesting(bool enable) public { - require(false, stub_error); - enable; - dummy = 0; - } - - // Selector: setCollectionNesting(bool,address[]) 64872396 - function setCollectionNesting(bool enable, address[] memory collections) - public - { - require(false, stub_error); - enable; - collections; - dummy = 0; - } - - // Selector: setCollectionAccess(string) 392172a9 - function setCollectionAccess(string memory mode) public { - require(false, stub_error); - mode; - dummy = 0; - } - - // Selector: addToCollectionAllowList(address) 67844fe6 - function addToCollectionAllowList(address user) public view { - require(false, stub_error); - user; - dummy; - } - - // Selector: removeFromCollectionAllowList(address) 85c51acb - function removeFromCollectionAllowList(address user) public view { - require(false, stub_error); - user; - dummy; - } - - // Selector: setCollectionMintMode(bool) 00018e84 - function setCollectionMintMode(bool mode) public { - require(false, stub_error); - mode; - dummy = 0; - } -} - // Selector: 41369377 contract TokenProperties is Dummy, ERC165 { // Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa @@ -426,6 +297,135 @@ } } +// Selector: 6aea9834 +contract Collection is Dummy, ERC165 { + // Selector: setCollectionProperty(string,bytes) 2f073f66 + function setCollectionProperty(string memory key, bytes memory value) + public + { + require(false, stub_error); + key; + value; + dummy = 0; + } + + // Selector: deleteCollectionProperty(string) 7b7debce + function deleteCollectionProperty(string memory key) public { + require(false, stub_error); + key; + dummy = 0; + } + + // Throws error if key not found + // + // Selector: collectionProperty(string) cf24fd6d + function collectionProperty(string memory key) + public + view + returns (bytes memory) + { + require(false, stub_error); + key; + dummy; + return hex""; + } + + // Selector: setCollectionSponsor(address) 7623402e + function setCollectionSponsor(address sponsor) public { + require(false, stub_error); + sponsor; + dummy = 0; + } + + // Selector: confirmCollectionSponsorship() 3c50e97a + function confirmCollectionSponsorship() public { + require(false, stub_error); + dummy = 0; + } + + // Selector: setCollectionLimit(string,uint32) 6a3841db + function setCollectionLimit(string memory limit, uint32 value) public { + require(false, stub_error); + limit; + value; + dummy = 0; + } + + // Selector: setCollectionLimit(string,bool) 993b7fba + function setCollectionLimit(string memory limit, bool value) public { + require(false, stub_error); + limit; + value; + dummy = 0; + } + + // Selector: contractAddress() f6b4dfb4 + function contractAddress() public view returns (address) { + require(false, stub_error); + dummy; + return 0x0000000000000000000000000000000000000000; + } + + // Selector: addCollectionAdmin(address) 92e462c7 + function addCollectionAdmin(address newAdmin) public view { + require(false, stub_error); + newAdmin; + dummy; + } + + // Selector: removeCollectionAdmin(address) fafd7b42 + function removeCollectionAdmin(address admin) public view { + require(false, stub_error); + admin; + dummy; + } + + // Selector: setCollectionNesting(bool) 112d4586 + function setCollectionNesting(bool enable) public { + require(false, stub_error); + enable; + dummy = 0; + } + + // Selector: setCollectionNesting(bool,address[]) 64872396 + function setCollectionNesting(bool enable, address[] memory collections) + public + { + require(false, stub_error); + enable; + collections; + dummy = 0; + } + + // Selector: setCollectionAccess(uint8) 41835d4c + function setCollectionAccess(uint8 mode) public { + require(false, stub_error); + mode; + dummy = 0; + } + + // Selector: addToCollectionAllowList(address) 67844fe6 + function addToCollectionAllowList(address user) public view { + require(false, stub_error); + user; + dummy; + } + + // Selector: removeFromCollectionAllowList(address) 85c51acb + function removeFromCollectionAllowList(address user) public view { + require(false, stub_error); + user; + dummy; + } + + // Selector: setCollectionMintMode(bool) 00018e84 + function setCollectionMintMode(bool mode) public { + require(false, stub_error); + mode; + dummy = 0; + } +} + // Selector: 780e9d63 contract ERC721Enumerable is Dummy, ERC165 { // Selector: tokenByIndex(uint256) 4f6ccce7 --- a/tests/src/eth/api/UniqueNFT.sol +++ b/tests/src/eth/api/UniqueNFT.sol @@ -42,64 +42,6 @@ event MintingFinished(); } -// Selector: 1248b7d1 -interface Collection is Dummy, ERC165 { - // Selector: setCollectionProperty(string,bytes) 2f073f66 - function setCollectionProperty(string memory key, bytes memory value) - external; - - // Selector: deleteCollectionProperty(string) 7b7debce - function deleteCollectionProperty(string memory key) external; - - // Throws error if key not found - // - // Selector: collectionProperty(string) cf24fd6d - function collectionProperty(string memory key) - external - view - returns (bytes memory); - - // Selector: setCollectionSponsor(address) 7623402e - function setCollectionSponsor(address sponsor) external; - - // Selector: confirmCollectionSponsorship() 3c50e97a - function confirmCollectionSponsorship() external; - - // Selector: setCollectionLimit(string,uint32) 6a3841db - function setCollectionLimit(string memory limit, uint32 value) external; - - // Selector: setCollectionLimit(string,bool) 993b7fba - function setCollectionLimit(string memory limit, bool value) external; - - // Selector: contractAddress() f6b4dfb4 - function contractAddress() external view returns (address); - - // Selector: addCollectionAdmin(address) 92e462c7 - function addCollectionAdmin(address newAdmin) external view; - - // Selector: removeCollectionAdmin(address) fafd7b42 - function removeCollectionAdmin(address admin) external view; - - // Selector: setCollectionNesting(bool) 112d4586 - function setCollectionNesting(bool enable) external; - - // Selector: setCollectionNesting(bool,address[]) 64872396 - function setCollectionNesting(bool enable, address[] memory collections) - external; - - // Selector: setCollectionAccess(string) 392172a9 - function setCollectionAccess(string memory mode) external; - - // Selector: addToCollectionAllowList(address) 67844fe6 - function addToCollectionAllowList(address user) external view; - - // Selector: removeFromCollectionAllowList(address) 85c51acb - function removeFromCollectionAllowList(address user) external view; - - // Selector: setCollectionMintMode(bool) 00018e84 - function setCollectionMintMode(bool mode) external; -} - // Selector: 41369377 interface TokenProperties is Dummy, ERC165 { // Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa @@ -232,6 +174,64 @@ function finishMinting() external returns (bool); } +// Selector: 6aea9834 +interface Collection is Dummy, ERC165 { + // Selector: setCollectionProperty(string,bytes) 2f073f66 + function setCollectionProperty(string memory key, bytes memory value) + external; + + // Selector: deleteCollectionProperty(string) 7b7debce + function deleteCollectionProperty(string memory key) external; + + // Throws error if key not found + // + // Selector: collectionProperty(string) cf24fd6d + function collectionProperty(string memory key) + external + view + returns (bytes memory); + + // Selector: setCollectionSponsor(address) 7623402e + function setCollectionSponsor(address sponsor) external; + + // Selector: confirmCollectionSponsorship() 3c50e97a + function confirmCollectionSponsorship() external; + + // Selector: setCollectionLimit(string,uint32) 6a3841db + function setCollectionLimit(string memory limit, uint32 value) external; + + // Selector: setCollectionLimit(string,bool) 993b7fba + function setCollectionLimit(string memory limit, bool value) external; + + // Selector: contractAddress() f6b4dfb4 + function contractAddress() external view returns (address); + + // Selector: addCollectionAdmin(address) 92e462c7 + function addCollectionAdmin(address newAdmin) external view; + + // Selector: removeCollectionAdmin(address) fafd7b42 + function removeCollectionAdmin(address admin) external view; + + // Selector: setCollectionNesting(bool) 112d4586 + function setCollectionNesting(bool enable) external; + + // Selector: setCollectionNesting(bool,address[]) 64872396 + function setCollectionNesting(bool enable, address[] memory collections) + external; + + // Selector: setCollectionAccess(uint8) 41835d4c + function setCollectionAccess(uint8 mode) external; + + // Selector: addToCollectionAllowList(address) 67844fe6 + function addToCollectionAllowList(address user) external view; + + // Selector: removeFromCollectionAllowList(address) 85c51acb + function removeFromCollectionAllowList(address user) external view; + + // Selector: setCollectionMintMode(bool) 00018e84 + function setCollectionMintMode(bool mode) external; +} + // Selector: 780e9d63 interface ERC721Enumerable is Dummy, ERC165 { // Selector: tokenByIndex(uint256) 4f6ccce7 --- a/tests/src/eth/contractSponsoring.test.ts +++ b/tests/src/eth/contractSponsoring.test.ts @@ -247,7 +247,8 @@ expect(oldPermissions.mintMode).to.be.false; expect(oldPermissions.access).to.be.equal('Normal'); - await collectionEvm.methods.setCollectionAccess('AllowList').send({from: owner}); + //TODO: change value, when enum generated + await collectionEvm.methods.setCollectionAccess(1 /*'AllowList'*/).send({from: owner}); await collectionEvm.methods.addToCollectionAllowList(user).send({from: owner}); await collectionEvm.methods.setCollectionMintMode(true).send({from: owner}); --- a/tests/src/eth/nonFungibleAbi.json +++ b/tests/src/eth/nonFungibleAbi.json @@ -341,7 +341,7 @@ "type": "function" }, { - "inputs": [{ "internalType": "string", "name": "mode", "type": "string" }], + "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }], "name": "setCollectionAccess", "outputs": [], "stateMutability": "nonpayable", -- gitstuff