difftreelog
Merge pull request #829 from UniqueNetwork/feature/remove_and_hide_some_minting_methods_and_events
in: master
24 files changed
pallets/nonfungible/src/erc.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -291,12 +291,6 @@
},
}
-#[derive(ToLog)]
-pub enum ERC721UniqueMintableEvents {
- #[allow(dead_code)]
- MintingFinished {},
-}
-
/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
/// @dev See https://eips.ethereum.org/EIPS/eip-721
#[solidity_interface(name = ERC721Metadata, expect_selector = 0x5b5e139f)]
@@ -544,12 +538,8 @@
}
/// @title ERC721 minting logic.
-#[solidity_interface(name = ERC721UniqueMintable, events(ERC721UniqueMintableEvents))]
+#[solidity_interface(name = ERC721UniqueMintable)]
impl<T: Config> NonfungibleHandle<T> {
- fn minting_finished(&self) -> Result<bool> {
- Ok(false)
- }
-
/// @notice Function to mint a token.
/// @param to The new owner
/// @return uint256 The id of the newly minted token
@@ -678,11 +668,6 @@
)
.map_err(dispatch_to_evm::<T>)?;
Ok(true)
- }
-
- /// @dev Not implemented
- fn finish_minting(&mut self, _caller: caller) -> Result<bool> {
- Err("not implementable".into())
}
}
pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -700,22 +700,9 @@
}
}
-/// @dev inlined interface
-contract ERC721UniqueMintableEvents {
- event MintingFinished();
-}
-
/// @title ERC721 minting logic.
-/// @dev the ERC-165 identifier for this interface is 0x476ff149
-contract ERC721UniqueMintable is Dummy, ERC165, ERC721UniqueMintableEvents {
- /// @dev EVM selector for this function is: 0x05d2035b,
- /// or in textual repr: mintingFinished()
- function mintingFinished() public view returns (bool) {
- require(false, stub_error);
- dummy;
- return false;
- }
-
+/// @dev the ERC-165 identifier for this interface is 0x3fd94ea6
+contract ERC721UniqueMintable is Dummy, ERC165 {
/// @notice Function to mint a token.
/// @param to The new owner
/// @return uint256 The id of the newly minted token
@@ -756,7 +743,6 @@
dummy = 0;
return 0;
}
-
// /// @notice Function to mint token with the given tokenUri.
// /// @dev `tokenId` should be obtained with `nextTokenId` method,
// /// unlike standard, you can't specify it manually
@@ -774,14 +760,6 @@
// return false;
// }
- /// @dev Not implemented
- /// @dev EVM selector for this function is: 0x7d64bcb4,
- /// or in textual repr: finishMinting()
- function finishMinting() public returns (bool) {
- require(false, stub_error);
- dummy = 0;
- return false;
- }
}
/// @title Unique extensions for ERC721.
pallets/refungible/src/erc.rsdiffbeforeafterboth--- a/pallets/refungible/src/erc.rs
+++ b/pallets/refungible/src/erc.rs
@@ -288,13 +288,6 @@
},
}
-#[derive(ToLog)]
-pub enum ERC721UniqueMintableEvents {
- /// @dev Not supported
- #[allow(dead_code)]
- MintingFinished {},
-}
-
/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
/// @dev See https://eips.ethereum.org/EIPS/eip-721
#[solidity_interface(name = ERC721Metadata, expect_selector = 0x5b5e139f)]
@@ -576,12 +569,8 @@
}
/// @title ERC721 minting logic.
-#[solidity_interface(name = ERC721UniqueMintable, events(ERC721UniqueMintableEvents))]
+#[solidity_interface(name = ERC721UniqueMintable)]
impl<T: Config> RefungibleHandle<T> {
- fn minting_finished(&self) -> Result<bool> {
- Ok(false)
- }
-
/// @notice Function to mint a token.
/// @param to The new owner
/// @return uint256 The id of the newly minted token
@@ -717,11 +706,6 @@
)
.map_err(dispatch_to_evm::<T>)?;
Ok(true)
- }
-
- /// @dev Not implemented
- fn finish_minting(&mut self, _caller: caller) -> Result<bool> {
- Err("not implementable".into())
}
}
pallets/refungible/src/erc_token.rsdiffbeforeafterboth--- a/pallets/refungible/src/erc_token.rs
+++ b/pallets/refungible/src/erc_token.rs
@@ -25,7 +25,8 @@
ops::Deref,
};
use evm_coder::{
- abi::AbiType, ToLog, execution::*, generate_stubgen, solidity_interface, types::*, weight,
+ abi::AbiType, ToLog, execution::*, generate_stubgen, solidity_interface, solidity, types::*,
+ weight,
};
use pallet_common::{
CommonWeightInfo,
@@ -206,6 +207,7 @@
/// @param from The account whose tokens will be burnt.
/// @param amount The amount that will be burnt.
#[weight(<SelfWeightOf<T>>::burn_from())]
+ #[solidity(hide)]
fn burn_from(&mut self, caller: caller, from: address, amount: uint256) -> Result<bool> {
let caller = T::CrossAccountId::from_eth(caller);
let from = T::CrossAccountId::from_eth(from);
pallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterbothbinary blob — no preview
pallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth--- a/pallets/refungible/src/stubs/UniqueRefungible.sol
+++ b/pallets/refungible/src/stubs/UniqueRefungible.sol
@@ -700,22 +700,9 @@
}
}
-/// @dev inlined interface
-contract ERC721UniqueMintableEvents {
- event MintingFinished();
-}
-
/// @title ERC721 minting logic.
-/// @dev the ERC-165 identifier for this interface is 0x476ff149
-contract ERC721UniqueMintable is Dummy, ERC165, ERC721UniqueMintableEvents {
- /// @dev EVM selector for this function is: 0x05d2035b,
- /// or in textual repr: mintingFinished()
- function mintingFinished() public view returns (bool) {
- require(false, stub_error);
- dummy;
- return false;
- }
-
+/// @dev the ERC-165 identifier for this interface is 0x3fd94ea6
+contract ERC721UniqueMintable is Dummy, ERC165 {
/// @notice Function to mint a token.
/// @param to The new owner
/// @return uint256 The id of the newly minted token
@@ -756,7 +743,6 @@
dummy = 0;
return 0;
}
-
// /// @notice Function to mint token with the given tokenUri.
// /// @dev `tokenId` should be obtained with `nextTokenId` method,
// /// unlike standard, you can't specify it manually
@@ -774,14 +760,6 @@
// return false;
// }
- /// @dev Not implemented
- /// @dev EVM selector for this function is: 0x7d64bcb4,
- /// or in textual repr: finishMinting()
- function finishMinting() public returns (bool) {
- require(false, stub_error);
- dummy = 0;
- return false;
- }
}
/// @title Unique extensions for ERC721.
pallets/refungible/src/stubs/UniqueRefungibleToken.rawdiffbeforeafterbothbinary blob — no preview
pallets/refungible/src/stubs/UniqueRefungibleToken.soldiffbeforeafterboth--- a/pallets/refungible/src/stubs/UniqueRefungibleToken.sol
+++ b/pallets/refungible/src/stubs/UniqueRefungibleToken.sol
@@ -38,19 +38,19 @@
/// @dev the ERC-165 identifier for this interface is 0xe17a7d2b
contract ERC20UniqueExtensions is Dummy, ERC165 {
- /// @dev Function that burns an amount of the token of a given account,
- /// deducting from the sender's allowance for said account.
- /// @param from The account whose tokens will be burnt.
- /// @param amount The amount that will be burnt.
- /// @dev EVM selector for this function is: 0x79cc6790,
- /// or in textual repr: burnFrom(address,uint256)
- function burnFrom(address from, uint256 amount) public returns (bool) {
- require(false, stub_error);
- from;
- amount;
- dummy = 0;
- return false;
- }
+ // /// @dev Function that burns an amount of the token of a given account,
+ // /// deducting from the sender's allowance for said account.
+ // /// @param from The account whose tokens will be burnt.
+ // /// @param amount The amount that will be burnt.
+ // /// @dev EVM selector for this function is: 0x79cc6790,
+ // /// or in textual repr: burnFrom(address,uint256)
+ // function burnFrom(address from, uint256 amount) public returns (bool) {
+ // require(false, stub_error);
+ // from;
+ // amount;
+ // dummy = 0;
+ // return false;
+ // }
/// @dev Function that burns an amount of the token of a given account,
/// deducting from the sender's allowance for said account.
runtime/common/ethereum/sponsoring/refungible.rsdiffbeforeafterboth--- a/runtime/common/ethereum/sponsoring/refungible.rs
+++ b/runtime/common/ethereum/sponsoring/refungible.rs
@@ -265,11 +265,9 @@
match call {
// Readonly
- ERC165Call(_, _) | MintingFinished => None,
+ ERC165Call(_, _) => None,
- // Not sponsored
- FinishMinting => None,
-
+ // Sponsored
Mint { .. }
| MintCheckId { .. }
| MintWithTokenUri { .. }
tests/src/check-event/burnItemEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/burnItemEvent.test.ts
+++ b/tests/src/check-event/burnItemEvent.test.ts
@@ -32,6 +32,7 @@
const collection = await helper.nft.mintCollection(alice, {name: 'test', description: 'test', tokenPrefix: 'test'});
const token = await collection.mintToken(alice, {Substrate: alice.address});
await token.burn(alice);
+ await helper.wait.newBlocks(1);
const event = helper.chainLog[helper.chainLog.length - 1].events as IEvent[];
const eventStrings = event.map(e => `${e.section}.${e.method}`);
tests/src/check-event/createCollectionEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/createCollectionEvent.test.ts
+++ b/tests/src/check-event/createCollectionEvent.test.ts
@@ -29,6 +29,7 @@
});
itSub('Check event from createCollection(): ', async ({helper}) => {
await helper.nft.mintCollection(alice, {name: 'test', description: 'test', tokenPrefix: 'test'});
+ await helper.wait.newBlocks(1);
const event = helper.chainLog[helper.chainLog.length - 1].events as IEvent[];
const eventStrings = event.map(e => `${e.section}.${e.method}`);
tests/src/check-event/createItemEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/createItemEvent.test.ts
+++ b/tests/src/check-event/createItemEvent.test.ts
@@ -30,6 +30,7 @@
itSub('Check event from createItem(): ', async ({helper}) => {
const collection = await helper.nft.mintCollection(alice, {name: 'test', description: 'test', tokenPrefix: 'test'});
await collection.mintToken(alice, {Substrate: alice.address});
+ await helper.wait.newBlocks(1);
const event = helper.chainLog[helper.chainLog.length - 1].events as IEvent[];
const eventStrings = event.map(e => `${e.section}.${e.method}`);
tests/src/check-event/createMultipleItemsEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/createMultipleItemsEvent.test.ts
+++ b/tests/src/check-event/createMultipleItemsEvent.test.ts
@@ -35,6 +35,7 @@
{owner: {Substrate: alice.address}},
]);
+ await helper.wait.newBlocks(1);
const event = helper.chainLog[helper.chainLog.length - 1].events as IEvent[];
const eventStrings = event.map(e => `${e.section}.${e.method}`);
tests/src/check-event/destroyCollectionEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/destroyCollectionEvent.test.ts
+++ b/tests/src/check-event/destroyCollectionEvent.test.ts
@@ -31,6 +31,7 @@
itSub('Check event from destroyCollection(): ', async ({helper}) => {
const collection = await helper.nft.mintCollection(alice, {name: 'test', description: 'test', tokenPrefix: 'test'});
await collection.burn(alice);
+ await helper.wait.newBlocks(1);
const event = helper.chainLog[helper.chainLog.length - 1].events as IEvent[];
const eventStrings = event.map(e => `${e.section}.${e.method}`);
tests/src/check-event/transferEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/transferEvent.test.ts
+++ b/tests/src/check-event/transferEvent.test.ts
@@ -34,6 +34,7 @@
const collection = await helper.nft.mintCollection(alice, {name: 'test', description: 'test', tokenPrefix: 'test'});
const token = await collection.mintToken(alice, {Substrate: alice.address});
await token.transfer(alice, {Substrate: bob.address});
+ await helper.wait.newBlocks(1);
const event = helper.chainLog[helper.chainLog.length - 1].events as IEvent[];
const eventStrings = event.map(e => `${e.section}.${e.method}`);
tests/src/check-event/transferFromEvent.test.tsdiffbeforeafterboth--- a/tests/src/check-event/transferFromEvent.test.ts
+++ b/tests/src/check-event/transferFromEvent.test.ts
@@ -33,6 +33,7 @@
const collection = await helper.nft.mintCollection(alice, {name: 'test', description: 'test', tokenPrefix: 'test'});
const token = await collection.mintToken(alice, {Substrate: alice.address});
await token.transferFrom(alice, {Substrate: alice.address}, {Substrate: bob.address});
+ await helper.wait.newBlocks(1);
const event = helper.chainLog[helper.chainLog.length - 1].events as IEvent[];
const eventStrings = event.map(e => `${e.section}.${e.method}`);
tests/src/eth/abi/nonFungible.jsondiffbeforeafterboth--- a/tests/src/eth/abi/nonFungible.json
+++ b/tests/src/eth/abi/nonFungible.json
@@ -51,12 +51,6 @@
},
{
"anonymous": false,
- "inputs": [],
- "name": "MintingFinished",
- "type": "event"
- },
- {
- "anonymous": false,
"inputs": [
{
"indexed": true,
@@ -420,13 +414,6 @@
"name": "description",
"outputs": [{ "internalType": "string", "name": "", "type": "string" }],
"stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "finishMinting",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
"type": "function"
},
{
@@ -513,13 +500,6 @@
"name": "mintWithTokenURI",
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
"stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "mintingFinished",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "view",
"type": "function"
},
{
tests/src/eth/abi/reFungible.jsondiffbeforeafterboth1[2 {3 "anonymous": false,4 "inputs": [5 {6 "indexed": true,7 "internalType": "address",8 "name": "owner",9 "type": "address"10 },11 {12 "indexed": true,13 "internalType": "address",14 "name": "approved",15 "type": "address"16 },17 {18 "indexed": true,19 "internalType": "uint256",20 "name": "tokenId",21 "type": "uint256"22 }23 ],24 "name": "Approval",25 "type": "event"26 },27 {28 "anonymous": false,29 "inputs": [30 {31 "indexed": true,32 "internalType": "address",33 "name": "owner",34 "type": "address"35 },36 {37 "indexed": true,38 "internalType": "address",39 "name": "operator",40 "type": "address"41 },42 {43 "indexed": false,44 "internalType": "bool",45 "name": "approved",46 "type": "bool"47 }48 ],49 "name": "ApprovalForAll",50 "type": "event"51 },52 {53 "anonymous": false,54 "inputs": [55 {56 "indexed": true,57 "internalType": "address",58 "name": "from",59 "type": "address"60 },61 {62 "indexed": true,63 "internalType": "address",64 "name": "to",65 "type": "address"66 },67 {68 "indexed": true,69 "internalType": "uint256",70 "name": "tokenId",71 "type": "uint256"72 }73 ],74 "name": "Transfer",75 "type": "event"76 },77 {78 "inputs": [79 {80 "components": [81 { "internalType": "address", "name": "eth", "type": "address" },82 { "internalType": "uint256", "name": "sub", "type": "uint256" }83 ],84 "internalType": "struct CrossAddress",85 "name": "newAdmin",86 "type": "tuple"87 }88 ],89 "name": "addCollectionAdminCross",90 "outputs": [],91 "stateMutability": "nonpayable",92 "type": "function"93 },94 {95 "inputs": [96 {97 "components": [98 { "internalType": "address", "name": "eth", "type": "address" },99 { "internalType": "uint256", "name": "sub", "type": "uint256" }100 ],101 "internalType": "struct CrossAddress",102 "name": "user",103 "type": "tuple"104 }105 ],106 "name": "addToCollectionAllowListCross",107 "outputs": [],108 "stateMutability": "nonpayable",109 "type": "function"110 },111 {112 "inputs": [113 {114 "components": [115 { "internalType": "address", "name": "eth", "type": "address" },116 { "internalType": "uint256", "name": "sub", "type": "uint256" }117 ],118 "internalType": "struct CrossAddress",119 "name": "user",120 "type": "tuple"121 }122 ],123 "name": "allowlistedCross",124 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],125 "stateMutability": "view",126 "type": "function"127 },128 {129 "inputs": [130 { "internalType": "address", "name": "approved", "type": "address" },131 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }132 ],133 "name": "approve",134 "outputs": [],135 "stateMutability": "nonpayable",136 "type": "function"137 },138 {139 "inputs": [140 { "internalType": "address", "name": "owner", "type": "address" }141 ],142 "name": "balanceOf",143 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],144 "stateMutability": "view",145 "type": "function"146 },147 {148 "inputs": [149 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }150 ],151 "name": "burn",152 "outputs": [],153 "stateMutability": "nonpayable",154 "type": "function"155 },156 {157 "inputs": [158 {159 "components": [160 { "internalType": "address", "name": "eth", "type": "address" },161 { "internalType": "uint256", "name": "sub", "type": "uint256" }162 ],163 "internalType": "struct CrossAddress",164 "name": "from",165 "type": "tuple"166 },167 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }168 ],169 "name": "burnFromCross",170 "outputs": [],171 "stateMutability": "nonpayable",172 "type": "function"173 },174 {175 "inputs": [176 {177 "components": [178 { "internalType": "address", "name": "eth", "type": "address" },179 { "internalType": "uint256", "name": "sub", "type": "uint256" }180 ],181 "internalType": "struct CrossAddress",182 "name": "newOwner",183 "type": "tuple"184 }185 ],186 "name": "changeCollectionOwnerCross",187 "outputs": [],188 "stateMutability": "nonpayable",189 "type": "function"190 },191 {192 "inputs": [],193 "name": "collectionAdmins",194 "outputs": [195 {196 "components": [197 { "internalType": "address", "name": "eth", "type": "address" },198 { "internalType": "uint256", "name": "sub", "type": "uint256" }199 ],200 "internalType": "struct CrossAddress[]",201 "name": "",202 "type": "tuple[]"203 }204 ],205 "stateMutability": "view",206 "type": "function"207 },208 {209 "inputs": [],210 "name": "collectionHelperAddress",211 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],212 "stateMutability": "view",213 "type": "function"214 },215 {216 "inputs": [],217 "name": "collectionLimits",218 "outputs": [219 {220 "components": [221 {222 "internalType": "enum CollectionLimitField",223 "name": "field",224 "type": "uint8"225 },226 {227 "components": [228 { "internalType": "bool", "name": "status", "type": "bool" },229 { "internalType": "uint256", "name": "value", "type": "uint256" }230 ],231 "internalType": "struct OptionUint256",232 "name": "value",233 "type": "tuple"234 }235 ],236 "internalType": "struct CollectionLimit[]",237 "name": "",238 "type": "tuple[]"239 }240 ],241 "stateMutability": "view",242 "type": "function"243 },244 {245 "inputs": [],246 "name": "collectionNestingPermissions",247 "outputs": [248 {249 "components": [250 {251 "internalType": "enum CollectionPermissionField",252 "name": "field",253 "type": "uint8"254 },255 { "internalType": "bool", "name": "value", "type": "bool" }256 ],257 "internalType": "struct CollectionNestingPermission[]",258 "name": "",259 "type": "tuple[]"260 }261 ],262 "stateMutability": "view",263 "type": "function"264 },265 {266 "inputs": [],267 "name": "collectionNestingRestrictedCollectionIds",268 "outputs": [269 {270 "components": [271 { "internalType": "bool", "name": "token_owner", "type": "bool" },272 { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }273 ],274 "internalType": "struct CollectionNesting",275 "name": "",276 "type": "tuple"277 }278 ],279 "stateMutability": "view",280 "type": "function"281 },282 {283 "inputs": [],284 "name": "collectionOwner",285 "outputs": [286 {287 "components": [288 { "internalType": "address", "name": "eth", "type": "address" },289 { "internalType": "uint256", "name": "sub", "type": "uint256" }290 ],291 "internalType": "struct CrossAddress",292 "name": "",293 "type": "tuple"294 }295 ],296 "stateMutability": "view",297 "type": "function"298 },299 {300 "inputs": [301 { "internalType": "string[]", "name": "keys", "type": "string[]" }302 ],303 "name": "collectionProperties",304 "outputs": [305 {306 "components": [307 { "internalType": "string", "name": "key", "type": "string" },308 { "internalType": "bytes", "name": "value", "type": "bytes" }309 ],310 "internalType": "struct Property[]",311 "name": "",312 "type": "tuple[]"313 }314 ],315 "stateMutability": "view",316 "type": "function"317 },318 {319 "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],320 "name": "collectionProperty",321 "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],322 "stateMutability": "view",323 "type": "function"324 },325 {326 "inputs": [],327 "name": "collectionSponsor",328 "outputs": [329 {330 "components": [331 { "internalType": "address", "name": "eth", "type": "address" },332 { "internalType": "uint256", "name": "sub", "type": "uint256" }333 ],334 "internalType": "struct CrossAddress",335 "name": "",336 "type": "tuple"337 }338 ],339 "stateMutability": "view",340 "type": "function"341 },342 {343 "inputs": [],344 "name": "confirmCollectionSponsorship",345 "outputs": [],346 "stateMutability": "nonpayable",347 "type": "function"348 },349 {350 "inputs": [],351 "name": "contractAddress",352 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],353 "stateMutability": "view",354 "type": "function"355 },356 {357 "inputs": [358 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }359 ],360 "name": "crossOwnerOf",361 "outputs": [362 {363 "components": [364 { "internalType": "address", "name": "eth", "type": "address" },365 { "internalType": "uint256", "name": "sub", "type": "uint256" }366 ],367 "internalType": "struct CrossAddress",368 "name": "",369 "type": "tuple"370 }371 ],372 "stateMutability": "view",373 "type": "function"374 },375 {376 "inputs": [377 { "internalType": "string[]", "name": "keys", "type": "string[]" }378 ],379 "name": "deleteCollectionProperties",380 "outputs": [],381 "stateMutability": "nonpayable",382 "type": "function"383 },384 {385 "inputs": [386 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },387 { "internalType": "string[]", "name": "keys", "type": "string[]" }388 ],389 "name": "deleteProperties",390 "outputs": [],391 "stateMutability": "nonpayable",392 "type": "function"393 },394 {395 "inputs": [],396 "name": "description",397 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],398 "stateMutability": "view",399 "type": "function"400 },401 {402 "inputs": [403 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }404 ],405 "name": "getApproved",406 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],407 "stateMutability": "view",408 "type": "function"409 },410 {411 "inputs": [],412 "name": "hasCollectionPendingSponsor",413 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],414 "stateMutability": "view",415 "type": "function"416 },417 {418 "inputs": [419 { "internalType": "address", "name": "owner", "type": "address" },420 { "internalType": "address", "name": "operator", "type": "address" }421 ],422 "name": "isApprovedForAll",423 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],424 "stateMutability": "view",425 "type": "function"426 },427 {428 "inputs": [429 {430 "components": [431 { "internalType": "address", "name": "eth", "type": "address" },432 { "internalType": "uint256", "name": "sub", "type": "uint256" }433 ],434 "internalType": "struct CrossAddress",435 "name": "user",436 "type": "tuple"437 }438 ],439 "name": "isOwnerOrAdminCross",440 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],441 "stateMutability": "view",442 "type": "function"443 },444 {445 "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],446 "name": "mint",447 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],448 "stateMutability": "nonpayable",449 "type": "function"450 },451 {452 "inputs": [453 {454 "components": [455 { "internalType": "address", "name": "eth", "type": "address" },456 { "internalType": "uint256", "name": "sub", "type": "uint256" }457 ],458 "internalType": "struct CrossAddress",459 "name": "to",460 "type": "tuple"461 },462 {463 "components": [464 { "internalType": "string", "name": "key", "type": "string" },465 { "internalType": "bytes", "name": "value", "type": "bytes" }466 ],467 "internalType": "struct Property[]",468 "name": "properties",469 "type": "tuple[]"470 }471 ],472 "name": "mintCross",473 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],474 "stateMutability": "nonpayable",475 "type": "function"476 },477 {478 "inputs": [479 { "internalType": "address", "name": "to", "type": "address" },480 { "internalType": "string", "name": "tokenUri", "type": "string" }481 ],482 "name": "mintWithTokenURI",483 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],484 "stateMutability": "nonpayable",485 "type": "function"486 },487 {488 "inputs": [],489 "name": "name",490 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],491 "stateMutability": "view",492 "type": "function"493 },494 {495 "inputs": [],496 "name": "nextTokenId",497 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],498 "stateMutability": "view",499 "type": "function"500 },501 {502 "inputs": [503 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }504 ],505 "name": "ownerOf",506 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],507 "stateMutability": "view",508 "type": "function"509 },510 {511 "inputs": [512 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },513 { "internalType": "string[]", "name": "keys", "type": "string[]" }514 ],515 "name": "properties",516 "outputs": [517 {518 "components": [519 { "internalType": "string", "name": "key", "type": "string" },520 { "internalType": "bytes", "name": "value", "type": "bytes" }521 ],522 "internalType": "struct Property[]",523 "name": "",524 "type": "tuple[]"525 }526 ],527 "stateMutability": "view",528 "type": "function"529 },530 {531 "inputs": [532 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },533 { "internalType": "string", "name": "key", "type": "string" }534 ],535 "name": "property",536 "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],537 "stateMutability": "view",538 "type": "function"539 },540 {541 "inputs": [542 {543 "components": [544 { "internalType": "address", "name": "eth", "type": "address" },545 { "internalType": "uint256", "name": "sub", "type": "uint256" }546 ],547 "internalType": "struct CrossAddress",548 "name": "admin",549 "type": "tuple"550 }551 ],552 "name": "removeCollectionAdminCross",553 "outputs": [],554 "stateMutability": "nonpayable",555 "type": "function"556 },557 {558 "inputs": [],559 "name": "removeCollectionSponsor",560 "outputs": [],561 "stateMutability": "nonpayable",562 "type": "function"563 },564 {565 "inputs": [566 {567 "components": [568 { "internalType": "address", "name": "eth", "type": "address" },569 { "internalType": "uint256", "name": "sub", "type": "uint256" }570 ],571 "internalType": "struct CrossAddress",572 "name": "user",573 "type": "tuple"574 }575 ],576 "name": "removeFromCollectionAllowListCross",577 "outputs": [],578 "stateMutability": "nonpayable",579 "type": "function"580 },581 {582 "inputs": [583 { "internalType": "address", "name": "from", "type": "address" },584 { "internalType": "address", "name": "to", "type": "address" },585 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }586 ],587 "name": "safeTransferFrom",588 "outputs": [],589 "stateMutability": "nonpayable",590 "type": "function"591 },592 {593 "inputs": [594 { "internalType": "address", "name": "from", "type": "address" },595 { "internalType": "address", "name": "to", "type": "address" },596 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },597 { "internalType": "bytes", "name": "data", "type": "bytes" }598 ],599 "name": "safeTransferFrom",600 "outputs": [],601 "stateMutability": "nonpayable",602 "type": "function"603 },604 {605 "inputs": [606 { "internalType": "address", "name": "operator", "type": "address" },607 { "internalType": "bool", "name": "approved", "type": "bool" }608 ],609 "name": "setApprovalForAll",610 "outputs": [],611 "stateMutability": "nonpayable",612 "type": "function"613 },614 {615 "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],616 "name": "setCollectionAccess",617 "outputs": [],618 "stateMutability": "nonpayable",619 "type": "function"620 },621 {622 "inputs": [623 {624 "components": [625 {626 "internalType": "enum CollectionLimitField",627 "name": "field",628 "type": "uint8"629 },630 {631 "components": [632 { "internalType": "bool", "name": "status", "type": "bool" },633 { "internalType": "uint256", "name": "value", "type": "uint256" }634 ],635 "internalType": "struct OptionUint256",636 "name": "value",637 "type": "tuple"638 }639 ],640 "internalType": "struct CollectionLimit",641 "name": "limit",642 "type": "tuple"643 }644 ],645 "name": "setCollectionLimit",646 "outputs": [],647 "stateMutability": "nonpayable",648 "type": "function"649 },650 {651 "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],652 "name": "setCollectionMintMode",653 "outputs": [],654 "stateMutability": "nonpayable",655 "type": "function"656 },657 {658 "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],659 "name": "setCollectionNesting",660 "outputs": [],661 "stateMutability": "nonpayable",662 "type": "function"663 },664 {665 "inputs": [666 { "internalType": "bool", "name": "enable", "type": "bool" },667 {668 "internalType": "address[]",669 "name": "collections",670 "type": "address[]"671 }672 ],673 "name": "setCollectionNesting",674 "outputs": [],675 "stateMutability": "nonpayable",676 "type": "function"677 },678 {679 "inputs": [680 {681 "components": [682 { "internalType": "string", "name": "key", "type": "string" },683 { "internalType": "bytes", "name": "value", "type": "bytes" }684 ],685 "internalType": "struct Property[]",686 "name": "properties",687 "type": "tuple[]"688 }689 ],690 "name": "setCollectionProperties",691 "outputs": [],692 "stateMutability": "nonpayable",693 "type": "function"694 },695 {696 "inputs": [697 {698 "components": [699 { "internalType": "address", "name": "eth", "type": "address" },700 { "internalType": "uint256", "name": "sub", "type": "uint256" }701 ],702 "internalType": "struct CrossAddress",703 "name": "sponsor",704 "type": "tuple"705 }706 ],707 "name": "setCollectionSponsorCross",708 "outputs": [],709 "stateMutability": "nonpayable",710 "type": "function"711 },712 {713 "inputs": [714 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },715 {716 "components": [717 { "internalType": "string", "name": "key", "type": "string" },718 { "internalType": "bytes", "name": "value", "type": "bytes" }719 ],720 "internalType": "struct Property[]",721 "name": "properties",722 "type": "tuple[]"723 }724 ],725 "name": "setProperties",726 "outputs": [],727 "stateMutability": "nonpayable",728 "type": "function"729 },730 {731 "inputs": [732 {733 "components": [734 { "internalType": "string", "name": "key", "type": "string" },735 {736 "components": [737 {738 "internalType": "enum TokenPermissionField",739 "name": "code",740 "type": "uint8"741 },742 { "internalType": "bool", "name": "value", "type": "bool" }743 ],744 "internalType": "struct PropertyPermission[]",745 "name": "permissions",746 "type": "tuple[]"747 }748 ],749 "internalType": "struct TokenPropertyPermission[]",750 "name": "permissions",751 "type": "tuple[]"752 }753 ],754 "name": "setTokenPropertyPermissions",755 "outputs": [],756 "stateMutability": "nonpayable",757 "type": "function"758 },759 {760 "inputs": [761 { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }762 ],763 "name": "supportsInterface",764 "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],765 "stateMutability": "view",766 "type": "function"767 },768 {769 "inputs": [],770 "name": "symbol",771 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],772 "stateMutability": "view",773 "type": "function"774 },775 {776 "inputs": [777 { "internalType": "uint256", "name": "index", "type": "uint256" }778 ],779 "name": "tokenByIndex",780 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],781 "stateMutability": "view",782 "type": "function"783 },784 {785 "inputs": [786 { "internalType": "uint256", "name": "token", "type": "uint256" }787 ],788 "name": "tokenContractAddress",789 "outputs": [{ "internalType": "address", "name": "", "type": "address" }],790 "stateMutability": "view",791 "type": "function"792 },793 {794 "inputs": [795 { "internalType": "address", "name": "owner", "type": "address" },796 { "internalType": "uint256", "name": "index", "type": "uint256" }797 ],798 "name": "tokenOfOwnerByIndex",799 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],800 "stateMutability": "view",801 "type": "function"802 },803 {804 "inputs": [],805 "name": "tokenPropertyPermissions",806 "outputs": [807 {808 "components": [809 { "internalType": "string", "name": "key", "type": "string" },810 {811 "components": [812 {813 "internalType": "enum TokenPermissionField",814 "name": "code",815 "type": "uint8"816 },817 { "internalType": "bool", "name": "value", "type": "bool" }818 ],819 "internalType": "struct PropertyPermission[]",820 "name": "permissions",821 "type": "tuple[]"822 }823 ],824 "internalType": "struct TokenPropertyPermission[]",825 "name": "",826 "type": "tuple[]"827 }828 ],829 "stateMutability": "view",830 "type": "function"831 },832 {833 "inputs": [834 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }835 ],836 "name": "tokenURI",837 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],838 "stateMutability": "view",839 "type": "function"840 },841 {842 "inputs": [],843 "name": "totalSupply",844 "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],845 "stateMutability": "view",846 "type": "function"847 },848 {849 "inputs": [850 { "internalType": "address", "name": "to", "type": "address" },851 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }852 ],853 "name": "transfer",854 "outputs": [],855 "stateMutability": "nonpayable",856 "type": "function"857 },858 {859 "inputs": [860 {861 "components": [862 { "internalType": "address", "name": "eth", "type": "address" },863 { "internalType": "uint256", "name": "sub", "type": "uint256" }864 ],865 "internalType": "struct CrossAddress",866 "name": "to",867 "type": "tuple"868 },869 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }870 ],871 "name": "transferCross",872 "outputs": [],873 "stateMutability": "nonpayable",874 "type": "function"875 },876 {877 "inputs": [878 { "internalType": "address", "name": "from", "type": "address" },879 { "internalType": "address", "name": "to", "type": "address" },880 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }881 ],882 "name": "transferFrom",883 "outputs": [],884 "stateMutability": "nonpayable",885 "type": "function"886 },887 {888 "inputs": [889 {890 "components": [891 { "internalType": "address", "name": "eth", "type": "address" },892 { "internalType": "uint256", "name": "sub", "type": "uint256" }893 ],894 "internalType": "struct CrossAddress",895 "name": "from",896 "type": "tuple"897 },898 {899 "components": [900 { "internalType": "address", "name": "eth", "type": "address" },901 { "internalType": "uint256", "name": "sub", "type": "uint256" }902 ],903 "internalType": "struct CrossAddress",904 "name": "to",905 "type": "tuple"906 },907 { "internalType": "uint256", "name": "tokenId", "type": "uint256" }908 ],909 "name": "transferFromCross",910 "outputs": [],911 "stateMutability": "nonpayable",912 "type": "function"913 },914 {915 "inputs": [],916 "name": "uniqueCollectionType",917 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],918 "stateMutability": "view",919 "type": "function"920 }921]tests/src/eth/abi/reFungibleToken.jsondiffbeforeafterboth--- a/tests/src/eth/abi/reFungibleToken.json
+++ b/tests/src/eth/abi/reFungibleToken.json
@@ -98,16 +98,6 @@
},
{
"inputs": [
- { "internalType": "address", "name": "from", "type": "address" },
- { "internalType": "uint256", "name": "amount", "type": "uint256" }
- ],
- "name": "burnFrom",
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
{
"components": [
{ "internalType": "address", "name": "eth", "type": "address" },
tests/src/eth/api/UniqueNFT.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -483,18 +483,9 @@
function burn(uint256 tokenId) external;
}
-/// @dev inlined interface
-interface ERC721UniqueMintableEvents {
- event MintingFinished();
-}
-
/// @title ERC721 minting logic.
-/// @dev the ERC-165 identifier for this interface is 0x476ff149
-interface ERC721UniqueMintable is Dummy, ERC165, ERC721UniqueMintableEvents {
- /// @dev EVM selector for this function is: 0x05d2035b,
- /// or in textual repr: mintingFinished()
- function mintingFinished() external view returns (bool);
-
+/// @dev the ERC-165 identifier for this interface is 0x3fd94ea6
+interface ERC721UniqueMintable is Dummy, ERC165 {
/// @notice Function to mint a token.
/// @param to The new owner
/// @return uint256 The id of the newly minted token
@@ -518,7 +509,6 @@
/// @dev EVM selector for this function is: 0x45c17782,
/// or in textual repr: mintWithTokenURI(address,string)
function mintWithTokenURI(address to, string memory tokenUri) external returns (uint256);
-
// /// @notice Function to mint token with the given tokenUri.
// /// @dev `tokenId` should be obtained with `nextTokenId` method,
// /// unlike standard, you can't specify it manually
@@ -529,10 +519,6 @@
// /// or in textual repr: mintWithTokenURI(address,uint256,string)
// function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) external returns (bool);
- /// @dev Not implemented
- /// @dev EVM selector for this function is: 0x7d64bcb4,
- /// or in textual repr: finishMinting()
- function finishMinting() external returns (bool);
}
/// @title Unique extensions for ERC721.
tests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueRefungible.sol
+++ b/tests/src/eth/api/UniqueRefungible.sol
@@ -483,18 +483,9 @@
function burn(uint256 tokenId) external;
}
-/// @dev inlined interface
-interface ERC721UniqueMintableEvents {
- event MintingFinished();
-}
-
/// @title ERC721 minting logic.
-/// @dev the ERC-165 identifier for this interface is 0x476ff149
-interface ERC721UniqueMintable is Dummy, ERC165, ERC721UniqueMintableEvents {
- /// @dev EVM selector for this function is: 0x05d2035b,
- /// or in textual repr: mintingFinished()
- function mintingFinished() external view returns (bool);
-
+/// @dev the ERC-165 identifier for this interface is 0x3fd94ea6
+interface ERC721UniqueMintable is Dummy, ERC165 {
/// @notice Function to mint a token.
/// @param to The new owner
/// @return uint256 The id of the newly minted token
@@ -518,7 +509,6 @@
/// @dev EVM selector for this function is: 0x45c17782,
/// or in textual repr: mintWithTokenURI(address,string)
function mintWithTokenURI(address to, string memory tokenUri) external returns (uint256);
-
// /// @notice Function to mint token with the given tokenUri.
// /// @dev `tokenId` should be obtained with `nextTokenId` method,
// /// unlike standard, you can't specify it manually
@@ -529,10 +519,6 @@
// /// or in textual repr: mintWithTokenURI(address,uint256,string)
// function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) external returns (bool);
- /// @dev Not implemented
- /// @dev EVM selector for this function is: 0x7d64bcb4,
- /// or in textual repr: finishMinting()
- function finishMinting() external returns (bool);
}
/// @title Unique extensions for ERC721.
tests/src/eth/api/UniqueRefungibleToken.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueRefungibleToken.sol
+++ b/tests/src/eth/api/UniqueRefungibleToken.sol
@@ -25,13 +25,13 @@
/// @dev the ERC-165 identifier for this interface is 0xe17a7d2b
interface ERC20UniqueExtensions is Dummy, ERC165 {
- /// @dev Function that burns an amount of the token of a given account,
- /// deducting from the sender's allowance for said account.
- /// @param from The account whose tokens will be burnt.
- /// @param amount The amount that will be burnt.
- /// @dev EVM selector for this function is: 0x79cc6790,
- /// or in textual repr: burnFrom(address,uint256)
- function burnFrom(address from, uint256 amount) external returns (bool);
+ // /// @dev Function that burns an amount of the token of a given account,
+ // /// deducting from the sender's allowance for said account.
+ // /// @param from The account whose tokens will be burnt.
+ // /// @param amount The amount that will be burnt.
+ // /// @dev EVM selector for this function is: 0x79cc6790,
+ // /// or in textual repr: burnFrom(address,uint256)
+ // function burnFrom(address from, uint256 amount) external returns (bool);
/// @dev Function that burns an amount of the token of a given account,
/// deducting from the sender's allowance for said account.
tests/src/eth/base.test.tsdiffbeforeafterboth--- a/tests/src/eth/base.test.ts
+++ b/tests/src/eth/base.test.ts
@@ -108,10 +108,6 @@
await checkInterface(helper, '0x5b5e139f', false, true);
});
- itEth('ERC721UniqueMintable - 0x476ff149 - support', async ({helper}) => {
- await checkInterface(helper, '0x476ff149', true, true);
- });
-
itEth('ERC721Enumerable - 0x780e9d63 - support', async ({helper}) => {
await checkInterface(helper, '0x780e9d63', true, true);
});