ETH Price: $3,296.08 (-3.10%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00
Transaction Hash
Method
Block
From
To

There are no matching entries

> 10 Internal Transactions found.

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
156723142022-10-04 4:12:23844 days ago1664856743
0xd3110621...97989B670
 Contract Creation0 ETH
156689172022-10-03 16:47:59844 days ago1664815679
0xd3110621...97989B670
 Contract Creation0 ETH
156689172022-10-03 16:47:59844 days ago1664815679
0xd3110621...97989B670
 Contract Creation0 ETH
156611822022-10-02 14:52:47845 days ago1664722367
0xd3110621...97989B670
 Contract Creation0 ETH
156603052022-10-02 11:57:23845 days ago1664711843
0xd3110621...97989B670
 Contract Creation0 ETH
156602132022-10-02 11:38:47845 days ago1664710727
0xd3110621...97989B670
 Contract Creation0 ETH
156596052022-10-02 9:36:35845 days ago1664703395
0xd3110621...97989B670
 Contract Creation0 ETH
156596052022-10-02 9:36:35845 days ago1664703395
0xd3110621...97989B670
 Contract Creation0 ETH
156576332022-10-02 3:00:59846 days ago1664679659
0xd3110621...97989B670
 Contract Creation0 ETH
156576332022-10-02 3:00:59846 days ago1664679659
0xd3110621...97989B670
 Contract Creation0 ETH
156576262022-10-02 2:59:35846 days ago1664679575
0xd3110621...97989B670
 Contract Creation0 ETH
156576262022-10-02 2:59:35846 days ago1664679575
0xd3110621...97989B670
 Contract Creation0 ETH
156559982022-10-01 21:31:59846 days ago1664659919
0xd3110621...97989B670
 Contract Creation0 ETH
156557232022-10-01 20:36:11846 days ago1664656571
0xd3110621...97989B670
 Contract Creation0 ETH
156546592022-10-01 17:00:47846 days ago1664643647
0xd3110621...97989B670
 Contract Creation0 ETH
156546392022-10-01 16:56:47846 days ago1664643407
0xd3110621...97989B670
 Contract Creation0 ETH
156545672022-10-01 16:42:23846 days ago1664642543
0xd3110621...97989B670
 Contract Creation0 ETH
156541232022-10-01 15:11:35846 days ago1664637095
0xd3110621...97989B670
 Contract Creation0 ETH
156541232022-10-01 15:11:35846 days ago1664637095
0xd3110621...97989B670
 Contract Creation0 ETH
156541152022-10-01 15:09:59846 days ago1664636999
0xd3110621...97989B670
 Contract Creation0 ETH
156541152022-10-01 15:09:59846 days ago1664636999
0xd3110621...97989B670
 Contract Creation0 ETH
156454772022-09-30 10:12:59847 days ago1664532779
0xd3110621...97989B670
 Contract Creation0 ETH
156452252022-09-30 9:22:23847 days ago1664529743
0xd3110621...97989B670
 Contract Creation0 ETH
156452252022-09-30 9:22:23847 days ago1664529743
0xd3110621...97989B670
 Contract Creation0 ETH
156416102022-09-29 21:14:11848 days ago1664486051
0xd3110621...97989B670
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Erc20AssetFactory

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 16 : Erc20AssetFactory.sol
pragma solidity ^0.8.17;
import './Erc20Asset.sol';
import 'contracts/lib/factories/ContractData.sol';
import 'contracts/interfaces/position_trading/IPositionsController.sol';
import 'contracts/position_trading/assets/AssetFactoryBase.sol';
import 'contracts/interfaces/assets/typed/IErc20Asset.sol';
import 'contracts/interfaces/assets/typed/IErc20AssetFactory.sol';

contract Erc20AssetFactory is AssetFactoryBase, IErc20AssetFactory {
    constructor(address positionsController_)
        AssetFactoryBase(positionsController_)
    {}

    function setAsset(
        uint256 positionId,
        uint256 assetCode,
        address contractAddress
    ) external {
        _setAsset(positionId, assetCode, createAsset(contractAddress));
    }

    function createAsset(address contractAddress)
        internal
        returns (ContractData memory)
    {
        ContractData memory data;
        data.factory = address(this);
        data.contractAddr = address(
            new Erc20Asset(address(positionsController), this, contractAddress)
        );
        return data;
    }

    function _clone(address asset, address owner)
        internal
        override
        returns (IAsset)
    {
        return
            new Erc20Asset(
                owner,
                this,
                IErc20Asset(asset).getContractAddress()
            );
    }
}

File 2 of 16 : Erc20Asset.sol
pragma solidity ^0.8.17;
import 'contracts/position_trading/assets/AssetBase.sol';
import 'contracts/position_trading/PositionSnapshot.sol';
import 'contracts/interfaces/position_trading/IPositionAlgorithm.sol';
import 'contracts/interfaces/assets/typed/IErc20Asset.sol';

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
}

