xDAI Price: $0.999538 (+0.01%)

Contract

0x24F2d06446AF8D6E89fEbC205e7936a602a87b60

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Wrap442979122026-01-22 22:17:4047 hrs ago1769120260IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010002
Wrap442383302026-01-19 5:58:055 days ago1768802285IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010019
Unwrap441964422026-01-16 16:10:008 days ago1768579800IN
0x24F2d064...602a87b60
0 XDAI0.000000030.00010002
Wrap441781662026-01-15 13:32:559 days ago1768483975IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010005
Unwrap441754712026-01-15 9:36:109 days ago1768469770IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010014
Wrap441648082026-01-14 18:11:0510 days ago1768414265IN
0x24F2d064...602a87b60
0 XDAI0.000289421
Wrap441262212026-01-12 11:00:3012 days ago1768215630IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010001
Unwrap441257412026-01-12 10:19:5012 days ago1768213190IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010004
Unwrap440886612026-01-10 5:27:4514 days ago1768022865IN
0x24F2d064...602a87b60
0 XDAI0.000000030.00010001
Wrap440872972026-01-10 3:31:3014 days ago1768015890IN
0x24F2d064...602a87b60
0 XDAI00.00000008
Unwrap440650892026-01-08 19:55:4516 days ago1767902145IN
0x24F2d064...602a87b60
0 XDAI00.00000008
Unwrap440617502026-01-08 15:10:1516 days ago1767885015IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010002
Unwrap440617402026-01-08 15:09:2516 days ago1767884965IN
0x24F2d064...602a87b60
0 XDAI0.000000010.00010002
Wrap440585422026-01-08 10:35:5016 days ago1767868550IN
0x24F2d064...602a87b60
0 XDAI0.000391711.5
Wrap440435612026-01-07 13:11:4517 days ago1767791505IN
0x24F2d064...602a87b60
0 XDAI0.000398921.5
Wrap440394142026-01-07 7:13:2517 days ago1767770005IN
0x24F2d064...602a87b60
0 XDAI0.000000030.00010001
Wrap440162402026-01-05 22:05:5518 days ago1767650755IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010001
Wrap440096522026-01-05 12:39:3519 days ago1767616775IN
0x24F2d064...602a87b60
0 XDAI0.000253620.97121254
Wrap440096452026-01-05 12:39:0019 days ago1767616740IN
0x24F2d064...602a87b60
0 XDAI0.000258290.97121254
Wrap440051432026-01-05 6:12:2519 days ago1767593545IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010001
Wrap439814032026-01-03 20:15:3521 days ago1767471335IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010001
Unwrap439813452026-01-03 20:10:1521 days ago1767471015IN
0x24F2d064...602a87b60
0 XDAI0.000000030.00010002
Wrap439773772026-01-03 14:31:2521 days ago1767450685IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010001
Unwrap439628222026-01-02 17:41:3522 days ago1767375695IN
0x24F2d064...602a87b60
0 XDAI0.000000020.00010001
Wrap439591222026-01-02 12:24:3022 days ago1767356670IN
0x24F2d064...602a87b60
0 XDAI0.000261141
View all transactions

Latest 1 internal transaction

Parent Transaction Hash Block From To
197190212021-12-22 23:54:001493 days ago1640217240  Contract Creation0 XDAI
Cross-Chain Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xd811a03E...D2d784C26
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
AppProxyUpgradeable

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 1 runs

Other Settings:
byzantium EvmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at gnosisscan.io on 2024-03-14
*/

/**
* Submitted for verification at blockscout.com on 2021-02-20 10:44:43.706808Z
*/
// File: contracts/common/UnstructuredStorage.sol

/*
 * SPDX-License-Identitifer:    MIT
 */

pragma solidity ^0.4.24;


