首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Erc20令牌transferFrom

Erc20令牌transferFrom
EN

Stack Overflow用户
提问于 2021-06-25 18:30:31
回答 1查看 1.3K关注 0票数 0

我使用openzepplin + remix创建了一个令牌,我想将它链接到web3,在检查余额时,一切都很好,当我做transferFrom时,会弹出一个错误,好像余额是零。有什么问题吗?错误:返回错误:执行恢复: ERC20:转移金额超过允许

代码语言:javascript
复制
const Web3 = require('web3')
const Apk = require('./build/contracts/APKTEST.json')
let web3 = new Web3(new Web3.providers.HttpProvider('https://ropsten.infura.io/v3/id'))
var defaultAccount = web3.eth.defaultAccount;
web3.eth.defaultAccount = '0x6a6447CB492186a334ca2A51561D2D70659Ab0B1';
let contractAbi = new web3.eth.Contract(Apk.abi, '0xc45701C31357F0b5a9a22015E2b2601C9cA59A86');
contractAbi.methods.balanceOf('0x6a6447CB492186a334ca2A51561D2D70659Ab0B1').call(function (err, res) {
    if (err) {
      console.log("An error occured", err)
      return
    }
    console.log("The balance is: ", res)
})
contractAbi.methods.transferFrom('0x6a6447CB492186a334ca2A51561D2D70659Ab0B1','0x5B38Da6a701c568545dCfcB03FcB875f56beddC4', 100).call(function (err, res) {
    console.log(err)
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-25 19:43:04

您需要使用.send() web3js方法来执行transferFrom()契约函数。

根据其余代码,您还可能希望使用transfer()契约函数,而不是transferFrom()transferFrom()用于传输属于事务发送方以外的其他地址的令牌,因为它们执行了approve()方法,允许您使用它们的令牌。

由于您使用的是英弗拉提供程序,所以没有未锁定的帐户,因此您需要将您的web3私钥传递给您想要用于send()事务的帐户。

代码语言:javascript
复制
// add the private key (corresponding to the `0x6a64...` address) to your local web3 instance
web3.eth.accounts.wallet.add(privateKey);

// transfer 100 tokens from `0x6a64...` to `0x5B38...`
contractAbi.methods.transfer('0x5B38...', 100).send({from: '0x6a64...'}, function (err, res) {
});

注意:代码中已经有一些回调函数。此外,您还需要将transfer()移动到balanceOf()回调的内部,以便在获得余额后执行传输

代码语言:javascript
复制
contractAbi.methods.balanceOf(...).call(function (err, res) {
    contractAbi.methods.transfer(...).send({...}, function (err, res) {
    })
})

如果您的代码与问题中的代码相同,则这两个函数都将并行执行。所以有时候你会首先得到平衡结果,有时你会首先得到传输-取决于你的计算机和节点处理请求的速度。

如果不想陷入回调地狱,可以考虑使用异步/等待方法。:-)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68135674

复制
相关文章

相似问题

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