首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事务已由EVM恢复。

事务已由EVM恢复。
EN

Ethereum用户
提问于 2018-09-18 13:17:54
回答 1查看 2.7K关注 0票数 0

谢谢大家帮我。非常感谢。我在rinkeby测试网络上签订了合同。合同地址是:https://rinkeby.etherscan.io/address/0x5dedcba9851e5c7ff464d5ee6ef75301a8c43d8b

我尝试编写代码运行契约转换方法,以便将ERC2.0令牌从A地址移动到B地址。但是总是停止并显示错误消息:事务已被EVM恢复。我不知道什么是麻烦。希望有人能帮我。

代码语言:javascript
复制
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))
})
EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-09-18 13:31:45

看起来,您正在调用transferFrom(),这是地址A将令牌从地址B转移到地址C的一种方式。为了做到这一点,地址B必须首先通过调用approve()来授权地址A。

但是看起来你只是想从你自己的帐户转帐,所以你应该使用transfer()

代码语言:javascript
复制
data = contract.methods.transfer("0xf17f52151EbEF6C7334FAD080c5704D77216b732", "12").encodeABI();
票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/58986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档