当前位置: 首页 > 知识库问答 >
问题:

使用web3传输自定义ERC20令牌(无效地址错误)

包翔
2023-03-14

我用的是web3库0.20.2版。我想对我的智能合约做的只是转移自定义erc20令牌。

下面的智能合约代码(滑道)

 function transfer(address _to, uint256 _value) returns (bool success) {}

我想使用此函数将自定义令牌传输到_to(地址)。

var myContract = web3.eth.contract(abi)
var myContractInstance = myContract.at(address);
var total = myContractInstance.totalSupply();
var balance = myContractInstance.balanceOf(owner);
onsole.log('total',total);
console.log('balance',balance);

var to ="0x20....";
var value = 10;
var isAddress = web3.isAddress(to);
console.log(isAddress);

myContractInstance.transfer(to, value, (err,res)=> {console.log(err,res);});

这是我的控制台。

Rachals-MacBook-Pro:test rachel$ node app.js
total BigNumber { s: 1, e: 10, c: [ 10000000000 ] }
balance BigNumber { s: 1, e: 9, c: [ 9999000000 ] }

true

/Users/rachel/dev/test/node_modules/web3/lib/web3/formatters.js:274
    throw new Error('invalid address');
    ^



at inputAddressFormatter (/Users/rachel/dev/test/node_modules/web3/lib/web3/formatters.js:274:11)
at inputTransactionFormatter (/Users/rachel/dev/test/node_modules/web3/lib/web3/formatters.js:100:20)
at /Users/rachel/dev/test/node_modules/web3/lib/web3/method.js:89:28
at Array.map (<anonymous>)
at Method.formatInput (/Users/rachel/dev/test/node_modules/web3/lib/web3/method.js:88:32)
at Method.toPayload (/Users/rachel/dev/test/node_modules/web3/lib/web3/method.js:114:23)
at Eth.send [as sendTransaction] (/Users/rachel/dev/test/node_modules/web3/lib/web3/method.js:139:30)
at SolidityFunction.sendTransaction (/Users/rachel/dev/test/node_modules/web3/lib/web3/function.js:173:15)
at SolidityFunction.execute (/Users/rachel/dev/test/node_modules/web3/lib/web3/function.js:256:37)
at Object.<anonymous> (/Users/rachel/dev/test/app.js:35:20)

我不知道这是怎么回事,我错过了什么吗?请让我知道如何修复这个“无效地址”错误。谢谢!

共有2个答案

葛奇
2023-03-14

将默认帐户配置为合同部署人员的帐户,然后进行转移。

eth.defaultAccount = eth.coinbase

陆绪
2023-03-14

我猜您没有from地址,因为web3将只验证交易的地址。transfer函数中的toaddress是事务负载的一部分,不是独立的事务,因此var isAddress=web3.isAddress(to) 检查不是特别有用

来自来自您当前节点的coinbase帐户。将console.log(web3.eth.coinbase)添加到您的代码中并查看它是什么。

 类似资料:
  • 我正在尝试在web3中实现一个可靠的“购买”功能。最终,我希望有一个按钮,然后用户将打开元掩码以将固定金额(简单示例为1个以太币)发送到智能合约以换取ERC20令牌。我已经学会了如何在两个钱包之间转移代币,但现在我想更进一步,学习如何发送以太币来接收ERC20。这是我一直在使用的坚固性“购买”功能: 现在,我一直在使用这个与元amask结合的OnClick按钮来传输ERC20: 您对如何在JS中实

  • 我有一个代表ERC20令牌的智能合约。我已经使用安全帽在币安测试网上部署了智能合约。 我也有一个部署的智能合约地址。 我使用以下链接在PHP laravel项目中集成了Web3库。 我可以调用web3函数来获取令牌符号。它运行良好。 我想使用智能合约的“转移”功能将我的代币转移到某个钱包地址。 我正在使用以下代码。 但我得到以下错误。 有人能指导我解决这个问题吗? 这是Token.json- 阿比

  • 我目前使用的是Web3 JavaScript API的0.2x.x版本。我通过在solidity(在REMIX IDE上)中创建智能契约来部署我的自定义ERC20令牌。我安装了元掩码,并在https://wallet.ethereum.org/上测试发送一些自定义ERC令牌到另一个我的帐户。效果很好。我想使用Web3js在我的JavaScript代码中添加“发送自定义ERC20令牌”功能。 这是我

  • 自定义传输 Nest provides TCP and Redis as a built-in transport methods. It makes prototyping incredibly fast & easy, but sometimes you might want to use another type of transport, e.g. RabbitMQ messaging.

  • 我有一个运行 IBM worklight 项目的 eclipse 工作区,我想在不同的端口上使用另一个 worklight 项目运行另一个 eclipse 实例。我已经修改了服务器.xml其具有Http端口,如下所示: 以及管理端口,如下所示: 但是当我启动第二台服务器时,我收到以下错误: 本机方法中的致命错误:JDWP没有初始化传输,jvmtiError=AGENT_ERROR_TRANSPOR

  • 对于我正在进行的一个新的Node.js项目,我正在考虑从基于cookie的会话方法(我的意思是,将id存储到包含用户浏览器中用户会话的键值存储)切换到使用JSON Web令牌(jwt)的基于令牌的会话方法(无键值存储)。 这个项目是一个利用socket.io的游戏--在一个会话中有多个通信通道(web和socket.io)的情况下,拥有一个基于令牌的会话会很有用 如何使用jwt方法从服务器提供令牌