Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 142 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Disperse Token | 22316683 | 46 hrs ago | IN | 0 ETH | 0.00010342 | ||||
Disperse Token | 22187097 | 20 days ago | IN | 0 ETH | 0.00038456 | ||||
Disperse Token | 22071107 | 36 days ago | IN | 0 ETH | 0.00005401 | ||||
Disperse Token | 22071104 | 36 days ago | IN | 0 ETH | 0.00005956 | ||||
Disperse Token | 21835748 | 69 days ago | IN | 0 ETH | 0.00010422 | ||||
Disperse Token | 21728810 | 84 days ago | IN | 0 ETH | 0.00698415 | ||||
Disperse Token | 21728795 | 84 days ago | IN | 0 ETH | 0.0145979 | ||||
Disperse Token | 21728770 | 84 days ago | IN | 0 ETH | 0.01399823 | ||||
Disperse Token | 21728516 | 84 days ago | IN | 0 ETH | 0.00021843 | ||||
Disperse Token | 21728482 | 84 days ago | IN | 0 ETH | 0.00029991 | ||||
Disperse Token | 21728458 | 84 days ago | IN | 0 ETH | 0.00026559 | ||||
Disperse Token | 21728440 | 84 days ago | IN | 0 ETH | 0.00021193 | ||||
Disperse Token | 21728431 | 84 days ago | IN | 0 ETH | 0.00022583 | ||||
Disperse Token | 21728416 | 84 days ago | IN | 0 ETH | 0.00037662 | ||||
Disperse Token | 21640907 | 96 days ago | IN | 0 ETH | 0.0001355 | ||||
Disperse Token | 21621866 | 98 days ago | IN | 0 ETH | 0.00138854 | ||||
Disperse Ether | 21577231 | 105 days ago | IN | 2.6 ETH | 0.00031301 | ||||
Disperse Token | 21413846 | 128 days ago | IN | 0 ETH | 0.00283343 | ||||
Disperse Token | 21189592 | 159 days ago | IN | 0 ETH | 0.00341242 | ||||
Disperse Ether | 21113260 | 169 days ago | IN | 2.1 ETH | 0.00028421 | ||||
Disperse Token | 21082953 | 174 days ago | IN | 0 ETH | 0.02945793 | ||||
Disperse Token | 21082939 | 174 days ago | IN | 0 ETH | 0.07036296 | ||||
Disperse Token | 21082921 | 174 days ago | IN | 0 ETH | 0.0599089 | ||||
Disperse Token | 21062472 | 177 days ago | IN | 0 ETH | 0.00112089 | ||||
Disperse Token | 21062468 | 177 days ago | IN | 0 ETH | 0.00116334 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 21577231 | 105 days ago | 1.3 ETH | ||||
Transfer | 21577231 | 105 days ago | 1.3 ETH | ||||
Transfer | 21113260 | 169 days ago | 1 ETH | ||||
Transfer | 21113260 | 169 days ago | 1 ETH | ||||
Transfer | 21113260 | 169 days ago | 0.1 ETH | ||||
Transfer | 20669305 | 231 days ago | 0.2 ETH | ||||
Transfer | 20669305 | 231 days ago | 0.22 ETH | ||||
Transfer | 20669305 | 231 days ago | 0.15 ETH | ||||
Transfer | 20669305 | 231 days ago | 0.1 ETH | ||||
Transfer | 20669305 | 231 days ago | 0.1 ETH | ||||
Transfer | 20589927 | 243 days ago | 0.47 ETH | ||||
Transfer | 20589927 | 243 days ago | 0.48 ETH | ||||
Transfer | 20561943 | 246 days ago | 2 ETH | ||||
Transfer | 20561943 | 246 days ago | 2 ETH | ||||
Transfer | 18236628 | 572 days ago | 0.0003 ETH | ||||
Transfer | 18142271 | 585 days ago | 0.0041 ETH | ||||
Transfer | 18142241 | 585 days ago | 0.0051 ETH | ||||
Transfer | 18084929 | 593 days ago | 0.005 ETH | ||||
Transfer | 18084929 | 593 days ago | 0.005 ETH | ||||
Transfer | 18084929 | 593 days ago | 0.005 ETH | ||||
Transfer | 18084929 | 593 days ago | 0.005 ETH | ||||
Transfer | 18084929 | 593 days ago | 0.005 ETH | ||||
Transfer | 18084929 | 593 days ago | 0.005 ETH | ||||
Transfer | 18084929 | 593 days ago | 0.005 ETH | ||||
Transfer | 18084929 | 593 days ago | 0.005 ETH |
Loading...
Loading
Contract Name:
DisperseV2
Compiler Version
v0.8.2+commit.661d1103
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity 0.8.2; import { Address } from "Address.sol"; interface IERC20 { function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); } library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract DisperseV2 { using SafeERC20 for IERC20; function disperseEther(address[] memory recipients, uint256[] memory values) external payable { for (uint256 i = 0; i < recipients.length; i++) payable(recipients[i]).transfer(values[i]); uint256 balance = address(this).balance; if (balance > 0) payable(msg.sender).transfer(balance); } function disperseToken(IERC20 token, address[] memory recipients, uint256[] memory values) external { uint256 total = 0; for (uint256 i = 0; i < recipients.length; i++) total += values[i]; token.safeTransferFrom(msg.sender, address(this), total); for (uint256 i = 0; i < recipients.length; i++) token.safeTransfer(recipients[i], values[i]); } function disperseTokenSimple(IERC20 token, address[] memory recipients, uint256[] memory values) external { for (uint256 i = 0; i < recipients.length; i++) token.safeTransferFrom(msg.sender, recipients[i], values[i]); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "libraries": { "DisperseV2.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"disperseEther","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"disperseToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"disperseTokenSimple","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610927806100206000396000f3fe6080604052600436106100345760003560e01c806351ba162c14610039578063c73a2d601461005b578063e63d38ed1461007b575b600080fd5b34801561004557600080fd5b50610059610054366004610737565b61008e565b005b34801561006757600080fd5b50610059610076366004610737565b610120565b6100596100893660046106b6565b61021b565b60005b825181101561011a57610108338483815181106100be57634e487b7160e01b600052603260045260246000fd5b60200260200101518484815181106100e657634e487b7160e01b600052603260045260246000fd5b6020026020010151876001600160a01b03166102fb909392919063ffffffff16565b8061011281610892565b915050610091565b50505050565b6000805b83518110156101745782818151811061014d57634e487b7160e01b600052603260045260246000fd5b602002602001015182610160919061084e565b91508061016c81610892565b915050610124565b5061018a6001600160a01b0385163330846102fb565b60005b8351811015610214576102028482815181106101b957634e487b7160e01b600052603260045260246000fd5b60200260200101518483815181106101e157634e487b7160e01b600052603260045260246000fd5b6020026020010151876001600160a01b03166103669092919063ffffffff16565b8061020c81610892565b91505061018d565b5050505050565b60005b82518110156102c15782818151811061024757634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166108fc83838151811061027b57634e487b7160e01b600052603260045260246000fd5b60200260200101519081150290604051600060405180830381858888f193505050501580156102ae573d6000803e3d6000fd5b50806102b981610892565b91505061021e565b504780156102f657604051339082156108fc029083906000818181858888f1935050505015801561011a573d6000803e3d6000fd5b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261011a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610396565b6040516001600160a01b0383166024820152604481018290526102f690849063a9059cbb60e01b9060640161032f565b60006103eb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661046d9092919063ffffffff16565b8051909150156102f657808060200190518101906104099190610717565b6102f65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084015b60405180910390fd5b606061047c8484600085610486565b90505b9392505050565b6060824710156104e75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610464565b843b6105355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610464565b600080866001600160a01b0316858760405161055191906107aa565b60006040518083038185875af1925050503d806000811461058e576040519150601f19603f3d011682016040523d82523d6000602084013e610593565b606091505b50915091506105a38282866105ae565b979650505050505050565b606083156105bd57508161047f565b8251156105cd5782518084602001fd5b8160405162461bcd60e51b815260040161046491906107c6565b600082601f8301126105f7578081fd5b8135602061060c6106078361082a565b6107f9565b8281528181019085830183850287018401881015610628578586fd5b855b8581101561064f57813561063d816108d9565b8452928401929084019060010161062a565b5090979650505050505050565b600082601f83011261066c578081fd5b8135602061067c6106078361082a565b8281528181019085830183850287018401881015610698578586fd5b855b8581101561064f5781358452928401929084019060010161069a565b600080604083850312156106c8578182fd5b823567ffffffffffffffff808211156106df578384fd5b6106eb868387016105e7565b93506020850135915080821115610700578283fd5b5061070d8582860161065c565b9150509250929050565b600060208284031215610728578081fd5b8151801515811461047f578182fd5b60008060006060848603121561074b578081fd5b8335610756816108d9565b9250602084013567ffffffffffffffff80821115610772578283fd5b61077e878388016105e7565b93506040860135915080821115610793578283fd5b506107a08682870161065c565b9150509250925092565b600082516107bc818460208701610866565b9190910192915050565b60006020825282518060208401526107e5816040850160208701610866565b601f01601f19169190910160400192915050565b604051601f8201601f1916810167ffffffffffffffff81118282101715610822576108226108c3565b604052919050565b600067ffffffffffffffff821115610844576108446108c3565b5060209081020190565b60008219821115610861576108616108ad565b500190565b60005b83811015610881578181015183820152602001610869565b8381111561011a5750506000910152565b60006000198214156108a6576108a66108ad565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146108ee57600080fd5b5056fea26469706673582212203c9e2a2143a1a7fd264f846d7661e5fcb8f252400ee0da0e3ff967456f73a82d64736f6c63430008020033
Deployed Bytecode
0x6080604052600436106100345760003560e01c806351ba162c14610039578063c73a2d601461005b578063e63d38ed1461007b575b600080fd5b34801561004557600080fd5b50610059610054366004610737565b61008e565b005b34801561006757600080fd5b50610059610076366004610737565b610120565b6100596100893660046106b6565b61021b565b60005b825181101561011a57610108338483815181106100be57634e487b7160e01b600052603260045260246000fd5b60200260200101518484815181106100e657634e487b7160e01b600052603260045260246000fd5b6020026020010151876001600160a01b03166102fb909392919063ffffffff16565b8061011281610892565b915050610091565b50505050565b6000805b83518110156101745782818151811061014d57634e487b7160e01b600052603260045260246000fd5b602002602001015182610160919061084e565b91508061016c81610892565b915050610124565b5061018a6001600160a01b0385163330846102fb565b60005b8351811015610214576102028482815181106101b957634e487b7160e01b600052603260045260246000fd5b60200260200101518483815181106101e157634e487b7160e01b600052603260045260246000fd5b6020026020010151876001600160a01b03166103669092919063ffffffff16565b8061020c81610892565b91505061018d565b5050505050565b60005b82518110156102c15782818151811061024757634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166108fc83838151811061027b57634e487b7160e01b600052603260045260246000fd5b60200260200101519081150290604051600060405180830381858888f193505050501580156102ae573d6000803e3d6000fd5b50806102b981610892565b91505061021e565b504780156102f657604051339082156108fc029083906000818181858888f1935050505015801561011a573d6000803e3d6000fd5b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261011a9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610396565b6040516001600160a01b0383166024820152604481018290526102f690849063a9059cbb60e01b9060640161032f565b60006103eb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661046d9092919063ffffffff16565b8051909150156102f657808060200190518101906104099190610717565b6102f65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084015b60405180910390fd5b606061047c8484600085610486565b90505b9392505050565b6060824710156104e75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610464565b843b6105355760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610464565b600080866001600160a01b0316858760405161055191906107aa565b60006040518083038185875af1925050503d806000811461058e576040519150601f19603f3d011682016040523d82523d6000602084013e610593565b606091505b50915091506105a38282866105ae565b979650505050505050565b606083156105bd57508161047f565b8251156105cd5782518084602001fd5b8160405162461bcd60e51b815260040161046491906107c6565b600082601f8301126105f7578081fd5b8135602061060c6106078361082a565b6107f9565b8281528181019085830183850287018401881015610628578586fd5b855b8581101561064f57813561063d816108d9565b8452928401929084019060010161062a565b5090979650505050505050565b600082601f83011261066c578081fd5b8135602061067c6106078361082a565b8281528181019085830183850287018401881015610698578586fd5b855b8581101561064f5781358452928401929084019060010161069a565b600080604083850312156106c8578182fd5b823567ffffffffffffffff808211156106df578384fd5b6106eb868387016105e7565b93506020850135915080821115610700578283fd5b5061070d8582860161065c565b9150509250929050565b600060208284031215610728578081fd5b8151801515811461047f578182fd5b60008060006060848603121561074b578081fd5b8335610756816108d9565b9250602084013567ffffffffffffffff80821115610772578283fd5b61077e878388016105e7565b93506040860135915080821115610793578283fd5b506107a08682870161065c565b9150509250925092565b600082516107bc818460208701610866565b9190910192915050565b60006020825282518060208401526107e5816040850160208701610866565b601f01601f19169190910160400192915050565b604051601f8201601f1916810167ffffffffffffffff81118282101715610822576108226108c3565b604052919050565b600067ffffffffffffffff821115610844576108446108c3565b5060209081020190565b60008219821115610861576108616108ad565b500190565b60005b83811015610881578181015183820152602001610869565b8381111561011a5750506000910152565b60006000198214156108a6576108a66108ad565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146108ee57600080fd5b5056fea26469706673582212203c9e2a2143a1a7fd264f846d7661e5fcb8f252400ee0da0e3ff967456f73a82d64736f6c63430008020033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.