【问题标题】:Wrong format: invalid address格式错误:地址无效
【发布时间】:2016-11-19 06:00:56
【问题描述】:

我有一个问题。我需要在 Javascript 中初始化具有钱包地址的人,然后将其传递给函数 Solidity,但我收到有关错误格式的错误。

我的 JavaScript 函数

 $scope.myToken = accounts[0];
 $scope.initProviders = function(providersAddresses,providersAmount){
  alert(providersAddresses);
  contract.init(providersAddresses,providersAmount,$scope.myToken).call();
 };

并调用这个函数

<md-button ng-click="initProviders('0x199fdf564df1d18056ed46724582502fd3ce580a',1)">INIT</md-button>

以及 Solidity 代码

function init(address[] provAddrs, uint provCount,address mainAcc)
{
    clientAddr = mainAcc;
    for(uint i = 0;i<provCount;i++)
    {
        providers[i].profit = 0;
        providers[i].addr = provAddrs[0];
        provCount++;
    }
}

但在那之后我有错误无效地址

【问题讨论】:

  • 欢迎您! Ethereum StackExchange 将有更多的人能够回答这个问题。 (我会回答但不知道。)
  • 对象“合约”在哪里?您的函数“init”没有显示它如何成为“合同”对象的一部分。另外,您使用的是打字稿吗? “地址[]”不是有效的 Javascript。显示更多代码,并提供确切的错误。

标签: javascript angularjs blockchain ethereum solidity


【解决方案1】:

嗯,对于您展示的代码,合同一开始似乎缺少初始化。

var contract = eth.contract([abi])
                     .new([array of params], 
                     {data:'0x...', from:[address], gas:47000, gasPrice: 37891200});

也许您的初始化缺少发送合同时需要的“发件人:[地址]”属性。

我想建议您尝试使用 browser-solidity 调试此调用或在浏览器上使用 web3 调用此构造或其他东西,此错误会在 web3.js:3882 上引发...在那里打个断点看看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多