S Price: $0.478377 (+6.06%)

Contract

0x66caA97eA3527177F11302B39Bf619A000EdC50C

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ManagerImplementation

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 8 : ManagerImplementation.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

import '../smart-account/ISmartAccount.sol';
import './IManager.sol';
import '../library/Consts.sol';
import '../library/Errors.sol';
import './ManagerStorage.sol';

contract ManagerImplementation is ManagerStorage {

    event AddExecutor(address executor);

    event RemoveExecutor(address executor);

    event CreateSmartAccount(address indexed owner, address indexed smartAccount);

    address public immutable smartAccountTemplate;

    address public immutable smartAccountImplementation;

    constructor (address smartAccountTemplate_, address smartAccountImplementation_) {
        smartAccountTemplate = smartAccountTemplate_;
        smartAccountImplementation = smartAccountImplementation_;
    }

    //================================================================================
    // Getter
    //================================================================================

    function getGateway(uint256 gatewayIdx) external view returns (address) {
        return _gateways[gatewayIdx];
    }

    function isExecutor(address executor) external view returns (bool) {
        return _executors[executor];
    }

    function getSmartAccount(address owner) external view returns (address) {
        return _smartAccounts[owner];
    }

    function getOpGasTokens() external view returns (address[] memory) {
        return _opGasTokens;
    }

    function getOpGases() external view returns(uint256[6][] memory) {
        return _opGases;
    }

    function getOpGas(uint256 bIndex, uint256 opIndex) external view returns (uint256) {
        return _opGases[bIndex][opIndex];
    }

    //================================================================================
    // Admin
    //================================================================================

    function setGateways(address[] memory gateways) external _onlyAdmin_ {
        _gateways = gateways;
    }

    function addExecutor(address executor) external _onlyAdmin_ {
        _executors[executor] = true;
        emit AddExecutor(executor);
    }

    function removeExecutor(address executor) external _onlyAdmin_ {
        _executors[executor] = false;
        emit RemoveExecutor(executor);
    }

    function setOpGasTokens(address[] memory tokens) external _onlyAdmin_ {
        _opGasTokens = tokens;
    }

    function setOpGases(uint256[6][] memory opGases) external _onlyAdmin_ {
        _opGases = opGases;
    }

    //================================================================================
    // Interaction
    //================================================================================

    receive() external payable {
        address smartAccount = _smartAccounts[msg.sender];
        if (smartAccount == address(0)) {
            smartAccount = _clone(smartAccountTemplate);
            ISmartAccount(smartAccount).setOwner(msg.sender);
            _smartAccounts[msg.sender] = smartAccount;
            emit CreateSmartAccount(msg.sender, smartAccount);
        }

        (bool success, ) = payable(smartAccount).call{value: msg.value}('');
        require(success, Errors.TRANSFER_ETH_FAIL);
    }

    //================================================================================
    // Internal
    //================================================================================

    function _clone(address source) internal returns (address target) {
        bytes20 sourceBytes = bytes20(source);
        assembly {
            let c := mload(0x40)
            mstore(c, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
            mstore(add(c, 0x14), sourceBytes)
            mstore(add(c, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
            target := create(0, c, 0x37)
        }
    }

}

File 2 of 8 : Consts.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

library Consts {

    address internal constant TOKEN_ETH = address(1);

    // op index
    uint256 internal constant OP_INDEX_LENGTH = 6;
    uint256 internal constant OP_INDEX_ADD_MARGIN = 0;
    uint256 internal constant OP_INDEX_REMOVE_MARGIN = 1;
    uint256 internal constant OP_INDEX_TRADE = 2;
    uint256 internal constant OP_INDEX_ADD_MARGIN_AND_TRADE = 3;
    uint256 internal constant OP_INDEX_TRADE_AND_REMOVE_MARGIN = 4;
    uint256 internal constant OP_INDEX_WITHDRAW = 5;

}

File 3 of 8 : Errors.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

library Errors {

    string internal constant ETH_BALANCE_0 = 'EB0';
    string internal constant INSUFFICIENT_EXECUTION_FEE = 'IEF';
    string internal constant INVALID_OP_GAS_TOKEN = 'IOGT';
    string internal constant ONLY_EXECUTOR = 'OE';
    string internal constant ONLY_EXECUTOR_OR_OWNER = 'OEO';
    string internal constant OWNER_ALREADY_SET = 'OAS';
    string internal constant TRANSFER_ETH_FAIL = 'TEF';
    string internal constant WRONG_TOKEN_IN_AMOUNT = 'WTIA';
    string internal constant WRONG_TOKEN_OUT_AMOUNT = 'WTOA';

}

File 4 of 8 : IManager.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

interface IManager {

    function getGateway(uint256 gatewayIdx) external view returns (address);

    function smartAccountTemplate() external view returns (address);

    function smartAccountImplementation() external view returns (address);

    function isExecutor(address executor) external view returns (bool);

    function getSmartAccount(address owner) external view returns (address);

    function getOpGasTokens() external view returns (address[] memory);

    function getOpGases() external view returns(uint256[6][] memory);

    function getOpGas(uint256 bIndex, uint256 opIndex) external view returns (uint256);

    function setGateways(address[] memory gateways) external;

    function addExecutor(address executor) external;

    function removeExecutor(address executor) external;

    function setOpGasTokens(address[] memory tokens) external;

    function setOpGases(uint256[6][] memory opGases) external;

}

File 5 of 8 : ManagerStorage.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

import '../utils/Admin.sol';
import '../utils/Implementation.sol';

abstract contract ManagerStorage is Admin, Implementation {

    address[] internal _gateways;

    mapping (address => bool) internal _executors;

    mapping (address => address) internal _smartAccounts;

    address[] internal _opGasTokens;

    uint256[6][] internal _opGases;

}

File 6 of 8 : ISmartAccount.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

interface ISmartAccount {

    function setOwner(address owner_) external;

    function requestAddMargin(
        uint256 gatewayIdx,
        uint256 pTokenId,
        address bToken,
        uint256 bAmount
    ) external;

    function requestRemoveMargin(
        uint256 gatewayIdx,
        uint256 pTokenId,
        address bToken,
        uint256 bAmount
    ) external;

    function requestTrade(
        uint256 gatewayIdx,
        uint256 pTokenId,
        bytes32 symbolId,
        int256[] memory tradeParams
    ) external;

    function requestAddMarginAndTrade(
        uint256 gatewayIdx,
        uint256 pTokenId,
        address bToken,
        uint256 bAmount,
        bytes32 symbolId,
        int256[] calldata tradeParams
    ) external;

    function requestTradeAndRemoveMargin(
        uint256 gatewayIdx,
        uint256 pTokenId,
        address bToken,
        uint256 bAmount,
        bytes32 symbolId,
        int256[] calldata tradeParams
    ) external;

    function withdraw(address token, uint256 amount) external;

    function withdrawEthAndB0() external;

}

File 7 of 8 : Admin.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

abstract contract Admin {

    error OnlyAdmin();

    event NewAdmin(address newAdmin);

    address public admin;

    modifier _onlyAdmin_() {
        if (msg.sender != admin) {
            revert OnlyAdmin();
        }
        _;
    }

    constructor () {
        admin = msg.sender;
        emit NewAdmin(admin);
    }

    /**
     * @notice Set a new admin for the contract.
     * @dev This function allows the current admin to assign a new admin address without performing any explicit verification.
     *      It's the current admin's responsibility to ensure that the 'newAdmin' address is correct and secure.
     * @param newAdmin The address of the new admin.
     */
    function setAdmin(address newAdmin) external _onlyAdmin_ {
        admin = newAdmin;
        emit NewAdmin(newAdmin);
    }

}

File 8 of 8 : Implementation.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

import './Admin.sol';

abstract contract Implementation is Admin {

    event NewImplementation(address newImplementation);

    address public implementation;

    // @notice Set a new implementation address for the contract
    function setImplementation(address newImplementation) external _onlyAdmin_ {
        implementation = newImplementation;
        emit NewImplementation(newImplementation);
    }

}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"smartAccountTemplate_","type":"address"},{"internalType":"address","name":"smartAccountImplementation_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"OnlyAdmin","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"executor","type":"address"}],"name":"AddExecutor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"smartAccount","type":"address"}],"name":"CreateSmartAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"executor","type":"address"}],"name":"RemoveExecutor","type":"event"},{"inputs":[{"internalType":"address","name":"executor","type":"address"}],"name":"addExecutor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gatewayIdx","type":"uint256"}],"name":"getGateway","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"bIndex","type":"uint256"},{"internalType":"uint256","name":"opIndex","type":"uint256"}],"name":"getOpGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOpGasTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOpGases","outputs":[{"internalType":"uint256[6][]","name":"","type":"uint256[6][]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"getSmartAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"executor","type":"address"}],"name":"isExecutor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"executor","type":"address"}],"name":"removeExecutor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gateways","type":"address[]"}],"name":"setGateways","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"setOpGasTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[6][]","name":"opGases","type":"uint256[6][]"}],"name":"setOpGases","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"smartAccountImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"smartAccountTemplate","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405234801561001057600080fd5b50604051610fb3380380610fb383398101604081905261002f916100aa565b600080546001600160a01b031916339081179091556040519081527f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c9060200160405180910390a16001600160a01b039182166080521660a0526100dd565b80516001600160a01b03811681146100a557600080fd5b919050565b600080604083850312156100bd57600080fd5b6100c68361008e565b91506100d46020840161008e565b90509250929050565b60805160a051610eaa61010960003960006103f401526000818161012a01526105180152610eaa6000f3fe6080604052600436106101025760003560e01c8063704b6c0211610095578063b1c2455311610064578063b1c245531461047d578063d784d4261461049d578063debfda30146104bd578063ecc268e614610506578063f851a4401461053a57600080fd5b8063704b6c02146103c257806370a5f6f1146103e25780639199a07c1461041657806394abac1b1461044f57600080fd5b806338a64991116100d157806338a649911461033e57806341875b041461036057806346001b1b146103825780635c60da1b146103a257600080fd5b80631f398b63146102a15780631f5a0bbe146102c157806324788429146102e157806330cc0e0c1461030157600080fd5b3661029c57336000908152600460205260409020546001600160a01b0316806102005761014e7f000000000000000000000000000000000000000000000000000000000000000061055a565b6040516313af403560e01b81523360048201529091506001600160a01b038216906313af403590602401600060405180830381600087803b15801561019257600080fd5b505af11580156101a6573d6000803e3d6000fd5b50503360008181526004602052604080822080546001600160a01b0319166001600160a01b03881690811790915590519094509192507ff912317e56897e4cecdb17f53231e06e09a2a0577f59493b0c31f0bd399d7a9e91a35b6000816001600160a01b03163460405160006040518083038185875af1925050503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b5050905080604051806040016040528060038152602001622a22a360e91b8152509061029a5760405162461bcd60e51b81526004016102919190610ad8565b60405180910390fd5b005b600080fd5b3480156102ad57600080fd5b5061029a6102bc366004610bba565b6105ac565b3480156102cd57600080fd5b5061029a6102dc366004610cb2565b6105ee565b3480156102ed57600080fd5b5061029a6102fc366004610cb2565b610674565b34801561030d57600080fd5b5061032161031c366004610cd4565b6106f0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561034a57600080fd5b50610353610720565b6040516103359190610ced565b34801561036c57600080fd5b50610375610782565b6040516103359190610d3a565b34801561038e57600080fd5b5061029a61039d366004610da4565b610800565b3480156103ae57600080fd5b50600154610321906001600160a01b031681565b3480156103ce57600080fd5b5061029a6103dd366004610cb2565b61083e565b3480156103ee57600080fd5b506103217f000000000000000000000000000000000000000000000000000000000000000081565b34801561042257600080fd5b50610321610431366004610cb2565b6001600160a01b039081166000908152600460205260409020541690565b34801561045b57600080fd5b5061046f61046a366004610e3c565b6108b7565b604051908152602001610335565b34801561048957600080fd5b5061029a610498366004610da4565b6108f4565b3480156104a957600080fd5b5061029a6104b8366004610cb2565b610932565b3480156104c957600080fd5b506104f66104d8366004610cb2565b6001600160a01b031660009081526003602052604090205460ff1690565b6040519015158152602001610335565b34801561051257600080fd5b506103217f000000000000000000000000000000000000000000000000000000000000000081565b34801561054657600080fd5b50600054610321906001600160a01b031681565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f0949350505050565b6000546001600160a01b031633146105d757604051634755657960e01b815260040160405180910390fd5b80516105ea9060069060208401906109ab565b5050565b6000546001600160a01b0316331461061957604051634755657960e01b815260040160405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600117905590519182527f93c7cc308c27512f308819cbaa4c96440f4f9d65281fad8e5ef00e47040f8b5d91015b60405180910390a150565b6000546001600160a01b0316331461069f57604051634755657960e01b815260040160405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916905590519182527fa6ebdea43a26de412580953b52a868ea9a84910403c1b182e06a9adf818922869101610669565b60006002828154811061070557610705610e5e565b6000918252602090912001546001600160a01b031692915050565b6060600580548060200260200160405190810160405280929190818152602001828054801561077857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161075a575b5050505050905090565b60606006805480602002602001604051908101604052809291908181526020016000905b828210156107f7576000848152602090206040805160c08101918290529160068581029091019182845b8154815260200190600101908083116107d0575050505050815260200190600101906107a6565b50505050905090565b6000546001600160a01b0316331461082b57604051634755657960e01b815260040160405180910390fd5b80516105ea906002906020840190610a05565b6000546001600160a01b0316331461086957604051634755657960e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c90602001610669565b6000600683815481106108cc576108cc610e5e565b906000526020600020906006020182600681106108eb576108eb610e5e565b01549392505050565b6000546001600160a01b0316331461091f57604051634755657960e01b815260040160405180910390fd5b80516105ea906005906020840190610a05565b6000546001600160a01b0316331461095d57604051634755657960e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f6b70829fcbe4891157f7a7496f9870927de3c8237adbe9cd39bae09b7382c40990602001610669565b8280548282559060005260206000209060060281019282156109f5579160200282015b828111156109f55782516109e59083906006610a66565b50916020019190600601906109ce565b50610a01929150610a94565b5090565b828054828255906000526020600020908101928215610a5a579160200282015b82811115610a5a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a25565b50610a01929150610ab1565b8260068101928215610a5a579160200282015b82811115610a5a578251825591602001919060010190610a79565b80821115610a01576000610aa88282610ac6565b50600601610a94565b5b80821115610a015760008155600101610ab2565b50610ad5906006810190610ab1565b50565b600060208083528351808285015260005b81811015610b0557858101830151858201604001528201610ae9565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715610b5f57610b5f610b26565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610b8e57610b8e610b26565b604052919050565b600067ffffffffffffffff821115610bb057610bb0610b26565b5060051b60200190565b60006020808385031215610bcd57600080fd5b823567ffffffffffffffff811115610be457600080fd5b8301601f8082018613610bf657600080fd5b8135610c09610c0482610b96565b610b65565b81815260c09182028401850191858201919089841115610c2857600080fd5b948601945b83861015610c89578985870112610c445760008081fd5b610c4c610b3c565b808288018c811115610c5e5760008081fd5b885b81811015610c775780358452928a01928a01610c60565b50508452509485019491860191610c2d565b5098975050505050505050565b80356001600160a01b0381168114610cad57600080fd5b919050565b600060208284031215610cc457600080fd5b610ccd82610c96565b9392505050565b600060208284031215610ce657600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015610d2e5783516001600160a01b031683529284019291840191600101610d09565b50909695505050505050565b602080825282518282018190526000919084820190604085019084805b82811015610d9757845184835b6006811015610d8157825182529188019190880190600101610d64565b5050509385019360c09390930192600101610d57565b5091979650505050505050565b60006020808385031215610db757600080fd5b823567ffffffffffffffff811115610dce57600080fd5b8301601f81018513610ddf57600080fd5b8035610ded610c0482610b96565b81815260059190911b82018301908381019087831115610e0c57600080fd5b928401925b82841015610e3157610e2284610c96565b82529284019290840190610e11565b979650505050505050565b60008060408385031215610e4f57600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fdfea26469706673582212200dfc6df4cfe93a8da1c541dc2001b60002bb63ed221b4438b84374328873321764736f6c63430008140033000000000000000000000000798d083cba08a10b11affa2d92a407c15ec8040d000000000000000000000000c8d6bde488a3c6af322fb20c2654e311792e44a8

