我写了一份智能合约并将其部署在我的私人以太坊网络
这种合同方法已被多次调用,并且当我们的网站api受到攻击时,它运行得很好。
这是合同方法:
sendError
这种方法是一种批量转移方法。
和function batchTransfer(
uint64 _requestId,
uint16 _count,
address[] _receivers,
uint256[] _amounts
)
external
payable
onlyAdmin
{
require(_count == _receivers.length);
require(_count == _amounts.length);
uint sum = _sum(_amounts);
require(sum <= msg.value);
for(uint16 i = 0; i < _count; i++) {
if(msg.sender != _receivers[i]) {
_receivers[i].transfer(_amounts[i]);
}
}
msg.sender.transfer(msg.value - sum);
BatchTransfer(_requestId, msg.sender, sum, _count);
}
最多100
_count
为3,000,000
在高并发条件下,失败。
ethereum log&#39; out of gas&#39;。
按transactionHash查询:
gas limt
此事务成功写入块。
但是在低并发条件下,我再次调用了这个方法。
它会成功!
注意