git.delta.rocks / unique-network / refs/commits / 916ae427c879

difftreelog

Merge pull request #829 from UniqueNetwork/feature/remove_and_hide_some_minting_methods_and_events

Yaroslav Bolyukin2023-01-17parents: #7db8050 #4f40188.patch.diff
in: master

24 files changed

modifiedpallets/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())
 	}
 }
 
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/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.
modifiedpallets/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())
 	}
 }
 
modifiedpallets/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);
modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/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.
modifiedpallets/refungible/src/stubs/UniqueRefungibleToken.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungibleToken.soldiffbeforeafterboth
before · pallets/refungible/src/stubs/UniqueRefungibleToken.sol
1// SPDX-License-Identifier: OTHER2// This code is automatically generated34pragma solidity >=0.8.0 <0.9.0;56/// @dev common stubs holder7contract Dummy {8	uint8 dummy;9	string stub_error = "this contract is implemented in native";10}1112contract ERC165 is Dummy {13	function supportsInterface(bytes4 interfaceID) external view returns (bool) {14		require(false, stub_error);15		interfaceID;16		return true;17	}18}1920/// @dev the ERC-165 identifier for this interface is 0x5755c3f221contract ERC1633 is Dummy, ERC165 {22	/// @dev EVM selector for this function is: 0x80a54001,23	///  or in textual repr: parentToken()24	function parentToken() public view returns (address) {25		require(false, stub_error);26		dummy;27		return 0x0000000000000000000000000000000000000000;28	}2930	/// @dev EVM selector for this function is: 0xd7f083f3,31	///  or in textual repr: parentTokenId()32	function parentTokenId() public view returns (uint256) {33		require(false, stub_error);34		dummy;35		return 0;36	}37}3839/// @dev the ERC-165 identifier for this interface is 0xe17a7d2b40contract ERC20UniqueExtensions is Dummy, ERC165 {41	/// @dev Function that burns an amount of the token of a given account,42	/// deducting from the sender's allowance for said account.43	/// @param from The account whose tokens will be burnt.44	/// @param amount The amount that will be burnt.45	/// @dev EVM selector for this function is: 0x79cc6790,46	///  or in textual repr: burnFrom(address,uint256)47	function burnFrom(address from, uint256 amount) public returns (bool) {48		require(false, stub_error);49		from;50		amount;51		dummy = 0;52		return false;53	}5455	/// @dev Function that burns an amount of the token of a given account,56	/// deducting from the sender's allowance for said account.57	/// @param from The account whose tokens will be burnt.58	/// @param amount The amount that will be burnt.59	/// @dev EVM selector for this function is: 0xbb2f5a58,60	///  or in textual repr: burnFromCross((address,uint256),uint256)61	function burnFromCross(CrossAddress memory from, uint256 amount) public returns (bool) {62		require(false, stub_error);63		from;64		amount;65		dummy = 0;66		return false;67	}6869	/// @dev Approve the passed address to spend the specified amount of tokens on behalf of `msg.sender`.70	/// Beware that changing an allowance with this method brings the risk that someone may use both the old71	/// and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this72	/// race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:73	/// https://github.com/ethereum/EIPs/issues/20#issuecomment-26352472974	/// @param spender The crossaccount which will spend the funds.75	/// @param amount The amount of tokens to be spent.76	/// @dev EVM selector for this function is: 0x0ecd0ab0,77	///  or in textual repr: approveCross((address,uint256),uint256)78	function approveCross(CrossAddress memory spender, uint256 amount) public returns (bool) {79		require(false, stub_error);80		spender;81		amount;82		dummy = 0;83		return false;84	}8586	/// @dev Function that changes total amount of the tokens.87	///  Throws if `msg.sender` doesn't owns all of the tokens.88	/// @param amount New total amount of the tokens.89	/// @dev EVM selector for this function is: 0xd2418ca7,90	///  or in textual repr: repartition(uint256)91	function repartition(uint256 amount) public returns (bool) {92		require(false, stub_error);93		amount;94		dummy = 0;95		return false;96	}9798	/// @dev Transfer token for a specified address99	/// @param to The crossaccount to transfer to.100	/// @param amount The amount to be transferred.101	/// @dev EVM selector for this function is: 0x2ada85ff,102	///  or in textual repr: transferCross((address,uint256),uint256)103	function transferCross(CrossAddress memory to, uint256 amount) public returns (bool) {104		require(false, stub_error);105		to;106		amount;107		dummy = 0;108		return false;109	}110111	/// @dev Transfer tokens from one address to another112	/// @param from The address which you want to send tokens from113	/// @param to The address which you want to transfer to114	/// @param amount the amount of tokens to be transferred115	/// @dev EVM selector for this function is: 0xd5cf430b,116	///  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)117	function transferFromCross(118		CrossAddress memory from,119		CrossAddress memory to,120		uint256 amount121	) public returns (bool) {122		require(false, stub_error);123		from;124		to;125		amount;126		dummy = 0;127		return false;128	}129}130131/// Cross account struct132struct CrossAddress {133	address eth;134	uint256 sub;135}136137/// @dev inlined interface138contract ERC20Events {139	event Transfer(address indexed from, address indexed to, uint256 value);140	event Approval(address indexed owner, address indexed spender, uint256 value);141}142143/// @title Standard ERC20 token144///145/// @dev Implementation of the basic standard token.146/// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md147/// @dev the ERC-165 identifier for this interface is 0x942e8b22148contract ERC20 is Dummy, ERC165, ERC20Events {149	/// @return the name of the token.150	/// @dev EVM selector for this function is: 0x06fdde03,151	///  or in textual repr: name()152	function name() public view returns (string memory) {153		require(false, stub_error);154		dummy;155		return "";156	}157158	/// @return the symbol of the token.159	/// @dev EVM selector for this function is: 0x95d89b41,160	///  or in textual repr: symbol()161	function symbol() public view returns (string memory) {162		require(false, stub_error);163		dummy;164		return "";165	}166167	/// @dev Total number of tokens in existence168	/// @dev EVM selector for this function is: 0x18160ddd,169	///  or in textual repr: totalSupply()170	function totalSupply() public view returns (uint256) {171		require(false, stub_error);172		dummy;173		return 0;174	}175176	/// @dev Not supported177	/// @dev EVM selector for this function is: 0x313ce567,178	///  or in textual repr: decimals()179	function decimals() public view returns (uint8) {180		require(false, stub_error);181		dummy;182		return 0;183	}184185	/// @dev Gets the balance of the specified address.186	/// @param owner The address to query the balance of.187	/// @return An uint256 representing the amount owned by the passed address.188	/// @dev EVM selector for this function is: 0x70a08231,189	///  or in textual repr: balanceOf(address)190	function balanceOf(address owner) public view returns (uint256) {191		require(false, stub_error);192		owner;193		dummy;194		return 0;195	}196197	/// @dev Transfer token for a specified address198	/// @param to The address to transfer to.199	/// @param amount The amount to be transferred.200	/// @dev EVM selector for this function is: 0xa9059cbb,201	///  or in textual repr: transfer(address,uint256)202	function transfer(address to, uint256 amount) public returns (bool) {203		require(false, stub_error);204		to;205		amount;206		dummy = 0;207		return false;208	}209210	/// @dev Transfer tokens from one address to another211	/// @param from address The address which you want to send tokens from212	/// @param to address The address which you want to transfer to213	/// @param amount uint256 the amount of tokens to be transferred214	/// @dev EVM selector for this function is: 0x23b872dd,215	///  or in textual repr: transferFrom(address,address,uint256)216	function transferFrom(217		address from,218		address to,219		uint256 amount220	) public returns (bool) {221		require(false, stub_error);222		from;223		to;224		amount;225		dummy = 0;226		return false;227	}228229	/// @dev Approve the passed address to spend the specified amount of tokens on behalf of `msg.sender`.230	/// Beware that changing an allowance with this method brings the risk that someone may use both the old231	/// and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this232	/// race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:233	/// https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729234	/// @param spender The address which will spend the funds.235	/// @param amount The amount of tokens to be spent.236	/// @dev EVM selector for this function is: 0x095ea7b3,237	///  or in textual repr: approve(address,uint256)238	function approve(address spender, uint256 amount) public returns (bool) {239		require(false, stub_error);240		spender;241		amount;242		dummy = 0;243		return false;244	}245246	/// @dev Function to check the amount of tokens that an owner allowed to a spender.247	/// @param owner address The address which owns the funds.248	/// @param spender address The address which will spend the funds.249	/// @return A uint256 specifying the amount of tokens still available for the spender.250	/// @dev EVM selector for this function is: 0xdd62ed3e,251	///  or in textual repr: allowance(address,address)252	function allowance(address owner, address spender) public view returns (uint256) {253		require(false, stub_error);254		owner;255		spender;256		dummy;257		return 0;258	}259}260261contract UniqueRefungibleToken is Dummy, ERC165, ERC20, ERC20UniqueExtensions, ERC1633 {}
modifiedruntime/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 { .. }
modifiedtests/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}`);
modifiedtests/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}`);
 
modifiedtests/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}`);
 
modifiedtests/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}`);
 
modifiedtests/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}`);
 
modifiedtests/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}`);
 
modifiedtests/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}`);
 
modifiedtests/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"
   },
   {
modifiedtests/src/eth/abi/reFungible.jsondiffbeforeafterboth
--- a/tests/src/eth/abi/reFungible.json
+++ b/tests/src/eth/abi/reFungible.json
@@ -51,12 +51,6 @@
   },
   {
     "anonymous": false,
-    "inputs": [],
-    "name": "MintingFinished",
-    "type": "event"
-  },
-  {
-    "anonymous": false,
     "inputs": [
       {
         "indexed": true,
@@ -402,13 +396,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"
   },
   {
@@ -495,13 +482,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"
   },
   {
modifiedtests/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" },
modifiedtests/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.
modifiedtests/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.
modifiedtests/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.
modifiedtests/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);
   });