library UnstructuredStorage {
    function getStorageBool(bytes32 position) internal view returns (bool data) {
        assembly { data := sload(position) }
    }

    function getStorageAddress(bytes32 position) internal view returns (address data) {
        assembly { data := sload(position) }
    }

    function getStorageBytes32(bytes32 position) internal view returns (bytes32 data) {
        assembly { data := sload(position) }
    }

    function getStorageUint256(bytes32 position) internal view returns (uint256 data) {
        assembly { data := sload(position) }
    }

    function setStorageBool(bytes32 position, bool data) internal {
        assembly { sstore(position, data) }
    }

    function setStorageAddress(bytes32 position, address data) internal {
        assembly { sstore(position, data) }
    }

    function setStorageBytes32(bytes32 position, bytes32 data) internal {
        assembly { sstore(position, data) }
    }

    function setStorageUint256(bytes32 position, uint256 data) internal {
        assembly { sstore(position, data) }
    }
}

// File: contracts/acl/IACL.sol

/*
 * SPDX-License-Identitifer:    MIT
 */

pragma solidity ^0.4.24;


interface IACL {
    function initialize(address permissionsCreator) external;

    // TODO: this should be external
    // See https://github.com/ethereum/solidity/issues/4832
    function hasPermission(address who, address where, bytes32 what, bytes how) public view returns (bool);
}

// File: contracts/common/IVaultRecoverable.sol

/*
 * SPDX-License-Identitifer:    MIT
 */

pragma solidity ^0.4.24;


interface IVaultRecoverable {
    event RecoverToVault(address indexed vault, address indexed token, uint256 amount);

    function transferToVault(address token) external;

    function allowRecoverability(address token) external view returns (bool);
    function getRecoveryVault() external view returns (address);
}

// File: contracts/kernel/IKernel.sol

/*
 * SPDX-License-Identitifer:    MIT
 */

pragma solidity ^0.4.24;




interface IKernelEvents {
    event SetApp(bytes32 indexed namespace, bytes32 indexed appId, address app);
}


// This should be an interface, but interfaces can't inherit yet :(
contract IKernel is IKernelEvents, IVaultRecoverable {
    function acl() public view returns (IACL);
    function hasPermission(address who, address where, bytes32 what, bytes how) public view returns (bool);

    function setApp(bytes32 namespace, bytes32 appId, address app) public;
    function getApp(bytes32 namespace, bytes32 appId) public view returns (address);
}

// File: contracts/apps/AppStorage.sol

/*
 * SPDX-License-Identitifer:    MIT
 */

pragma solidity ^0.4.24;




contract AppStorage {
    using UnstructuredStorage for bytes32;

    /* Hardcoded constants to save gas
    bytes32 internal constant KERNEL_POSITION = keccak256("aragonOS.appStorage.kernel");
    bytes32 internal constant APP_ID_POSITION = keccak256("aragonOS.appStorage.appId");
    */
    bytes32 internal constant KERNEL_POSITION = 0x4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b;
    bytes32 internal constant APP_ID_POSITION = 0xd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b;

    function kernel() public view returns (IKernel) {
        return IKernel(KERNEL_POSITION.getStorageAddress());
    }

    function appId() public view returns (bytes32) {
        return APP_ID_POSITION.getStorageBytes32();
    }

    function setKernel(IKernel _kernel) internal {
        KERNEL_POSITION.setStorageAddress(address(_kernel));
    }

    function setAppId(bytes32 _appId) internal {
        APP_ID_POSITION.setStorageBytes32(_appId);
    }
}

// File: contracts/common/IsContract.sol

/*
 * SPDX-License-Identitifer:    MIT
 */

pragma solidity ^0.4.24;


contract IsContract {
    /*
    * NOTE: this should NEVER be used for authentication
    * (see pitfalls: https://github.com/fergarrui/ethereum-security/tree/master/contracts/extcodesize).
    *
    * This is only intended to be used as a sanity check that an address is actually a contract,
    * RATHER THAN an address not being a contract.
    */
    function isContract(address _target) internal view returns (bool) {
        if (_target == address(0)) {
            return false;
        }

        uint256 size;
        assembly { size := extcodesize(_target) }
        return size > 0;
    }
}

// File: contracts/lib/misc/ERCProxy.sol

/*
 * SPDX-License-Identitifer:    MIT
 */

pragma solidity ^0.4.24;


