Contract 0x8D29bE29923b68abfDD21e541b9374737B49cdAD 7

 
 
Txn Hash
Method
Block
From
To
Value
0x17f5471a4d14855ac18af40b19a92709b5af03b3501e61e3bedd231b06a6d8c2Transfer149468142022-06-11 22:40:29180 days 7 hrs agoENS Name mannyog.eth IN  Safe: Multi Send 1.1.10.00000645 Ether0.00076594 36.47371865
0xba84f9b3f9a0e30a60fd6b0feef655aa9e76aae89461d8f2e6cdaadc9b002dd6Transfer149446222022-06-11 13:51:56180 days 16 hrs agoENS Name mannyog.eth IN  Safe: Multi Send 1.1.10.00063894 Ether0.00049235 23.44526196
0x7a1a0bd9fb8f8b6be4f579ce07cb7229678662f77b8efbd8917e72152a88a3390x6080604090845122019-12-10 18:21:061094 days 11 hrs agoSafe: Deployer 3 IN  Create: MultiSend0 Ether0.0020761810
[ Download CSV Export 

OVERVIEW

Library for transaction batching used in Safe version 1.1.1

View more zero value Internal Transactions in Advanced View mode
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
MultiSend

Compiler Version
v0.5.14+commit.1f1aaa4

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license, Audited
/**
 *Submitted for verification at Etherscan.io on 2019-12-26
*/

pragma solidity >=0.5.0 <0.7.0;


/// @title Multi Send - Allows to batch multiple transactions into one.
/// @author Nick Dodson - <[email protected]>
/// @author Gonçalo Sá - <[email protected]>
/// @author Stefan George - <[email protected]>
/// @author Richard Meissner - <[email protected]>
contract MultiSend {

    bytes32 constant private GUARD_VALUE = keccak256("multisend.guard.bytes32");

    bytes32 guard;

    constructor() public {
        guard = GUARD_VALUE;
    }

    /// @dev Sends multiple transactions and reverts all if one fails.
    /// @param transactions Encoded transactions. Each transaction is encoded as a packed bytes of
    ///                     operation as a uint8 with 0 for a call or 1 for a delegatecall (=> 1 byte),
    ///                     to as a address (=> 20 bytes),
    ///                     value as a uint256 (=> 32 bytes),
    ///                     data length as a uint256 (=> 32 bytes),
    ///                     data as bytes.
    ///                     see abi.encodePacked for more information on packed encoding
    function multiSend(bytes memory transactions)
        public
    {
        require(guard != GUARD_VALUE, "MultiSend should only be called via delegatecall");
        // solium-disable-next-line security/no-inline-assembly
        assembly {
            let length := mload(transactions)
            let i := 0x20
            for { } lt(i, length) { } {
                // First byte of the data is the operation.
                // We shift by 248 bits (256 - 8 [operation byte]) it right since mload will always load 32 bytes (a word).
                // This will also zero out unused data.
                let operation := shr(0xf8, mload(add(transactions, i)))
                // We offset the load address by 1 byte (operation byte)
                // We shift it right by 96 bits (256 - 160 [20 address bytes]) to right-align the data and zero out unused data.
                let to := shr(0x60, mload(add(transactions, add(i, 0x01))))
                // We offset the load address by 21 byte (operation byte + 20 address bytes)
                let value := mload(add(transactions, add(i, 0x15)))
                // We offset the load address by 53 byte (operation byte + 20 address bytes + 32 value bytes)
                let dataLength := mload(add(transactions, add(i, 0x35)))
                // We offset the load address by 85 byte (operation byte + 20 address bytes + 32 value bytes + 32 data length bytes)
                let data := add(transactions, add(i, 0x55))
                let success := 0
                switch operation
                case 0 { success := call(gas, to, value, data, dataLength, 0, 0) }
                case 1 { success := delegatecall(gas, to, data, dataLength, 0, 0) }
                if eq(success, 0) { revert(0, 0) }
                // Next entry starts at 85 byte + data length
                i := add(i, add(0x55, dataLength))
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":false,"inputs":[{"internalType":"bytes","name":"transactions","type":"bytes"}],"name":"multiSend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405180807f6d756c746973656e642e67756172642e627974657333320000000000000000008152506017019050604051809103902060008190555061026c8061005c6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80638d80ff0a14610030575b600080fd5b6100e96004803603602081101561004657600080fd5b810190808035906020019064010000000081111561006357600080fd5b82018360208201111561007557600080fd5b8035906020019184600183028401116401000000008311171561009757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506100eb565b005b60405180807f6d756c746973656e642e67756172642e6279746573333200000000000000000081525060170190506040518091039020600054141561017b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806102086030913960400191505060405180910390fd5b805160205b81811015610202578083015160f81c6001820184015160601c6015830185015160358401860151605585018701600085600081146101c557600181146101d5576101e0565b6000808585888a5af191506101e0565b6000808585895af491505b5060008114156101ef57600080fd5b8260550187019650505050505050610180565b50505056fe4d756c746953656e642073686f756c64206f6e6c792062652063616c6c6564207669612064656c656761746563616c6ca265627a7a7231582070e31d7e2b8deef68f8407778b9a272b991540a320ad488b6de31c17790f348a64736f6c634300050e0032

Deployed ByteCode Sourcemap

320:2744:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;320:2744:0;;;;;;;;;;;;;;;;;;;1124:1937;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1124:1937:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1124:1937:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1124:1937:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1124:1937:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1124:1937:0;;;;;;;;;;;;;;;:::i;:::-;;;387:36;;;;;;;;;;;;;;;;;;;1210:5;;:20;;1202:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1403:12;1397:19;1439:4;1457:1586;1471:6;1468:1;1465:13;1457:1586;;;1796:1;1782:12;1778:20;1772:27;1766:4;1762:38;2073:4;2070:1;2066:12;2052;2048:31;2042:38;2036:4;2032:49;2237:4;2234:1;2230:12;2216;2212:31;2206:38;2422:4;2419:1;2415:12;2401;2397:31;2391:38;2618:4;2615:1;2611:12;2597;2593:31;2657:1;2683:9;2715:1;2710:66;;;;2799:1;2794:67;;;;2676:185;;2710:66;2772:1;2769;2757:10;2751:4;2744:5;2740:2;2735:3;2730:44;2719:55;;2710:66;;2794:67;2857:1;2854;2842:10;2836:4;2832:2;2827:3;2814:45;2803:56;;2676:185;;2894:1;2885:7;2882:14;2879:2;;;2909:1;2906;2899:12;2879:2;3016:10;3010:4;3006:21;3003:1;2999:29;2994:34;;1483:1560;;;;;;1457:1586;;;1368:1686;;;:::o

Swarm Source

bzzr://70e31d7e2b8deef68f8407778b9a272b991540a320ad488b6de31c17790f348a
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.