Transaction Hash:
Block:
9137796 at Dec-20-2019 11:01:54 PM +UTC
Transaction Fee:
0.00015811 ETH
$0.31
Gas Used:
31,622 Gas / 5 Gwei
Account State Difference:
| Address | Before | After | State Difference | ||
|---|---|---|---|---|---|
| 0x6B87700a...8E0521f00 |
0.1 Eth
Nonce: 0
|
0.540608582210382956 Eth
Nonce: 1
| 0.440608582210382956 | ||
| 0x7b138cc8...B2ec6682E | (Bitpie: Batch Sender) | 0.440766692210382956 Eth | 0 Eth | 0.440766692210382956 | |
|
0xEA674fdD...16B898ec8
Miner
| (Ethermine) | 386.661986110068424048 Eth | 386.662144220068424048 Eth | 0.00015811 |
Execution Trace
ETH 0.0000250775
Multiplexer.sendEth( _to=[0x6B87700a8bF94A7eE272674A8964CA48E0521f00], _value=[440791769710382956] ) => ( _success=True )
- ETH 0.440791769710382956
0x6b87700a8bf94a7ee272674a8964ca48e0521f00.CALL( )
sendEth[Multiplexer (ln:30)]
minFee[Multiplexer (ln:33)]transfer[Multiplexer (ln:35)]
pragma solidity ^0.4.15;
contract Ownable {
address public owner;
function Ownable() public {
owner = msg.sender;
}
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
}
contract Feeable is Ownable {
uint8 public feePercent;
function Feeable() public {
feePercent = 50;
}
function setFeePercent(uint8 _feePercent) public onlyOwner {
feePercent = _feePercent;
}
function minFee() public view returns(uint256) {
return tx.gasprice * msg.gas * feePercent / 100;
}
}
contract ERC20 {
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
function transferFrom( address from, address to, uint value) returns (bool ok);
}
contract Multiplexer is Feeable {
function sendEth(address[] _to, uint256[] _value) payable returns (bool _success) {
assert(_to.length == _value.length);
assert(_to.length <= 255);
require(msg.value >= minFee());
for (uint8 i = 0; i < _to.length; i++) {
_to[i].transfer(_value[i]);
}
return true;
}
function sendErc20(address _tokenAddress, address[] _to, uint256[] _value) payable returns (bool _success) {
assert(_to.length == _value.length);
assert(_to.length <= 255);
require(msg.value >= minFee());
ERC20 token = ERC20(_tokenAddress);
for (uint8 i = 0; i < _to.length; i++) {
assert(token.transferFrom(msg.sender, _to[i], _value[i]) == true);
}
return true;
}
function claim(address _token) public onlyOwner {
if (_token == 0x0) {
owner.transfer(this.balance);
return;
}
ERC20 erc20token = ERC20(_token);
uint256 balance = erc20token.balanceOf(this);
erc20token.transfer(owner, balance);
}
}