我有一个问题。我需要在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++;
}
}
但之后我的错误地址无效
答案 0 :(得分:1)
嗯,对于你所展示的代码,似乎合同最初缺乏初始化。
var contract = eth.contract([abi])
.new([array of params],
{data:'0x...', from:[address], gas:47000, gasPrice: 37891200});
也许你的初始化缺乏'from:[address]'属性,这是发送合同时所必需的。
我想建议您尝试使用浏览器可靠性来调试此调用或在浏览器上使用web3调用此构造,此错误会在 web3.js:3882 上引发...在那里放一个断点,看看。