1

我有一个问题。我需要在 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++;
    }
}

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

4

1 回答 1

1

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

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

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

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

于 2016-12-22T16:15:18.240 回答