Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Advanced mode:
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.
Contract Source Code Verified (Exact Match)
Contract Name:
SimpleFactory
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 6969 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.0; import "@boringcrypto/boring-solidity/contracts/BoringFactory.sol"; import "@boringcrypto/boring-solidity/contracts/BoringBatchable.sol"; // ⢠⣶⣿⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⣿⣿⠁⠀⠙⢿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠸⣿⣆⠀⠀⠈⢻⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⡿⠿⠛⠻⠿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⣤⣤⣀⡀⠀ // ⠀⢻⣿⡆⠀⠀⠀⢻⣷⡀⠀⠀⠀⠀⠀⠀⢀⣴⣾⠿⠿⠿⣿⣿⠀⠀⠀⠀⠀⠈⢻⣷⡀⠀⠀⠀⠀⠀⢀⣠⣶⣿⠿⠛⠋⠉⠉⠻⣿⣦ // ⠀⠀⠻⣿⡄⠀⠀⠀⢿⣧⣠⣶⣾⠿⠿⠿⣿⡏⠀⠀⠀⠀⢹⣿⡀⠀⠀⠀⢸⣿⠈⢿⣷⠀⠀⠀⢀⣴⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⢸⣿ // ⠀⠀⠀⠹⣿⡄⠀⠀⠈⢿⣿⡏⠀⠀⠀⠀⢻⣷⠀⠀⠀⠀⠸⣿⡇⠀⠀⠀⠈⣿⠀⠘⢿⣧⣠⣶⡿⠋⠁⠀⠀⠀⠀⠀⠀⣀⣠⣤⣾⠟ // ⠀⠀⠀⠀⢻⣿⡄⠀⠀⠘⣿⣷⠀⠀⠀⠀⢸⣿⡀⠀⠀⠀⠀⣿⣷⠀⠀⠀⠀⣿⠀⢶⠿⠟⠛⠉⠀⠀⠀⠀⠀⢀⣤⣶⠿⠛⠋⠉⠁⠀ // ⠀⠀⠀⠀⠀⢿⣷⠀⠀⠀⠘⣿⡆⠀⠀⠀⠀⣿⡇⠀⠀⠀⠀⢹⣿⠀⠀⠀⠀⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠁⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠘⣿⡇⠀⠀⠀⢸⣷⠀⠀⠀⠀⢿⣷⠀⠀⠀⠀⠈⣿⡇⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⠀⣴⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⢻⣿⠀⠀⠀⠀⢿⣇⠀⠀⠀⠸⣿⡄⠀⠀⠀⠀⣿⣷⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⠀⣼⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠘⣿⡇⠀⠀⠀⠸⣿⡀⠀⠀⠀⢿⣇⠀⠀⠀⠀⢸⣿⡀⠀⢠⣿⠇⠀⠀⠀⠀⠀⣼⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⢹⣿⠀⠀⠀⠀⢻⣧⠀⠀⠀⠸⣿⡄⠀⠀⠀⢘⣿⡿⠿⠟⠋⠀⠀⠀⠀⠀⣼⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠈⣿⣇⠀⠀⠀⠈⣿⣄⠀⢀⣠⣿⣿⣶⣶⣶⡾⠋⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⡀⠀⠀⠀⠈⠻⠿⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⣧⡀⠀⠀⠀⣀⠀⠀⠀⣴⣤⣄⣀⣀⣀⣠⣤⣾⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣶⣶⣿⡿⠃⠀⠀⠉⠛⠻⠿⠿⠿⠿⢿⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ // ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ interface IOwnable { function transferOwnership(address newOwner) external; } contract SimpleFactory is BoringFactory, BoringBatchable { function transferOwnership(address owned, address newOwner) external { IOwnable(owned).transferOwnership(newOwner); } function exec(address target, bytes calldata data, uint256 value) external payable { (bool success, bytes memory result) = target.call{value: value}(data); if (!success) { // If call reverts // If there is return data, the call reverted without a reason or a custom error. if (result.length == 0) revert(); assembly { // We use Yul's revert() to bubble up errors from the target contract. revert(add(32, result), mload(result)) } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./interfaces/IMasterContract.sol"; // solhint-disable no-inline-assembly contract BoringFactory { event LogDeploy(address indexed masterContract, bytes data, address indexed cloneAddress); /// @notice Mapping from clone contracts to their masterContract. mapping(address => address) public masterContractOf; /// @notice Mapping from masterContract to an array of all clones /// On mainnet events can be used to get this list, but events aren't always easy to retrieve and /// barely work on sidechains. While this adds gas, it makes enumerating all clones much easier. mapping(address => address[]) public clonesOf; /// @notice Returns the count of clones that exists for a specific masterContract /// @param masterContract The address of the master contract. /// @return cloneCount total number of clones for the masterContract. function clonesOfCount(address masterContract) public view returns (uint256 cloneCount) { cloneCount = clonesOf[masterContract].length; } /// @notice Deploys a given master Contract as a clone. /// Any ETH transferred with this call is forwarded to the new clone. /// Emits `LogDeploy`. /// @param masterContract The address of the contract to clone. /// @param data Additional abi encoded calldata that is passed to the new clone via `IMasterContract.init`. /// @param useCreate2 Creates the clone by using the CREATE2 opcode, in this case `data` will be used as salt. /// @return cloneAddress Address of the created clone contract. function deploy( address masterContract, bytes calldata data, bool useCreate2 ) public payable returns (address cloneAddress) { require(masterContract != address(0), "BoringFactory: No masterContract"); bytes20 targetBytes = bytes20(masterContract); // Takes the first 20 bytes of the masterContract's address if (useCreate2) { // each masterContract has different code already. So clones are distinguished by their data only. bytes32 salt = keccak256(data); // Creates clone, more info here: https://blog.openzeppelin.com/deep-dive-into-the-minimal-proxy-contract/ assembly { let clone := mload(0x40) mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(clone, 0x14), targetBytes) mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) cloneAddress := create2(0, clone, 0x37, salt) } } else { assembly { let clone := mload(0x40) mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(clone, 0x14), targetBytes) mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) cloneAddress := create(0, clone, 0x37) } } masterContractOf[cloneAddress] = masterContract; clonesOf[masterContract].push(cloneAddress); IMasterContract(cloneAddress).init{value: msg.value}(data); emit LogDeploy(masterContract, data, cloneAddress); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; pragma experimental ABIEncoderV2; // solhint-disable avoid-low-level-calls // solhint-disable no-inline-assembly // WARNING!!! // Combining BoringBatchable with msg.value can cause double spending issues // https://www.paradigm.xyz/2021/08/two-rights-might-make-a-wrong/ import "./interfaces/IERC20.sol"; contract BaseBoringBatchable { /// @dev Helper function to extract a useful revert message from a failed call. /// If the returned data is malformed or not correctly abi encoded then this call can fail itself. function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) { // If the _res length is less than 68, then the transaction failed silently (without a revert message) if (_returnData.length < 68) return "Transaction reverted silently"; assembly { // Slice the sighash. _returnData := add(_returnData, 0x04) } return abi.decode(_returnData, (string)); // All that remains is the revert string } /// @notice Allows batched call to self (this contract). /// @param calls An array of inputs for each call. /// @param revertOnFail If True then reverts after a failed call and stops doing further calls. // F1: External is ok here because this is the batch function, adding it to a batch makes no sense // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value // C3: The length of the loop is fully under user control, so can't be exploited // C7: Delegatecall is only used on the same contract, so it's safe function batch(bytes[] calldata calls, bool revertOnFail) external payable { for (uint256 i = 0; i < calls.length; i++) { (bool success, bytes memory result) = address(this).delegatecall(calls[i]); if (!success && revertOnFail) { revert(_getRevertMsg(result)); } } } } contract BoringBatchable is BaseBoringBatchable { /// @notice Call wrapper that performs `ERC20.permit` on `token`. /// Lookup `IERC20.permit`. // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert) // if part of a batch this could be used to grief once as the second call would not need the permit function permitToken( IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public { token.permit(from, to, amount, deadline, v, r, s); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IMasterContract { /// @notice Init function that gets called from `BoringFactory.deploy`. /// Also kown as the constructor for cloned contracts. /// Any ETH send to `BoringFactory.deploy` ends up here. /// @param data Can be abi encoded arguments or anything else. function init(bytes calldata data) external payable; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); /// @notice EIP 2612 function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; }
{ "optimizer": { "enabled": true, "runs": 6969 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"masterContract","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":true,"internalType":"address","name":"cloneAddress","type":"address"}],"name":"LogDeploy","type":"event"},{"inputs":[{"internalType":"bytes[]","name":"calls","type":"bytes[]"},{"internalType":"bool","name":"revertOnFail","type":"bool"}],"name":"batch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"clonesOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"masterContract","type":"address"}],"name":"clonesOfCount","outputs":[{"internalType":"uint256","name":"cloneCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"masterContract","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bool","name":"useCreate2","type":"bool"}],"name":"deploy","outputs":[{"internalType":"address","name":"cloneAddress","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"exec","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"masterContractOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"}],"name":"permitToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owned","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50610dca806100206000396000f3fe60806040526004361061007b5760003560e01c8063ad8d5f481161004e578063ad8d5f481461011f578063bafe4f1414610132578063d2423b5114610175578063fba96be81461018857600080fd5b80631f54245b146100805780636d435421146100bd5780637c516e94146100df5780638fd43654146100ff575b600080fd5b61009361008e36600461087c565b6101d9565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100c957600080fd5b506100dd6100d83660046108e3565b610498565b005b3480156100eb57600080fd5b506100dd6100fa36600461091c565b61051d565b34801561010b57600080fd5b5061009361011a3660046109a5565b6105d5565b6100dd61012d3660046109d1565b61061a565b34801561013e57600080fd5b5061009361014d366004610a2d565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100dd610183366004610a51565b6106a7565b34801561019457600080fd5b506101cb6101a3366004610a2d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b6040519081526020016100b4565b600073ffffffffffffffffffffffffffffffffffffffff851661025d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f426f72696e67466163746f72793a204e6f206d6173746572436f6e747261637460448201526064015b60405180910390fd5b606085901b82156102e6576000858560405161027a929190610ad5565b604051809103902090506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152816037826000f593505050610342565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250505b73ffffffffffffffffffffffffffffffffffffffff8083166000818152602081815260408083208054958c167fffffffffffffffffffffffff000000000000000000000000000000000000000096871681179091558352600180835281842080549182018155845291909220018054909316821790925590517f4ddf47d4000000000000000000000000000000000000000000000000000000008152634ddf47d49034906103f69089908990600401610ae5565b6000604051808303818588803b15801561040f57600080fd5b505af1158015610423573d6000803e3d6000fd5b50505050508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fd62166f3c2149208e51788b1401cc356bf5da1fc6c7886a32e18570f57d88b3b8787604051610487929190610ae5565b60405180910390a350949350505050565b6040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063f2fde38b90602401600060405180830381600087803b15801561050157600080fd5b505af1158015610515573d6000803e3d6000fd5b505050505050565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301528781166024830152604482018790526064820186905260ff8516608483015260a4820184905260c4820183905289169063d505accf9060e401600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050505050505050505050565b600160205281600052604060002081815481106105f157600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b6000808573ffffffffffffffffffffffffffffffffffffffff16838686604051610645929190610ad5565b60006040518083038185875af1925050503d8060008114610682576040519150601f19603f3d011682016040523d82523d6000602084013e610687565b606091505b50915091508161051557805160000361069f57600080fd5b805181602001fd5b60005b8281101561078e57600080308686858181106106c8576106c8610b32565b90506020028101906106da9190610b61565b6040516106e8929190610ad5565b600060405180830381855af49150503d8060008114610723576040519150601f19603f3d011682016040523d82523d6000602084013e610728565b606091505b5091509150811580156107385750835b156107795761074681610794565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102549190610bea565b5050808061078690610c3b565b9150506106aa565b50505050565b60606044825110156107d957505060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015290565b600482019150818060200190518101906107f39190610cc9565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461081b57600080fd5b50565b60008083601f84011261083057600080fd5b50813567ffffffffffffffff81111561084857600080fd5b60208301915083602082850101111561086057600080fd5b9250929050565b8035801515811461087757600080fd5b919050565b6000806000806060858703121561089257600080fd5b843561089d816107f9565b9350602085013567ffffffffffffffff8111156108b957600080fd5b6108c58782880161081e565b90945092506108d8905060408601610867565b905092959194509250565b600080604083850312156108f657600080fd5b8235610901816107f9565b91506020830135610911816107f9565b809150509250929050565b600080600080600080600080610100898b03121561093957600080fd5b8835610944816107f9565b97506020890135610954816107f9565b96506040890135610964816107f9565b9550606089013594506080890135935060a089013560ff8116811461098857600080fd5b979a969950949793969295929450505060c08201359160e0013590565b600080604083850312156109b857600080fd5b82356109c3816107f9565b946020939093013593505050565b600080600080606085870312156109e757600080fd5b84356109f2816107f9565b9350602085013567ffffffffffffffff811115610a0e57600080fd5b610a1a8782880161081e565b9598909750949560400135949350505050565b600060208284031215610a3f57600080fd5b8135610a4a816107f9565b9392505050565b600080600060408486031215610a6657600080fd5b833567ffffffffffffffff80821115610a7e57600080fd5b818601915086601f830112610a9257600080fd5b813581811115610aa157600080fd5b8760208260051b8501011115610ab657600080fd5b602092830195509350610acc9186019050610867565b90509250925092565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610b9657600080fd5b83018035915067ffffffffffffffff821115610bb157600080fd5b60200191503681900382131561086057600080fd5b60005b83811015610be1578181015183820152602001610bc9565b50506000910152565b6020815260008251806020840152610c09816040850160208701610bc6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c93577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215610cdb57600080fd5b815167ffffffffffffffff80821115610cf357600080fd5b818401915084601f830112610d0757600080fd5b815181811115610d1957610d19610c9a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610d5f57610d5f610c9a565b81604052828152876020848701011115610d7857600080fd5b610d89836020830160208801610bc6565b97965050505050505056fea26469706673582212203df2f24fd3fb7fa413788a334d484f2e8d5383cd5582e8435f6e70c138e68c1964736f6c63430008110033
Deployed Bytecode
0x60806040526004361061007b5760003560e01c8063ad8d5f481161004e578063ad8d5f481461011f578063bafe4f1414610132578063d2423b5114610175578063fba96be81461018857600080fd5b80631f54245b146100805780636d435421146100bd5780637c516e94146100df5780638fd43654146100ff575b600080fd5b61009361008e36600461087c565b6101d9565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100c957600080fd5b506100dd6100d83660046108e3565b610498565b005b3480156100eb57600080fd5b506100dd6100fa36600461091c565b61051d565b34801561010b57600080fd5b5061009361011a3660046109a5565b6105d5565b6100dd61012d3660046109d1565b61061a565b34801561013e57600080fd5b5061009361014d366004610a2d565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100dd610183366004610a51565b6106a7565b34801561019457600080fd5b506101cb6101a3366004610a2d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b6040519081526020016100b4565b600073ffffffffffffffffffffffffffffffffffffffff851661025d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f426f72696e67466163746f72793a204e6f206d6173746572436f6e747261637460448201526064015b60405180910390fd5b606085901b82156102e6576000858560405161027a929190610ad5565b604051809103902090506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152816037826000f593505050610342565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250505b73ffffffffffffffffffffffffffffffffffffffff8083166000818152602081815260408083208054958c167fffffffffffffffffffffffff000000000000000000000000000000000000000096871681179091558352600180835281842080549182018155845291909220018054909316821790925590517f4ddf47d4000000000000000000000000000000000000000000000000000000008152634ddf47d49034906103f69089908990600401610ae5565b6000604051808303818588803b15801561040f57600080fd5b505af1158015610423573d6000803e3d6000fd5b50505050508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fd62166f3c2149208e51788b1401cc356bf5da1fc6c7886a32e18570f57d88b3b8787604051610487929190610ae5565b60405180910390a350949350505050565b6040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063f2fde38b90602401600060405180830381600087803b15801561050157600080fd5b505af1158015610515573d6000803e3d6000fd5b505050505050565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301528781166024830152604482018790526064820186905260ff8516608483015260a4820184905260c4820183905289169063d505accf9060e401600060405180830381600087803b1580156105b357600080fd5b505af11580156105c7573d6000803e3d6000fd5b505050505050505050505050565b600160205281600052604060002081815481106105f157600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169150829050565b6000808573ffffffffffffffffffffffffffffffffffffffff16838686604051610645929190610ad5565b60006040518083038185875af1925050503d8060008114610682576040519150601f19603f3d011682016040523d82523d6000602084013e610687565b606091505b50915091508161051557805160000361069f57600080fd5b805181602001fd5b60005b8281101561078e57600080308686858181106106c8576106c8610b32565b90506020028101906106da9190610b61565b6040516106e8929190610ad5565b600060405180830381855af49150503d8060008114610723576040519150601f19603f3d011682016040523d82523d6000602084013e610728565b606091505b5091509150811580156107385750835b156107795761074681610794565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102549190610bea565b5050808061078690610c3b565b9150506106aa565b50505050565b60606044825110156107d957505060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015290565b600482019150818060200190518101906107f39190610cc9565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461081b57600080fd5b50565b60008083601f84011261083057600080fd5b50813567ffffffffffffffff81111561084857600080fd5b60208301915083602082850101111561086057600080fd5b9250929050565b8035801515811461087757600080fd5b919050565b6000806000806060858703121561089257600080fd5b843561089d816107f9565b9350602085013567ffffffffffffffff8111156108b957600080fd5b6108c58782880161081e565b90945092506108d8905060408601610867565b905092959194509250565b600080604083850312156108f657600080fd5b8235610901816107f9565b91506020830135610911816107f9565b809150509250929050565b600080600080600080600080610100898b03121561093957600080fd5b8835610944816107f9565b97506020890135610954816107f9565b96506040890135610964816107f9565b9550606089013594506080890135935060a089013560ff8116811461098857600080fd5b979a969950949793969295929450505060c08201359160e0013590565b600080604083850312156109b857600080fd5b82356109c3816107f9565b946020939093013593505050565b600080600080606085870312156109e757600080fd5b84356109f2816107f9565b9350602085013567ffffffffffffffff811115610a0e57600080fd5b610a1a8782880161081e565b9598909750949560400135949350505050565b600060208284031215610a3f57600080fd5b8135610a4a816107f9565b9392505050565b600080600060408486031215610a6657600080fd5b833567ffffffffffffffff80821115610a7e57600080fd5b818601915086601f830112610a9257600080fd5b813581811115610aa157600080fd5b8760208260051b8501011115610ab657600080fd5b602092830195509350610acc9186019050610867565b90509250925092565b8183823760009101908152919050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610b9657600080fd5b83018035915067ffffffffffffffff821115610bb157600080fd5b60200191503681900382131561086057600080fd5b60005b83811015610be1578181015183820152602001610bc9565b50506000910152565b6020815260008251806020840152610c09816040850160208701610bc6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c93577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215610cdb57600080fd5b815167ffffffffffffffff80821115610cf357600080fd5b818401915084601f830112610d0757600080fd5b815181811115610d1957610d19610c9a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610d5f57610d5f610c9a565b81604052828152876020848701011115610d7857600080fd5b610d89836020830160208801610bc6565b97965050505050505056fea26469706673582212203df2f24fd3fb7fa413788a334d484f2e8d5383cd5582e8435f6e70c138e68c1964736f6c63430008110033
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.