ETH Price: $2,119.99 (+7.55%)

Contract

0x33cB5C0EFA65fbc9D30C084BD1a2e483d6c2F73D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Add Vesting Cont...216795642025-01-22 10:54:59406 days ago1737543299IN
0x33cB5C0E...3d6c2F73D
0 ETH0.000727498.78709024
Add Vesting Cont...216795622025-01-22 10:54:35406 days ago1737543275IN
0x33cB5C0E...3d6c2F73D
0 ETH0.000730018.81750906
Add Vesting Cont...216795602025-01-22 10:54:11406 days ago1737543251IN
0x33cB5C0E...3d6c2F73D
0 ETH0.000698848.44229965
Add Vesting Cont...216795582025-01-22 10:53:47406 days ago1737543227IN
0x33cB5C0E...3d6c2F73D
0 ETH0.000716198.65060259
Add Vesting Cont...216795282025-01-22 10:47:47406 days ago1737542867IN
0x33cB5C0E...3d6c2F73D
0 ETH0.000767779.2736765
Add Vesting Cont...216795282025-01-22 10:47:47406 days ago1737542867IN
0x33cB5C0E...3d6c2F73D
0 ETH0.000767669.2736765
Add Vesting Cont...216795282025-01-22 10:47:47406 days ago1737542867IN
0x33cB5C0E...3d6c2F73D
0 ETH0.00092589.2736765

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DataReader

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

import './platform/access_controller/PlatformAccessController.sol';

interface IStaking {
    function totalPools() external view returns (uint256);

    function getPoolInfo(
        uint256 _pid
    )
        external
        view
        returns (uint256, address, address, uint256, uint256, bool, uint256, uint256, uint256, uint256, bool);

    function allPendingRewardsToken(address _user) external view returns (uint256[] memory);

    function getUserInfo(uint256 _pid, address _account) external view returns (uint256 amount);
}

interface IVesting {
    struct UserProperties {
        bool isActive;
        uint256 claimedAmount;
        uint256 vestingId;
    }

    struct VestingProperties {
        uint256 amountForUser;
        uint256 startTime;
        uint256 tickCount;
        uint256 tickDuration;
        uint256 unallocatedAmount;
        bool active;
    }

    function userPropertiesList(address wallet) external view returns (UserProperties memory);

    function vestingPropertiesList() external view returns (VestingProperties[] memory);

    function amountForClaim(address wallet, uint256 timestamp) external view returns (uint256);
}

/**
 * @title DataReader
 * @notice Reads vesting and staking data for Propchain's web3 dashboards.
 * @dev Supports multiple staking and vesting contracts dynamically.
 */
