谢谢大家帮我。非常感谢。我在rinkeby测试网络上签订了合同。合同地址是:https://rinkeby.etherscan.io/address/0x5dedcba9851e5c7ff464d5ee6ef75301a8c43d8b
我尝试编写代码运行契约转换方法,以便将ERC2.0令牌从A地址移动到B地址。但是总是停止并显示错误消息:事务已被EVM恢复。我不知道什么是麻烦。希望有人能帮我。
fs = require("fs");
Web3 = require('web3');
url = "https://rinkeby.infura.io/v3/29129372289d49dca8ecec82d0aa8e7a";
web3 = new Web3(new Web3.providers.HttpProvider(url));
var contractAddress ="0x5DedCBa9851E5C7FF464D5Ee6Ef75301a8c43d8b";
var abiArray = JSON.parse(fs.readFileSync('kct.json', 'utf-8'));
abi = JSON.parse(abiArray.result);
var contract = new web3.eth.Contract(abi,contractAddress);
web3.eth.getBlock("latest",function(err,block){
const gasLimit = block.gasLimit;
console.log('gas limit:',gasLimit);
prkey="0xDE9EAD9D7DE97A3F94D66F9D8D7BF437AA76A28D4A13202B446D48AB1979DBDB";
data = contract.methods.transferFrom("0x410E6a1be27424091ABb15aA096D492958fD55f1","0xf17f52151EbEF6C7334FAD080c5704D77216b732","12").encodeABI();
console.log("data",data);
console.log('gasPrice:',gasPrice);
console.log("contractAddress",contractAddress);
var tx = {
from:"0x410E6a1be27424091ABb15aA096D492958fD55f1",
to:contractAddress,
data:data,
gasPrice: web3.utils.toHex(4200000000),
gasLimit: web3.utils.toHex(4300000),
};
web3.eth.accounts.signTransaction(tx,prkey).then(tx => {
console.log('Result++: ', tx);
var raw = tx.rawTransaction;
web3.eth.sendSignedTransaction(raw).on('receipt', res => {
console.log('操作成功');
}).on('error', err => {
console.log(err);
});
}).then(receipt => console.log("Transaction succeeded", receipt)).catch(error => console.error(error))
})发布于 2018-09-18 13:31:45
看起来,您正在调用transferFrom(),这是地址A将令牌从地址B转移到地址C的一种方式。为了做到这一点,地址B必须首先通过调用approve()来授权地址A。
但是看起来你只是想从你自己的帐户转帐,所以你应该使用transfer():
data = contract.methods.transfer("0xf17f52151EbEF6C7334FAD080c5704D77216b732", "12").encodeABI();https://ethereum.stackexchange.com/questions/58986
复制相似问题