ETH Price: $3,358.51 (+0.21%)

Contract

0x75aE2c0993c927C26a481287749064d904e780b0
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Permit And Call212498742024-11-23 10:34:351 hr ago1732358075IN
0x75aE2c09...904e780b0
0 ETH0.001970199.79241097
Permit And Call212491362024-11-23 8:06:473 hrs ago1732349207IN
0x75aE2c09...904e780b0
0 ETH0.0028354910.10532082
Permit And Call212483162024-11-23 5:21:596 hrs ago1732339319IN
0x75aE2c09...904e780b0
0 ETH0.003492659.20305899
Permit And Call212459502024-11-22 21:27:1114 hrs ago1732310831IN
0x75aE2c09...904e780b0
0 ETH0.0062002116.92492956
Permit And Call212451552024-11-22 18:47:5917 hrs ago1732301279IN
0x75aE2c09...904e780b0
0 ETH0.0059322716.40943334
Permit And Call212449132024-11-22 17:59:3518 hrs ago1732298375IN
0x75aE2c09...904e780b0
0 ETH0.0037567112.9670754
Permit And Call212448632024-11-22 17:49:3518 hrs ago1732297775IN
0x75aE2c09...904e780b0
0 ETH0.0050836112.19471411
Permit And Call212444582024-11-22 16:26:5919 hrs ago1732292819IN
0x75aE2c09...904e780b0
0 ETH0.0086561114.69613365
Permit And Call212440202024-11-22 14:58:4721 hrs ago1732287527IN
0x75aE2c09...904e780b0
0 ETH0.0058693714.99953105
Permit And Call212404882024-11-22 3:08:4732 hrs ago1732244927IN
0x75aE2c09...904e780b0
0 ETH0.0038609510.35588365
Permit And Call212399292024-11-22 1:16:3534 hrs ago1732238195IN
0x75aE2c09...904e780b0
0 ETH0.0040899810.00298531
Permit And Call212396902024-11-22 0:28:3535 hrs ago1732235315IN
0x75aE2c09...904e780b0
0 ETH0.0036200211.08736806
Permit And Call212388592024-11-21 21:41:1138 hrs ago1732225271IN
0x75aE2c09...904e780b0
0 ETH0.0056449913.67139184
Permit And Call212370552024-11-21 15:39:2344 hrs ago1732203563IN
0x75aE2c09...904e780b0
0 ETH0.0074776224.66316853
Permit And Call212364902024-11-21 13:45:3546 hrs ago1732196735IN
0x75aE2c09...904e780b0
0 ETH0.0083509925.35860809
Permit And Call212364832024-11-21 13:44:1146 hrs ago1732196651IN
0x75aE2c09...904e780b0
0 ETH0.0088535725.70514635
Permit And Call212332232024-11-21 2:48:112 days ago1732157291IN
0x75aE2c09...904e780b0
0 ETH0.0049592611.75414559
Permit And Call212332022024-11-21 2:43:592 days ago1732157039IN
0x75aE2c09...904e780b0
0 ETH0.0023391213.36848425
Permit And Call212324272024-11-21 0:08:232 days ago1732147703IN
0x75aE2c09...904e780b0
0 ETH0.0024345313.20648126
Permit And Call212312962024-11-20 20:20:592 days ago1732134059IN
0x75aE2c09...904e780b0
0 ETH0.0050872414.07245411
Permit And Call212307302024-11-20 18:27:112 days ago1732127231IN
0x75aE2c09...904e780b0
0 ETH0.0072882618.854175
Permit And Call212306212024-11-20 18:05:232 days ago1732125923IN
0x75aE2c09...904e780b0
0 ETH0.0075720220.66894608
Permit And Call212293352024-11-20 13:45:352 days ago1732110335IN
0x75aE2c09...904e780b0
0 ETH0.005760614.70273553
Permit And Call212269592024-11-20 5:47:593 days ago1732081679IN
0x75aE2c09...904e780b0
0 ETH0.003081068.22191064
Permit And Call212260652024-11-20 2:48:353 days ago1732070915IN
0x75aE2c09...904e780b0
0 ETH0.0037338110.3278806
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PermitAndCall

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion
File 1 of 6 : PermitAndCall.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.19;