Deployed Bytecode

0x6080604052600436106101025760003560e01c8063704b6c0211610095578063b1c2455311610064578063b1c245531461047d578063d784d4261461049d578063debfda30146104bd578063ecc268e614610506578063f851a4401461053a57600080fd5b8063704b6c02146103c257806370a5f6f1146103e25780639199a07c1461041657806394abac1b1461044f57600080fd5b806338a64991116100d157806338a649911461033e57806341875b041461036057806346001b1b146103825780635c60da1b146103a257600080fd5b80631f398b63146102a15780631f5a0bbe146102c157806324788429146102e157806330cc0e0c1461030157600080fd5b3661029c57336000908152600460205260409020546001600160a01b0316806102005761014e7f000000000000000000000000798d083cba08a10b11affa2d92a407c15ec8040d61055a565b6040516313af403560e01b81523360048201529091506001600160a01b038216906313af403590602401600060405180830381600087803b15801561019257600080fd5b505af11580156101a6573d6000803e3d6000fd5b50503360008181526004602052604080822080546001600160a01b0319166001600160a01b03881690811790915590519094509192507ff912317e56897e4cecdb17f53231e06e09a2a0577f59493b0c31f0bd399d7a9e91a35b6000816001600160a01b03163460405160006040518083038185875af1925050503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b5050905080604051806040016040528060038152602001622a22a360e91b8152509061029a5760405162461bcd60e51b81526004016102919190610ad8565b60405180910390fd5b005b600080fd5b3480156102ad57600080fd5b5061029a6102bc366004610bba565b6105ac565b3480156102cd57600080fd5b5061029a6102dc366004610cb2565b6105ee565b3480156102ed57600080fd5b5061029a6102fc366004610cb2565b610674565b34801561030d57600080fd5b5061032161031c366004610cd4565b6106f0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561034a57600080fd5b50610353610720565b6040516103359190610ced565b34801561036c57600080fd5b50610375610782565b6040516103359190610d3a565b34801561038e57600080fd5b5061029a61039d366004610da4565b610800565b3480156103ae57600080fd5b50600154610321906001600160a01b031681565b3480156103ce57600080fd5b5061029a6103dd366004610cb2565b61083e565b3480156103ee57600080fd5b506103217f000000000000000000000000c8d6bde488a3c6af322fb20c2654e311792e44a881565b34801561042257600080fd5b50610321610431366004610cb2565b6001600160a01b039081166000908152600460205260409020541690565b34801561045b57600080fd5b5061046f61046a366004610e3c565b6108b7565b604051908152602001610335565b34801561048957600080fd5b5061029a610498366004610da4565b6108f4565b3480156104a957600080fd5b5061029a6104b8366004610cb2565b610932565b3480156104c957600080fd5b506104f66104d8366004610cb2565b6001600160a01b031660009081526003602052604090205460ff1690565b6040519015158152602001610335565b34801561051257600080fd5b506103217f000000000000000000000000798d083cba08a10b11affa2d92a407c15ec8040d81565b34801561054657600080fd5b50600054610321906001600160a01b031681565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f0949350505050565b6000546001600160a01b031633146105d757604051634755657960e01b815260040160405180910390fd5b80516105ea9060069060208401906109ab565b5050565b6000546001600160a01b0316331461061957604051634755657960e01b815260040160405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600117905590519182527f93c7cc308c27512f308819cbaa4c96440f4f9d65281fad8e5ef00e47040f8b5d91015b60405180910390a150565b6000546001600160a01b0316331461069f57604051634755657960e01b815260040160405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916905590519182527fa6ebdea43a26de412580953b52a868ea9a84910403c1b182e06a9adf818922869101610669565b60006002828154811061070557610705610e5e565b6000918252602090912001546001600160a01b031692915050565b6060600580548060200260200160405190810160405280929190818152602001828054801561077857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161075a575b5050505050905090565b60606006805480602002602001604051908101604052809291908181526020016000905b828210156107f7576000848152602090206040805160c08101918290529160068581029091019182845b8154815260200190600101908083116107d0575050505050815260200190600101906107a6565b50505050905090565b6000546001600160a01b0316331461082b57604051634755657960e01b815260040160405180910390fd5b80516105ea906002906020840190610a05565b6000546001600160a01b0316331461086957604051634755657960e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c90602001610669565b6000600683815481106108cc576108cc610e5e565b906000526020600020906006020182600681106108eb576108eb610e5e565b01549392505050565b6000546001600160a01b0316331461091f57604051634755657960e01b815260040160405180910390fd5b80516105ea906005906020840190610a05565b6000546001600160a01b0316331461095d57604051634755657960e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f6b70829fcbe4891157f7a7496f9870927de3c8237adbe9cd39bae09b7382c40990602001610669565b8280548282559060005260206000209060060281019282156109f5579160200282015b828111156109f55782516109e59083906006610a66565b50916020019190600601906109ce565b50610a01929150610a94565b5090565b828054828255906000526020600020908101928215610a5a579160200282015b82811115610a5a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610a25565b50610a01929150610ab1565b8260068101928215610a5a579160200282015b82811115610a5a578251825591602001919060010190610a79565b80821115610a01576000610aa88282610ac6565b50600601610a94565b5b80821115610a015760008155600101610ab2565b50610ad5906006810190610ab1565b50565b600060208083528351808285015260005b81811015610b0557858101830151858201604001528201610ae9565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715610b5f57610b5f610b26565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610b8e57610b8e610b26565b604052919050565b600067ffffffffffffffff821115610bb057610bb0610b26565b5060051b60200190565b60006020808385031215610bcd57600080fd5b823567ffffffffffffffff811115610be457600080fd5b8301601f8082018613610bf657600080fd5b8135610c09610c0482610b96565b610b65565b81815260c09182028401850191858201919089841115610c2857600080fd5b948601945b83861015610c89578985870112610c445760008081fd5b610c4c610b3c565b808288018c811115610c5e5760008081fd5b885b81811015610c775780358452928a01928a01610c60565b50508452509485019491860191610c2d565b5098975050505050505050565b80356001600160a01b0381168114610cad57600080fd5b919050565b600060208284031215610cc457600080fd5b610ccd82610c96565b9392505050565b600060208284031215610ce657600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015610d2e5783516001600160a01b031683529284019291840191600101610d09565b50909695505050505050565b602080825282518282018190526000919084820190604085019084805b82811015610d9757845184835b6006811015610d8157825182529188019190880190600101610d64565b5050509385019360c09390930192600101610d57565b5091979650505050505050565b60006020808385031215610db757600080fd5b823567ffffffffffffffff811115610dce57600080fd5b8301601f81018513610ddf57600080fd5b8035610ded610c0482610b96565b81815260059190911b82018301908381019087831115610e0c57600080fd5b928401925b82841015610e3157610e2284610c96565b82529284019290840190610e11565b979650505050505050565b60008060408385031215610e4f57600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fdfea26469706673582212200dfc6df4cfe93a8da1c541dc2001b60002bb63ed221b4438b84374328873321764736f6c63430008140033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000798d083cba08a10b11affa2d92a407c15ec8040d000000000000000000000000c8d6bde488a3c6af322fb20c2654e311792e44a8

-----Decoded View---------------
Arg [0] : smartAccountTemplate_ (address): 0x798D083cBA08a10B11aFFA2d92a407C15Ec8040d
Arg [1] : smartAccountImplementation_ (address): 0xC8d6bDE488A3C6AF322fB20C2654e311792e44a8

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000798d083cba08a10b11affa2d92a407c15ec8040d
Arg [1] : 000000000000000000000000c8d6bde488a3c6af322fb20c2654e311792e44a8


Block Transaction 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

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.