contract ERCProxy {
    uint256 internal constant FORWARDING = 1;
    uint256 internal constant UPGRADEABLE = 2;

    function proxyType() public pure returns (uint256 proxyTypeId);
    function implementation() public view returns (address codeAddr);
}

// File: contracts/common/DelegateProxy.sol

pragma solidity 0.4.24;




contract DelegateProxy is ERCProxy, IsContract {
    uint256 internal constant FWD_GAS_LIMIT = 10000;

    /**
    * @dev Performs a delegatecall and returns whatever the delegatecall returned (entire context execution will return!)
    * @param _dst Destination address to perform the delegatecall
    * @param _calldata Calldata for the delegatecall
    */
    function delegatedFwd(address _dst, bytes _calldata) internal {
        require(isContract(_dst));
        uint256 fwdGasLimit = FWD_GAS_LIMIT;

        assembly {
            let result := delegatecall(sub(gas, fwdGasLimit), _dst, add(_calldata, 0x20), mload(_calldata), 0, 0)
            let size := returndatasize
            let ptr := mload(0x40)
            returndatacopy(ptr, 0, size)

            // revert instead of invalid() bc if the underlying call failed with invalid() it already wasted gas.
            // if the call returned error data, forward it
            switch result case 0 { revert(ptr, size) }
            default { return(ptr, size) }
        }
    }
}

// File: contracts/common/DepositableStorage.sol

pragma solidity 0.4.24;



contract DepositableStorage {
    using UnstructuredStorage for bytes32;

    // keccak256("aragonOS.depositableStorage.depositable")
    bytes32 internal constant DEPOSITABLE_POSITION = 0x665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50cea;

    function isDepositable() public view returns (bool) {
        return DEPOSITABLE_POSITION.getStorageBool();
    }

    function setDepositable(bool _depositable) internal {
        DEPOSITABLE_POSITION.setStorageBool(_depositable);
    }
}

// File: contracts/common/DepositableDelegateProxy.sol

pragma solidity 0.4.24;




contract DepositableDelegateProxy is DepositableStorage, DelegateProxy {
    event ProxyDeposit(address sender, uint256 value);

    function () external payable {
        uint256 forwardGasThreshold = FWD_GAS_LIMIT;
        bytes32 isDepositablePosition = DEPOSITABLE_POSITION;

        // Optimized assembly implementation to prevent EIP-1884 from breaking deposits, reference code in Solidity:
        // https://github.com/aragon/aragonOS/blob/v4.2.1/contracts/common/DepositableDelegateProxy.sol#L10-L20
        assembly {
            // Continue only if the gas left is lower than the threshold for forwarding to the implementation code,
            // otherwise continue outside of the assembly block.
            if lt(gas, forwardGasThreshold) {
                // Only accept the deposit and emit an event if all of the following are true:
                // the proxy accepts deposits (isDepositable), msg.data.length == 0, and msg.value > 0
                if and(and(sload(isDepositablePosition), iszero(calldatasize)), gt(callvalue, 0)) {
                    // Equivalent Solidity code for emitting the event:
                    // emit ProxyDeposit(msg.sender, msg.value);

                    let logData := mload(0x40) // free memory pointer
                    mstore(logData, caller) // add 'msg.sender' to the log data (first event param)
                    mstore(add(logData, 0x20), callvalue) // add 'msg.value' to the log data (second event param)

                    // Emit an event with one topic to identify the event: keccak256('ProxyDeposit(address,uint256)') = 0x15ee...dee1
                    log1(logData, 0x40, 0x15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1)

                    stop() // Stop. Exits execution context
                }

                // If any of above checks failed, revert the execution (if ETH was sent, it is returned to the sender)
                revert(0, 0)
            }
        }

        address target = implementation();
        delegatedFwd(target, msg.data);
    }
}

// File: contracts/kernel/KernelConstants.sol

/*
 * SPDX-License-Identitifer:    MIT
 */

pragma solidity ^0.4.24;