import {IERC2612, IERC20PermitAllowed} from "./interfaces/IERC2612.sol";
import {IERC20MetaTransaction} from "./interfaces/INativeMetaTransaction.sol";
import {SafePermit} from "./lib/SafePermit.sol";
import {Revert} from "./lib/Revert.sol";

contract PermitAndCall {
  using SafePermit for IERC2612;
  using SafePermit for IERC20PermitAllowed;
  using SafePermit for IERC20MetaTransaction;
  using Revert for bytes;

  address payable public constant target =
    payable(0xDef1C0ded9bec7F1a1670819833240f027b25EfF);

  function permitAndCall(
    IERC2612 token,
    bytes4 domainSeparatorSelector,
    address owner,
    uint256 amount,
    uint256 deadline,
    uint8 v,
    bytes32 r,
    bytes32 s,
    bytes calldata data
  ) external payable returns (bytes memory) {
    token.safePermit(domainSeparatorSelector, owner, target, amount, deadline, v, r, s);
    (bool success, bytes memory returndata) = target.call{value: msg.value}(data);
    if (!success) {
      returndata.revert_();
    }
    return returndata;
  }

  function permitAndCall(
    IERC20PermitAllowed token,
    bytes4 domainSeparatorSelector,
    address owner,
    uint256 nonce,
    uint256 deadline,
    bool allowed,
    uint8 v,
    bytes32 r,
    bytes32 s,
    bytes calldata data
  ) external payable returns (bytes memory) {
    token.safePermit(
      domainSeparatorSelector, owner, target, nonce, deadline, allowed, v, r, s
    );
    (bool success, bytes memory returndata) = target.call{value: msg.value}(data);
    if (!success) {
      returndata.revert_();
    }
    return returndata;
  }

  function permitAndCall(
    IERC20MetaTransaction token,
    bytes4 domainSeparatorSelector,
    address owner,
    uint256 amount,
    uint8 v,
    bytes32 r,
    bytes32 s,
    bytes calldata data
  ) external payable returns (bytes memory) {
    token.safePermit(domainSeparatorSelector, owner, target, amount, v, r, s);
    (bool success, bytes memory returndata) = target.call{value: msg.value}(data);
    if (!success) {
      returndata.revert_();
    }
    return returndata;
  }
}

File 2 of 6 : IERC2612.sol
// SPDX-License-Identifier: CC0-1.0
pragma solidity ^0.8.19;

import {IERC20} from "./IERC20.sol";

interface IERC20PermitCommon is IERC20 {
  function nonces(address owner) external view returns (uint256);

  function DOMAIN_SEPARATOR() external view returns (bytes32);
}

interface IERC2612 is IERC20PermitCommon {
  function permit(
    address owner,
    address spender,
    uint256 value,
    uint256 deadline,
    uint8 v,
    bytes32 r,
    bytes32 s
  ) external;
}

interface IERC20PermitAllowed is IERC20PermitCommon {
  function permit(
    address holder,
    address spender,
    uint256 nonce,
    uint256 expiry,
    bool allowed,
    uint8 v,
    bytes32 r,
    bytes32 s
  ) external;
}

File 3 of 6 : INativeMetaTransaction.sol
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity ^0.8.19;

import {IERC20PermitCommon} from "./IERC2612.sol";

interface INativeMetaTransaction {
  function executeMetaTransaction(
    address userAddress,
    bytes memory functionSignature,
    bytes32 sigR,
    bytes32 sigS,
    uint8 sigV
  ) external payable returns (bytes memory);
}

interface IERC20MetaTransaction is IERC20PermitCommon, INativeMetaTransaction {}

File 4 of 6 : SafePermit.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.19;