contract Erc20Asset is AssetBase, IErc20Asset {
    address contractAddress;

    constructor(
        address owner_,
        IAssetCloneFactory factory_,
        address contractAddress_
    ) AssetBase(owner_, factory_) {
        contractAddress = contractAddress_;
    }

    function count() external view override returns (uint256) {
        return IERC20(contractAddress).balanceOf(address(this));
    }

    function getContractAddress() external view override returns (address) {
        return contractAddress;
    }

    function withdrawInternal(address recipient, uint256 amount)
        internal
        virtual
        override
    {
        IERC20(contractAddress).transfer(recipient, amount);
    }

    function transferToAsset(uint256 amount, uint256[] calldata data) external {
        listener().beforeAssetTransfer(
            address(this),
            msg.sender,
            address(this),
            amount,
            data
        );
        uint256 lastCount = this.count();
        IERC20(contractAddress).transferFrom(msg.sender, address(this), amount);
        listener().afterAssetTransfer(
            address(this),
            msg.sender,
            address(this),
            this.count() - lastCount,
            data
        );
    }

    function clone(address owner) external override returns (IAsset) {
        return factory.clone(address(this), owner);
    }

    function assetTypeId() external pure override returns (uint256) {
        return 2;
    }
}

File 3 of 16 : ContractData.sol
pragma solidity ^0.8.17;
/// @dev data is generated by factory of contract
struct ContractData {
    address factory; // factory
    address contractAddr; // contract
}

File 4 of 16 : IPositionsController.sol
pragma solidity ^0.8.17;
import 'contracts/lib/factories/ContractData.sol';
import 'contracts/fee/IFeeSettings.sol';

interface IPositionsController {
    /// @dev returns fee settings
    function getFeeSettings() external view returns(IFeeSettings);

    /// @dev returns the position owner
    function ownerOf(uint256 positionId) external view returns (address);

    /// @dev changes position owner
    function transferPositionOwnership(uint256 positionId, address newOwner)
        external;

    /// @dev returns the position of the asset to its address
    function getAssetPositionId(address assetAddress)
        external
        view
        returns (uint256);

    /// @dev returns an asset by its code in position 1 or 2
    function getAsset(uint256 positionId, uint256 assetCode)
        external
        view
        returns (ContractData memory);

    /// @dev creates a position
    function createPosition() external;

    /// @dev sets an asset to position
    /// @param positionId position ID
    /// @param assetCode asset code 1 - owner asset 2 - output asset
    /// @param data asset contract data
    function setAsset(
        uint256 positionId,
        uint256 assetCode,
        ContractData calldata data
    ) external;

    /// @dev sets the position algorithm
    function setAlgorithm(uint256 positionId, ContractData calldata data)
        external;

    /// @dev returns the position algorithm
    function getAlgorithm(uint256 positionId)
        external
        view
        returns (ContractData memory data);

    /// @dev disables position editing
    function disableEdit(uint256 positionId) external;