contract DataReader is PlatformAccessController {
    struct UserVestingProperties {
        string pool;
        uint256 claimable;
        uint256 total;
    }

    struct PoolInfo {
        uint256 apyPercent;
        uint256 totalStaked;
        uint256 claimTimeLimit;
        uint256 penaltyFee;
        uint256 penaltyTimeLimit;
    }

    struct UserStakingProperties {
        string version;
        uint256 totalStaked;
        uint256[] pendingRewards;
        uint256[] stakedAmounts;
        PoolInfo[] pools;
    }

    error ZeroAddress();
    error IndexOutOfBounds();

    /// @notice Registered vesting contracts
    mapping(uint256 => IVesting) public vestings;
    mapping(uint256 => string) public vestingPools;
    uint256 public vestingsCount;

    /// @notice Registered staking contracts
    mapping(uint256 => IStaking) public stakingContracts;
    mapping(uint256 => string) public stakingVersions;
    uint256 public stakingCount;

    event VestingContractAdded(uint256 indexed id, address contractAddress, string poolName);
    event VestingContractRemoved(uint256 indexed id, address contractAddress);
    event StakingContractAdded(uint256 indexed id, address contractAddress, string version);
    event StakingContractRemoved(uint256 indexed id, address contractAddress);

    /**
     * @notice Initializes the contract
     * @param adminPanel The address of the platform admin panel
     */
    constructor(address adminPanel) {
        if (adminPanel == address(0)) revert ZeroAddress();
        _initiatePlatformAccessController(adminPanel);
    }

    /**
     * @notice Adds a new vesting contract
     * @param _contract Address of the vesting contract
     * @param poolName Name of the vesting pool
     */
    function addVestingContract(IVesting _contract, string calldata poolName) external onlyPlatformAdmin {
        if (address(_contract) == address(0)) revert ZeroAddress();
        vestings[vestingsCount] = _contract;
        vestingPools[vestingsCount] = poolName;
        emit VestingContractAdded(vestingsCount, address(_contract), poolName);
        vestingsCount++;
    }

    /**
     * @notice Removes a vesting contract
     * @param index Index of the vesting contract to remove
     */
    function removeVestingContract(uint256 index) external onlyPlatformAdmin {
        if (index >= vestingsCount) revert IndexOutOfBounds();
        emit VestingContractRemoved(index, address(vestings[index]));

        if (index < vestingsCount - 1) {
            vestings[index] = vestings[vestingsCount - 1];
            vestingPools[index] = vestingPools[vestingsCount - 1];
        }

        delete vestings[vestingsCount - 1];
        delete vestingPools[vestingsCount - 1];
        vestingsCount--;
    }

    /**
     * @notice Adds a new staking contract
     * @param _contract Address of the staking contract
     * @param version Version name (e.g., "v1", "v2")
     */
    function addStakingContract(IStaking _contract, string calldata version) external onlyPlatformAdmin {
        if (address(_contract) == address(0)) revert ZeroAddress();
        stakingContracts[stakingCount] = _contract;
        stakingVersions[stakingCount] = version;
        emit StakingContractAdded(stakingCount, address(_contract), version);
        stakingCount++;
    }

    /**
     * @notice Removes a staking contract
     * @param index Index of the staking contract to remove
     */
    function removeStakingContract(uint256 index) external onlyPlatformAdmin {
        if (index >= stakingCount) revert IndexOutOfBounds();
        emit StakingContractRemoved(index, address(stakingContracts[index]));

        if (index < stakingCount - 1) {
            stakingContracts[index] = stakingContracts[stakingCount - 1];
            stakingVersions[index] = stakingVersions[stakingCount - 1];
        }

        delete stakingContracts[stakingCount - 1];
        delete stakingVersions[stakingCount - 1];
        stakingCount--;
    }

    /**
     * @notice Fetches user vesting data
     * @param wallet Address of the user
     * @param timestamp Current timestamp
     */
    function getVestingData(
        address wallet,
        uint256 timestamp
    ) external view returns (UserVestingProperties[] memory vestingList) {
        vestingList = new UserVestingProperties[](vestingsCount);

        for (uint256 i = 0; i < vestingsCount; i++) {
            IVesting vesting = vestings[i];
            IVesting.UserProperties memory user = vesting.userPropertiesList(wallet);
            if (!user.isActive) continue;

            IVesting.VestingProperties[] memory properties = vesting.vestingPropertiesList();
            if (user.vestingId >= properties.length) continue;

            IVesting.VestingProperties memory usersProperties = properties[user.vestingId];
            uint256 claimable = vesting.amountForClaim(wallet, timestamp);

            vestingList[i] = UserVestingProperties({
                pool: vestingPools[i],
                claimable: claimable,
                total: usersProperties.amountForUser > user.claimedAmount
                    ? usersProperties.amountForUser - user.claimedAmount
                    : 0
            });
        }
    }

    /**
     * @notice Fetches user staking data dynamically
     * @param wallet Address of the user
     */
    function getStakingData(address wallet) external view returns (UserStakingProperties[] memory stakingList) {
        stakingList = new UserStakingProperties[](stakingCount);

        for (uint256 i = 0; i < stakingCount; i++) {
            IStaking staking = stakingContracts[i];
            uint256 poolCount = staking.totalPools();
            uint256[] memory pendingRewards = staking.allPendingRewardsToken(wallet);
            PoolInfo[] memory pools = new PoolInfo[](poolCount);
            uint256[] memory stakedAmounts = new uint256[](poolCount);
            uint256 totalStaked = 0;

            for (uint256 j = 0; j < poolCount; j++) {
                pools[j] = getPoolInfo(staking, j + 1);
                stakedAmounts[j] = staking.getUserInfo(j + 1, wallet);
                totalStaked += pools[j].totalStaked;
            }

            stakingList[i] = UserStakingProperties({
                version: stakingVersions[i],
                totalStaked: totalStaked,
                pendingRewards: pendingRewards,
                stakedAmounts: stakedAmounts,
                pools: pools
            });
        }
    }

    function getPoolInfo(IStaking staking, uint256 poolId) private view returns (PoolInfo memory) {
        (
            ,
            ,
            ,
            uint256 apyPercent,
            uint256 totalStaked,
            ,
            uint256 claimTimeLimit,
            ,
            uint256 penaltyFee,
            uint256 penaltyTimeLimit,

        ) = staking.getPoolInfo(poolId);
        return PoolInfo(apyPercent, totalStaked, claimTimeLimit, penaltyFee, penaltyTimeLimit);
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

import "../admin_panel/PlatformAdminPanel.sol";

/**
 * @title Abstract contract from which platform contracts with admin function are inherited
 * @dev Contains the platform admin panel
 * Contains modifier that checks whether sender is platform admin, use platform admin panel
 */
abstract contract PlatformAccessController {
    address public _panel;

    error CallerNotAdmin();
    error AlreadyInitialized();

    function _initiatePlatformAccessController(address adminPanel) internal {
        if(address(_panel) != address(0))
            revert AlreadyInitialized();

        _panel = adminPanel;
    }

    /**
     * @dev Modifier that makes function available for platform admins only
     */
    modifier onlyPlatformAdmin() {
        if(!PlatformAdminPanel(_panel).isAdmin(msgSender()))
            revert CallerNotAdmin();
        _;
    }

    function _isAdmin() internal view returns (bool) {
        return PlatformAdminPanel(_panel).isAdmin(msgSender());
    }

    function msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

interface IPlatformAdminPanel {
    function isAdmin(address wallet) external view returns (bool);
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
import "./Iplatform_admin_panel/IPlatformAdminPanel.sol";

/**
 * @title Platform admins holder contract
 * @notice Used to check accessibility of senders to admin functions in platform contracts
 */
contract PlatformAdminPanel is IPlatformAdminPanel {
    /**
     * @notice Emit during root admin set and reset
     */
    event SetRootAdmin(address indexed wallet);

    event InsertAdminList(address[] adminList);

    event RemoveAdminList(address[] adminList);

    mapping(address => bool) private _adminMap;
    address private _rootAdmin;

    modifier onlyRootAdmin() {
        require(_rootAdmin == msg.sender, "sender is not root admin");
        _;
    }

    /**
     * @notice Specify the root admin, only he has the rights to add and remove admins
     */
    constructor(address rootAdminWallet) {
        _setRootAdmin(rootAdminWallet);
    }

    /**
     * @notice Needed to determine if the user has admin rights for platform contracts
     */
    function isAdmin(address wallet)
        external
        view
        virtual
        override
        returns (bool)
    {
        return wallet == _rootAdmin || _adminMap[wallet];
    }

    function rootAdmin() external view returns (address) {
        return _rootAdmin;
    }

    /**
     * @notice Only root admin can call
     */
    function insertAdminList(address[] calldata adminList)
        external
        onlyRootAdmin
    {
        require(0 < adminList.length, "empty admin list");
        require(20 >= adminList.length, "list too large");

        uint256 index = adminList.length;
        while (0 < index) {
            --index;

            _adminMap[adminList[index]] = true;
        }

        emit InsertAdminList(adminList);
    }

    /**
     * @notice Only root admin can call
     */
    function removeAdminList(address[] calldata adminList)
        external
        onlyRootAdmin
    {
        require(0 < adminList.length, "empty admin list");
        require(20 >= adminList.length, "list too large");

        uint256 index = adminList.length;
        while (0 < index) {
            --index;

            _adminMap[adminList[index]] = false;
        }

        emit RemoveAdminList(adminList);
    }

    /**
     * @notice Only root admin can call
     */
    function setRootAdmin(address rootAdminWallet) external onlyRootAdmin {
        _setRootAdmin(rootAdminWallet);
    }

    function _setRootAdmin(address wallet) private {
        require(wallet != address(0), "wallet is zero address");

        _rootAdmin = wallet;

        emit SetRootAdmin(wallet);
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"adminPanel","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"CallerNotAdmin","type":"error"},{"inputs":[],"name":"IndexOutOfBounds","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"string","name":"version","type":"string"}],"name":"StakingContractAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"}],"name":"StakingContractRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"string","name":"poolName","type":"string"}],"name":"VestingContractAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"}],"name":"VestingContractRemoved","type":"event"},{"inputs":[],"name":"_panel","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IStaking","name":"_contract","type":"address"},{"internalType":"string","name":"version","type":"string"}],"name":"addStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IVesting","name":"_contract","type":"address"},{"internalType":"string","name":"poolName","type":"string"}],"name":"addVestingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getStakingData","outputs":[{"components":[{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"totalStaked","type":"uint256"},{"internalType":"uint256[]","name":"pendingRewards","type":"uint256[]"},{"internalType":"uint256[]","name":"stakedAmounts","type":"uint256[]"},{"components":[{"internalType":"uint256","name":"apyPercent","type":"uint256"},{"internalType":"uint256","name":"totalStaked","type":"uint256"},{"internalType":"uint256","name":"claimTimeLimit","type":"uint256"},{"internalType":"uint256","name":"penaltyFee","type":"uint256"},{"internalType":"uint256","name":"penaltyTimeLimit","type":"uint256"}],"internalType":"struct DataReader.PoolInfo[]","name":"pools","type":"tuple[]"}],"internalType":"struct DataReader.UserStakingProperties[]","name":"stakingList","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getVestingData","outputs":[{"components":[{"internalType":"string","name":"pool","type":"string"},{"internalType":"uint256","name":"claimable","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"internalType":"struct DataReader.UserVestingProperties[]","name":"vestingList","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removeStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removeVestingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakingContracts","outputs":[{"internalType":"contract IStaking","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakingVersions","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"vestingPools","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"vestings","outputs":[{"internalType":"contract IVesting","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestingsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060405162001d5038038062001d508339810160408190526200003491620000ba565b6001600160a01b0381166200005c5760405163d92e233d60e01b815260040160405180910390fd5b62000067816200006e565b50620000ec565b6000546001600160a01b031615620000985760405162dc149f60e41b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600060208284031215620000cd57600080fd5b81516001600160a01b0381168114620000e557600080fd5b9392505050565b611c5480620000fc6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063821bee731161008c578063993b189311610066578063993b1893146101de578063a6031571146101f1578063bad1ec8d14610204578063e473e6e01461022457600080fd5b8063821bee731461018f5780638b4db06b146101b8578063929f3299146101cb57600080fd5b806303ccc472146100d45780630c540e14146100f05780631109b19a146100f957806367a7b5f61461013a57806370ab07951461015a5780637b43a0521461017a575b600080fd5b6100dd60035481565b6040519081526020015b60405180910390f35b6100dd60065481565b6101226101073660046112b9565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100e7565b61014d6101483660046112e7565b610237565b6040516100e7919061138c565b61016d6101683660046112b9565b61069b565b6040516100e7919061149a565b61018d6101883660046112b9565b610735565b005b61012261019d3660046112b9565b6001602052600090815260409020546001600160a01b031681565b600054610122906001600160a01b031681565b61018d6101d93660046114f5565b61095c565b61016d6101ec3660046112b9565b610ab5565b61018d6101ff3660046112b9565b610ace565b610217610212366004611549565b610cf0565b6040516100e79190611575565b61018d6102323660046114f5565b611030565b60606006546001600160401b03811115610253576102536115e8565b6040519080825280602002602001820160405280156102b657816020015b6102a36040518060a0016040528060608152602001600081526020016060815260200160608152602001606081525090565b8152602001906001900390816102715790505b50905060005b60065481101561069557600081815260046020818152604080842054815163559e3f2960e11b815291516001600160a01b039091169493859363ab3c7e5293808301939192908290030181865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f91906115fe565b604051637d47ad0b60e11b81526001600160a01b03878116600483015291925060009184169063fa8f5a1690602401600060405180830381865afa15801561038b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103b39190810190611692565b90506000826001600160401b038111156103cf576103cf6115e8565b60405190808252806020026020018201604052801561043257816020015b61041f6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816103ed5790505b5090506000836001600160401b0381111561044f5761044f6115e8565b604051908082528060200260200182016040528015610478578160200160208202803683370190505b5090506000805b8581101561059c5761049b8761049683600161173d565b61117f565b8482815181106104ad576104ad611750565b60209081029190910101526001600160a01b038716631069f3b56104d283600161173d565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b038d166024820152604401602060405180830381865afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054191906115fe565b83828151811061055357610553611750565b60200260200101818152505083818151811061057157610571611750565b60200260200101516020015182610588919061173d565b91508061059481611766565b91505061047f565b506040518060a00160405280600560008a815260200190815260200160002080546105c69061177f565b80601f01602080910402602001604051908101604052809291908181526020018280546105f29061177f565b801561063f5780601f106106145761010080835404028352916020019161063f565b820191906000526020600020905b81548152906001019060200180831161062257829003601f168201915b505050505081526020018281526020018581526020018381526020018481525088888151811061067157610671611750565b6020026020010181905250505050505050808061068d90611766565b9150506102bc565b50919050565b600560205260009081526040902080546106b49061177f565b80601f01602080910402602001604051908101604052809291908181526020018280546106e09061177f565b801561072d5780601f106107025761010080835404028352916020019161072d565b820191906000526020600020905b81548152906001019060200180831161071057829003601f168201915b505050505081565b6000546001600160a01b03166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561078b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107af91906117c8565b6107cc5760405163036c8cf960e11b815260040160405180910390fd5b60035481106107ee57604051634e23d03560e01b815260040160405180910390fd5b6000818152600160209081526040918290205491516001600160a01b03909216825282917f4c8609ed79092664bb9059e4694e99a3b14482f6fa59b3d4f5e2bb3d07c45928910160405180910390a2600160035461084c91906117e3565b8110156108e45760016000600160035461086691906117e3565b8152602080820192909252604090810160009081205484825260019384905291812080546001600160a01b0319166001600160a01b03909316929092179091556003546002926108b5916117e3565b81526020019081526020016000206002600083815260200190815260200160002090816108e29190611845565b505b6001600060016003546108f791906117e3565b81526020810191909152604001600090812080546001600160a01b03191690556003546002919061092a906001906117e3565b815260200190815260200160002060006109449190611263565b6003805490600061095483611925565b919050555050565b6000546001600160a01b03166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156109b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d691906117c8565b6109f35760405163036c8cf960e11b815260040160405180910390fd5b6001600160a01b038316610a1a5760405163d92e233d60e01b815260040160405180910390fd5b60038054600090815260016020908152604080832080546001600160a01b0319166001600160a01b038916179055925482526002905220610a5c82848361193c565b506003547febb6a38bd990983fdeccabf05729fe968f9bc99d9d719ffce251d481a0671124848484604051610a93939291906119fb565b60405180910390a260038054906000610aab83611766565b9190505550505050565b600260205260009081526040902080546106b49061177f565b6000546001600160a01b03166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4891906117c8565b610b655760405163036c8cf960e11b815260040160405180910390fd5b6006548110610b8757604051634e23d03560e01b815260040160405180910390fd5b6000818152600460209081526040918290205491516001600160a01b03909216825282917fbcefefd4afe5fa41ef327afb8dd781392442528836fe5f82e0db531da24a6529910160405180910390a26001600654610be591906117e3565b811015610c8057600460006001600654610bff91906117e3565b81526020808201929092526040908101600090812054848252600490935290812080546001600160a01b0319166001600160a01b039093169290921790915560065460059190610c51906001906117e3565b8152602001908152602001600020600560008381526020019081526020016000209081610c7e9190611845565b505b600460006001600654610c9391906117e3565b81526020810191909152604001600090812080546001600160a01b031916905560065460059190610cc6906001906117e3565b81526020019081526020016000206000610ce09190611263565b6006805490600061095483611925565b60606003546001600160401b03811115610d0c57610d0c6115e8565b604051908082528060200260200182016040528015610d6157816020015b610d4e60405180606001604052806060815260200160008152602001600081525090565b815260200190600190039081610d2a5790505b50905060005b60035481101561102957600081815260016020526040808220549051632f5db57360e01b81526001600160a01b03878116600483015290911691908290632f5db57390602401606060405180830381865afa158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee9190611a3b565b8051909150610dfe575050611017565b6000826001600160a01b031663dc2daffe6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e669190810190611a9b565b90508051826040015110610e7c57505050611017565b600081836040015181518110610e9457610e94611750565b6020908102919091010151604051636b59a3ab60e11b81526001600160a01b038a81166004830152602482018a905291925060009186169063d6b3475690604401602060405180830381865afa158015610ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1691906115fe565b90506040518060600160405280600260008981526020019081526020016000208054610f419061177f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6d9061177f565b8015610fba5780601f10610f8f57610100808354040283529160200191610fba565b820191906000526020600020905b815481529060010190602001808311610f9d57829003601f168201915b505050505081526020018281526020018560200151846000015111610fe0576000610ff1565b60208601518451610ff191906117e3565b81525087878151811061100657611006611750565b602002602001018190525050505050505b8061102181611766565b915050610d67565b5092915050565b6000546001600160a01b03166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110aa91906117c8565b6110c75760405163036c8cf960e11b815260040160405180910390fd5b6001600160a01b0383166110ee5760405163d92e233d60e01b815260040160405180910390fd5b60068054600090815260046020908152604080832080546001600160a01b0319166001600160a01b03891617905592548252600590522061113082848361193c565b506006547f225748d69ee8f4771078d0869f3d3ec3acbd72c9c49b27f4ef8c5078cc4e9256848484604051611167939291906119fb565b60405180910390a260068054906000610aab83611766565b6111b16040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000806000806000876001600160a01b0316632f380b35886040518263ffffffff1660e01b81526004016111e791815260200190565b61016060405180830381865afa158015611205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112299190611b7d565b506040805160a081018252978852602088019690965294860192909252506060840152506080820152985050505050505050505b92915050565b50805461126f9061177f565b6000825580601f1061127f575050565b601f01602090049060005260206000209081019061129d91906112a0565b50565b5b808211156112b557600081556001016112a1565b5090565b6000602082840312156112cb57600080fd5b5035919050565b6001600160a01b038116811461129d57600080fd5b6000602082840312156112f957600080fd5b8135611304816112d2565b9392505050565b6000815180845260005b8181101561133157602081850181015186830182015201611315565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501945080840160005b8381101561138157815187529582019590820190600101611365565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561148c57603f19898403018552815160a081518186526113d98287018261130b565b9050898301518a870152888301518682038a8801526113f88282611351565b915050606080840151878303828901526114128382611351565b6080958601518982038a8801528051808352908e0196600095509250908d01905b80851015611474578651805183528e8101518f8401528d8101518e840152848101518584015283015183830152958d01956001949094019390850190611433565b50998c019997505050938901935050506001016113b3565b509098975050505050505050565b602081526000611304602083018461130b565b60008083601f8401126114bf57600080fd5b5081356001600160401b038111156114d657600080fd5b6020830191508360208285010111156114ee57600080fd5b9250929050565b60008060006040848603121561150a57600080fd5b8335611515816112d2565b925060208401356001600160401b0381111561153057600080fd5b61153c868287016114ad565b9497909650939450505050565b6000806040838503121561155c57600080fd5b8235611567816112d2565b946020939093013593505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561148c57603f198984030185528151606081518186526115c28287018261130b565b838b0151878c01529289015195890195909552509487019492509086019060010161159c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561161057600080fd5b5051919050565b60405160c081016001600160401b0381118282101715611639576116396115e8565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611667576116676115e8565b604052919050565b60006001600160401b03821115611688576116886115e8565b5060051b60200190565b600060208083850312156116a557600080fd5b82516001600160401b038111156116bb57600080fd5b8301601f810185136116cc57600080fd5b80516116df6116da8261166f565b61163f565b81815260059190911b820183019083810190878311156116fe57600080fd5b928401925b8284101561171c57835182529284019290840190611703565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561125d5761125d611727565b634e487b7160e01b600052603260045260246000fd5b60006001820161177857611778611727565b5060010190565b600181811c9082168061179357607f821691505b60208210810361069557634e487b7160e01b600052602260045260246000fd5b805180151581146117c357600080fd5b919050565b6000602082840312156117da57600080fd5b611304826117b3565b8181038181111561125d5761125d611727565b601f82111561184057600081815260208120601f850160051c8101602086101561181d5750805b601f850160051c820191505b8181101561183c57828155600101611829565b5050505b505050565b818103611850575050565b61185a825461177f565b6001600160401b03811115611871576118716115e8565b6118858161187f845461177f565b846117f6565b6000601f8211600181146118b957600083156118a15750848201545b600019600385901b1c1916600184901b17845561191e565b600085815260209020601f19841690600086815260209020845b838110156118f357828601548255600195860195909101906020016118d3565b50858310156119115781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b60008161193457611934611727565b506000190190565b6001600160401b03831115611953576119536115e8565b61196783611961835461177f565b836117f6565b6000601f84116001811461199b57600085156119835750838201355b600019600387901b1c1916600186901b17835561191e565b600083815260209020601f19861690835b828110156119cc57868501358255602094850194600190920191016119ac565b50868210156119e95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060608284031215611a4d57600080fd5b604051606081018181106001600160401b0382111715611a6f57611a6f6115e8565b604052611a7b836117b3565b815260208301516020820152604083015160408201528091505092915050565b60006020808385031215611aae57600080fd5b82516001600160401b03811115611ac457600080fd5b8301601f81018513611ad557600080fd5b8051611ae36116da8261166f565b81815260c09182028301840191848201919088841115611b0257600080fd5b938501935b83851015611b715780858a031215611b1f5760008081fd5b611b27611617565b85518152868601518782015260408087015190820152606080870151908201526080808701519082015260a0611b5e8188016117b3565b9082015283529384019391850191611b07565b50979650505050505050565b60008060008060008060008060008060006101608c8e031215611b9f57600080fd5b8b519a5060208c0151611bb1816112d2565b60408d0151909a50611bc2816112d2565b60608d015160808e0151919a5098509650611bdf60a08d016117b3565b955060c08c0151945060e08c015193506101008c015192506101208c01519150611c0c6101408d016117b3565b90509295989b509295989b909396995056fea2646970667358221220a33819712effdeaafd2cb942ef361932bebef43100fb75db57ec3d55a8f891fa64736f6c6343000813003300000000000000000000000038d54fb707905b3979f011af2aec0f4ad166cda6

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063821bee731161008c578063993b189311610066578063993b1893146101de578063a6031571146101f1578063bad1ec8d14610204578063e473e6e01461022457600080fd5b8063821bee731461018f5780638b4db06b146101b8578063929f3299146101cb57600080fd5b806303ccc472146100d45780630c540e14146100f05780631109b19a146100f957806367a7b5f61461013a57806370ab07951461015a5780637b43a0521461017a575b600080fd5b6100dd60035481565b6040519081526020015b60405180910390f35b6100dd60065481565b6101226101073660046112b9565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016100e7565b61014d6101483660046112e7565b610237565b6040516100e7919061138c565b61016d6101683660046112b9565b61069b565b6040516100e7919061149a565b61018d6101883660046112b9565b610735565b005b61012261019d3660046112b9565b6001602052600090815260409020546001600160a01b031681565b600054610122906001600160a01b031681565b61018d6101d93660046114f5565b61095c565b61016d6101ec3660046112b9565b610ab5565b61018d6101ff3660046112b9565b610ace565b610217610212366004611549565b610cf0565b6040516100e79190611575565b61018d6102323660046114f5565b611030565b60606006546001600160401b03811115610253576102536115e8565b6040519080825280602002602001820160405280156102b657816020015b6102a36040518060a0016040528060608152602001600081526020016060815260200160608152602001606081525090565b8152602001906001900390816102715790505b50905060005b60065481101561069557600081815260046020818152604080842054815163559e3f2960e11b815291516001600160a01b039091169493859363ab3c7e5293808301939192908290030181865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f91906115fe565b604051637d47ad0b60e11b81526001600160a01b03878116600483015291925060009184169063fa8f5a1690602401600060405180830381865afa15801561038b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103b39190810190611692565b90506000826001600160401b038111156103cf576103cf6115e8565b60405190808252806020026020018201604052801561043257816020015b61041f6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816103ed5790505b5090506000836001600160401b0381111561044f5761044f6115e8565b604051908082528060200260200182016040528015610478578160200160208202803683370190505b5090506000805b8581101561059c5761049b8761049683600161173d565b61117f565b8482815181106104ad576104ad611750565b60209081029190910101526001600160a01b038716631069f3b56104d283600161173d565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b038d166024820152604401602060405180830381865afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054191906115fe565b83828151811061055357610553611750565b60200260200101818152505083818151811061057157610571611750565b60200260200101516020015182610588919061173d565b91508061059481611766565b91505061047f565b506040518060a00160405280600560008a815260200190815260200160002080546105c69061177f565b80601f01602080910402602001604051908101604052809291908181526020018280546105f29061177f565b801561063f5780601f106106145761010080835404028352916020019161063f565b820191906000526020600020905b81548152906001019060200180831161062257829003601f168201915b505050505081526020018281526020018581526020018381526020018481525088888151811061067157610671611750565b6020026020010181905250505050505050808061068d90611766565b9150506102bc565b50919050565b600560205260009081526040902080546106b49061177f565b80601f01602080910402602001604051908101604052809291908181526020018280546106e09061177f565b801561072d5780601f106107025761010080835404028352916020019161072d565b820191906000526020600020905b81548152906001019060200180831161071057829003601f168201915b505050505081565b6000546001600160a01b03166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561078b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107af91906117c8565b6107cc5760405163036c8cf960e11b815260040160405180910390fd5b60035481106107ee57604051634e23d03560e01b815260040160405180910390fd5b6000818152600160209081526040918290205491516001600160a01b03909216825282917f4c8609ed79092664bb9059e4694e99a3b14482f6fa59b3d4f5e2bb3d07c45928910160405180910390a2600160035461084c91906117e3565b8110156108e45760016000600160035461086691906117e3565b8152602080820192909252604090810160009081205484825260019384905291812080546001600160a01b0319166001600160a01b03909316929092179091556003546002926108b5916117e3565b81526020019081526020016000206002600083815260200190815260200160002090816108e29190611845565b505b6001600060016003546108f791906117e3565b81526020810191909152604001600090812080546001600160a01b03191690556003546002919061092a906001906117e3565b815260200190815260200160002060006109449190611263565b6003805490600061095483611925565b919050555050565b6000546001600160a01b03166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa1580156109b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d691906117c8565b6109f35760405163036c8cf960e11b815260040160405180910390fd5b6001600160a01b038316610a1a5760405163d92e233d60e01b815260040160405180910390fd5b60038054600090815260016020908152604080832080546001600160a01b0319166001600160a01b038916179055925482526002905220610a5c82848361193c565b506003547febb6a38bd990983fdeccabf05729fe968f9bc99d9d719ffce251d481a0671124848484604051610a93939291906119fb565b60405180910390a260038054906000610aab83611766565b9190505550505050565b600260205260009081526040902080546106b49061177f565b6000546001600160a01b03166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4891906117c8565b610b655760405163036c8cf960e11b815260040160405180910390fd5b6006548110610b8757604051634e23d03560e01b815260040160405180910390fd5b6000818152600460209081526040918290205491516001600160a01b03909216825282917fbcefefd4afe5fa41ef327afb8dd781392442528836fe5f82e0db531da24a6529910160405180910390a26001600654610be591906117e3565b811015610c8057600460006001600654610bff91906117e3565b81526020808201929092526040908101600090812054848252600490935290812080546001600160a01b0319166001600160a01b039093169290921790915560065460059190610c51906001906117e3565b8152602001908152602001600020600560008381526020019081526020016000209081610c7e9190611845565b505b600460006001600654610c9391906117e3565b81526020810191909152604001600090812080546001600160a01b031916905560065460059190610cc6906001906117e3565b81526020019081526020016000206000610ce09190611263565b6006805490600061095483611925565b60606003546001600160401b03811115610d0c57610d0c6115e8565b604051908082528060200260200182016040528015610d6157816020015b610d4e60405180606001604052806060815260200160008152602001600081525090565b815260200190600190039081610d2a5790505b50905060005b60035481101561102957600081815260016020526040808220549051632f5db57360e01b81526001600160a01b03878116600483015290911691908290632f5db57390602401606060405180830381865afa158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee9190611a3b565b8051909150610dfe575050611017565b6000826001600160a01b031663dc2daffe6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e669190810190611a9b565b90508051826040015110610e7c57505050611017565b600081836040015181518110610e9457610e94611750565b6020908102919091010151604051636b59a3ab60e11b81526001600160a01b038a81166004830152602482018a905291925060009186169063d6b3475690604401602060405180830381865afa158015610ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1691906115fe565b90506040518060600160405280600260008981526020019081526020016000208054610f419061177f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6d9061177f565b8015610fba5780601f10610f8f57610100808354040283529160200191610fba565b820191906000526020600020905b815481529060010190602001808311610f9d57829003601f168201915b505050505081526020018281526020018560200151846000015111610fe0576000610ff1565b60208601518451610ff191906117e3565b81525087878151811061100657611006611750565b602002602001018190525050505050505b8061102181611766565b915050610d67565b5092915050565b6000546001600160a01b03166324d7806c336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110aa91906117c8565b6110c75760405163036c8cf960e11b815260040160405180910390fd5b6001600160a01b0383166110ee5760405163d92e233d60e01b815260040160405180910390fd5b60068054600090815260046020908152604080832080546001600160a01b0319166001600160a01b03891617905592548252600590522061113082848361193c565b506006547f225748d69ee8f4771078d0869f3d3ec3acbd72c9c49b27f4ef8c5078cc4e9256848484604051611167939291906119fb565b60405180910390a260068054906000610aab83611766565b6111b16040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000806000806000876001600160a01b0316632f380b35886040518263ffffffff1660e01b81526004016111e791815260200190565b61016060405180830381865afa158015611205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112299190611b7d565b506040805160a081018252978852602088019690965294860192909252506060840152506080820152985050505050505050505b92915050565b50805461126f9061177f565b6000825580601f1061127f575050565b601f01602090049060005260206000209081019061129d91906112a0565b50565b5b808211156112b557600081556001016112a1565b5090565b6000602082840312156112cb57600080fd5b5035919050565b6001600160a01b038116811461129d57600080fd5b6000602082840312156112f957600080fd5b8135611304816112d2565b9392505050565b6000815180845260005b8181101561133157602081850181015186830182015201611315565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501945080840160005b8381101561138157815187529582019590820190600101611365565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561148c57603f19898403018552815160a081518186526113d98287018261130b565b9050898301518a870152888301518682038a8801526113f88282611351565b915050606080840151878303828901526114128382611351565b6080958601518982038a8801528051808352908e0196600095509250908d01905b80851015611474578651805183528e8101518f8401528d8101518e840152848101518584015283015183830152958d01956001949094019390850190611433565b50998c019997505050938901935050506001016113b3565b509098975050505050505050565b602081526000611304602083018461130b565b60008083601f8401126114bf57600080fd5b5081356001600160401b038111156114d657600080fd5b6020830191508360208285010111156114ee57600080fd5b9250929050565b60008060006040848603121561150a57600080fd5b8335611515816112d2565b925060208401356001600160401b0381111561153057600080fd5b61153c868287016114ad565b9497909650939450505050565b6000806040838503121561155c57600080fd5b8235611567816112d2565b946020939093013593505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561148c57603f198984030185528151606081518186526115c28287018261130b565b838b0151878c01529289015195890195909552509487019492509086019060010161159c565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561161057600080fd5b5051919050565b60405160c081016001600160401b0381118282101715611639576116396115e8565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611667576116676115e8565b604052919050565b60006001600160401b03821115611688576116886115e8565b5060051b60200190565b600060208083850312156116a557600080fd5b82516001600160401b038111156116bb57600080fd5b8301601f810185136116cc57600080fd5b80516116df6116da8261166f565b61163f565b81815260059190911b820183019083810190878311156116fe57600080fd5b928401925b8284101561171c57835182529284019290840190611703565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561125d5761125d611727565b634e487b7160e01b600052603260045260246000fd5b60006001820161177857611778611727565b5060010190565b600181811c9082168061179357607f821691505b60208210810361069557634e487b7160e01b600052602260045260246000fd5b805180151581146117c357600080fd5b919050565b6000602082840312156117da57600080fd5b611304826117b3565b8181038181111561125d5761125d611727565b601f82111561184057600081815260208120601f850160051c8101602086101561181d5750805b601f850160051c820191505b8181101561183c57828155600101611829565b5050505b505050565b818103611850575050565b61185a825461177f565b6001600160401b03811115611871576118716115e8565b6118858161187f845461177f565b846117f6565b6000601f8211600181146118b957600083156118a15750848201545b600019600385901b1c1916600184901b17845561191e565b600085815260209020601f19841690600086815260209020845b838110156118f357828601548255600195860195909101906020016118d3565b50858310156119115781850154600019600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b60008161193457611934611727565b506000190190565b6001600160401b03831115611953576119536115e8565b61196783611961835461177f565b836117f6565b6000601f84116001811461199b57600085156119835750838201355b600019600387901b1c1916600186901b17835561191e565b600083815260209020601f19861690835b828110156119cc57868501358255602094850194600190920191016119ac565b50868210156119e95760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600060608284031215611a4d57600080fd5b604051606081018181106001600160401b0382111715611a6f57611a6f6115e8565b604052611a7b836117b3565b815260208301516020820152604083015160408201528091505092915050565b60006020808385031215611aae57600080fd5b82516001600160401b03811115611ac457600080fd5b8301601f81018513611ad557600080fd5b8051611ae36116da8261166f565b81815260c09182028301840191848201919088841115611b0257600080fd5b938501935b83851015611b715780858a031215611b1f5760008081fd5b611b27611617565b85518152868601518782015260408087015190820152606080870151908201526080808701519082015260a0611b5e8188016117b3565b9082015283529384019391850191611b07565b50979650505050505050565b60008060008060008060008060008060006101608c8e031215611b9f57600080fd5b8b519a5060208c0151611bb1816112d2565b60408d0151909a50611bc2816112d2565b60608d015160808e0151919a5098509650611bdf60a08d016117b3565b955060c08c0151945060e08c015193506101008c015192506101208c01519150611c0c6101408d016117b3565b90509295989b509295989b909396995056fea2646970667358221220a33819712effdeaafd2cb942ef361932bebef43100fb75db57ec3d55a8f891fa64736f6c63430008130033

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

00000000000000000000000038d54fb707905b3979f011af2aec0f4ad166cda6

-----Decoded View---------------
Arg [0] : adminPanel (address): 0x38d54fB707905B3979f011aF2aec0f4aD166cdA6

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000038d54fb707905b3979f011af2aec0f4ad166cda6


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.