import {
  IERC20PermitCommon, IERC2612, IERC20PermitAllowed
} from "../interfaces/IERC2612.sol";
import {IERC20MetaTransaction} from "../interfaces/INativeMetaTransaction.sol";
import {Revert} from "./Revert.sol";

library SafePermit {
  using Revert for bytes;

  bytes32 private constant _PERMIT_TYPEHASH = keccak256(
    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
  );

  bytes32 private constant _PERMIT_ALLOWED_TYPEHASH = keccak256(
    "Permit(address holder,address spender,uint256 nonce,uint256 expiry,bool allowed)"
  );

  bytes32 private constant _META_TRANSACTION_TYPEHASH =
    keccak256("MetaTransaction(uint256 nonce,address from,bytes functionSignature)");

  function _bubbleRevert(bool success, bytes memory returndata, string memory message)
    internal
    pure
  {
    if (success) {
      revert(message);
    }
    returndata.revert_();
  }

  function _checkEffects(
    IERC20PermitCommon token,
    address owner,
    address spender,
    uint256 amount,
    uint256 nonce,
    bool success,
    bytes memory returndata
  ) internal view {
    if (nonce == 0) {
      _bubbleRevert(success, returndata, "SafePermit: zero nonce");
    }
    if (token.allowance(owner, spender) != amount) {
      _bubbleRevert(success, returndata, "SafePermit: failed");
    }
  }

  function _getDomainSeparator(IERC20PermitCommon token, bytes4 domainSeparatorSelector)
    internal
    view
    returns (bytes32)
  {
    (bool success, bytes memory domainSeparator) =
      address(token).staticcall(bytes.concat(domainSeparatorSelector));
    if (!success || domainSeparator.length != 32) {
      _bubbleRevert(success, domainSeparator, "SafePermit: domain separator");
    }
    return abi.decode(domainSeparator, (bytes32));
  }

  function _checkSignature(
    IERC20PermitCommon token,
    bytes4 domainSeparatorSelector,
    address owner,
    bytes32 structHash,
    uint8 v,
    bytes32 r,
    bytes32 s,
    bool success,
    bytes memory returndata
  ) internal view {
    bytes32 signingHash = keccak256(
      bytes.concat(
        bytes2("\x19\x01"),
        _getDomainSeparator(token, domainSeparatorSelector),
        structHash
      )
    );
    address recovered = ecrecover(signingHash, v, r, s);
    if (recovered == address(0)) {
      _bubbleRevert(success, returndata, "SafePermit: bad signature");
    }
    if (recovered != owner) {
      _bubbleRevert(success, returndata, "SafePermit: wrong signer");
    }
  }

  function safePermit(
    IERC2612 token,
    bytes4 domainSeparatorSelector,
    address owner,
    address spender,
    uint256 amount,
    uint256 deadline,
    uint8 v,
    bytes32 r,
    bytes32 s
  ) internal {
    // `permit` could succeed vacuously with no returndata if there's a fallback
    // function (e.g. WETH). `permit` could fail spuriously if it was
    // replayed/frontrun. Avoid these by manually verifying the effects and
    // signature. Insufficient gas griefing is defused by checking the effects.
    (bool success, bytes memory returndata) = address(token).call(
      abi.encodeCall(token.permit, (owner, spender, amount, deadline, v, r, s))
    );
    if (success && returndata.length > 0 && abi.decode(returndata, (bool))) {
      return;
    }

    // Check effects and signature
    uint256 nonce = token.nonces(owner);
    if (block.timestamp > deadline) {
      _bubbleRevert(success, returndata, "SafePermit: expired");
    }
    _checkEffects(token, owner, spender, amount, nonce, success, returndata);
    unchecked {
      nonce--;
    }
    bytes32 structHash =
      keccak256(abi.encode(_PERMIT_TYPEHASH, owner, spender, amount, nonce, deadline));
    _checkSignature(
      token, domainSeparatorSelector, owner, structHash, v, r, s, success, returndata
    );
  }

  function safePermit(
    IERC20PermitAllowed token,
    bytes4 domainSeparatorSelector,
    address owner,
    address spender,
    uint256 nonce,
    uint256 deadline,
    bool allowed,
    uint8 v,
    bytes32 r,
    bytes32 s
  ) internal {
    // See comments above
    (bool success, bytes memory returndata) = address(token).call(
      abi.encodeCall(token.permit, (owner, spender, nonce, deadline, allowed, v, r, s))
    );
    if (success && returndata.length > 0 && abi.decode(returndata, (bool))) {
      return;
    }

    // Check effects and signature
    nonce = token.nonces(owner);
    if (block.timestamp > deadline && deadline > 0) {
      _bubbleRevert(success, returndata, "SafePermit: expired");
    }
    _checkEffects(
      token, owner, spender, allowed ? type(uint256).max : 0, nonce, success, returndata
    );
    unchecked {
      nonce--;
    }
    bytes32 structHash = keccak256(
      abi.encode(_PERMIT_ALLOWED_TYPEHASH, owner, spender, nonce, deadline, allowed)
    );
    _checkSignature(
      token, domainSeparatorSelector, owner, structHash, v, r, s, success, returndata
    );
  }

  function safePermit(
    IERC20MetaTransaction token,
    bytes4 domainSeparatorSelector,
    address owner,
    address spender,
    uint256 amount,
    uint8 v,
    bytes32 r,
    bytes32 s
  ) internal {
    // See comments above
    bytes memory functionSignature = abi.encodeCall(token.approve, (spender, amount));
    (bool success, bytes memory returndata) = address(token).call(
      abi.encodeCall(token.executeMetaTransaction, (owner, functionSignature, r, s, v))
    );
    if (
      success && returndata.length > 0
        && abi.decode(abi.decode(returndata, (bytes)), (bool))
    ) {
      return;
    }

    // Check effects and signature
    uint256 nonce = token.nonces(owner);
    _checkEffects(token, owner, spender, amount, nonce, success, returndata);
    unchecked {
      nonce--;
    }
    bytes32 structHash = keccak256(
      abi.encode(_META_TRANSACTION_TYPEHASH, nonce, owner, keccak256(functionSignature))
    );
    _checkSignature(
      token, domainSeparatorSelector, owner, structHash, v, r, s, success, returndata
    );
  }
}