    /// @dev returns position from the account's list of positions
    function positionOfOwnerByIndex(address account, uint256 index)
        external
        view
        returns (uint256);

    /// @dev returns the number of positions the account owns
    function ownedPositionsCount(address account)
        external
        view
        returns (uint256);
}

File 5 of 16 : AssetFactoryBase.sol
pragma solidity ^0.8.17;
import 'contracts/lib/factories/ContractData.sol';
import 'contracts/interfaces/position_trading/IPositionsController.sol';
import 'contracts/interfaces/assets/IAssetCloneFactory.sol';

abstract contract AssetFactoryBase is IAssetCloneFactory {
    IPositionsController public positionsController;

    constructor(address positionsController_) {
        positionsController = IPositionsController(positionsController_);
    }

    modifier onlyPositionOwner(uint256 positionId) {
        require(positionsController.ownerOf(positionId) == msg.sender);
        _;
    }

    function _setAsset(
        uint256 positionId,
        uint256 assetCode,
        ContractData memory contractData
    ) internal onlyPositionOwner(positionId) {
        positionsController.setAsset(positionId, assetCode, contractData);
    }

    function clone(address asset, address owner)
        external
        override
        returns (IAsset)
    {
        require(msg.sender == asset, 'only for assets');
        return _clone(asset, owner);
    }

    function _clone(address asset, address owner)
        internal
        virtual
        returns (IAsset);
}

File 6 of 16 : IErc20Asset.sol
pragma solidity ^0.8.17;
interface IErc20Asset {
    function getContractAddress() external returns (address);
}

File 7 of 16 : IErc20AssetFactory.sol
pragma solidity ^0.8.17;
interface IErc20AssetFactory {
    function setAsset(
        uint256 positionId,
        uint256 assetCode,
        address contractAddress
    ) external;
}

File 8 of 16 : AssetBase.sol
pragma solidity ^0.8.17;
import 'contracts/interfaces/assets/IAsset.sol';
import 'contracts/interfaces/assets/IAssetListener.sol';
import 'contracts/lib/ownable/OwnableSimple.sol';
import 'contracts/interfaces/assets/IAssetCloneFactory.sol';

/// @dev an asset always has an owner algorithm, asset event listener
abstract contract AssetBase is IAsset, OwnableSimple {
    IAssetCloneFactory public factory;
    bool internal _isNotifyListener;

    constructor(address owner_, IAssetCloneFactory factory_)
        OwnableSimple(owner_)
    {
        _owner = address(owner_);
        factory = factory_;
    }

    function listener() internal view returns (IAssetListener) {
        return IAssetListener(_owner);
    }

    function withdraw(address recipient, uint256 amount)
        external
        virtual
        override
        onlyOwner
    {
        uint256[] memory data;
        if (_isNotifyListener)
            listener().beforeAssetTransfer(
                address(this),
                address(this),
                recipient,
                amount,
                data
            );
        withdrawInternal(recipient, amount);
        if (_isNotifyListener)
            listener().afterAssetTransfer(
                address(this),
                address(this),
                recipient,
                amount,
                data
            );
    }

    function withdrawInternal(address recipient, uint256 amount)
        internal
        virtual;

    function isNotifyListener() external view returns (bool) {
        return _isNotifyListener;
    }

    function setNotifyListener(bool value) external onlyOwner {
        _isNotifyListener = value;
    }
}

File 9 of 16 : PositionSnapshot.sol
pragma solidity ^0.8.17;
// todo cut out
struct PositionSnapshot {
    uint256 owner;
    uint256 output;
    uint256 slippage;
}

File 10 of 16 : IPositionAlgorithm.sol
pragma solidity ^0.8.17;
import 'contracts/interfaces/assets/IAssetListener.sol';

interface IPositionAlgorithm is IAssetListener {
    /// @dev if true, the algorithm locks position editing
    function isPositionLocked(uint256 positionId) external view returns (bool);