contract KernelAppIds {
    /* Hardcoded constants to save gas
    bytes32 internal constant KERNEL_CORE_APP_ID = apmNamehash("kernel");
    bytes32 internal constant KERNEL_DEFAULT_ACL_APP_ID = apmNamehash("acl");
    bytes32 internal constant KERNEL_DEFAULT_VAULT_APP_ID = apmNamehash("vault");
    */
    bytes32 internal constant KERNEL_CORE_APP_ID = 0x3b4bf6bf3ad5000ecf0f989d5befde585c6860fea3e574a4fab4c49d1c177d9c;
    bytes32 internal constant KERNEL_DEFAULT_ACL_APP_ID = 0xe3262375f45a6e2026b7e7b18c2b807434f2508fe1a2a3dfb493c7df8f4aad6a;
    bytes32 internal constant KERNEL_DEFAULT_VAULT_APP_ID = 0x7e852e0fcfce6551c13800f1e7476f982525c2b5277ba14b24339c68416336d1;
}


contract KernelNamespaceConstants {
    /* Hardcoded constants to save gas
    bytes32 internal constant KERNEL_CORE_NAMESPACE = keccak256("core");
    bytes32 internal constant KERNEL_APP_BASES_NAMESPACE = keccak256("base");
    bytes32 internal constant KERNEL_APP_ADDR_NAMESPACE = keccak256("app");
    */
    bytes32 internal constant KERNEL_CORE_NAMESPACE = 0xc681a85306374a5ab27f0bbc385296a54bcd314a1948b6cf61c4ea1bc44bb9f8;
    bytes32 internal constant KERNEL_APP_BASES_NAMESPACE = 0xf1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f;
    bytes32 internal constant KERNEL_APP_ADDR_NAMESPACE = 0xd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb;
}

// File: contracts/apps/AppProxyBase.sol

pragma solidity 0.4.24;






contract AppProxyBase is AppStorage, DepositableDelegateProxy, KernelNamespaceConstants {
    /**
    * @dev Initialize AppProxy
    * @param _kernel Reference to organization kernel for the app
    * @param _appId Identifier for app
    * @param _initializePayload Payload for call to be made after setup to initialize
    */
    constructor(IKernel _kernel, bytes32 _appId, bytes _initializePayload) public {
        setKernel(_kernel);
        setAppId(_appId);

        // Implicit check that kernel is actually a Kernel
        // The EVM doesn't actually provide a way for us to make sure, but we can force a revert to
        // occur if the kernel is set to 0x0 or a non-code address when we try to call a method on
        // it.
        address appCode = getAppBase(_appId);

        // If initialize payload is provided, it will be executed
        if (_initializePayload.length > 0) {
            require(isContract(appCode));
            // Cannot make delegatecall as a delegateproxy.delegatedFwd as it
            // returns ending execution context and halts contract deployment
            require(appCode.delegatecall(_initializePayload));
        }
    }

    function getAppBase(bytes32 _appId) internal view returns (address) {
        return kernel().getApp(KERNEL_APP_BASES_NAMESPACE, _appId);
    }
}

// File: contracts/apps/AppProxyUpgradeable.sol

pragma solidity 0.4.24;



