From 9fca092ae2601cee947453655e84ee7410a07379 Mon Sep 17 00:00:00 2001 From: Max Andreev Date: Wed, 11 Jan 2023 13:59:19 +0000 Subject: [PATCH] Deprecate burnFrom for rftToken --- --- 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. --- 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" }, --- /dev/null +++ b/tests/src/eth/abi/reFungibleTokenDeprecated.json @@ -0,0 +1,12 @@ +[ + { + "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" + } +] --- 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. --- a/tests/src/eth/reFungible.test.ts +++ b/tests/src/eth/reFungible.test.ts @@ -74,7 +74,7 @@ const result = await contract.methods.mint(caller).send(); const tokenId = result.events.Transfer.returnValues.tokenId; - const tokenContract = await helper.ethNativeContract.rftTokenById(collectionId, tokenId, caller); + const tokenContract = await helper.ethNativeContract.rftTokenById(collectionId, tokenId, caller, true); await tokenContract.methods.repartition(2).send(); await tokenContract.methods.transfer(receiver, 1).send(); @@ -316,7 +316,7 @@ const address = helper.ethAddress.fromCollectionId(collection.collectionId); const contract = await helper.ethNativeContract.collection(address, 'rft'); - const rftToken = await helper.ethNativeContract.rftTokenById(token.collectionId, token.tokenId, owner); + const rftToken = await helper.ethNativeContract.rftTokenById(token.collectionId, token.tokenId, owner, true); { await rftToken.methods.approve(operator, 15n).send({from: owner}); --- a/tests/src/eth/reFungibleToken.test.ts +++ b/tests/src/eth/reFungibleToken.test.ts @@ -458,7 +458,7 @@ const result = await contract.methods.mint(caller).send(); const tokenId = result.events.Transfer.returnValues.tokenId; const tokenAddress = helper.ethAddress.fromTokenId(collectionId, tokenId); - const tokenContract = await helper.ethNativeContract.rftToken(tokenAddress, caller); + const tokenContract = await helper.ethNativeContract.rftToken(tokenAddress, caller, true); await tokenContract.methods.repartition(2).send(); await tokenContract.methods.transfer(receiver, 1).send(); --- a/tests/src/eth/util/playgrounds/unique.dev.ts +++ b/tests/src/eth/util/playgrounds/unique.dev.ts @@ -29,6 +29,7 @@ import refungibleAbi from '../../abi/reFungible.json'; import refungibleDeprecatedAbi from '../../abi/reFungibleDeprecated.json'; import refungibleTokenAbi from '../../abi/reFungibleToken.json'; +import refungibleTokenDeprecatedAbi from '../../abi/reFungibleTokenDeprecated.json'; import contractHelpersAbi from '../../abi/contractHelpers.json'; import {ICrossAccountId, TEthereumAccount} from '../../../util/playgrounds/types'; import {TCollectionMode} from '../../../util/playgrounds/types'; @@ -187,17 +188,18 @@ return this.collection(this.helper.ethAddress.fromCollectionId(collectionId), mode, caller, mergeDeprecated); } - async rftToken(address: string, caller?: string) { + async rftToken(address: string, caller?: string, mergeDeprecated = false) { const web3 = this.helper.getWeb3(); - return unlimitedMoneyHack(new web3.eth.Contract(refungibleTokenAbi as any, address, { + let abi = mergeDeprecated ? [...refungibleTokenAbi, ...refungibleTokenDeprecatedAbi] : refungibleTokenAbi; + return unlimitedMoneyHack(new web3.eth.Contract(abi as any, address, { gas: this.helper.eth.DEFAULT_GAS, gasPrice: await this.getGasPrice(), ...(caller ? {from: caller} : {}), })); } - rftTokenById(collectionId: number, tokenId: number, caller?: string) { - return this.rftToken(this.helper.ethAddress.fromTokenId(collectionId, tokenId), caller); + rftTokenById(collectionId: number, tokenId: number, caller?: string, mergeDeprecated = false) { + return this.rftToken(this.helper.ethAddress.fromTokenId(collectionId, tokenId), caller, true); } } -- gitstuff