    /// @dev transfers ownership of the asset to the specified address
    function transferAssetOwnerShipTo(address asset, address newOwner) external;
}

File 11 of 16 : IAsset.sol
pragma solidity ^0.8.17;
import 'contracts/interfaces/IOwnable.sol';

/// @dev asset abstraction
/// the owner of the asset is always the algorithm-observer of the asset
interface IAsset is IOwnable {
    /// @dev asset amount
    function count() external view returns (uint256);

    /// @dev withdrawal of a certain amount of asset to a certain address
    function withdraw(address recipient, uint256 amount) external;

    /// @dev creates a copy of the current asset, with 0 balance and the specified owner
    function clone(address owner) external returns (IAsset);

    /// @dev returns the asset type code (also used to check asset interface support)
    function assetTypeId() external returns (uint256);

    /// @dev if true, then notifies its observer (owner)
    function isNotifyListener() external returns (bool);

    /// @dev enables or disables the observer notification mechanism
    function setNotifyListener(bool value) external;
}

File 12 of 16 : IAssetListener.sol
pragma solidity ^0.8.17;
import 'contracts/position_trading/PositionSnapshot.sol';

interface IAssetListener {
    function beforeAssetTransfer(
        address asset,
        address from,
        address to,
        uint256 amount,
        uint256[] memory data
    ) external;

    function afterAssetTransfer(
        address asset,
        address from,
        address to,
        uint256 amount,
        uint256[] memory data
    ) external;
}

File 13 of 16 : OwnableSimple.sol
pragma solidity ^0.8.17;
import 'contracts/interfaces/IOwnable.sol';

/// @dev owanble, optimized, for dynamically generated contracts
contract OwnableSimple is IOwnable {
    address internal _owner;

    constructor(address owner_) {
        _owner = owner_;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, 'caller is not the owner');
        _;
    }

    function owner() external virtual override returns (address) {
        return _owner;
    }

    function transferOwnership(address newOwner) external override onlyOwner {
        _owner = newOwner;
    }
}

File 14 of 16 : IAssetCloneFactory.sol
pragma solidity ^0.8.17;
import 'contracts/interfaces/assets/IAsset.sol';

interface IAssetCloneFactory {
    /// @dev makes a copy of the asset (the amount of the asset will be 0)
    function clone(address asset, address owner) external returns (IAsset);
}

File 15 of 16 : IOwnable.sol
pragma solidity ^0.8.17;
interface IOwnable {
    function owner() external returns (address);

    function transferOwnership(address newOwner) external;
}

File 16 of 16 : IFeeSettings.sol
pragma solidity ^0.8.17;
interface IFeeSettings {
    function feeAddress() external returns (address); // address to pay fee

    function feePercent() external returns (uint256); // fee in 1/decimals for deviding values

    function feeDecimals() external view returns(uint256); // fee decimals

