我在IDE Remix中有以下Solidity合同:
实用主义稳固性0.8.0;
//A contract with a customizable fee
contract EtherSplitter {
function splitEther(address payable[] memory recipients, uint fee) public payable {
recipients[0].transfer(msg.value * fee / 100);
recipients[1].transfer(msg.value * (100 - fee) / 100);
}
receive() external payable {
}
}
使用以下设置运行:
- 收件人:[0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C,0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB]
- 费用:10
- 值:10以太币
当我按下";Transact-";,我得到以下错误:
transact to EtherSplitter.splitEther errored: Error encoding arguments: Error: expected array value (argument=null, value="[0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C, 0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB]", code=INVALID_ARGUMENT, version=abi/5.5.0)
我试图如何指定费用似乎有问题。错误是什么?
Remix IDE接受地址类型作为字符串,因此需要将元素用引号括起来:
["0x14723A09ACff6D2A60DcdF7aA4AFf308FDDC160C", "0x4B0897b0513fdC7C541B6d9D7E929C4e5364D2dB"]