File 5 of 6 : Revert.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.19;

library Revert {
  function revert_(bytes memory reason) internal pure {
    assembly ("memory-safe") {
      revert(add(reason, 0x20), mload(reason))
    }
  }
}

File 6 of 6 : IERC20.sol
// SPDX-License-Identifier: CC0-1.0
pragma solidity ^0.8.19;

interface IERC20 {
  function totalSupply() external view returns (uint256);

  function balanceOf(address _owner) external view returns (uint256 balance);

  function transfer(address _to, uint256 _value) external returns (bool success);

  function transferFrom(address _from, address _to, uint256 _value)
    external
    returns (bool success);

  function approve(address _spender, uint256 _value) external returns (bool success);

  function allowance(address _owner, address _spender)
    external
    view
    returns (uint256 remaining);

  event Transfer(address indexed _from, address indexed _to, uint256 _value);
  event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

interface IERC20Meta is IERC20 {
  function name() external view returns (string memory);

  function symbol() external view returns (string memory);

  function decimals() external view returns (uint8);
}

Settings
{
  "remappings": [
    "ds-test/=lib/solmate/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 1000000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "viaIR": true,
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20MetaTransaction","name":"token","type":"address"},{"internalType":"bytes4","name":"domainSeparatorSelector","type":"bytes4"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"permitAndCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC2612","name":"token","type":"address"},{"internalType":"bytes4","name":"domainSeparatorSelector","type":"bytes4"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"permitAndCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20PermitAllowed","name":"token","type":"address"},{"internalType":"bytes4","name":"domainSeparatorSelector","type":"bytes4"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"permitAndCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60808060405234610016576110ee908161001c8239f35b600080fdfe6040608081526004908136101561001557600080fd5b600091823560e01c908163110f67931461026a5781633a46c4e1146101c0578163a98fcbf11461009e575063d4b839921461004f57600080fd5b3461009a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a576020905173def1c0ded9bec7f1a1670819833240f027b25eff8152f35b5080fd5b82846101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a576100f3610311565b6100fb610345565b60a4359283151584036101b95760c4359060ff821682036101b5576101243567ffffffffffffffff81116101b1579161013e610157949288999a94369101610368565b969095610104359460e435946084359260643592610b44565b8185519283928337810183815203903473def1c0ded9bec7f1a1670819833240f027b25eff5af1906101876104fa565b91156101a857906101a491519182916020835260208301906103b9565b0390f35b50602081519101fd5b8680fd5b8580fd5b8480fd5b80fd5b82846101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a57610215610311565b61021d610345565b60a4359260ff841684036101b9576101043567ffffffffffffffff81116101b557916102528697989261015794369101610368565b95909460e4359360c43593608435926064359261057b565b82846101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a576102bf610311565b936102c8610345565b946084359260ff841684036101b95760e43567ffffffffffffffff81116101b557916102fd8697989261015794369101610368565b95909460c4359360a4359360643592610dc2565b602435907fffffffff000000000000000000000000000000000000000000000000000000008216820361034057565b600080fd5b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361034057565b9181601f840112156103405782359167ffffffffffffffff8311610340576020838186019501011161034057565b60005b8381106103a95750506000910152565b8181015183820152602001610399565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936103f581518092818752878088019101610396565b0116010190565b6040810190811067ffffffffffffffff82111761041857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff82111761041857604052565b6080810190811067ffffffffffffffff82111761041857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761041857604052565b67ffffffffffffffff811161041857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3d15610525573d9061050b826104c0565b91610519604051938461047f565b82523d6000602084013e565b606090565b90816020910312610340575180151581036103405790565b6040519061054f826103fc565b601382527f536166655065726d69743a2065787069726564000000000000000000000000006020830152565b90959294919796939773ffffffffffffffffffffffffffffffffffffffff966040519760208901987fd505accf000000000000000000000000000000000000000000000000000000008a52818416602482015273def1c0ded9bec7f1a1670819833240f027b25eff60448201528860648201528b608482015260ff861660a48201528660c48201528760e482015260e48152610120810181811067ffffffffffffffff821117610418576040526000809a81925190828589165af19761063f6104fa565b9989806107c7575b806107ae575b61079f576040517f7ecebe000000000000000000000000000000000000000000000000000000000081528386166004820152602081602481878b165afa91821561079357809261075e575b50508c421161074e5761074c9b9c6106b68c8c84868a898d16610823565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040519260208401947f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98652868916604086015273def1c0ded9bec7f1a1670819833240f027b25eff606086015260808501520160a083015260c082015260c0815261074281610447565b5190209316610968565b565b898b610758610542565b916107d1565b9091506020823d60201161078b575b8161077a6020938361047f565b810103126101bd5750513880610698565b3d915061076d565b604051903d90823e3d90fd5b50505050505050505050509050565b506107c260208c518d010160208d0161052a565b61064d565b508a511515610647565b9190916107e15750602081519101fd5b61081f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906103b9565b0390fd5b91929493941561092957602090604473ffffffffffffffffffffffffffffffffffffffff918260405195869485937fdd62ed3e00000000000000000000000000000000000000000000000000000000855216600484015273def1c0ded9bec7f1a1670819833240f027b25eff6024840152165afa90811561091d576000916108ec575b50036108b0575050565b604051916108bd836103fc565b601283527f536166655065726d69743a206661696c6564000000000000000000000000000060208401526107d1565b906020823d8211610915575b816109056020938361047f565b810103126101bd575051386108a6565b3d91506108f8565b6040513d6000823e3d90fd5b50505060405191610939836103fc565b601683527f536166655065726d69743a207a65726f206e6f6e63650000000000000000000060208401526107d1565b94957fffffffff000000000000000000000000000000000000000000000000000000009897969491929473ffffffffffffffffffffffffffffffffffffffff948560409889519060209d8e830198168852600482526109c6826103fc565b600097889384935192165afa6109da6104fa565b9080158015610b39575b610afe57508b818051810103126101b5579260809260ff8d96938789970151908c5190898201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610a4581610463565b519020938b51948552168684015289830152606082015282805260015afa15610af357518116918215610ab7571603610a7e5750505050565b7f536166655065726d69743a2077726f6e67207369676e65720000000000000000905193610aab856103fc565b601885528401526107d1565b5050507f536166655065726d69743a20626164207369676e617475726500000000000000905193610ae7856103fc565b601985528401526107d1565b8351903d90823e3d90fd5b895192507f536166655065726d69743a20646f6d61696e20736570617261746f72000000008d610b2d856103fc565b601c85528401526107d1565b508c825114156109e4565b91909897949896939695929573ffffffffffffffffffffffffffffffffffffffff966040519060208201907f8fcbaf0c000000000000000000000000000000000000000000000000000000008252898516602484015273def1c0ded9bec7f1a1670819833240f027b25eff604484015260648301528960848301528b151560a483015260ff861660c48301528660e48301526101048881840152825261014082019082821067ffffffffffffffff8311176104185760009283926040525190828b88165af196610c126104fa565b988880610db8575b80610d9f575b610d9157604051907f7ecebe000000000000000000000000000000000000000000000000000000000082528285166004830152602082602481868a165afa91821561091d57600092610d5d575b5080421180610d54575b61074e5761074c9b9c80600014610d4757610cb98c8c857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b8a898d16610823565b604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208401947fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb8652868916604086015273def1c0ded9bec7f1a1670819833240f027b25eff606086015201608084015260a0830152151560c082015260c0815261074281610447565b610cb98c8c856000610cb0565b50801515610c77565b9091506020813d602011610d89575b81610d796020938361047f565b8101031261034057519038610c6d565b3d9150610d6c565b505050505050505050509050565b50610db360208b518c010160208c0161052a565b610c20565b5089511515610c1a565b959293909491956040968751967f095ea7b300000000000000000000000000000000000000000000000000000000602089015273def1c0ded9bec7f1a1670819833240f027b25eff602489015286604489015260448852610e2288610463565b73ffffffffffffffffffffffffffffffffffffffff6000808a8c51610ec681610e8560208201947f0c53c51c000000000000000000000000000000000000000000000000000000008652888b16602484015260a0604484015260c48301906103b9565b8c60648301528d608483015260ff8c1660a4830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261047f565b5190828589165af197610ed76104fa565b9989806110ae575b8061102a575b61101c578b51917f7ecebe000000000000000000000000000000000000000000000000000000000083528386166004840152602083602481878b165afa928315611011578c918c91600095610fd5575b509084610f46939289888c16610823565b602081519101208b51907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208301937f23d10def3caacba2e4042e0c75d44a42d2558aabcf5ce951d0642a8032e1e6538552018d830152838616606083015260808201526080815260a0810181811067ffffffffffffffff8211176104185761074c9c525190209316610968565b92509350506020813d602011611009575b81610ff36020938361047f565b810103126103405751918b908b90610f46610f35565b3d9150610fe6565b8d513d6000823e3d90fd5b505050505050505050505050565b508a518b0160208c8183019203126103405760208c015167ffffffffffffffff8111610340578c0181603f82011215610340578060208f9201519261106e846104c0565b9061107b8451928361047f565b84825260208201938584010111610340578f6110a9948461109f9260209501610396565b805101019061052a565b610ee5565b508a511515610edf56fea26469706673582212206f3b9dd00e0189e6fe8cd6490860f80beb36503e8578db282f622702781dee8864736f6c63430008150033

Deployed Bytecode

0x6040608081526004908136101561001557600080fd5b600091823560e01c908163110f67931461026a5781633a46c4e1146101c0578163a98fcbf11461009e575063d4b839921461004f57600080fd5b3461009a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a576020905173def1c0ded9bec7f1a1670819833240f027b25eff8152f35b5080fd5b82846101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a576100f3610311565b6100fb610345565b60a4359283151584036101b95760c4359060ff821682036101b5576101243567ffffffffffffffff81116101b1579161013e610157949288999a94369101610368565b969095610104359460e435946084359260643592610b44565b8185519283928337810183815203903473def1c0ded9bec7f1a1670819833240f027b25eff5af1906101876104fa565b91156101a857906101a491519182916020835260208301906103b9565b0390f35b50602081519101fd5b8680fd5b8580fd5b8480fd5b80fd5b82846101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a57610215610311565b61021d610345565b60a4359260ff841684036101b9576101043567ffffffffffffffff81116101b557916102528697989261015794369101610368565b95909460e4359360c43593608435926064359261057b565b82846101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a576102bf610311565b936102c8610345565b946084359260ff841684036101b95760e43567ffffffffffffffff81116101b557916102fd8697989261015794369101610368565b95909460c4359360a4359360643592610dc2565b602435907fffffffff000000000000000000000000000000000000000000000000000000008216820361034057565b600080fd5b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361034057565b9181601f840112156103405782359167ffffffffffffffff8311610340576020838186019501011161034057565b60005b8381106103a95750506000910152565b8181015183820152602001610399565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936103f581518092818752878088019101610396565b0116010190565b6040810190811067ffffffffffffffff82111761041857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff82111761041857604052565b6080810190811067ffffffffffffffff82111761041857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761041857604052565b67ffffffffffffffff811161041857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3d15610525573d9061050b826104c0565b91610519604051938461047f565b82523d6000602084013e565b606090565b90816020910312610340575180151581036103405790565b6040519061054f826103fc565b601382527f536166655065726d69743a2065787069726564000000000000000000000000006020830152565b90959294919796939773ffffffffffffffffffffffffffffffffffffffff966040519760208901987fd505accf000000000000000000000000000000000000000000000000000000008a52818416602482015273def1c0ded9bec7f1a1670819833240f027b25eff60448201528860648201528b608482015260ff861660a48201528660c48201528760e482015260e48152610120810181811067ffffffffffffffff821117610418576040526000809a81925190828589165af19761063f6104fa565b9989806107c7575b806107ae575b61079f576040517f7ecebe000000000000000000000000000000000000000000000000000000000081528386166004820152602081602481878b165afa91821561079357809261075e575b50508c421161074e5761074c9b9c6106b68c8c84868a898d16610823565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040519260208401947f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98652868916604086015273def1c0ded9bec7f1a1670819833240f027b25eff606086015260808501520160a083015260c082015260c0815261074281610447565b5190209316610968565b565b898b610758610542565b916107d1565b9091506020823d60201161078b575b8161077a6020938361047f565b810103126101bd5750513880610698565b3d915061076d565b604051903d90823e3d90fd5b50505050505050505050509050565b506107c260208c518d010160208d0161052a565b61064d565b508a511515610647565b9190916107e15750602081519101fd5b61081f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906103b9565b0390fd5b91929493941561092957602090604473ffffffffffffffffffffffffffffffffffffffff918260405195869485937fdd62ed3e00000000000000000000000000000000000000000000000000000000855216600484015273def1c0ded9bec7f1a1670819833240f027b25eff6024840152165afa90811561091d576000916108ec575b50036108b0575050565b604051916108bd836103fc565b601283527f536166655065726d69743a206661696c6564000000000000000000000000000060208401526107d1565b906020823d8211610915575b816109056020938361047f565b810103126101bd575051386108a6565b3d91506108f8565b6040513d6000823e3d90fd5b50505060405191610939836103fc565b601683527f536166655065726d69743a207a65726f206e6f6e63650000000000000000000060208401526107d1565b94957fffffffff000000000000000000000000000000000000000000000000000000009897969491929473ffffffffffffffffffffffffffffffffffffffff948560409889519060209d8e830198168852600482526109c6826103fc565b600097889384935192165afa6109da6104fa565b9080158015610b39575b610afe57508b818051810103126101b5579260809260ff8d96938789970151908c5190898201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610a4581610463565b519020938b51948552168684015289830152606082015282805260015afa15610af357518116918215610ab7571603610a7e5750505050565b7f536166655065726d69743a2077726f6e67207369676e65720000000000000000905193610aab856103fc565b601885528401526107d1565b5050507f536166655065726d69743a20626164207369676e617475726500000000000000905193610ae7856103fc565b601985528401526107d1565b8351903d90823e3d90fd5b895192507f536166655065726d69743a20646f6d61696e20736570617261746f72000000008d610b2d856103fc565b601c85528401526107d1565b508c825114156109e4565b91909897949896939695929573ffffffffffffffffffffffffffffffffffffffff966040519060208201907f8fcbaf0c000000000000000000000000000000000000000000000000000000008252898516602484015273def1c0ded9bec7f1a1670819833240f027b25eff604484015260648301528960848301528b151560a483015260ff861660c48301528660e48301526101048881840152825261014082019082821067ffffffffffffffff8311176104185760009283926040525190828b88165af196610c126104fa565b988880610db8575b80610d9f575b610d9157604051907f7ecebe000000000000000000000000000000000000000000000000000000000082528285166004830152602082602481868a165afa91821561091d57600092610d5d575b5080421180610d54575b61074e5761074c9b9c80600014610d4757610cb98c8c857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b8a898d16610823565b604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208401947fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb8652868916604086015273def1c0ded9bec7f1a1670819833240f027b25eff606086015201608084015260a0830152151560c082015260c0815261074281610447565b610cb98c8c856000610cb0565b50801515610c77565b9091506020813d602011610d89575b81610d796020938361047f565b8101031261034057519038610c6d565b3d9150610d6c565b505050505050505050509050565b50610db360208b518c010160208c0161052a565b610c20565b5089511515610c1a565b959293909491956040968751967f095ea7b300000000000000000000000000000000000000000000000000000000602089015273def1c0ded9bec7f1a1670819833240f027b25eff602489015286604489015260448852610e2288610463565b73ffffffffffffffffffffffffffffffffffffffff6000808a8c51610ec681610e8560208201947f0c53c51c000000000000000000000000000000000000000000000000000000008652888b16602484015260a0604484015260c48301906103b9565b8c60648301528d608483015260ff8c1660a4830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261047f565b5190828589165af197610ed76104fa565b9989806110ae575b8061102a575b61101c578b51917f7ecebe000000000000000000000000000000000000000000000000000000000083528386166004840152602083602481878b165afa928315611011578c918c91600095610fd5575b509084610f46939289888c16610823565b602081519101208b51907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208301937f23d10def3caacba2e4042e0c75d44a42d2558aabcf5ce951d0642a8032e1e6538552018d830152838616606083015260808201526080815260a0810181811067ffffffffffffffff8211176104185761074c9c525190209316610968565b92509350506020813d602011611009575b81610ff36020938361047f565b810103126103405751918b908b90610f46610f35565b3d9150610fe6565b8d513d6000823e3d90fd5b505050505050505050505050565b508a518b0160208c8183019203126103405760208c015167ffffffffffffffff8111610340578c0181603f82011215610340578060208f9201519261106e846104c0565b9061107b8451928361047f565b84825260208201938584010111610340578f6110a9948461109f9260209501610396565b805101019061052a565b610ee5565b508a511515610edf56fea26469706673582212206f3b9dd00e0189e6fe8cd6490860f80beb36503e8578db282f622702781dee8864736f6c63430008150033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.