Source Code
Overview
SOPH Balance
More Info
ContractCreator
Multichain Info
N/A
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Loading...
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.
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x0dFcccB9...2B7C8A912 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
MultiSend
Compiler Version
v0.7.6+commit.7338295f
ZkSolc Version
v1.3.8
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title Multi Send - Allows to batch multiple transactions into one./// @author Nick Dodson - <nick.dodson@consensys.net>/// @author Gonçalo Sá - <goncalo.sa@consensys.net>/// @author Stefan George - <stefan@gnosis.io>/// @author Richard Meissner - <richard@gnosis.io>contract MultiSend {address private immutable multisendSingleton;constructor() {multisendSingleton = address(this);}/// @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/// @notice This method is payable as delegatecalls keep the msg.value from the previous call/// If the calling method (e.g. execTransaction) received ETH this would revert otherwisefunction multiSend(bytes memory transactions) public payable {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title Create Call - Allows to use the different create opcodes to deploy a contract/// @author Richard Meissner - <richard@gnosis.io>contract CreateCall {event ContractCreation(address newContract);function performCreate2(uint256 value,bytes memory deploymentData,bytes32 salt) public returns (address newContract) {// solhint-disable-next-line no-inline-assemblyassembly {newContract := create2(value, add(0x20, deploymentData), mload(deploymentData), salt)}require(newContract != address(0), "Could not deploy contract");emit ContractCreation(newContract);}function performCreate(uint256 value, bytes memory deploymentData) public returns (address newContract) {// solhint-disable-next-line no-inline-assemblyassembly {newContract := create(value, add(deploymentData, 0x20), mload(deploymentData))}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title IProxy - Helper interface to access masterCopy of the Proxy on-chain/// @author Richard Meissner - <richard@gnosis.io>interface IProxy {function masterCopy() external view returns (address);}/// @title GnosisSafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract./// @author Stefan George - <stefan@gnosis.io>/// @author Richard Meissner - <richard@gnosis.io>contract GnosisSafeProxy {// singleton always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.// To reduce deployment costs this variable is internal and needs to be retrieved via `getStorageAt`address internal singleton;/// @dev Constructor function sets address of singleton contract./// @param _singleton Singleton address.constructor(address _singleton) {require(_singleton != address(0), "Invalid singleton address provided");singleton = _singleton;}/// @dev Fallback function forwards all transactions and returns all received return data.fallback() external payable {
123456789101112// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "./GnosisSafeProxy.sol";interface IProxyCreationCallback {function proxyCreated(GnosisSafeProxy proxy,address _singleton,bytes calldata initializer,uint256 saltNonce) external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "./GnosisSafeProxy.sol";import "./IProxyCreationCallback.sol";/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction./// @author Stefan George - <stefan@gnosis.pm>contract GnosisSafeProxyFactory {event ProxyCreation(GnosisSafeProxy proxy, address singleton);/// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction./// @param singleton Address of singleton contract./// @param data Payload for message call sent to new proxy contract.function createProxy(address singleton, bytes memory data) public returns (GnosisSafeProxy proxy) {proxy = new GnosisSafeProxy(singleton);if (data.length > 0)// solhint-disable-next-line no-inline-assemblyassembly {if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) {revert(0, 0)}}emit ProxyCreation(proxy, singleton);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title Multi Send Call Only - Allows to batch multiple transactions into one, but only calls/// @author Stefan George - <stefan@gnosis.io>/// @author Richard Meissner - <richard@gnosis.io>/// @notice The guard logic is not required here as this contract doesn't support nested delegate callscontract MultiSendCallOnly {/// @dev Sends multiple transactions and reverts all if one fails./// @param transactions Encoded transactions. Each transaction is encoded as a packed bytes of/// operation has to be uint8(0) in this version (=> 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/// @notice The code is for most part the same as the normal MultiSend (to keep compatibility),/// but reverts if a transaction tries to use a delegatecall./// @notice This method is payable as delegatecalls keep the msg.value from the previous call/// If the calling method (e.g. execTransaction) received ETH this would revert otherwisefunction multiSend(bytes memory transactions) public payable {// solhint-disable-next-line no-inline-assemblyassembly {let length := mload(transactions)let i := 0x20for {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../base/Executor.sol";/// @title Simulate Transaction Accessor - can be used with StorageAccessible to simulate Safe transactions/// @author Richard Meissner - <richard@gnosis.pm>contract SimulateTxAccessor is Executor {address private immutable accessorSingleton;constructor() {accessorSingleton = address(this);}modifier onlyDelegateCall() {require(address(this) != accessorSingleton, "SimulateTxAccessor should only be called via delegatecall");_;}function simulate(address to,uint256 value,bytes calldata data,Enum.Operation operation)external
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../common/Enum.sol";/// @title Executor - A contract that can execute transactions/// @author Richard Meissner - <richard@gnosis.pm>contract Executor {function execute(address to,uint256 value,bytes memory data,Enum.Operation operation,uint256 txGas) internal returns (bool success) {if (operation == Enum.Operation.DelegateCall) {// solhint-disable-next-line no-inline-assemblyassembly {success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)}} else {// solhint-disable-next-line no-inline-assemblyassembly {success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)}}}
12345678// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title Enum - Collection of enums/// @author Richard Meissner - <richard@gnosis.pm>contract Enum {enum Operation {Call, DelegateCall}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../common/Enum.sol";import "../common/SelfAuthorized.sol";import "./Executor.sol";/// @title Module Manager - A contract that manages modules that can execute transactions via this contract/// @author Stefan George - <stefan@gnosis.pm>/// @author Richard Meissner - <richard@gnosis.pm>contract ModuleManager is SelfAuthorized, Executor {event EnabledModule(address module);event DisabledModule(address module);event ExecutionFromModuleSuccess(address indexed module);event ExecutionFromModuleFailure(address indexed module);address internal constant SENTINEL_MODULES = address(0x1);mapping(address => address) internal modules;function setupModules(address to, bytes memory data) internal {require(modules[SENTINEL_MODULES] == address(0), "GS100");modules[SENTINEL_MODULES] = SENTINEL_MODULES;if (to != address(0))// Setup has to complete successfully or transaction fails.require(execute(to, 0, data, Enum.Operation.DelegateCall, gasleft()), "GS000");}
12345678910111213141516// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title SelfAuthorized - authorizes current contract to perform actions/// @author Richard Meissner - <richard@gnosis.pm>contract SelfAuthorized {function requireSelfCall() private view {require(msg.sender == address(this), "GS031");}modifier authorized() {// This is a function call as it minimized the bytecode sizerequireSelfCall();_;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "./base/ModuleManager.sol";import "./base/OwnerManager.sol";import "./base/FallbackManager.sol";import "./base/GuardManager.sol";import "./common/EtherPaymentFallback.sol";import "./common/Singleton.sol";import "./common/SignatureDecoder.sol";import "./common/SecuredTokenTransfer.sol";import "./common/StorageAccessible.sol";import "./interfaces/ISignatureValidator.sol";import "./external/GnosisSafeMath.sol";/// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191./// @author Stefan George - <stefan@gnosis.io>/// @author Richard Meissner - <richard@gnosis.io>contract GnosisSafe isEtherPaymentFallback,Singleton,ModuleManager,OwnerManager,SignatureDecoder,SecuredTokenTransfer,ISignatureValidatorConstants,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../common/SelfAuthorized.sol";/// @title OwnerManager - Manages a set of owners and a threshold to perform actions./// @author Stefan George - <stefan@gnosis.pm>/// @author Richard Meissner - <richard@gnosis.pm>contract OwnerManager is SelfAuthorized {event AddedOwner(address owner);event RemovedOwner(address owner);event ChangedThreshold(uint256 threshold);address internal constant SENTINEL_OWNERS = address(0x1);mapping(address => address) internal owners;uint256 internal ownerCount;uint256 internal threshold;/// @dev Setup function sets initial storage of contract./// @param _owners List of Safe owners./// @param _threshold Number of required confirmations for a Safe transaction.function setupOwners(address[] memory _owners, uint256 _threshold) internal {// Threshold can only be 0 at initialization.// Check ensures that setup function can only be called once.require(threshold == 0, "GS200");// Validate that threshold is smaller than number of added owners.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../common/SelfAuthorized.sol";/// @title Fallback Manager - A contract that manages fallback calls made to this contract/// @author Richard Meissner - <richard@gnosis.pm>contract FallbackManager is SelfAuthorized {event ChangedFallbackHandler(address handler);// keccak256("fallback_manager.handler.address")bytes32 internal constant FALLBACK_HANDLER_STORAGE_SLOT = 0x6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d5;function internalSetFallbackHandler(address handler) internal {bytes32 slot = FALLBACK_HANDLER_STORAGE_SLOT;// solhint-disable-next-line no-inline-assemblyassembly {sstore(slot, handler)}}/// @dev Allows to add a contract to handle fallback calls./// Only fallback calls without value and with data will be forwarded./// This can only be done via a Safe transaction./// @param handler contract to handle fallbacks calls.function setFallbackHandler(address handler) public authorized {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../common/Enum.sol";import "../common/SelfAuthorized.sol";interface Guard {function checkTransaction(address to,uint256 value,bytes memory data,Enum.Operation operation,uint256 safeTxGas,uint256 baseGas,uint256 gasPrice,address gasToken,address payable refundReceiver,bytes memory signatures,address msgSender) external;function checkAfterExecution(bytes32 txHash, bool success) external;}/// @title Fallback Manager - A contract that manages fallback calls made to this contract/// @author Richard Meissner - <richard@gnosis.pm>
12345678910111213// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title EtherPaymentFallback - A contract that has a fallback to accept ether payments/// @author Richard Meissner - <richard@gnosis.pm>contract EtherPaymentFallback {event SafeReceived(address indexed sender, uint256 value);/// @dev Fallback function accepts Ether transactions.receive() external payable {emit SafeReceived(msg.sender, msg.value);}}
1234567891011// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title Singleton - Base for singleton contracts (should always be first super contract)/// This contract is tightly coupled to our proxy contract (see `proxies/GnosisSafeProxy.sol`)/// @author Richard Meissner - <richard@gnosis.io>contract Singleton {// singleton always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.// It should also always be ensured that the address is stored alone (uses a full word)address private singleton;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title SignatureDecoder - Decodes signatures that a encoded as bytes/// @author Richard Meissner - <richard@gnosis.pm>contract SignatureDecoder {/// @dev divides bytes signature into `uint8 v, bytes32 r, bytes32 s`./// @notice Make sure to peform a bounds check for @param pos, to avoid out of bounds access on @param signatures/// @param pos which signature to read. A prior bounds check of this parameter should be performed, to avoid out of bounds access/// @param signatures concatenated rsv signaturesfunction signatureSplit(bytes memory signatures, uint256 pos)internalpurereturns (uint8 v,bytes32 r,bytes32 s){// The signature format is a compact form of:// {bytes32 r}{bytes32 s}{uint8 v}// Compact means, uint8 is not padded to 32 bytes.// solhint-disable-next-line no-inline-assemblyassembly {let signaturePos := mul(0x41, pos)r := mload(add(signatures, add(signaturePos, 0x20)))
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title SecuredTokenTransfer - Secure token transfer/// @author Richard Meissner - <richard@gnosis.pm>contract SecuredTokenTransfer {/// @dev Transfers a token and returns if it was a success/// @param token Token that should be transferred/// @param receiver Receiver to whom the token should be transferred/// @param amount The amount of tokens that should be transferredfunction transferToken(address token,address receiver,uint256 amount) internal returns (bool transferred) {// 0xa9059cbb - keccack("transfer(address,uint256)")bytes memory data = abi.encodeWithSelector(0xa9059cbb, receiver, amount);// solhint-disable-next-line no-inline-assemblyassembly {// We write the return value to scratch space.// See https://docs.soliditylang.org/en/v0.7.6/internals/layout_in_memory.html#layout-in-memorylet success := call(sub(gas(), 10000), token, 0, add(data, 0x20), mload(data), 0, 0x20)switch returndatasize()case 0 {transferred := success}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title StorageAccessible - generic base contract that allows callers to access all internal storage./// @notice See https://github.com/gnosis/util-contracts/blob/bb5fe5fb5df6d8400998094fb1b32a178a47c3a1/contracts/StorageAccessible.solcontract StorageAccessible {/*** @dev Reads `length` bytes of storage in the currents contract* @param offset - the offset in the current contract's storage in words to start reading from* @param length - the number of words (32 bytes) of data to read* @return the bytes that were read.*/function getStorageAt(uint256 offset, uint256 length) public view returns (bytes memory) {bytes memory result = new bytes(length * 32);for (uint256 index = 0; index < length; index++) {// solhint-disable-next-line no-inline-assemblyassembly {let word := sload(add(offset, index))mstore(add(add(result, 0x20), mul(index, 0x20)), word)}}return result;}/*** @dev Performs a delegetecall on a targetContract in the context of self.
1234567891011121314151617181920// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;contract ISignatureValidatorConstants {// bytes4(keccak256("isValidSignature(bytes,bytes)")bytes4 internal constant EIP1271_MAGIC_VALUE = 0x20c13b0b;}abstract contract ISignatureValidator is ISignatureValidatorConstants {/*** @dev Should return whether the signature provided is valid for the provided data* @param _data Arbitrary length data signed on the behalf of address(this)* @param _signature Signature byte array associated with _data** MUST return the bytes4 magic value 0x20c13b0b when function passes.* MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5)* MUST allow external calls*/function isValidSignature(bytes memory _data, bytes memory _signature) public view virtual returns (bytes4);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/*** @title GnosisSafeMath* @dev Math operations with safety checks that revert on error* Renamed from SafeMath to GnosisSafeMath to avoid conflicts* TODO: remove once open zeppelin update to solc 0.5.0*/library GnosisSafeMath {/*** @dev Multiplies two numbers, reverts on overflow.*/function mul(uint256 a, uint256 b) internal pure returns (uint256) {// Gas optimization: this is cheaper than requiring 'a' not being zero, but the// benefit is lost if 'b' is also tested.// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522if (a == 0) {return 0;}uint256 c = a * b;require(c / a == b);return c;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "./GnosisSafeStorage.sol";import "../GnosisSafe.sol";/// @title SignMessageLib - Allows to set an entry in the signedMessages/// @author Richard Meissner - <richard@gnosis.io>contract SignMessageLib is GnosisSafeStorage {//keccak256(// "SafeMessage(bytes message)"//);bytes32 private constant SAFE_MSG_TYPEHASH = 0x60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca;event SignMsg(bytes32 indexed msgHash);/// @dev Marks a message as signed, so that it can be used with EIP-1271/// @notice Marks a message (`_data`) as signed./// @param _data Arbitrary length data that should be marked as signed on the behalf of address(this)function signMessage(bytes calldata _data) external {bytes32 msgHash = getMessageHash(_data);signedMessages[msgHash] = 1;emit SignMsg(msgHash);}/// @dev Returns hash of a message that can be signed by owners.
123456789101112131415161718192021// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @title GnosisSafeStorage - Storage layout of the Safe contracts to be used in libraries/// @author Richard Meissner - <richard@gnosis.io>contract GnosisSafeStorage {// From /common/Singleton.soladdress internal singleton;// From /common/ModuleManager.solmapping(address => address) internal modules;// From /common/OwnerManager.solmapping(address => address) internal owners;uint256 internal ownerCount;uint256 internal threshold;// From /GnosisSafe.soluint256 internal nonce;bytes32 internal _deprecatedDomainSeparator;mapping(bytes32 => uint256) internal signedMessages;mapping(address => mapping(bytes32 => uint256)) internal approvedHashes;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../../libraries/GnosisSafeStorage.sol";/// @title Migration - migrates a Safe contract from 1.3.0 to 1.2.0/// @author Richard Meissner - <richard@gnosis.io>contract Migration is GnosisSafeStorage {bytes32 private constant DOMAIN_SEPARATOR_TYPEHASH = 0x035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d4749;address public immutable migrationSingleton;address public immutable safe120Singleton;constructor(address targetSingleton) {require(targetSingleton != address(0), "Invalid singleton address provided");safe120Singleton = targetSingleton;migrationSingleton = address(this);}event ChangedMasterCopy(address singleton);bytes32 private guard;/// @dev Allows to migrate the contract. This can only be called via a delegatecall.function migrate() public {require(address(this) != migrationSingleton, "Migration should only be called via delegatecall");// Master copy address cannot be null.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "./DefaultCallbackHandler.sol";import "../interfaces/ISignatureValidator.sol";import "../GnosisSafe.sol";/// @title Compatibility Fallback Handler - fallback handler to provider compatibility between pre 1.3.0 and 1.3.0+ Safe contracts/// @author Richard Meissner - <richard@gnosis.pm>contract CompatibilityFallbackHandler is DefaultCallbackHandler, ISignatureValidator {//keccak256(// "SafeMessage(bytes message)"//);bytes32 private constant SAFE_MSG_TYPEHASH = 0x60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca;bytes4 internal constant SIMULATE_SELECTOR = bytes4(keccak256("simulate(address,bytes)"));address internal constant SENTINEL_MODULES = address(0x1);bytes4 internal constant UPDATED_MAGIC_VALUE = 0x1626ba7e;/*** Implementation of ISignatureValidator (see `interfaces/ISignatureValidator.sol`)* @dev Should return whether the signature provided is valid for the provided data.* @param _data Arbitrary length data signed on the behalf of address(msg.sender)* @param _signature Signature byte array associated with _data* @return a bool upon valid or invalid signature with corresponding _data
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../interfaces/ERC1155TokenReceiver.sol";import "../interfaces/ERC721TokenReceiver.sol";import "../interfaces/ERC777TokensRecipient.sol";import "../interfaces/IERC165.sol";/// @title Default Callback Handler - returns true for known token callbacks/// @author Richard Meissner - <richard@gnosis.pm>contract DefaultCallbackHandler is ERC1155TokenReceiver, ERC777TokensRecipient, ERC721TokenReceiver, IERC165 {string public constant NAME = "Default Callback Handler";string public constant VERSION = "1.0.0";function onERC1155Received(address,address,uint256,uint256,bytes calldata) external pure override returns (bytes4) {return 0xf23a6e61;}function onERC1155BatchReceived(address,
123456789101112131415161718192021222324// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/**Note: The ERC-165 identifier for this interface is 0x4e2312e0.*/interface ERC1155TokenReceiver {/**@notice Handle the receipt of a single ERC1155 token type.@dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after thebalance has been updated.This function MUST return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61) if it accepts thetransfer.This function MUST revert if it rejects the transfer.Return of any other value than the prescribed keccak256 generated value MUST result in the transaction being reverted by the caller.@param _operator The address which initiated the transfer (i.e. msg.sender)@param _from The address which previously owned the token@param _id The ID of the token being transferred@param _value The amount of tokens being transferred@param _data Additional data with no specified format@return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`*/function onERC1155Received(address _operator,address _from,uint256 _id,
123456789101112131415161718192021222324// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @dev Note: the ERC-165 identifier for this interface is 0x150b7a02.interface ERC721TokenReceiver {/// @notice Handle the receipt of an NFT/// @dev The ERC721 smart contract calls this function on the recipient/// after a `transfer`. This function MAY throw to revert and reject the/// transfer. Return of other than the magic value MUST result in the/// transaction being reverted./// Note: the contract address is always the message sender./// @param _operator The address which called `safeTransferFrom` function/// @param _from The address which previously owned the token/// @param _tokenId The NFT identifier which is being transferred/// @param _data Additional data with no specified format/// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`/// unless throwingfunction onERC721Received(address _operator,address _from,uint256 _tokenId,bytes calldata _data) external returns (bytes4);}
12345678910111213// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;interface ERC777TokensRecipient {function tokensReceived(address operator,address from,address to,uint256 amount,bytes calldata data,bytes calldata operatorData) external;}
123456789101112131415// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;/// @notice More details at https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.solinterface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../interfaces/ERC1155TokenReceiver.sol";import "../external/GnosisSafeMath.sol";contract ERC1155Token {using GnosisSafeMath for uint256;// Mapping from token ID to owner balancesmapping(uint256 => mapping(address => uint256)) private _balances;// Mapping from owner to operator approvalsmapping(address => mapping(address => bool)) private _operatorApprovals;/**@dev Get the specified address' balance for token with specified ID.@param owner The address of the token holder@param id ID of the token@return The owner's balance of the token type requested*/function balanceOf(address owner, uint256 id) public view returns (uint256) {require(owner != address(0), "ERC1155: balance query for the zero address");return _balances[id][owner];}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "./GnosisSafe.sol";/// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191./// @author Stefan George - <stefan@gnosis.io>/// @author Richard Meissner - <richard@gnosis.io>contract GnosisSafeL2 is GnosisSafe {event SafeMultiSigTransaction(address to,uint256 value,bytes data,Enum.Operation operation,uint256 safeTxGas,uint256 baseGas,uint256 gasPrice,address gasToken,address payable refundReceiver,bytes signatures,// We combine nonce, sender and threshold into one to avoid stack too deep// Dev note: additionalInfo should not contain `bytes`, as this complicates decodingbytes additionalInfo);event SafeModuleTransaction(address module, address to, uint256 value, bytes data, Enum.Operation operation);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../../common/Enum.sol";import "../../base/GuardManager.sol";import "../../GnosisSafe.sol";contract ReentrancyTransactionGuard is Guard {bytes32 internal constant GUARD_STORAGE_SLOT = keccak256("reentrancy_guard.guard.struct");struct GuardValue {bool active;}// solhint-disable-next-line payable-fallbackfallback() external {// We don't revert on fallback to avoid issues in case of a Safe upgrade// E.g. The expected check method might change and then the Safe would be locked.}function getGuard() internal pure returns (GuardValue storage guard) {bytes32 slot = GUARD_STORAGE_SLOT;// solhint-disable-next-line no-inline-assemblyassembly {guard.slot := slot}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../../common/Enum.sol";import "../../base/GuardManager.sol";import "../../GnosisSafe.sol";contract DelegateCallTransactionGuard is Guard {address public immutable allowedTarget;constructor(address target) {allowedTarget = target;}// solhint-disable-next-line payable-fallbackfallback() external {// We don't revert on fallback to avoid issues in case of a Safe upgrade// E.g. The expected check method might change and then the Safe would be locked.}function checkTransaction(address to,uint256,bytes memory,Enum.Operation operation,uint256,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: LGPL-3.0-onlypragma solidity >=0.7.0 <0.9.0;import "../../common/Enum.sol";import "../../base/GuardManager.sol";import "../../GnosisSafe.sol";/// @title Debug Transaction Guard - A guard that will emit events with extended information./// @notice This guard is only meant as a development tool and example/// @author Richard Meissner - <richard@gnosis.pm>contract DebugTransactionGuard is Guard {// solhint-disable-next-line payable-fallbackfallback() external {// We don't revert on fallback to avoid issues in case of a Safe upgrade// E.g. The expected check method might change and then the Safe would be locked.}event TransactionDetails(address indexed safe,bytes32 indexed txHash,address to,uint256 value,bytes data,Enum.Operation operation,uint256 safeTxGas,bool usesRefund,
12345678910111213{"optimizer": {"enabled": true,"mode": "3"},"outputSelection": {"*": {"*": ["abi"]}}}
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes","name":"transactions","type":"bytes"}],"name":"multiSend","outputs":[],"stateMutability":"payable","type":"function"}]
Deployed Bytecode
0x00020000000000020003000000000002000100000001035500000060011002700000003c0010019d0000000101200190000000750000c13d0000008001000039000000400010043f0000000002000031000000040120008c000000d90000413d0000000101000367000000000301043b0000003e033001970000003f0330009c000000d90000c13d000000240420008a000000200300008a000000000434004b000000d90000813d0000000404100370000000000504043b000000400450009c000000d90000213d0000002404500039000000000624004b000000d90000213d0000000405500039000000000151034f000000000101043b000000400510009c000000d90000213d0000000005410019000000000225004b000000d90000213d000000bf02100039000000000232016f000000400020043f0000001f0210018f000000800010043f00000001034003670000000504100272000000350000613d00000000050000190000000506500210000000000763034f000000000707043b000000a00660003900000000007604350000000105500039000000000645004b0000002d0000413d000000000520004c000000440000613d0000000504400210000000000343034f0000000302200210000000a004400039000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f0000000000240435000000a0011000390000000000010435000000410100004100000000001004390000000001000412000000040010044300000024000004430000003c0100004100000000020004140000003c0320009c0000000001024019000000c00110021000000042011001c7000080050200003900ec00e20000040f0000000102200190000000d90000613d000000000101043b00000043011001970000000002000410000000000121004b000000850000c13d000000400100043d00000064021000390000004703000041000000000032043500000044021000390000004803000041000000000032043500000024021000390000003003000039000000000032043500000049020000410000000000210435000000040210003900000020030000390000000000320435000000400200043d000000000121004900000084011000390000003c030000410000003c0410009c00000000010380190000003c0420009c000000000203801900000040022002100000006001100210000000000121019f000000ee00010430000000a001000039000000400010043f0000000001000416000000000110004c000000d90000c13d00000000010004100000006002100210000000800020043f0000014000000443000001600010044300000020010000390000010000100443000000010100003900000120001004430000003d01000041000000ed0001042e000000800600043d000000210160008c000000db0000413d0000002007000039000100000006001d000000980000013d00000046011001c70000800902000039000000000500001900ec00dd0000040f0000000106000029000000030700002900000002080000290000000101200190000000d90000613d00000000018700190000005507100039000000000167004b000000db0000813d000000d501700039000000b50270003900000000080204330000009502700039000000000302043300000081027000390000000002020433000000600420027000000080027000390000000002020433000000440520009c000000be0000813d0000000002000414000000040540008c000000940000613d000300000007001d0000003c050000410000003c0610009c000000000105801900000040011002100000003c0680009c000200000008001d000000000605001900000000060840190000006006600210000000000116019f0000003c0620009c0000000002058019000000c002200210000000000112019f000000000230004c0000008b0000c13d000000000204001900ec00dd0000040f000000010600002900000003070000290000000208000029000000920000013d0000004502200197000000440220009c000000d90000c13d0000000002000414000000040340008c000000940000613d0000003c030000410000003c0510009c000000000103801900000040011002100000003c0580009c000000000503001900000000050840190000006005500210000000000115019f0000003c0520009c0000000002038019000000c002200210000000000112019f0000000002040019000300000007001d000200000008001d00ec00e70000040f000000020800002900000003070000290000000106000029000000920000013d0000000001000019000000ee000104300000000001000019000000ed0001042e000000e0002104210000000102000039000000000001042d0000000002000019000000000001042d000000e5002104230000000102000039000000000001042d0000000002000019000000000001042d000000ea002104250000000102000039000000000001042d0000000002000019000000000001042d000000ec00000432000000ed0001042e000000ee00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000080000001000000000000000000ffffffff000000000000000000000000000000000000000000000000000000008d80ff0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0100000000000000000000000000000000000000000000000000000000000000ff0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000007669612064656c656761746563616c6c000000000000000000000000000000004d756c746953656e642073686f756c64206f6e6c792062652063616c6c65642008c379a0000000000000000000000000000000000000000000000000000000006c159535dabcd6eea267a67de311bb086b15c371538c8bd0058bd754ca11f065
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.