Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 59 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Airdrop Tokens | 22316892 | 35 hrs ago | IN | 0.0051 ETH | 0.00197442 | ||||
Airdrop Tokens | 22297790 | 4 days ago | IN | 0.0001 ETH | 0.0002551 | ||||
Airdrop Tokens | 22297676 | 4 days ago | IN | 0.0001 ETH | 0.00032283 | ||||
Airdrop Tokens | 22293979 | 4 days ago | IN | 0.0001 ETH | 0.00026083 | ||||
Airdrop Tokens | 22293329 | 4 days ago | IN | 0.0001 ETH | 0.00025746 | ||||
Airdrop Tokens | 22286421 | 5 days ago | IN | 0.0001 ETH | 0.00025425 | ||||
Airdrop Tokens | 22283432 | 6 days ago | IN | 0.0001 ETH | 0.00030589 | ||||
Airdrop Tokens | 22265747 | 8 days ago | IN | 0.0201 ETH | 0.0030746 | ||||
Airdrop Tokens | 22247404 | 11 days ago | IN | 0.0001 ETH | 0.00153232 | ||||
Airdrop Tokens | 22246200 | 11 days ago | IN | 0.0001 ETH | 0.00081423 | ||||
Airdrop Tokens | 22245869 | 11 days ago | IN | 0.0001 ETH | 0.00042209 | ||||
Airdrop Tokens | 22245200 | 11 days ago | IN | 0.0001 ETH | 0.00077137 | ||||
Airdrop Tokens | 22244761 | 11 days ago | IN | 0.0001 ETH | 0.00020204 | ||||
Airdrop Tokens | 22232461 | 13 days ago | IN | 0.0001 ETH | 0.00027093 | ||||
Airdrop Tokens | 22230270 | 13 days ago | IN | 0.0001 ETH | 0.00030229 | ||||
Airdrop Tokens | 22230184 | 13 days ago | IN | 0.0001 ETH | 0.00035537 | ||||
Airdrop Tokens | 22196774 | 18 days ago | IN | 0.0001 ETH | 0.00051389 | ||||
Airdrop Tokens | 22151377 | 24 days ago | IN | 0.0001 ETH | 0.00027249 | ||||
Airdrop Tokens | 22139164 | 26 days ago | IN | 0.02 ETH | 0.01349828 | ||||
Airdrop Tokens | 22139101 | 26 days ago | IN | 0.0199 ETH | 0.01557385 | ||||
Airdrop Tokens | 22138989 | 26 days ago | IN | 0.005 ETH | 0.00377877 | ||||
Airdrop Tokens | 22138916 | 26 days ago | IN | 0.0082 ETH | 0.00458267 | ||||
Airdrop Tokens | 22088666 | 33 days ago | IN | 0.0001 ETH | 0.00054424 | ||||
Airdrop Tokens | 22088582 | 33 days ago | IN | 0.0082 ETH | 0.00180705 | ||||
Airdrop Tokens | 22076629 | 35 days ago | IN | 0.0001 ETH | 0.0002906 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Pay Service | 22316892 | 35 hrs ago | 0.0051 ETH | ||||
Pay Service | 22297790 | 4 days ago | 0.0001 ETH | ||||
Pay Service | 22297676 | 4 days ago | 0.0001 ETH | ||||
Pay Service | 22293979 | 4 days ago | 0.0001 ETH | ||||
Pay Service | 22293329 | 4 days ago | 0.0001 ETH | ||||
Pay Service | 22286421 | 5 days ago | 0.0001 ETH | ||||
Pay Service | 22283432 | 6 days ago | 0.0001 ETH | ||||
Pay Service | 22265747 | 8 days ago | 0.0201 ETH | ||||
Pay Service | 22247404 | 11 days ago | 0.0001 ETH | ||||
Pay Service | 22246200 | 11 days ago | 0.0001 ETH | ||||
Pay Service | 22245869 | 11 days ago | 0.0001 ETH | ||||
Pay Service | 22245200 | 11 days ago | 0.0001 ETH | ||||
Pay Service | 22244761 | 11 days ago | 0.0001 ETH | ||||
Pay Service | 22232461 | 13 days ago | 0.0001 ETH | ||||
Pay Service | 22230270 | 13 days ago | 0.0001 ETH | ||||
Pay Service | 22230184 | 13 days ago | 0.0001 ETH | ||||
Pay Service | 22196774 | 18 days ago | 0.0001 ETH | ||||
Pay Service | 22151377 | 24 days ago | 0.0001 ETH | ||||
Pay Service | 22139164 | 26 days ago | 0.02 ETH | ||||
Pay Service | 22139101 | 26 days ago | 0.0199 ETH | ||||
Pay Service | 22138989 | 26 days ago | 0.005 ETH | ||||
Pay Service | 22138916 | 26 days ago | 0.0082 ETH | ||||
Pay Service | 22088666 | 33 days ago | 0.0001 ETH | ||||
Pay Service | 22088582 | 33 days ago | 0.0082 ETH | ||||
Pay Service | 22076629 | 35 days ago | 0.0001 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ERC20TokenMultiSender
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 1000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.24; /* &&&&&& &&&&& &% &&&&&&&&&&&&&&& && &&&&&&&&&&% &&&&&&& &&&&& #&&&&&&&&&&&&& &&&&& &&&&&&& && &&&& &% &&&&&&& &&. &&&&&&&&&& & %&&&&&&& &&&& &&&& *&&&&&&&&& &&&&&&&&& &&&& .&&& &&&&&&&& &&&&&&&& &&& .&&&&&&& &&&&&&& &&&% &&&&&& &&&&&& &&&&& /&&&&. &&&& %&&& #&&&, &&&&( &&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&& &&&% &&&&&&&&&&&&&&&&&&&&&&&&& &&& &&& &&&* &&&&&&&&&&&&&&&&&&&&& &&* &&& .&&&&&& &&&&&&&&&&&&&&&&&&&& &&&&& && &&& #&&&&&& &&&&&&&&&&&&&&&&&&&&& &&&&& && &&& &&&& &&&&&&&&&&&&&&&&&&&&&& #&& &&& &&& &&&&&&&&&&&&&&&&&&&&&&&&, *&&& (&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&% &&&&&&&&&&&&&&&&& &&&&& &&&&&&&&&&&&&&&&&& %&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&# &&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&& */ /** * Token Multi Sender contract * This contract is used to send multiple tokens ERC20 to multiple addresses * */ /// @title TokenMultiSender /// @author Smithii /// @notice This contract is used to send multiple tokens ERC20 to multiple addresses import {Payable} from "./utils/Payable.sol"; contract ERC20TokenMultiSender is Payable { constructor( address _payments, string memory _serviceId ) Payable(_payments, _serviceId) {} /// AirDrop tokens and pay the service fee /// @param _projectId the project id /// @param _token the token address /// @param _addresses the addresses to send the tokens /// @param _amounts the amounts to send to each address /// @param _totalAmount the total amount to send function airdropTokens( bytes32 _projectId, address _token, address[] calldata _addresses, uint256[] calldata _amounts, uint256 _totalAmount ) external payable { /// @notice pay the service fee payService(_projectId, _token, _addresses.length); /// @notice airdrop the tokens _airdropTokens(_token, _addresses, _amounts, _totalAmount); } /// Ultra light weight gas airdrop function by GasliteDrop 0x09350F89e2D7B6e96bA730783c2d76137B045FEF /** /// @author Harrison (@PopPunkOnChain) /// @author Gaslite (@GasliteGG) /// @author Pop Punk LLC (@PopPunkLLC) */ /// @param _token the token address /// @param _addresses the addresses to send the tokens /// @param _amounts the amounts to send to each address /// @param _totalAmount the total amount to send function _airdropTokens( address _token, address[] calldata _addresses, uint256[] calldata _amounts, uint256 _totalAmount ) internal { assembly { // Check that the number of addresses matches the number of amounts if iszero(eq(_amounts.length, _addresses.length)) { revert(0, 0) } // transferFrom(address from, address to, uint256 amount) mstore(0x00, hex"23b872dd") // from address mstore(0x04, caller()) // to address (this contract) mstore(0x24, address()) // total amount mstore(0x44, _totalAmount) // transfer total amount to this contract if iszero(call(gas(), _token, 0, 0x00, 0x64, 0, 0)) { revert(0, 0) } // transfer(address to, uint256 value) mstore(0x00, hex"a9059cbb") // end of array let end := add(_addresses.offset, shl(5, _addresses.length)) // diff = _addresses.offset - _amounts.offset let diff := sub(_addresses.offset, _amounts.offset) // Loop through the addresses for { let addressOffset := _addresses.offset } 1 { } { // to address mstore(0x04, calldataload(addressOffset)) // amount mstore(0x24, calldataload(sub(addressOffset, diff))) // transfer the tokens if iszero(call(gas(), _token, 0, 0x00, 0x64, 0, 0)) { revert(0, 0) } // increment the address offset addressOffset := add(addressOffset, 0x20) // if addressOffset >= end, break if iszero(lt(addressOffset, end)) { break } } } } }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.24; /* * IPayments interface */ /// @title Payments /// @author Smithii interface IPayments { struct Service { bytes32 serviceId; uint256 pricePerItem; bool active; } struct Invoice { address user; Service service; uint256 qty; uint256 total; uint256 timestamp; } /// Events event ServiceAdded(bytes32 serviceId, string name, uint256 price); event ServiceSet(bytes32 serviceId, bool active); event ServicePaid( bytes32 projectId, address contractAddress, bytes32 serviceId, address user, uint256 amount, uint256 timestamp ); event ServiceWithdraw( bytes32 projectId, address contractAddress, bytes32 serviceId, uint256 amount ); /// Errors error ServiceNotActive(bytes32 serviceId); error InvalidTotalAmount(); error ServiceAlreadyPaid( bytes32 projectId, address contractAddress, bytes32 serviceId ); /// Add a service to the payment program /// @param _serviceId the service id /// @param _pricePerItem the price per item function addService(bytes32 _serviceId, uint256 _pricePerItem) external; /// Set the service active status /// @param _serviceId the service id /// @param _active the active status function setService(bytes32 _serviceId, bool _active) external; /// function payService by projectId and contract address /// @param _projectId bytes32 projectId /// @param _contract the contract address /// @param _serviceId the service id /// @param _qty the qty of items to pay function payService( bytes32 _projectId, address _contract, bytes32 _serviceId, uint256 _qty ) external payable; /// Withdraw per invoice /// @param _projectId the project id /// @param _contract the contract address /// @param _serviceId the service id /// @param _to the address to withdraw the balance function withdraw( bytes32 _projectId, address _contract, bytes32 _serviceId, address payable _to ) external; /// Withdraw the contract balance /// @param _to the address to withdraw the balance function withdrawAll(address payable _to) external; }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.24; /// @title Payable /// @author Smithii import {IPayments} from "../interfaces/marketplace/IPayments.sol"; abstract contract Payable { address public payments = address(0); bytes32 public serviceId; constructor(address _payments, string memory _serviceId) { payments = _payments; serviceId = keccak256(abi.encodePacked(_serviceId)); } /// /// @param _projectId the project id /// @param _token the token address /// @param qty the qty of items to pay function payService( bytes32 _projectId, address _token, uint256 qty ) public payable { IPayments(payments).payService{value: msg.value}( _projectId, _token, serviceId, qty ); } receive() external payable {} }
{ "optimizer": { "enabled": true, "runs": 1000 }, "evmVersion": "paris", "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":"_payments","type":"address"},{"internalType":"string","name":"_serviceId","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"_projectId","type":"bytes32"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"uint256","name":"_totalAmount","type":"uint256"}],"name":"airdropTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_projectId","type":"bytes32"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"payService","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"payments","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"serviceId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600080546001600160a01b031916905534801561002057600080fd5b506040516105a63803806105a683398101604081905261003f916100ce565b600080546001600160a01b0319166001600160a01b0384161790556040518290829061006f90829060200161019c565b60405160208183030381529060405280519060200120600181905550505050506101b8565b634e487b7160e01b600052604160045260246000fd5b60005b838110156100c55781810151838201526020016100ad565b50506000910152565b600080604083850312156100e157600080fd5b82516001600160a01b03811681146100f857600080fd5b60208401519092506001600160401b038082111561011557600080fd5b818501915085601f83011261012957600080fd5b81518181111561013b5761013b610094565b604051601f8201601f19908116603f0116810190838211818310171561016357610163610094565b8160405282815288602084870101111561017c57600080fd5b61018d8360208301602088016100aa565b80955050505050509250929050565b600082516101ae8184602087016100aa565b9190910192915050565b6103df806101c76000396000f3fe6080604052600436106100435760003560e01c8063a6d23e101461004f578063da20ec6a146100a6578063edbaf8e9146100ca578063f4b61222146100df57600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b5060005461007c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100b257600080fd5b506100bc60015481565b60405190815260200161009d565b6100dd6100d83660046102e1565b6100f2565b005b6100dd6100ed366004610374565b610114565b6100fd878786610114565b61010b8686868686866101b8565b50505050505050565b6000546001546040517f8690b8c90000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff8581166024830152604482019290925260648101849052911690638690b8c99034906084016000604051808303818588803b15801561019a57600080fd5b505af11580156101ae573d6000803e3d6000fd5b5050505050505050565b8382146101c457600080fd5b7f23b872dd0000000000000000000000000000000000000000000000000000000060005233600452306024528060445260008060646000808a5af161020857600080fd5b7fa9059cbb000000000000000000000000000000000000000000000000000000006000528360051b8501838603865b80356004528181033560245260008060646000808d5af161025757600080fd5b60200182811061023757505050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461029057600080fd5b919050565b60008083601f8401126102a757600080fd5b50813567ffffffffffffffff8111156102bf57600080fd5b6020830191508360208260051b85010111156102da57600080fd5b9250929050565b600080600080600080600060a0888a0312156102fc57600080fd5b8735965061030c6020890161026c565b9550604088013567ffffffffffffffff8082111561032957600080fd5b6103358b838c01610295565b909750955060608a013591508082111561034e57600080fd5b5061035b8a828b01610295565b989b979a50959894979596608090950135949350505050565b60008060006060848603121561038957600080fd5b833592506103996020850161026c565b915060408401359050925092509256fea264697066735822122061d7ded2682b78b4c945b5eecd5146e4726ee0a7964e955cb911b760ffc9dce164736f6c63430008180033000000000000000000000000d5765b5d565227a27dd7c96b32b2600958c9ce9c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000154552433230546f6b656e4d756c746953656e6465720000000000000000000000
Deployed Bytecode
0x6080604052600436106100435760003560e01c8063a6d23e101461004f578063da20ec6a146100a6578063edbaf8e9146100ca578063f4b61222146100df57600080fd5b3661004a57005b600080fd5b34801561005b57600080fd5b5060005461007c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100b257600080fd5b506100bc60015481565b60405190815260200161009d565b6100dd6100d83660046102e1565b6100f2565b005b6100dd6100ed366004610374565b610114565b6100fd878786610114565b61010b8686868686866101b8565b50505050505050565b6000546001546040517f8690b8c90000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff8581166024830152604482019290925260648101849052911690638690b8c99034906084016000604051808303818588803b15801561019a57600080fd5b505af11580156101ae573d6000803e3d6000fd5b5050505050505050565b8382146101c457600080fd5b7f23b872dd0000000000000000000000000000000000000000000000000000000060005233600452306024528060445260008060646000808a5af161020857600080fd5b7fa9059cbb000000000000000000000000000000000000000000000000000000006000528360051b8501838603865b80356004528181033560245260008060646000808d5af161025757600080fd5b60200182811061023757505050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461029057600080fd5b919050565b60008083601f8401126102a757600080fd5b50813567ffffffffffffffff8111156102bf57600080fd5b6020830191508360208260051b85010111156102da57600080fd5b9250929050565b600080600080600080600060a0888a0312156102fc57600080fd5b8735965061030c6020890161026c565b9550604088013567ffffffffffffffff8082111561032957600080fd5b6103358b838c01610295565b909750955060608a013591508082111561034e57600080fd5b5061035b8a828b01610295565b989b979a50959894979596608090950135949350505050565b60008060006060848603121561038957600080fd5b833592506103996020850161026c565b915060408401359050925092509256fea264697066735822122061d7ded2682b78b4c945b5eecd5146e4726ee0a7964e955cb911b760ffc9dce164736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d5765b5d565227a27dd7c96b32b2600958c9ce9c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000154552433230546f6b656e4d756c746953656e6465720000000000000000000000
-----Decoded View---------------
Arg [0] : _payments (address): 0xD5765b5d565227A27dD7C96B32b2600958c9cE9c
Arg [1] : _serviceId (string): ERC20TokenMultiSender
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000d5765b5d565227a27dd7c96b32b2600958c9ce9c
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000015
Arg [3] : 4552433230546f6b656e4d756c746953656e6465720000000000000000000000
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.