difftreelog
CORE-386 Fix after rebase
in: master
9 files changed
pallets/common/src/erc.rsdiffbeforeafterboth201 Ok(())201 Ok(())202 }202 }203203204 fn remove_admin(&self, caller: caller, admin: address) -> Result<void> {204 fn remove_collection_admin(&self, caller: caller, admin: address) -> Result<void> {205 let caller = T::CrossAccountId::from_eth(caller);205 let caller = T::CrossAccountId::from_eth(caller);206 let admin = T::CrossAccountId::from_eth(admin);206 let admin = T::CrossAccountId::from_eth(admin);207 <Pallet<T>>::toggle_admin(self, &caller, &admin, false).map_err(dispatch_to_evm::<T>)?;207 <Pallet<T>>::toggle_admin(self, &caller, &admin, false).map_err(dispatch_to_evm::<T>)?;pallets/common/src/lib.rsdiffbeforeafterbothno syntactic changes
pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth51 event MintingFinished();51 event MintingFinished();52}52}5354// Selector: 2da6e59e55contract Collection is Dummy, ERC165 {56 // Selector: setCollectionProperty(string,bytes) 2f073f6657 function setCollectionProperty(string memory key, bytes memory value)58 public59 {60 require(false, stub_error);61 key;62 value;63 dummy = 0;64 }6566 // Selector: deleteCollectionProperty(string) 7b7debce67 function deleteCollectionProperty(string memory key) public {68 require(false, stub_error);69 key;70 dummy = 0;71 }7273 // Throws error if key not found74 //75 // Selector: collectionProperty(string) cf24fd6d76 function collectionProperty(string memory key)77 public78 view79 returns (bytes memory)80 {81 require(false, stub_error);82 key;83 dummy;84 return hex"";85 }8687 // Selector: setCollectionSponsor(address) 7623402e88 function setCollectionSponsor(address sponsor) public {89 require(false, stub_error);90 sponsor;91 dummy = 0;92 }9394 // Selector: confirmCollectionSponsorship() 3c50e97a95 function confirmCollectionSponsorship() public {96 require(false, stub_error);97 dummy = 0;98 }99100 // Selector: setCollectionLimit(string,uint32) 6a3841db101 function setCollectionLimit(string memory limit, uint32 value) public {102 require(false, stub_error);103 limit;104 value;105 dummy = 0;106 }107108 // Selector: setCollectionLimit(string,bool) 993b7fba109 function setCollectionLimit(string memory limit, bool value) public {110 require(false, stub_error);111 limit;112 value;113 dummy = 0;114 }115116 // Selector: contractAddress() f6b4dfb4117 function contractAddress() public view returns (address) {118 require(false, stub_error);119 dummy;120 return 0x0000000000000000000000000000000000000000;121 }122123 // Selector: addCollectionAdminSubstrate(uint256) 5730062b124 function addCollectionAdminSubstrate(uint256 newAdmin) public view {125 require(false, stub_error);126 newAdmin;127 dummy;128 }129130 // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9131 function removeCollectionAdminSubstrate(uint256 newAdmin) public view {132 require(false, stub_error);133 newAdmin;134 dummy;135 }136137 // Selector: addCollectionAdmin(address) 92e462c7138 function addCollectionAdmin(address newAdmin) public view {139 require(false, stub_error);140 newAdmin;141 dummy;142 }143144 // Selector: removeAdmin(address) 1785f53c145 function removeAdmin(address admin) public view {146 require(false, stub_error);147 admin;148 dummy;149 }150151 // Selector: setNesting(bool) e8fc50dd152 function setNesting(bool enable) public {153 require(false, stub_error);154 enable;155 dummy = 0;156 }157158 // Selector: setNesting(bool,address[]) 7df12a9a159 function setNesting(bool enable, address[] memory collections) public {160 require(false, stub_error);161 enable;162 collections;163 dummy = 0;164 }165166 // Selector: setCollectionAccess(uint8) 41835d4c167 function setCollectionAccess(uint8 mode) public {168 require(false, stub_error);169 mode;170 dummy = 0;171 }172173 // Selector: addToCollectionAllowList(address) 67844fe6174 function addToCollectionAllowList(address user) public view {175 require(false, stub_error);176 user;177 dummy;178 }179180 // Selector: removeFromCollectionAllowList(address) 85c51acb181 function removeFromCollectionAllowList(address user) public view {182 require(false, stub_error);183 user;184 dummy;185 }186187 // Selector: setMintMode(bool) 5dea9bd5188 function setMintMode(bool mode) public {189 require(false, stub_error);190 mode;191 dummy = 0;192 }193}19453195// Selector: 4136937754// Selector: 41369377196contract TokenProperties is Dummy, ERC165 {55contract TokenProperties is Dummy, ERC165 {471 }330 }472}331}332333// Selector: c0de6be0334contract Collection is Dummy, ERC165 {335 // Selector: setCollectionProperty(string,bytes) 2f073f66336 function setCollectionProperty(string memory key, bytes memory value)337 public338 {339 require(false, stub_error);340 key;341 value;342 dummy = 0;343 }344345 // Selector: deleteCollectionProperty(string) 7b7debce346 function deleteCollectionProperty(string memory key) public {347 require(false, stub_error);348 key;349 dummy = 0;350 }351352 // Throws error if key not found353 //354 // Selector: collectionProperty(string) cf24fd6d355 function collectionProperty(string memory key)356 public357 view358 returns (bytes memory)359 {360 require(false, stub_error);361 key;362 dummy;363 return hex"";364 }365366 // Selector: setCollectionSponsor(address) 7623402e367 function setCollectionSponsor(address sponsor) public {368 require(false, stub_error);369 sponsor;370 dummy = 0;371 }372373 // Selector: confirmCollectionSponsorship() 3c50e97a374 function confirmCollectionSponsorship() public {375 require(false, stub_error);376 dummy = 0;377 }378379 // Selector: setCollectionLimit(string,uint32) 6a3841db380 function setCollectionLimit(string memory limit, uint32 value) public {381 require(false, stub_error);382 limit;383 value;384 dummy = 0;385 }386387 // Selector: setCollectionLimit(string,bool) 993b7fba388 function setCollectionLimit(string memory limit, bool value) public {389 require(false, stub_error);390 limit;391 value;392 dummy = 0;393 }394395 // Selector: contractAddress() f6b4dfb4396 function contractAddress() public view returns (address) {397 require(false, stub_error);398 dummy;399 return 0x0000000000000000000000000000000000000000;400 }401402 // Selector: addCollectionAdminSubstrate(uint256) 5730062b403 function addCollectionAdminSubstrate(uint256 newAdmin) public view {404 require(false, stub_error);405 newAdmin;406 dummy;407 }408409 // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9410 function removeCollectionAdminSubstrate(uint256 newAdmin) public view {411 require(false, stub_error);412 newAdmin;413 dummy;414 }415416 // Selector: addCollectionAdmin(address) 92e462c7417 function addCollectionAdmin(address newAdmin) public view {418 require(false, stub_error);419 newAdmin;420 dummy;421 }422423 // Selector: removeCollectionAdmin(address) fafd7b42424 function removeCollectionAdmin(address admin) public view {425 require(false, stub_error);426 admin;427 dummy;428 }429430 // Selector: setNesting(bool) e8fc50dd431 function setNesting(bool enable) public {432 require(false, stub_error);433 enable;434 dummy = 0;435 }436437 // Selector: setNesting(bool,address[]) 7df12a9a438 function setNesting(bool enable, address[] memory collections) public {439 require(false, stub_error);440 enable;441 collections;442 dummy = 0;443 }444445 // Selector: setCollectionAccess(uint8) 41835d4c446 function setCollectionAccess(uint8 mode) public {447 require(false, stub_error);448 mode;449 dummy = 0;450 }451452 // Selector: addToCollectionAllowList(address) 67844fe6453 function addToCollectionAllowList(address user) public view {454 require(false, stub_error);455 user;456 dummy;457 }458459 // Selector: removeFromCollectionAllowList(address) 85c51acb460 function removeFromCollectionAllowList(address user) public view {461 require(false, stub_error);462 user;463 dummy;464 }465466 // Selector: setMintMode(bool) 5dea9bd5467 function setMintMode(bool mode) public {468 require(false, stub_error);469 mode;470 dummy = 0;471 }472}473473474// Selector: d74d154f474// Selector: d74d154f475contract ERC721UniqueExtensions is Dummy, ERC165 {475contract ERC721UniqueExtensions is Dummy, ERC165 {runtime/tests/src/tests.rsdiffbeforeafterboth1286 account(3)1286 account(3)1287 )));1287 )));128812881289 // remove admin 3 1289 // remove admin 31290 assert_ok!(Unique::remove_collection_admin(1290 assert_ok!(Unique::remove_collection_admin(1291 origin1,1291 origin1,1292 CollectionId(1),1292 CollectionId(1),tests/src/eth/api/UniqueNFT.soldiffbeforeafterboth42 event MintingFinished();42 event MintingFinished();43}43}4445// Selector: 2da6e59e46interface Collection is Dummy, ERC165 {47 // Selector: setCollectionProperty(string,bytes) 2f073f6648 function setCollectionProperty(string memory key, bytes memory value)49 external;5051 // Selector: deleteCollectionProperty(string) 7b7debce52 function deleteCollectionProperty(string memory key) external;5354 // Throws error if key not found55 //56 // Selector: collectionProperty(string) cf24fd6d57 function collectionProperty(string memory key)58 external59 view60 returns (bytes memory);6162 // Selector: setCollectionSponsor(address) 7623402e63 function setCollectionSponsor(address sponsor) external;6465 // Selector: confirmCollectionSponsorship() 3c50e97a66 function confirmCollectionSponsorship() external;6768 // Selector: setCollectionLimit(string,uint32) 6a3841db69 function setCollectionLimit(string memory limit, uint32 value) external;7071 // Selector: setCollectionLimit(string,bool) 993b7fba72 function setCollectionLimit(string memory limit, bool value) external;7374 // Selector: contractAddress() f6b4dfb475 function contractAddress() external view returns (address);7677 // Selector: addCollectionAdminSubstrate(uint256) 5730062b78 function addCollectionAdminSubstrate(uint256 newAdmin) external view;7980 // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf981 function removeCollectionAdminSubstrate(uint256 newAdmin) external view;8283 // Selector: addCollectionAdmin(address) 92e462c784 function addCollectionAdmin(address newAdmin) external view;8586 // Selector: removeAdmin(address) 1785f53c87 function removeAdmin(address admin) external view;8889 // Selector: setNesting(bool) e8fc50dd90 function setNesting(bool enable) external;9192 // Selector: setNesting(bool,address[]) 7df12a9a93 function setNesting(bool enable, address[] memory collections) external;9495 // Selector: setCollectionAccess(uint8) 41835d4c96 function setCollectionAccess(uint8 mode) external;9798 // Selector: addToCollectionAllowList(address) 67844fe699 function addToCollectionAllowList(address user) external view;100101 // Selector: removeFromCollectionAllowList(address) 85c51acb102 function removeFromCollectionAllowList(address user) external view;103104 // Selector: setMintMode(bool) 5dea9bd5105 function setMintMode(bool mode) external;106}10744108// Selector: 4136937745// Selector: 41369377109interface TokenProperties is Dummy, ERC165 {46interface TokenProperties is Dummy, ERC165 {254 function totalSupply() external view returns (uint256);191 function totalSupply() external view returns (uint256);255}192}193194// Selector: c0de6be0195interface Collection is Dummy, ERC165 {196 // Selector: setCollectionProperty(string,bytes) 2f073f66197 function setCollectionProperty(string memory key, bytes memory value)198 external;199200 // Selector: deleteCollectionProperty(string) 7b7debce201 function deleteCollectionProperty(string memory key) external;202203 // Throws error if key not found204 //205 // Selector: collectionProperty(string) cf24fd6d206 function collectionProperty(string memory key)207 external208 view209 returns (bytes memory);210211 // Selector: setCollectionSponsor(address) 7623402e212 function setCollectionSponsor(address sponsor) external;213214 // Selector: confirmCollectionSponsorship() 3c50e97a215 function confirmCollectionSponsorship() external;216217 // Selector: setCollectionLimit(string,uint32) 6a3841db218 function setCollectionLimit(string memory limit, uint32 value) external;219220 // Selector: setCollectionLimit(string,bool) 993b7fba221 function setCollectionLimit(string memory limit, bool value) external;222223 // Selector: contractAddress() f6b4dfb4224 function contractAddress() external view returns (address);225226 // Selector: addCollectionAdminSubstrate(uint256) 5730062b227 function addCollectionAdminSubstrate(uint256 newAdmin) external view;228229 // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9230 function removeCollectionAdminSubstrate(uint256 newAdmin) external view;231232 // Selector: addCollectionAdmin(address) 92e462c7233 function addCollectionAdmin(address newAdmin) external view;234235 // Selector: removeCollectionAdmin(address) fafd7b42236 function removeCollectionAdmin(address admin) external view;237238 // Selector: setNesting(bool) e8fc50dd239 function setNesting(bool enable) external;240241 // Selector: setNesting(bool,address[]) 7df12a9a242 function setNesting(bool enable, address[] memory collections) external;243244 // Selector: setCollectionAccess(uint8) 41835d4c245 function setCollectionAccess(uint8 mode) external;246247 // Selector: addToCollectionAllowList(address) 67844fe6248 function addToCollectionAllowList(address user) external view;249250 // Selector: removeFromCollectionAllowList(address) 85c51acb251 function removeFromCollectionAllowList(address user) external view;252253 // Selector: setMintMode(bool) 5dea9bd5254 function setMintMode(bool mode) external;255}256256257// Selector: d74d154f257// Selector: d74d154f258interface ERC721UniqueExtensions is Dummy, ERC165 {258interface ERC721UniqueExtensions is Dummy, ERC165 {tests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth221 expect(await helpers.methods.getSponsoringRateLimit(flipper.options.address).call()).to.be.equals('7200');221 expect(await helpers.methods.getSponsoringRateLimit(flipper.options.address).call()).to.be.equals('7200');222 });222 });223223224 //TODO: CORE-302 add eth methods225 itWeb3('Sponsoring collection from evm address via access list', async ({api, web3}) => {224 itWeb3('Sponsoring collection from evm address via access list', async ({api, web3}) => {226 const owner = await createEthAccountWithBalance(api, web3);225 const owner = await createEthAccountWithBalance(api, web3);227 const collectionHelpers = evmCollectionHelpers(web3, owner);226 const collectionHelpers = evmCollectionHelpers(web3, owner);228 let result = await collectionHelpers.methods.createNonfungibleCollection('Sponsor collection', '1', '1').send();227 let result = await collectionHelpers.methods.createNonfungibleCollection('Sponsor collection', '1', '1').send();229 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);228 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);230 const sponsor = await createEthAccountWithBalance(api, web3);229 const sponsor = await createEthAccountWithBalance(api, web3);231 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);230 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);232 result = await collectionEvm.methods.ethSetSponsor(sponsor).send({from: owner});231 result = await collectionEvm.methods.setCollectionSponsor(sponsor).send({from: owner});233 let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;232 let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;234 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;233 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;235 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));234 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));236 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');235 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');237236238 await collectionEvm.methods.ethConfirmSponsorship().send({from: sponsor});237 await collectionEvm.methods.confirmCollectionSponsorship().send({from: sponsor});239 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;238 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;240 expect(collectionSub.sponsorship.isConfirmed).to.be.true;239 expect(collectionSub.sponsorship.isConfirmed).to.be.true;241 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));240 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));248 expect(oldPermissions.mintMode).to.be.false;247 expect(oldPermissions.mintMode).to.be.false;249 expect(oldPermissions.access).to.be.equal('Normal');248 expect(oldPermissions.access).to.be.equal('Normal');250249251 await collectionEvm.methods.setAccess('AllowList').send({from: owner});250 await collectionEvm.methods.setCollectionAccess(1 /*'AllowList'*/).send({from: owner});252 await collectionEvm.methods.addToAllowList(user).send({from: owner});251 await collectionEvm.methods.addToCollectionAllowList(user).send({from: owner});253 await collectionEvm.methods.setMintMode(true).send({from: owner});252 await collectionEvm.methods.setMintMode(true).send({from: owner});254253255 const newPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();254 const newPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();256 expect(newPermissions.mintMode).to.be.true;255 expect(newPermissions.mintMode).to.be.true;257 expect(newPermissions.access).to.be.equal('AllowList');256 expect(newPermissions.access).to.be.equal('AllowList');258257259 // const [alicesBalanceBefore] = await getBalance(api, [alicesPublicKey]);258 const ownerBalanceBefore = await ethBalanceViaSub(api, owner);259 const sponsorBalanceBefore = await ethBalanceViaSub(api, sponsor);260260261 {261 {262 const nextTokenId = await collectionEvm.methods.nextTokenId().call();262 const nextTokenId = await collectionEvm.methods.nextTokenId().call();265 user,265 user,266 nextTokenId,266 nextTokenId,267 'Test URI',267 'Test URI',268 ).call({from: user});268 ).send({from: user});269 console.log(result);270 const events = normalizeEvents(result.events);269 const events = normalizeEvents(result.events);271270272 expect(events).to.be.deep.equal([271 expect(events).to.be.deep.equal([273 {272 {274 collectionIdAddress,273 address: collectionIdAddress,275 event: 'Transfer',274 event: 'Transfer',276 args: {275 args: {277 from: '0x0000000000000000000000000000000000000000',276 from: '0x0000000000000000000000000000000000000000',281 },280 },282 ]);281 ]);282283 const ownerBalanceAfter = await ethBalanceViaSub(api, owner);284 const sponsorBalanceAfter = await ethBalanceViaSub(api, sponsor);283285284 expect(await collectionEvm.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');286 expect(await collectionEvm.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');287 expect(ownerBalanceBefore).to.be.eq(ownerBalanceAfter);288 expect(sponsorBalanceBefore > sponsorBalanceAfter).to.be.true;285 }289 }286 });290 });287291292 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);296 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);293 const sponsor = await createEthAccountWithBalance(api, web3);297 const sponsor = await createEthAccountWithBalance(api, web3);294 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);298 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);295 result = await collectionEvm.methods.ethSetSponsor(sponsor).send();299 result = await collectionEvm.methods.setCollectionSponsor(sponsor).send();296 let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;300 let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;297 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;301 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;298 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));302 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));299 await expect(collectionEvm.methods.ethConfirmSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');303 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');300 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);304 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);301 await sponsorCollection.methods.ethConfirmSponsorship().send();305 await sponsorCollection.methods.confirmCollectionSponsorship().send();302 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;306 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;303 expect(collectionSub.sponsorship.isConfirmed).to.be.true;307 expect(collectionSub.sponsorship.isConfirmed).to.be.true;304 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));308 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));305309306 const user = createEthAccount(web3);310 const user = createEthAccount(web3);307 await collectionEvm.methods.addAdmin(user).send();311 await collectionEvm.methods.addCollectionAdmin(user).send();308 312 309 const ownerBalanceBefore = await ethBalanceViaSub(api, owner);313 const ownerBalanceBefore = await ethBalanceViaSub(api, owner);310 const sponsorBalanceBefore = await ethBalanceViaSub(api, sponsor);314 const sponsorBalanceBefore = await ethBalanceViaSub(api, sponsor);tests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth302 "inputs": [302 "inputs": [303 { "internalType": "address", "name": "admin", "type": "address" }303 { "internalType": "address", "name": "admin", "type": "address" }304 ],304 ],305 "name": "removeAdmin",305 "name": "removeCollectionAdmin",306 "outputs": [],306 "outputs": [],307 "stateMutability": "view",307 "stateMutability": "view",308 "type": "function"308 "type": "function"tests/src/eth/proxy/nonFungibleProxy.test.tsdiffbeforeafterboth99 const collectionEvmOwned = evmCollection(web3, owner, collectionIdAddress);99 const collectionEvmOwned = evmCollection(web3, owner, collectionIdAddress);100 const collectionEvm = evmCollection(web3, caller, collectionIdAddress);100 const collectionEvm = evmCollection(web3, caller, collectionIdAddress);101 const contract = await proxyWrap(api, web3, collectionEvm);101 const contract = await proxyWrap(api, web3, collectionEvm);102 await collectionEvmOwned.methods.addAdmin(contract.options.address).send();102 await collectionEvmOwned.methods.addCollectionAdmin(contract.options.address).send();103103104 {104 {105 const nextTokenId = await contract.methods.nextTokenId().call();105 const nextTokenId = await contract.methods.nextTokenId().call();