contract AppProxyUpgradeable is AppProxyBase {
    /**
    * @dev Initialize AppProxyUpgradeable (makes it an upgradeable Aragon app)
    * @param _kernel Reference to organization kernel for the app
    * @param _appId Identifier for app
    * @param _initializePayload Payload for call to be made after setup to initialize
    */
    constructor(IKernel _kernel, bytes32 _appId, bytes _initializePayload)
        AppProxyBase(_kernel, _appId, _initializePayload)
        public // solium-disable-line visibility-first
    {
        // solium-disable-previous-line no-empty-blocks
    }

    /**
     * @dev ERC897, the address the proxy would delegate calls to
     */
    function implementation() public view returns (address) {
        return getAppBase(appId());
    }

    /**
     * @dev ERC897, whether it is a forwarding (1) or an upgradeable (2) proxy
     */
    function proxyType() public pure returns (uint256 proxyTypeId) {
        return UPGRADEABLE;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"proxyType","outputs":[{"name":"proxyTypeId","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"isDepositable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"appId","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kernel","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_kernel","type":"address"},{"name":"_appId","type":"bytes32"},{"name":"_initializePayload","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"ProxyDeposit","type":"event"}]

0x608060405234801561001057600080fd5b506040516106933803806106938339810160409081528151602083015191830151909201828282600061004b84640100000000610124810204565b61005d8364010000000061014c810204565b61006f83640100000000610183810204565b90506000825111156101185761008d81640100000000610253810204565b151561009857600080fd5b80600160a060020a03168260405180828051906020019080838360005b838110156100cd5781810151838201526020016100b5565b50505050905090810190601f1680156100fa5780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561011857600080fd5b505050505050506102b3565b6101496000805160206106738339815191528264010000000061035d61028082021704565b50565b6101497fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b8264010000000061035d61028082021704565b6000610196640100000000610284810204565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6004820152602481018590529051600160a060020a03929092169163be00bbd8916044808201926020929091908290030181600087803b15801561022157600080fd5b505af1158015610235573d6000803e3d6000fd5b505050506040513d602081101561024b57600080fd5b505192915050565b600080600160a060020a038316151561026f576000915061027a565b823b90506000811191505b50919050565b9055565b60006102aa6000805160206106738339815191526401000000006103556102af82021704565b905090565b5490565b6103b1806102c26000396000f3006080604052600436106100535763ffffffff60e060020a6000350416634555d5c9811461010057806348a0c8dd146101275780635c60da1b1461015057806380afdea814610181578063d4aae0c414610196575b6127106000805160206103668339815191526000825a10156100b65760003411361583541616156100b1576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100be6101ab565b90506100fb816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101c2945050505050565b505050005b34801561010c57600080fd5b50610115610203565b60408051918252519081900360200190f35b34801561013357600080fd5b5061013c610208565b604080519115158252519081900360200190f35b34801561015c57600080fd5b506101656101ab565b60408051600160a060020a039092168252519081900360200190f35b34801561018d57600080fd5b50610115610221565b3480156101a257600080fd5b5061016561024c565b60006101bd6101b8610221565b610277565b905090565b60006101cd83610328565b15156101d857600080fd5b612710905060008083516020850186855a03f43d604051816000823e8280156101ff578282f35b8282fd5b600290565b60006101bd600080516020610366833981519152610355565b60006101bd7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b610355565b60006101bd7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b610355565b600061028161024c565b6040805160e360020a6317c0177b0281527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6004820152602481018590529051600160a060020a03929092169163be00bbd8916044808201926020929091908290030181600087803b1580156102f657600080fd5b505af115801561030a573d6000803e3d6000fd5b505050506040513d602081101561032057600080fd5b505192915050565b600080600160a060020a0383161515610344576000915061034f565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50ceaa165627a7a723058200da8998b2aec423ab71bc48d498298801a9f9ca383732a0ca7f6017bfc23d47b00294172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b000000000000000000000000b25f0ee2d26461e2b5b3d3ddafe197a0da677b983ccad1fc11d5b14e58c1c53a5138a51f4da8d509831bc505e60bb74d88f8bef500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106100535763ffffffff60e060020a6000350416634555d5c9811461010057806348a0c8dd146101275780635c60da1b1461015057806380afdea814610181578063d4aae0c414610196575b6127106000805160206103668339815191526000825a10156100b65760003411361583541616156100b1576040513381523460208201527f15eeaa57c7bd188c1388020bcadc2c436ec60d647d36ef5b9eb3c742217ddee1604082a1005b600080fd5b6100be6101ab565b90506100fb816000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506101c2945050505050565b505050005b34801561010c57600080fd5b50610115610203565b60408051918252519081900360200190f35b34801561013357600080fd5b5061013c610208565b604080519115158252519081900360200190f35b34801561015c57600080fd5b506101656101ab565b60408051600160a060020a039092168252519081900360200190f35b34801561018d57600080fd5b50610115610221565b3480156101a257600080fd5b5061016561024c565b60006101bd6101b8610221565b610277565b905090565b60006101cd83610328565b15156101d857600080fd5b612710905060008083516020850186855a03f43d604051816000823e8280156101ff578282f35b8282fd5b600290565b60006101bd600080516020610366833981519152610355565b60006101bd7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b610355565b60006101bd7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b610355565b600061028161024c565b6040805160e360020a6317c0177b0281527ff1f3eb40f5bc1ad1344716ced8b8a0431d840b5783aea1fd01786bc26f35ac0f6004820152602481018590529051600160a060020a03929092169163be00bbd8916044808201926020929091908290030181600087803b1580156102f657600080fd5b505af115801561030a573d6000803e3d6000fd5b505050506040513d602081101561032057600080fd5b505192915050565b600080600160a060020a0383161515610344576000915061034f565b823b90506000811191505b50919050565b5490565b5490565b9055565b90555600665fd576fbbe6f247aff98f5c94a561e3f71ec2d3c988d56f12d342396c50ceaa165627a7a723058200da8998b2aec423ab71bc48d498298801a9f9ca383732a0ca7f6017bfc23d47b0029

Deployed Bytecode Sourcemap

12136:1002:0:-;;;;;;;;;-1:-1:-1;;;12136:1002:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5330:5;-1:-1:-1;;;;;;;;;;;7172:27:0;5330:5;7735:3;7732:28;7729:2;;;8058:1;8047:9;8044:16;8028:12;8021:20;7997:21;7991:28;7987:55;7983:78;7980:2;;;8247:4;8241:11;8313:6;8304:7;8297:23;8425:9;8418:4;8409:7;8405:18;8398:37;8670:66;8664:4;8655:7;8650:87;8761:6;7980:2;8969:1;8966;8959:12;7729:2;9026:16;:14;:16::i;:::-;9009:33;;9053:30;9066:6;9074:8;;9053:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9053:12:0;;-1:-1:-1;;;;;9053:30:0:i;:::-;7132:1959;;;12136:1002;13035:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13035:100:0;;;;;;;;;;;;;;;;;;;;6655:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6655:115:0;;;;;;;;;;;;;;;;;;;;;;12828:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12828:101:0;;;;;;;;-1:-1:-1;;;;;12828:101:0;;;;;;;;;;;;;;3676:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3676:108:0;;;;3550:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3550:118:0;;;;12828:101;12875:7;12902:19;12913:7;:5;:7::i;:::-;12902:10;:19::i;:::-;12895:26;;12828:101;:::o;5605:694::-;5714:19;5686:16;5697:4;5686:10;:16::i;:::-;5678:25;;;;;;;;5330:5;5714:35;;5885:1;5882;5870:9;5864:16;5857:4;5846:9;5842:20;5836:4;5822:11;5817:3;5813:21;5800:87;5913:14;5958:4;5952:11;6000:4;5997:1;5992:3;5977:28;6203:6;6210:28;;;;6274:4;6269:3;6262:17;6210:28;6231:4;6226:3;6219:17;13035:100;5003:1;13035:100;:::o;6655:115::-;6701:4;6725:37;-1:-1:-1;;;;;;;;;;;6725:35:0;:37::i;3676:108::-;3714:7;3741:35;3475:66;3741:33;:35::i;3550:118::-;3589:7;3624:35;3358:66;3624:33;:35::i;11902:145::-;11961:7;11988:8;:6;:8::i;:::-;:51;;;-1:-1:-1;;;;;11988:51:0;;10415:66;11988:51;;;;;;;;;;;;-1:-1:-1;;;;;11988:15:0;;;;;;;:51;;;;;;;;;;;;;;;;:15;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;11988:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11988:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11988:51:0;;11902:145;-1:-1:-1;;11902:145:0:o;4510:252::-;4570:4;;-1:-1:-1;;;;;4591:21:0;;;4587:66;;;4636:5;4629:12;;;;4587:66;4719:7;4707:20;4699:28;;4753:1;4746:4;:8;4739:15;;4510:252;;;;;:::o;254:130::-;360:15;;350:27::o;392:136::-;504:15;;494:27::o;947:121::-;1037:22;;1035:26::o;1076:121::-;1166:22;;1164:26::o

Swarm Source

bzzr://0da8998b2aec423ab71bc48d498298801a9f9ca383732a0ca7f6017bfc23d47b

Block Transaction Gas Used Reward
view all blocks validated

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