S Price: $0.475636 (+5.45%)

Contract

0x798D083cBA08a10B11aFFA2d92a407C15Ec8040d

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:
SmartAccount

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

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

pragma solidity >=0.8.0 <0.9.0;

import '../manager/IManager.sol';
import '../library/Errors.sol';
import './SmartAccountStorage.sol';

contract SmartAccount is SmartAccountStorage {

    address public immutable manager;

    constructor (address manager_) {
        manager = manager_;
    }

    function implementation() public view returns (address) {
        return IManager(manager).smartAccountImplementation();
    }

    function setOwner(address owner_) external {
        require(owner == address(0), Errors.OWNER_ALREADY_SET);
        owner = owner_;
    }

    fallback() external payable {
        address imp = implementation();
        assembly {
            calldatacopy(0, 0, calldatasize())
            let result := delegatecall(gas(), imp, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            switch result
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }

    receive() external payable {}

}

File 2 of 4 : 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 3 of 4 : 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 4 of 4 : SmartAccountStorage.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

abstract contract SmartAccountStorage {

    address public owner;

}

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":"manager_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405234801561001057600080fd5b5060405161038938038061038983398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516102f86100916000396000818160ae015261012501526102f86000f3fe6080604052600436106100435760003560e01c806313af40351461007c578063481c6a751461009c5780635c60da1b146100ec5780638da5cb5b146101015761004a565b3661004a57005b6000610054610121565b90503660008037600080366000845af43d6000803e808015610075573d6000f35b3d6000fd5b005b34801561008857600080fd5b5061007a610097366004610233565b6101aa565b3480156100a857600080fd5b506100d07f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b3480156100f857600080fd5b506100d0610121565b34801561010d57600080fd5b506000546100d0906001600160a01b031681565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a5f6f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a59190610257565b905090565b6000546040805180820190915260038152624f415360e81b6020820152906001600160a01b0316156101f85760405162461bcd60e51b81526004016101ef9190610274565b60405180910390fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116811461023057600080fd5b50565b60006020828403121561024557600080fd5b81356102508161021b565b9392505050565b60006020828403121561026957600080fd5b81516102508161021b565b600060208083528351808285015260005b818110156102a157858101830151858201604001528201610285565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220b2383deed633f91db30366d8b4bf73843d32e24893ab57b9700f707a0f43ae4364736f6c634300081400330000000000000000000000003965e1e2863c2fe7201c9fdf26c53c779d061885

Deployed Bytecode

0x6080604052600436106100435760003560e01c806313af40351461007c578063481c6a751461009c5780635c60da1b146100ec5780638da5cb5b146101015761004a565b3661004a57005b6000610054610121565b90503660008037600080366000845af43d6000803e808015610075573d6000f35b3d6000fd5b005b34801561008857600080fd5b5061007a610097366004610233565b6101aa565b3480156100a857600080fd5b506100d07f0000000000000000000000003965e1e2863c2fe7201c9fdf26c53c779d06188581565b6040516001600160a01b03909116815260200160405180910390f35b3480156100f857600080fd5b506100d0610121565b34801561010d57600080fd5b506000546100d0906001600160a01b031681565b60007f0000000000000000000000003965e1e2863c2fe7201c9fdf26c53c779d0618856001600160a01b03166370a5f6f16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a59190610257565b905090565b6000546040805180820190915260038152624f415360e81b6020820152906001600160a01b0316156101f85760405162461bcd60e51b81526004016101ef9190610274565b60405180910390fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038116811461023057600080fd5b50565b60006020828403121561024557600080fd5b81356102508161021b565b9392505050565b60006020828403121561026957600080fd5b81516102508161021b565b600060208083528351808285015260005b818110156102a157858101830151858201604001528201610285565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220b2383deed633f91db30366d8b4bf73843d32e24893ab57b9700f707a0f43ae4364736f6c63430008140033

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

0000000000000000000000003965e1e2863c2fe7201c9fdf26c53c779d061885

-----Decoded View---------------
Arg [0] : manager_ (address): 0x3965E1e2863C2fE7201C9FDF26C53c779D061885

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003965e1e2863c2fe7201c9fdf26c53c779d061885


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.