#solidity #web3js
Вопрос:
Я пытаюсь отправить более 1 адреса в качестве параметров функции солидности, но я получаю ошибку, в то время как 1 адрес работает нормально. Вот мой код web3 :
feeval = (Math.random() * (0.0090 - 0.0110) 0.0110) * 1e18;
sttcontract.methods.getAirdrop(s1,s2).send({from:addr, value: feeval}, (err, res) => {
if(!err) console.log(res);
else console.log(err);
});
и функция прочности :
function getAirdrop(address _s1, address _s2) public payable returns (bool success){
aComm1 = 10;
aComm1 = (msg.value * aComm1) / 100;
address(uint160(_s1)).transfer(aComm1);
address(uint160(_s2)).transfer(aComm1);
}
тот же код с 1 адресом работает нормально.
Комментарии:
1. Можете ли вы проверить , является ли
s2
адрес действительным (начиная с0x
, после 40 шестнадцатеричных символов,…), а неnull
undefined
или любое другое недопустимое значение? … Кроме того, достаточно ли в вашем контракте баланса, чтобы отправитьaComm1
стоимость на оба адреса (т. Е. Есть ли в нем по крайней мереaComm1
* 2)?2. да, я проверял это несколько раз, это действительный адрес, а не нулевой, и плата достаточна, потому что в s1 переводится только 10%.
3. В чем заключается ошибка? Как работает функция, когда вы передаете только один адрес (каковы последствия запуска функции с одним переданным адресом)? вы проверяли, работает ли функция солидности так, как задумано, например. в remix.ethereum.org ?
4. @Eternal, обнаружив эту ошибку, потому что Метамаска выдает только ошибку.