    function feeEth() external returns (uint256); // fee value for not dividing deal points
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"positionsController_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"clone","outputs":[{"internalType":"contract IAsset","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"positionsController","outputs":[{"internalType":"contract IPositionsController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"positionId","type":"uint256"},{"internalType":"uint256","name":"assetCode","type":"uint256"},{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setAsset","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051610f9d380380610f9d83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610f0a806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632cf0d82814610046578063df46332a14610075578063e4a4e4861461008a575b600080fd5b600054610059906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b610088610083366004610393565b61009d565b005b6100596100983660046103cc565b6100b5565b6100b083836100ab84610116565b6101b1565b505050565b6000336001600160a01b038416146101055760405162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920666f722061737365747360881b604482015260640160405180910390fd5b61010f83836102b6565b9392505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152308082526000546040516001600160a01b03909116919085906101609061036e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561019c573d6000803e3d6000fd5b506001600160a01b0316602082015292915050565b6000546040516331a9108f60e11b815260048101859052849133916001600160a01b0390911690636352211e90602401602060405180830381865afa1580156101fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102229190610405565b6001600160a01b03161461023557600080fd5b600054604051633be9df4d60e01b8152600481018690526024810185905283516001600160a01b03908116604483015260208501518116606483015290911690633be9df4d90608401600060405180830381600087803b15801561029857600080fd5b505af11580156102ac573d6000803e3d6000fd5b5050505050505050565b60008130846001600160a01b03166332a2c5d06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156102fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031e9190610405565b60405161032a9061036e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610366573d6000803e3d6000fd5b509392505050565b610ab28061042383390190565b6001600160a01b038116811461039057600080fd5b50565b6000806000606084860312156103a857600080fd5b833592506020840135915060408401356103c18161037b565b809150509250925092565b600080604083850312156103df57600080fd5b82356103ea8161037b565b915060208301356103fa8161037b565b809150509250929050565b60006020828403121561041757600080fd5b815161010f8161037b56fe608060405234801561001057600080fd5b50604051610ab2380380610ab283398101604081905261002f91610089565b600080546001600160a01b039485166001600160a01b0319918216179091556001805493851693821693909317909255600280549190931691161790556100d6565b6001600160a01b038116811461008657600080fd5b50565b60008060006060848603121561009e57600080fd5b83516100a981610071565b60208501519093506100ba81610071565b60408501519092506100cb81610071565b809150509250925092565b6109cd806100e56000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b1461011d5780639d8ae9c41461012e578063c3c782d51461014b578063c45a01551461015e578063f2fde38b14610171578063f3fef3a31461018457600080fd5b806306661abd146100ae5780630b4e99c3146100c957806332a2c5d0146100d057806333f8854c146100f55780638124b78e1461010a575b600080fd5b6100b6610197565b6040519081526020015b60405180910390f35b60026100b6565b6002546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b610108610103366004610702565b610209565b005b6100dd610118366004610799565b61043b565b6000546001600160a01b03166100dd565b600154600160a01b900460ff1660405190151581526020016100c0565b6101086101593660046107cb565b6104b8565b6001546100dd906001600160a01b031681565b61010861017f366004610799565b610509565b6101086101923660046107e8565b610555565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156101e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102049190610814565b905090565b600054604051635a7258d160e11b81526001600160a01b039091169063b4e4b1a2906102439030903390829089908990899060040161082d565b600060405180830381600087803b15801561025d57600080fd5b505af1158015610271573d6000803e3d6000fd5b505050506000306001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d99190610814565b6002546040516323b872dd60e01b8152336004820152306024820152604481018790529192506001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103559190610891565b506000546001600160a01b03166001600160a01b0316634268660a30333085306001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610814565b6103e091906108ae565b88886040518763ffffffff1660e01b81526004016104039695949392919061082d565b600060405180830381600087803b15801561041d57600080fd5b505af1158015610431573d6000803e3d6000fd5b5050505050505050565b600154604051637252724360e11b81523060048201526001600160a01b038381166024830152600092169063e4a4e486906044016020604051808303816000875af115801561048e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b291906108cf565b92915050565b6000546001600160a01b031633146104eb5760405162461bcd60e51b81526004016104e2906108ec565b60405180910390fd5b60018054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146105335760405162461bcd60e51b81526004016104e2906108ec565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461057f5760405162461bcd60e51b81526004016104e2906108ec565b600154606090600160a01b900460ff16156105ff57600054604051635a7258d160e11b81526001600160a01b039091169063b4e4b1a2906105cc9030908190889088908890600401610923565b600060405180830381600087803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b505050505b610609838361068b565b600154600160a01b900460ff161561068657600054604051632134330560e11b81526001600160a01b0390911690634268660a906106539030908190889088908890600401610923565b600060405180830381600087803b15801561066d57600080fd5b505af1158015610681573d6000803e3d6000fd5b505050505b505050565b60025460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156106de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190610891565b60008060006040848603121561071757600080fd5b83359250602084013567ffffffffffffffff8082111561073657600080fd5b818601915086601f83011261074a57600080fd5b81358181111561075957600080fd5b8760208260051b850101111561076e57600080fd5b6020830194508093505050509250925092565b6001600160a01b038116811461079657600080fd5b50565b6000602082840312156107ab57600080fd5b81356107b681610781565b9392505050565b801515811461079657600080fd5b6000602082840312156107dd57600080fd5b81356107b6816107bd565b600080604083850312156107fb57600080fd5b823561080681610781565b946020939093013593505050565b60006020828403121561082657600080fd5b5051919050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260a060808201819052810182905260006001600160fb1b0383111561087457600080fd5b8260051b808560c08501379190910160c001979650505050505050565b6000602082840312156108a357600080fd5b81516107b6816107bd565b818103818111156104b257634e487b7160e01b600052601160045260246000fd5b6000602082840312156108e157600080fd5b81516107b681610781565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b6001600160a01b03868116825285811660208084019190915290851660408301526060820184905260a06080830181905283519083018190526000918481019160c085019190845b818110156109875784518452938201939282019260010161096b565b50919a995050505050505050505056fea2646970667358221220eb54ac4856b27039439a3d1eb96ebd6dd415fd1ef2d42ec93e5e83bb2682e19864736f6c63430008110033a26469706673582212206bc42a89fa978846dac42c7151062656a5472cc3b578b2678c0807b1b68e50bb64736f6c63430008110033000000000000000000000000272671cb3b18507e1850381e1624606b9de0bf9e

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632cf0d82814610046578063df46332a14610075578063e4a4e4861461008a575b600080fd5b600054610059906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b610088610083366004610393565b61009d565b005b6100596100983660046103cc565b6100b5565b6100b083836100ab84610116565b6101b1565b505050565b6000336001600160a01b038416146101055760405162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920666f722061737365747360881b604482015260640160405180910390fd5b61010f83836102b6565b9392505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152308082526000546040516001600160a01b03909116919085906101609061036e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801561019c573d6000803e3d6000fd5b506001600160a01b0316602082015292915050565b6000546040516331a9108f60e11b815260048101859052849133916001600160a01b0390911690636352211e90602401602060405180830381865afa1580156101fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102229190610405565b6001600160a01b03161461023557600080fd5b600054604051633be9df4d60e01b8152600481018690526024810185905283516001600160a01b03908116604483015260208501518116606483015290911690633be9df4d90608401600060405180830381600087803b15801561029857600080fd5b505af11580156102ac573d6000803e3d6000fd5b5050505050505050565b60008130846001600160a01b03166332a2c5d06040518163ffffffff1660e01b81526004016020604051808303816000875af11580156102fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031e9190610405565b60405161032a9061036e565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610366573d6000803e3d6000fd5b509392505050565b610ab28061042383390190565b6001600160a01b038116811461039057600080fd5b50565b6000806000606084860312156103a857600080fd5b833592506020840135915060408401356103c18161037b565b809150509250925092565b600080604083850312156103df57600080fd5b82356103ea8161037b565b915060208301356103fa8161037b565b809150509250929050565b60006020828403121561041757600080fd5b815161010f8161037b56fe608060405234801561001057600080fd5b50604051610ab2380380610ab283398101604081905261002f91610089565b600080546001600160a01b039485166001600160a01b0319918216179091556001805493851693821693909317909255600280549190931691161790556100d6565b6001600160a01b038116811461008657600080fd5b50565b60008060006060848603121561009e57600080fd5b83516100a981610071565b60208501519093506100ba81610071565b60408501519092506100cb81610071565b809150509250925092565b6109cd806100e56000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b1461011d5780639d8ae9c41461012e578063c3c782d51461014b578063c45a01551461015e578063f2fde38b14610171578063f3fef3a31461018457600080fd5b806306661abd146100ae5780630b4e99c3146100c957806332a2c5d0146100d057806333f8854c146100f55780638124b78e1461010a575b600080fd5b6100b6610197565b6040519081526020015b60405180910390f35b60026100b6565b6002546001600160a01b03165b6040516001600160a01b0390911681526020016100c0565b610108610103366004610702565b610209565b005b6100dd610118366004610799565b61043b565b6000546001600160a01b03166100dd565b600154600160a01b900460ff1660405190151581526020016100c0565b6101086101593660046107cb565b6104b8565b6001546100dd906001600160a01b031681565b61010861017f366004610799565b610509565b6101086101923660046107e8565b610555565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156101e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102049190610814565b905090565b600054604051635a7258d160e11b81526001600160a01b039091169063b4e4b1a2906102439030903390829089908990899060040161082d565b600060405180830381600087803b15801561025d57600080fd5b505af1158015610271573d6000803e3d6000fd5b505050506000306001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d99190610814565b6002546040516323b872dd60e01b8152336004820152306024820152604481018790529192506001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103559190610891565b506000546001600160a01b03166001600160a01b0316634268660a30333085306001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d69190610814565b6103e091906108ae565b88886040518763ffffffff1660e01b81526004016104039695949392919061082d565b600060405180830381600087803b15801561041d57600080fd5b505af1158015610431573d6000803e3d6000fd5b5050505050505050565b600154604051637252724360e11b81523060048201526001600160a01b038381166024830152600092169063e4a4e486906044016020604051808303816000875af115801561048e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b291906108cf565b92915050565b6000546001600160a01b031633146104eb5760405162461bcd60e51b81526004016104e2906108ec565b60405180910390fd5b60018054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146105335760405162461bcd60e51b81526004016104e2906108ec565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461057f5760405162461bcd60e51b81526004016104e2906108ec565b600154606090600160a01b900460ff16156105ff57600054604051635a7258d160e11b81526001600160a01b039091169063b4e4b1a2906105cc9030908190889088908890600401610923565b600060405180830381600087803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b505050505b610609838361068b565b600154600160a01b900460ff161561068657600054604051632134330560e11b81526001600160a01b0390911690634268660a906106539030908190889088908890600401610923565b600060405180830381600087803b15801561066d57600080fd5b505af1158015610681573d6000803e3d6000fd5b505050505b505050565b60025460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156106de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190610891565b60008060006040848603121561071757600080fd5b83359250602084013567ffffffffffffffff8082111561073657600080fd5b818601915086601f83011261074a57600080fd5b81358181111561075957600080fd5b8760208260051b850101111561076e57600080fd5b6020830194508093505050509250925092565b6001600160a01b038116811461079657600080fd5b50565b6000602082840312156107ab57600080fd5b81356107b681610781565b9392505050565b801515811461079657600080fd5b6000602082840312156107dd57600080fd5b81356107b6816107bd565b600080604083850312156107fb57600080fd5b823561080681610781565b946020939093013593505050565b60006020828403121561082657600080fd5b5051919050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260a060808201819052810182905260006001600160fb1b0383111561087457600080fd5b8260051b808560c08501379190910160c001979650505050505050565b6000602082840312156108a357600080fd5b81516107b6816107bd565b818103818111156104b257634e487b7160e01b600052601160045260246000fd5b6000602082840312156108e157600080fd5b81516107b681610781565b60208082526017908201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b6001600160a01b03868116825285811660208084019190915290851660408301526060820184905260a06080830181905283519083018190526000918481019160c085019190845b818110156109875784518452938201939282019260010161096b565b50919a995050505050505050505056fea2646970667358221220eb54ac4856b27039439a3d1eb96ebd6dd415fd1ef2d42ec93e5e83bb2682e19864736f6c63430008110033a26469706673582212206bc42a89fa978846dac42c7151062656a5472cc3b578b2678c0807b1b68e50bb64736f6c63430008110033

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

000000000000000000000000272671cb3b18507e1850381e1624606b9de0bf9e

-----Decoded View---------------
Arg [0] : positionsController_ (address): 0x272671CB3b18507E1850381e1624606b9de0Bf9e

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000272671cb3b18507e1850381e1624606b9de0bf9e


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.