Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 6,984 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Permit And Call | 21249874 | 1 hr ago | IN | 0 ETH | 0.00197019 | ||||
Permit And Call | 21249136 | 3 hrs ago | IN | 0 ETH | 0.00283549 | ||||
Permit And Call | 21248316 | 6 hrs ago | IN | 0 ETH | 0.00349265 | ||||
Permit And Call | 21245950 | 14 hrs ago | IN | 0 ETH | 0.00620021 | ||||
Permit And Call | 21245155 | 17 hrs ago | IN | 0 ETH | 0.00593227 | ||||
Permit And Call | 21244913 | 18 hrs ago | IN | 0 ETH | 0.00375671 | ||||
Permit And Call | 21244863 | 18 hrs ago | IN | 0 ETH | 0.00508361 | ||||
Permit And Call | 21244458 | 19 hrs ago | IN | 0 ETH | 0.00865611 | ||||
Permit And Call | 21244020 | 21 hrs ago | IN | 0 ETH | 0.00586937 | ||||
Permit And Call | 21240488 | 32 hrs ago | IN | 0 ETH | 0.00386095 | ||||
Permit And Call | 21239929 | 34 hrs ago | IN | 0 ETH | 0.00408998 | ||||
Permit And Call | 21239690 | 35 hrs ago | IN | 0 ETH | 0.00362002 | ||||
Permit And Call | 21238859 | 38 hrs ago | IN | 0 ETH | 0.00564499 | ||||
Permit And Call | 21237055 | 44 hrs ago | IN | 0 ETH | 0.00747762 | ||||
Permit And Call | 21236490 | 46 hrs ago | IN | 0 ETH | 0.00835099 | ||||
Permit And Call | 21236483 | 46 hrs ago | IN | 0 ETH | 0.00885357 | ||||
Permit And Call | 21233223 | 2 days ago | IN | 0 ETH | 0.00495926 | ||||
Permit And Call | 21233202 | 2 days ago | IN | 0 ETH | 0.00233912 | ||||
Permit And Call | 21232427 | 2 days ago | IN | 0 ETH | 0.00243453 | ||||
Permit And Call | 21231296 | 2 days ago | IN | 0 ETH | 0.00508724 | ||||
Permit And Call | 21230730 | 2 days ago | IN | 0 ETH | 0.00728826 | ||||
Permit And Call | 21230621 | 2 days ago | IN | 0 ETH | 0.00757202 | ||||
Permit And Call | 21229335 | 2 days ago | IN | 0 ETH | 0.0057606 | ||||
Permit And Call | 21226959 | 3 days ago | IN | 0 ETH | 0.00308106 | ||||
Permit And Call | 21226065 | 3 days ago | IN | 0 ETH | 0.00373381 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
PermitAndCall
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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; } }
// 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; }
// 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 {}
// 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 ); } }
// 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)) } } }
// 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); }
{ "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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
60808060405234610016576110ee908161001c8239f35b600080fdfe6040608081526004908136101561001557600080fd5b600091823560e01c908163110f67931461026a5781633a46c4e1146101c0578163a98fcbf11461009e575063d4b839921461004f57600080fd5b3461009a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a576020905173def1c0ded9bec7f1a1670819833240f027b25eff8152f35b5080fd5b82846101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a576100f3610311565b6100fb610345565b60a4359283151584036101b95760c4359060ff821682036101b5576101243567ffffffffffffffff81116101b1579161013e610157949288999a94369101610368565b969095610104359460e435946084359260643592610b44565b8185519283928337810183815203903473def1c0ded9bec7f1a1670819833240f027b25eff5af1906101876104fa565b91156101a857906101a491519182916020835260208301906103b9565b0390f35b50602081519101fd5b8680fd5b8580fd5b8480fd5b80fd5b82846101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a57610215610311565b61021d610345565b60a4359260ff841684036101b9576101043567ffffffffffffffff81116101b557916102528697989261015794369101610368565b95909460e4359360c43593608435926064359261057b565b82846101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a576102bf610311565b936102c8610345565b946084359260ff841684036101b95760e43567ffffffffffffffff81116101b557916102fd8697989261015794369101610368565b95909460c4359360a4359360643592610dc2565b602435907fffffffff000000000000000000000000000000000000000000000000000000008216820361034057565b600080fd5b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361034057565b9181601f840112156103405782359167ffffffffffffffff8311610340576020838186019501011161034057565b60005b8381106103a95750506000910152565b8181015183820152602001610399565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936103f581518092818752878088019101610396565b0116010190565b6040810190811067ffffffffffffffff82111761041857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff82111761041857604052565b6080810190811067ffffffffffffffff82111761041857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761041857604052565b67ffffffffffffffff811161041857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3d15610525573d9061050b826104c0565b91610519604051938461047f565b82523d6000602084013e565b606090565b90816020910312610340575180151581036103405790565b6040519061054f826103fc565b601382527f536166655065726d69743a2065787069726564000000000000000000000000006020830152565b90959294919796939773ffffffffffffffffffffffffffffffffffffffff966040519760208901987fd505accf000000000000000000000000000000000000000000000000000000008a52818416602482015273def1c0ded9bec7f1a1670819833240f027b25eff60448201528860648201528b608482015260ff861660a48201528660c48201528760e482015260e48152610120810181811067ffffffffffffffff821117610418576040526000809a81925190828589165af19761063f6104fa565b9989806107c7575b806107ae575b61079f576040517f7ecebe000000000000000000000000000000000000000000000000000000000081528386166004820152602081602481878b165afa91821561079357809261075e575b50508c421161074e5761074c9b9c6106b68c8c84868a898d16610823565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040519260208401947f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98652868916604086015273def1c0ded9bec7f1a1670819833240f027b25eff606086015260808501520160a083015260c082015260c0815261074281610447565b5190209316610968565b565b898b610758610542565b916107d1565b9091506020823d60201161078b575b8161077a6020938361047f565b810103126101bd5750513880610698565b3d915061076d565b604051903d90823e3d90fd5b50505050505050505050509050565b506107c260208c518d010160208d0161052a565b61064d565b508a511515610647565b9190916107e15750602081519101fd5b61081f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906103b9565b0390fd5b91929493941561092957602090604473ffffffffffffffffffffffffffffffffffffffff918260405195869485937fdd62ed3e00000000000000000000000000000000000000000000000000000000855216600484015273def1c0ded9bec7f1a1670819833240f027b25eff6024840152165afa90811561091d576000916108ec575b50036108b0575050565b604051916108bd836103fc565b601283527f536166655065726d69743a206661696c6564000000000000000000000000000060208401526107d1565b906020823d8211610915575b816109056020938361047f565b810103126101bd575051386108a6565b3d91506108f8565b6040513d6000823e3d90fd5b50505060405191610939836103fc565b601683527f536166655065726d69743a207a65726f206e6f6e63650000000000000000000060208401526107d1565b94957fffffffff000000000000000000000000000000000000000000000000000000009897969491929473ffffffffffffffffffffffffffffffffffffffff948560409889519060209d8e830198168852600482526109c6826103fc565b600097889384935192165afa6109da6104fa565b9080158015610b39575b610afe57508b818051810103126101b5579260809260ff8d96938789970151908c5190898201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610a4581610463565b519020938b51948552168684015289830152606082015282805260015afa15610af357518116918215610ab7571603610a7e5750505050565b7f536166655065726d69743a2077726f6e67207369676e65720000000000000000905193610aab856103fc565b601885528401526107d1565b5050507f536166655065726d69743a20626164207369676e617475726500000000000000905193610ae7856103fc565b601985528401526107d1565b8351903d90823e3d90fd5b895192507f536166655065726d69743a20646f6d61696e20736570617261746f72000000008d610b2d856103fc565b601c85528401526107d1565b508c825114156109e4565b91909897949896939695929573ffffffffffffffffffffffffffffffffffffffff966040519060208201907f8fcbaf0c000000000000000000000000000000000000000000000000000000008252898516602484015273def1c0ded9bec7f1a1670819833240f027b25eff604484015260648301528960848301528b151560a483015260ff861660c48301528660e48301526101048881840152825261014082019082821067ffffffffffffffff8311176104185760009283926040525190828b88165af196610c126104fa565b988880610db8575b80610d9f575b610d9157604051907f7ecebe000000000000000000000000000000000000000000000000000000000082528285166004830152602082602481868a165afa91821561091d57600092610d5d575b5080421180610d54575b61074e5761074c9b9c80600014610d4757610cb98c8c857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b8a898d16610823565b604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208401947fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb8652868916604086015273def1c0ded9bec7f1a1670819833240f027b25eff606086015201608084015260a0830152151560c082015260c0815261074281610447565b610cb98c8c856000610cb0565b50801515610c77565b9091506020813d602011610d89575b81610d796020938361047f565b8101031261034057519038610c6d565b3d9150610d6c565b505050505050505050509050565b50610db360208b518c010160208c0161052a565b610c20565b5089511515610c1a565b959293909491956040968751967f095ea7b300000000000000000000000000000000000000000000000000000000602089015273def1c0ded9bec7f1a1670819833240f027b25eff602489015286604489015260448852610e2288610463565b73ffffffffffffffffffffffffffffffffffffffff6000808a8c51610ec681610e8560208201947f0c53c51c000000000000000000000000000000000000000000000000000000008652888b16602484015260a0604484015260c48301906103b9565b8c60648301528d608483015260ff8c1660a4830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261047f565b5190828589165af197610ed76104fa565b9989806110ae575b8061102a575b61101c578b51917f7ecebe000000000000000000000000000000000000000000000000000000000083528386166004840152602083602481878b165afa928315611011578c918c91600095610fd5575b509084610f46939289888c16610823565b602081519101208b51907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208301937f23d10def3caacba2e4042e0c75d44a42d2558aabcf5ce951d0642a8032e1e6538552018d830152838616606083015260808201526080815260a0810181811067ffffffffffffffff8211176104185761074c9c525190209316610968565b92509350506020813d602011611009575b81610ff36020938361047f565b810103126103405751918b908b90610f46610f35565b3d9150610fe6565b8d513d6000823e3d90fd5b505050505050505050505050565b508a518b0160208c8183019203126103405760208c015167ffffffffffffffff8111610340578c0181603f82011215610340578060208f9201519261106e846104c0565b9061107b8451928361047f565b84825260208201938584010111610340578f6110a9948461109f9260209501610396565b805101019061052a565b610ee5565b508a511515610edf56fea26469706673582212206f3b9dd00e0189e6fe8cd6490860f80beb36503e8578db282f622702781dee8864736f6c63430008150033
Deployed Bytecode
0x6040608081526004908136101561001557600080fd5b600091823560e01c908163110f67931461026a5781633a46c4e1146101c0578163a98fcbf11461009e575063d4b839921461004f57600080fd5b3461009a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009a576020905173def1c0ded9bec7f1a1670819833240f027b25eff8152f35b5080fd5b82846101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a576100f3610311565b6100fb610345565b60a4359283151584036101b95760c4359060ff821682036101b5576101243567ffffffffffffffff81116101b1579161013e610157949288999a94369101610368565b969095610104359460e435946084359260643592610b44565b8185519283928337810183815203903473def1c0ded9bec7f1a1670819833240f027b25eff5af1906101876104fa565b91156101a857906101a491519182916020835260208301906103b9565b0390f35b50602081519101fd5b8680fd5b8580fd5b8480fd5b80fd5b82846101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a57610215610311565b61021d610345565b60a4359260ff841684036101b9576101043567ffffffffffffffff81116101b557916102528697989261015794369101610368565b95909460e4359360c43593608435926064359261057b565b82846101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101bd5782359273ffffffffffffffffffffffffffffffffffffffff8416840361009a576102bf610311565b936102c8610345565b946084359260ff841684036101b95760e43567ffffffffffffffff81116101b557916102fd8697989261015794369101610368565b95909460c4359360a4359360643592610dc2565b602435907fffffffff000000000000000000000000000000000000000000000000000000008216820361034057565b600080fd5b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361034057565b9181601f840112156103405782359167ffffffffffffffff8311610340576020838186019501011161034057565b60005b8381106103a95750506000910152565b8181015183820152602001610399565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936103f581518092818752878088019101610396565b0116010190565b6040810190811067ffffffffffffffff82111761041857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff82111761041857604052565b6080810190811067ffffffffffffffff82111761041857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761041857604052565b67ffffffffffffffff811161041857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3d15610525573d9061050b826104c0565b91610519604051938461047f565b82523d6000602084013e565b606090565b90816020910312610340575180151581036103405790565b6040519061054f826103fc565b601382527f536166655065726d69743a2065787069726564000000000000000000000000006020830152565b90959294919796939773ffffffffffffffffffffffffffffffffffffffff966040519760208901987fd505accf000000000000000000000000000000000000000000000000000000008a52818416602482015273def1c0ded9bec7f1a1670819833240f027b25eff60448201528860648201528b608482015260ff861660a48201528660c48201528760e482015260e48152610120810181811067ffffffffffffffff821117610418576040526000809a81925190828589165af19761063f6104fa565b9989806107c7575b806107ae575b61079f576040517f7ecebe000000000000000000000000000000000000000000000000000000000081528386166004820152602081602481878b165afa91821561079357809261075e575b50508c421161074e5761074c9b9c6106b68c8c84868a898d16610823565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040519260208401947f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98652868916604086015273def1c0ded9bec7f1a1670819833240f027b25eff606086015260808501520160a083015260c082015260c0815261074281610447565b5190209316610968565b565b898b610758610542565b916107d1565b9091506020823d60201161078b575b8161077a6020938361047f565b810103126101bd5750513880610698565b3d915061076d565b604051903d90823e3d90fd5b50505050505050505050509050565b506107c260208c518d010160208d0161052a565b61064d565b508a511515610647565b9190916107e15750602081519101fd5b61081f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906103b9565b0390fd5b91929493941561092957602090604473ffffffffffffffffffffffffffffffffffffffff918260405195869485937fdd62ed3e00000000000000000000000000000000000000000000000000000000855216600484015273def1c0ded9bec7f1a1670819833240f027b25eff6024840152165afa90811561091d576000916108ec575b50036108b0575050565b604051916108bd836103fc565b601283527f536166655065726d69743a206661696c6564000000000000000000000000000060208401526107d1565b906020823d8211610915575b816109056020938361047f565b810103126101bd575051386108a6565b3d91506108f8565b6040513d6000823e3d90fd5b50505060405191610939836103fc565b601683527f536166655065726d69743a207a65726f206e6f6e63650000000000000000000060208401526107d1565b94957fffffffff000000000000000000000000000000000000000000000000000000009897969491929473ffffffffffffffffffffffffffffffffffffffff948560409889519060209d8e830198168852600482526109c6826103fc565b600097889384935192165afa6109da6104fa565b9080158015610b39575b610afe57508b818051810103126101b5579260809260ff8d96938789970151908c5190898201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610a4581610463565b519020938b51948552168684015289830152606082015282805260015afa15610af357518116918215610ab7571603610a7e5750505050565b7f536166655065726d69743a2077726f6e67207369676e65720000000000000000905193610aab856103fc565b601885528401526107d1565b5050507f536166655065726d69743a20626164207369676e617475726500000000000000905193610ae7856103fc565b601985528401526107d1565b8351903d90823e3d90fd5b895192507f536166655065726d69743a20646f6d61696e20736570617261746f72000000008d610b2d856103fc565b601c85528401526107d1565b508c825114156109e4565b91909897949896939695929573ffffffffffffffffffffffffffffffffffffffff966040519060208201907f8fcbaf0c000000000000000000000000000000000000000000000000000000008252898516602484015273def1c0ded9bec7f1a1670819833240f027b25eff604484015260648301528960848301528b151560a483015260ff861660c48301528660e48301526101048881840152825261014082019082821067ffffffffffffffff8311176104185760009283926040525190828b88165af196610c126104fa565b988880610db8575b80610d9f575b610d9157604051907f7ecebe000000000000000000000000000000000000000000000000000000000082528285166004830152602082602481868a165afa91821561091d57600092610d5d575b5080421180610d54575b61074e5761074c9b9c80600014610d4757610cb98c8c857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b8a898d16610823565b604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208401947fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb8652868916604086015273def1c0ded9bec7f1a1670819833240f027b25eff606086015201608084015260a0830152151560c082015260c0815261074281610447565b610cb98c8c856000610cb0565b50801515610c77565b9091506020813d602011610d89575b81610d796020938361047f565b8101031261034057519038610c6d565b3d9150610d6c565b505050505050505050509050565b50610db360208b518c010160208c0161052a565b610c20565b5089511515610c1a565b959293909491956040968751967f095ea7b300000000000000000000000000000000000000000000000000000000602089015273def1c0ded9bec7f1a1670819833240f027b25eff602489015286604489015260448852610e2288610463565b73ffffffffffffffffffffffffffffffffffffffff6000808a8c51610ec681610e8560208201947f0c53c51c000000000000000000000000000000000000000000000000000000008652888b16602484015260a0604484015260c48301906103b9565b8c60648301528d608483015260ff8c1660a4830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261047f565b5190828589165af197610ed76104fa565b9989806110ae575b8061102a575b61101c578b51917f7ecebe000000000000000000000000000000000000000000000000000000000083528386166004840152602083602481878b165afa928315611011578c918c91600095610fd5575b509084610f46939289888c16610823565b602081519101208b51907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208301937f23d10def3caacba2e4042e0c75d44a42d2558aabcf5ce951d0642a8032e1e6538552018d830152838616606083015260808201526080815260a0810181811067ffffffffffffffff8211176104185761074c9c525190209316610968565b92509350506020813d602011611009575b81610ff36020938361047f565b810103126103405751918b908b90610f46610f35565b3d9150610fe6565b8d513d6000823e3d90fd5b505050505050505050505050565b508a518b0160208c8183019203126103405760208c015167ffffffffffffffff8111610340578c0181603f82011215610340578060208f9201519261106e846104c0565b9061107b8451928361047f565b84825260208201938584010111610340578f6110a9948461109f9260209501610396565b805101019061052a565b610ee5565b508a511515610edf56fea26469706673582212206f3b9dd00e0189e6fe8cd6490860f80beb36503e8578db282f622702781dee8864736f6c63430008150033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.