Sepolia Testnet

Contract

0xf554DA5e35b2e40C09DDB481545A395da1736513

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
0x6080604042720252023-09-12 6:07:24305 days ago1694498844IN
 Create: RecoverMessage
0 ETH0.00225662.7165898

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

Contract Source Code Verified (Exact Match)

Contract Name:
RecoverMessage

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-09-12
*/

// SPDX-License-Identifier: MIT

// For more info, see: https://docs.ethers.org


pragma solidity ^0.8.21;

// Returns the decimal string representation of value
function itoa(uint value) pure returns (string memory) {

  // Count the length of the decimal string representation
  uint length = 1;
  uint v = value;
  while ((v /= 10) != 0) { length++; }

  // Allocated enough bytes
  bytes memory result = new bytes(length);

  // Place each ASCII string character in the string,
  // right to left
  while (true) {
    length--;

    // The ASCII value of the modulo 10 value
    result[length] = bytes1(uint8(0x30 + (value % 10)));

    value /= 10;

    if (length == 0) { break; }
  }

  return string(result);
}

contract RecoverMessage {

  // This is the EIP-2098 compact representation, which reduces gas costs
  struct SignatureCompact {
    bytes32 r;
    bytes32 yParityAndS;
  }

  // This is an expaned Signature representation
  struct SignatureExpanded {
      uint8 v;
      bytes32 r;
      bytes32 s;
  }

  // Helper function
  function _ecrecover(string memory message, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {
    // Compute the EIP-191 prefixed message
    bytes memory prefixedMessage = abi.encodePacked(
      "\x19Ethereum Signed Message:\n",
      itoa(bytes(message).length),
      message
    );

    // Compute the message digest
    bytes32 digest = keccak256(prefixedMessage);

    // Use the native ecrecover provided by the EVM
    return ecrecover(digest, v, r, s);
  }

  // Recover the address from an EIP-2098 compact Signature, which packs the bit for
  // v into an unused bit within s, which saves gas overall, costing a little extra
  // in computation, but saves far more in calldata length.
  //
  // This Signature format is 64 bytes in length.
  function recoverStringFromCompact(string calldata message, SignatureCompact calldata sig) public pure returns (address) {

      // Decompose the EIP-2098 signature (the struct is 64 bytes in length)
      uint8 v = 27 + uint8(uint256(sig.yParityAndS) >> 255);
      bytes32 s = bytes32((uint256(sig.yParityAndS) << 1) >> 1);

      return _ecrecover(message, v, sig.r, s);
  }

  // Recover the address from the an expanded Signature struct.
  //
  // This Signature format is 96 bytes in length.
  function recoverStringFromExpanded(string calldata message, SignatureExpanded calldata sig) public pure returns (address) {

      // The v, r and s are included directly within the struct, which is 96 bytes in length
      return _ecrecover(message, sig.v, sig.r, sig.s);
  }

  // Recover the address from a v, r and s passed directly into the method.
  //
  // This Signature format is 96 bytes in length.
  function recoverStringFromVRS(string calldata message, uint8 v, bytes32 r, bytes32 s) public pure returns (address) {

      // The v, r and s are included directly within the struct, which is 96 bytes in length
      return _ecrecover(message, v, r, s);
  }

  // Recover the address from a raw signature. The signature is 65 bytes, which when
  // ABI encoded is 160 bytes long (a pointer, a length and the padded 3 words of data).
  //
  // When using raw signatures, some tools return the v as 0 or 1. In this case you must
  // add 27 to that value as v must be either 27 or 28.
  //
  // This Signature format is 65 bytes of data, but when ABI encoded is 160 bytes in length; 
  // a pointer (32 bytes), a length (32 bytes) and the padded 3 words of data (96 bytes).
  function recoverStringFromRaw(string calldata message, bytes calldata sig) public pure returns (address) {

    // Sanity check before using assembly
    require(sig.length == 65, "invalid signature");

    // Decompose the raw signature into r, s and v (note the order)
    uint8 v;
    bytes32 r;
    bytes32 s;
    assembly {
      r := calldataload(sig.offset)
      s := calldataload(add(sig.offset, 0x20))
      v := calldataload(add(sig.offset, 0x21))
    }

    return _ecrecover(message, v, r, s);
  }

  // This is provided as a quick example for those that only need to recover a signature
  // for a signed hash (highly discouraged; but common), which means we can hardcode the
  // length in the prefix. This means we can drop the itoa and _ecrecover functions above.
  function recoverHashFromCompact(bytes32 hash, SignatureCompact calldata sig) public pure returns (address) {
    bytes memory prefixedMessage = abi.encodePacked(
      // Notice the length of the message is hard-coded to 32
      // here -----------------------v
      "\x19Ethereum Signed Message:\n32",
      hash
    );

    bytes32 digest = keccak256(prefixedMessage);

    // Decompose the EIP-2098 signature
    uint8 v = 27 + uint8(uint256(sig.yParityAndS) >> 255);
    bytes32 s = bytes32((uint256(sig.yParityAndS) << 1) >> 1);

    return ecrecover(digest, v, sig.r, s);
  }
}

Contract ABI

[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"components":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"yParityAndS","type":"bytes32"}],"internalType":"struct RecoverMessage.SignatureCompact","name":"sig","type":"tuple"}],"name":"recoverHashFromCompact","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"message","type":"string"},{"components":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"yParityAndS","type":"bytes32"}],"internalType":"struct RecoverMessage.SignatureCompact","name":"sig","type":"tuple"}],"name":"recoverStringFromCompact","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"message","type":"string"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct RecoverMessage.SignatureExpanded","name":"sig","type":"tuple"}],"name":"recoverStringFromExpanded","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"message","type":"string"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"recoverStringFromRaw","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"message","type":"string"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"recoverStringFromVRS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"}]

608060405234801561000f575f80fd5b50610e148061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806323c19ebf14610059578063386117791461008957806343f7d88c146100b957806350b630fd146100e957806385d93c0d14610119575b5f80fd5b610073600480360381019061006e9190610619565b610149565b6040516100809190610696565b60405180910390f35b6100a3600480360381019061009e9190610746565b610200565b6040516100b09190610696565b60405180910390f35b6100d360048036038101906100ce91906107ca565b61025b565b6040516100e09190610696565b60405180910390f35b61010360048036038101906100fe9190610845565b6102e6565b6040516101109190610696565b60405180910390f35b610133600480360381019061012e91906108f7565b610358565b6040516101409190610696565b60405180910390f35b5f808360405160200161015c91906109e9565b60405160208183030381529060405290505f818051906020012090505f60ff85602001355f1c901c601b6101909190610a3b565b90505f60018087602001355f1c901b901c5f1b905060018383885f0135846040515f81526020016040526040516101ca9493929190610a8d565b6020604051602081039080840390855afa1580156101ea573d5f803e3d5ffd5b5050506020604051035194505050505092915050565b5f61025086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050858585610410565b905095945050505050565b5f8060ff83602001355f1c901c601b6102749190610a3b565b90505f60018085602001355f1c901b901c5f1b90506102db86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505083865f013584610410565b925050509392505050565b5f61034f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050835f0160208101906103409190610ad0565b84602001358560400135610410565b90509392505050565b5f6041838390501461039f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039690610b55565b60405180910390fd5b5f805f85359150602086013590506021860135925061040388888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050848484610410565b9350505050949350505050565b5f8061041c86516104a2565b8660405160200161042e929190610c1f565b60405160208183030381529060405290505f818051906020012090506001818787876040515f815260200160405260405161046c9493929190610a8d565b6020604051602081039080840390855afa15801561048c573d5f803e3d5ffd5b5050506020604051035192505050949350505050565b60605f600190505f8390505b5f600a826104bc9190610c83565b915081146104d75781806104cf90610cb3565b9250506104ae565b5f8267ffffffffffffffff8111156104f2576104f1610cfa565b5b6040519080825280601f01601f1916602001820160405280156105245781602001600182028036833780820191505090505b5090505b6001156105b157828061053a90610d27565b935050600a8561054a9190610d4e565b60306105569190610d7e565b60f81b81848151811061056c5761056b610db1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856105a79190610c83565b94505f8303610528575b809350505050919050565b5f80fd5b5f80fd5b5f819050919050565b6105d6816105c4565b81146105e0575f80fd5b50565b5f813590506105f1816105cd565b92915050565b5f80fd5b5f604082840312156106105761060f6105f7565b5b81905092915050565b5f806060838503121561062f5761062e6105bc565b5b5f61063c858286016105e3565b925050602061064d858286016105fb565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61068082610657565b9050919050565b61069081610676565b82525050565b5f6020820190506106a95f830184610687565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126106d0576106cf6106af565b5b8235905067ffffffffffffffff8111156106ed576106ec6106b3565b5b602083019150836001820283011115610709576107086106b7565b5b9250929050565b5f60ff82169050919050565b61072581610710565b811461072f575f80fd5b50565b5f813590506107408161071c565b92915050565b5f805f805f6080868803121561075f5761075e6105bc565b5b5f86013567ffffffffffffffff81111561077c5761077b6105c0565b5b610788888289016106bb565b9550955050602061079b88828901610732565b93505060406107ac888289016105e3565b92505060606107bd888289016105e3565b9150509295509295909350565b5f805f606084860312156107e1576107e06105bc565b5b5f84013567ffffffffffffffff8111156107fe576107fd6105c0565b5b61080a868287016106bb565b9350935050602061081d868287016105fb565b9150509250925092565b5f6060828403121561083c5761083b6105f7565b5b81905092915050565b5f805f6080848603121561085c5761085b6105bc565b5b5f84013567ffffffffffffffff811115610879576108786105c0565b5b610885868287016106bb565b9350935050602061089886828701610827565b9150509250925092565b5f8083601f8401126108b7576108b66106af565b5b8235905067ffffffffffffffff8111156108d4576108d36106b3565b5b6020830191508360018202830111156108f0576108ef6106b7565b5b9250929050565b5f805f806040858703121561090f5761090e6105bc565b5b5f85013567ffffffffffffffff81111561092c5761092b6105c0565b5b610938878288016106bb565b9450945050602085013567ffffffffffffffff81111561095b5761095a6105c0565b5b610967878288016108a2565b925092505092959194509250565b5f81905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f82015250565b5f6109b3601c83610975565b91506109be8261097f565b601c82019050919050565b5f819050919050565b6109e36109de826105c4565b6109c9565b82525050565b5f6109f3826109a7565b91506109ff82846109d2565b60208201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a4582610710565b9150610a5083610710565b9250828201905060ff811115610a6957610a68610a0e565b5b92915050565b610a78816105c4565b82525050565b610a8781610710565b82525050565b5f608082019050610aa05f830187610a6f565b610aad6020830186610a7e565b610aba6040830185610a6f565b610ac76060830184610a6f565b95945050505050565b5f60208284031215610ae557610ae46105bc565b5b5f610af284828501610732565b91505092915050565b5f82825260208201905092915050565b7f696e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f610b3f601183610afb565b9150610b4a82610b0b565b602082019050919050565b5f6020820190508181035f830152610b6c81610b33565b9050919050565b7f19457468657265756d205369676e6564204d6573736167653a0a0000000000005f82015250565b5f610ba7601a83610975565b9150610bb282610b73565b601a82019050919050565b5f81519050919050565b5f5b83811015610be4578082015181840152602081019050610bc9565b5f8484015250505050565b5f610bf982610bbd565b610c038185610975565b9350610c13818560208601610bc7565b80840191505092915050565b5f610c2982610b9b565b9150610c358285610bef565b9150610c418284610bef565b91508190509392505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610c8d82610c4d565b9150610c9883610c4d565b925082610ca857610ca7610c56565b5b828204905092915050565b5f610cbd82610c4d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610cef57610cee610a0e565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f610d3182610c4d565b91505f8203610d4357610d42610a0e565b5b600182039050919050565b5f610d5882610c4d565b9150610d6383610c4d565b925082610d7357610d72610c56565b5b828206905092915050565b5f610d8882610c4d565b9150610d9383610c4d565b9250828201905080821115610dab57610daa610a0e565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220ab569fee8d290d72871ef92249f7a9aadd23d206f611ef55490822e40383541564736f6c63430008150033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610055575f3560e01c806323c19ebf14610059578063386117791461008957806343f7d88c146100b957806350b630fd146100e957806385d93c0d14610119575b5f80fd5b610073600480360381019061006e9190610619565b610149565b6040516100809190610696565b60405180910390f35b6100a3600480360381019061009e9190610746565b610200565b6040516100b09190610696565b60405180910390f35b6100d360048036038101906100ce91906107ca565b61025b565b6040516100e09190610696565b60405180910390f35b61010360048036038101906100fe9190610845565b6102e6565b6040516101109190610696565b60405180910390f35b610133600480360381019061012e91906108f7565b610358565b6040516101409190610696565b60405180910390f35b5f808360405160200161015c91906109e9565b60405160208183030381529060405290505f818051906020012090505f60ff85602001355f1c901c601b6101909190610a3b565b90505f60018087602001355f1c901b901c5f1b905060018383885f0135846040515f81526020016040526040516101ca9493929190610a8d565b6020604051602081039080840390855afa1580156101ea573d5f803e3d5ffd5b5050506020604051035194505050505092915050565b5f61025086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050858585610410565b905095945050505050565b5f8060ff83602001355f1c901c601b6102749190610a3b565b90505f60018085602001355f1c901b901c5f1b90506102db86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505083865f013584610410565b925050509392505050565b5f61034f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050835f0160208101906103409190610ad0565b84602001358560400135610410565b90509392505050565b5f6041838390501461039f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039690610b55565b60405180910390fd5b5f805f85359150602086013590506021860135925061040388888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050848484610410565b9350505050949350505050565b5f8061041c86516104a2565b8660405160200161042e929190610c1f565b60405160208183030381529060405290505f818051906020012090506001818787876040515f815260200160405260405161046c9493929190610a8d565b6020604051602081039080840390855afa15801561048c573d5f803e3d5ffd5b5050506020604051035192505050949350505050565b60605f600190505f8390505b5f600a826104bc9190610c83565b915081146104d75781806104cf90610cb3565b9250506104ae565b5f8267ffffffffffffffff8111156104f2576104f1610cfa565b5b6040519080825280601f01601f1916602001820160405280156105245781602001600182028036833780820191505090505b5090505b6001156105b157828061053a90610d27565b935050600a8561054a9190610d4e565b60306105569190610d7e565b60f81b81848151811061056c5761056b610db1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856105a79190610c83565b94505f8303610528575b809350505050919050565b5f80fd5b5f80fd5b5f819050919050565b6105d6816105c4565b81146105e0575f80fd5b50565b5f813590506105f1816105cd565b92915050565b5f80fd5b5f604082840312156106105761060f6105f7565b5b81905092915050565b5f806060838503121561062f5761062e6105bc565b5b5f61063c858286016105e3565b925050602061064d858286016105fb565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61068082610657565b9050919050565b61069081610676565b82525050565b5f6020820190506106a95f830184610687565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126106d0576106cf6106af565b5b8235905067ffffffffffffffff8111156106ed576106ec6106b3565b5b602083019150836001820283011115610709576107086106b7565b5b9250929050565b5f60ff82169050919050565b61072581610710565b811461072f575f80fd5b50565b5f813590506107408161071c565b92915050565b5f805f805f6080868803121561075f5761075e6105bc565b5b5f86013567ffffffffffffffff81111561077c5761077b6105c0565b5b610788888289016106bb565b9550955050602061079b88828901610732565b93505060406107ac888289016105e3565b92505060606107bd888289016105e3565b9150509295509295909350565b5f805f606084860312156107e1576107e06105bc565b5b5f84013567ffffffffffffffff8111156107fe576107fd6105c0565b5b61080a868287016106bb565b9350935050602061081d868287016105fb565b9150509250925092565b5f6060828403121561083c5761083b6105f7565b5b81905092915050565b5f805f6080848603121561085c5761085b6105bc565b5b5f84013567ffffffffffffffff811115610879576108786105c0565b5b610885868287016106bb565b9350935050602061089886828701610827565b9150509250925092565b5f8083601f8401126108b7576108b66106af565b5b8235905067ffffffffffffffff8111156108d4576108d36106b3565b5b6020830191508360018202830111156108f0576108ef6106b7565b5b9250929050565b5f805f806040858703121561090f5761090e6105bc565b5b5f85013567ffffffffffffffff81111561092c5761092b6105c0565b5b610938878288016106bb565b9450945050602085013567ffffffffffffffff81111561095b5761095a6105c0565b5b610967878288016108a2565b925092505092959194509250565b5f81905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f82015250565b5f6109b3601c83610975565b91506109be8261097f565b601c82019050919050565b5f819050919050565b6109e36109de826105c4565b6109c9565b82525050565b5f6109f3826109a7565b91506109ff82846109d2565b60208201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a4582610710565b9150610a5083610710565b9250828201905060ff811115610a6957610a68610a0e565b5b92915050565b610a78816105c4565b82525050565b610a8781610710565b82525050565b5f608082019050610aa05f830187610a6f565b610aad6020830186610a7e565b610aba6040830185610a6f565b610ac76060830184610a6f565b95945050505050565b5f60208284031215610ae557610ae46105bc565b5b5f610af284828501610732565b91505092915050565b5f82825260208201905092915050565b7f696e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f610b3f601183610afb565b9150610b4a82610b0b565b602082019050919050565b5f6020820190508181035f830152610b6c81610b33565b9050919050565b7f19457468657265756d205369676e6564204d6573736167653a0a0000000000005f82015250565b5f610ba7601a83610975565b9150610bb282610b73565b601a82019050919050565b5f81519050919050565b5f5b83811015610be4578082015181840152602081019050610bc9565b5f8484015250505050565b5f610bf982610bbd565b610c038185610975565b9350610c13818560208601610bc7565b80840191505092915050565b5f610c2982610b9b565b9150610c358285610bef565b9150610c418284610bef565b91508190509392505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610c8d82610c4d565b9150610c9883610c4d565b925082610ca857610ca7610c56565b5b828204905092915050565b5f610cbd82610c4d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610cef57610cee610a0e565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f610d3182610c4d565b91505f8203610d4357610d42610a0e565b5b600182039050919050565b5f610d5882610c4d565b9150610d6383610c4d565b925082610d7357610d72610c56565b5b828206905092915050565b5f610d8882610c4d565b9150610d9383610c4d565b9250828201905080821115610dab57610daa610a0e565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220ab569fee8d290d72871ef92249f7a9aadd23d206f611ef55490822e40383541564736f6c63430008150033

Deployed Bytecode Sourcemap

754:4259:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4412:598;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2819:262;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1887:384;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2399:280;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3608:526;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4412:598;4510:7;4526:28;4728:4;4557:182;;;;;;;;:::i;:::-;;;;;;;;;;;;;4526:213;;4748:14;4775:15;4765:26;;;;;;4748:43;;4841:7;4890:3;4870;:15;;;4862:24;;:31;;4851:2;:43;;;;:::i;:::-;4841:53;;4901:9;4956:1;4950;4930:3;:15;;;4922:24;;:29;;4921:36;;4913:45;;4901:57;;4974:30;4984:6;4992:1;4995:3;:5;;;5002:1;4974:30;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4967:37;;;;;;4412:598;;;;:::o;2819:262::-;2926:7;3047:28;3058:7;;3047:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3067:1;3070;3073;3047:10;:28::i;:::-;3040:35;;2819:262;;;;;;;:::o;1887:384::-;1998:7;2096;2145:3;2125;:15;;;2117:24;;:31;;2106:2;:43;;;;:::i;:::-;2096:53;;2158:9;2213:1;2207;2187:3;:15;;;2179:24;;:29;;2178:36;;2170:45;;2158:57;;2233:32;2244:7;;2233:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2253:1;2256:3;:5;;;2263:1;2233:10;:32::i;:::-;2226:39;;;;1887:384;;;;;:::o;2399:280::-;2512:7;2633:40;2644:7;;2633:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2653:3;:5;;;;;;;;;;:::i;:::-;2660:3;:5;;;2667:3;:5;;;2633:10;:40::i;:::-;2626:47;;2399:280;;;;;:::o;3608:526::-;3704:7;3787:2;3773:3;;:10;;:16;3765:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3889:7;3903:9;3919;3971:10;3958:24;3953:29;;4024:4;4012:10;4008:21;3995:35;3990:40;;4072:4;4060:10;4056:21;4043:35;4038:40;;4100:28;4111:7;;4100:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4120:1;4123;4126;4100:10;:28::i;:::-;4093:35;;;;;3608:526;;;;;;:::o;1099:493::-;1196:7;1257:28;1354:27;1365:7;1359:21;1354:4;:27::i;:::-;1390:7;1288:116;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1257:147;;1448:14;1475:15;1465:26;;;;;;1448:43;;1560:26;1570:6;1578:1;1581;1584;1560:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:33;;;;1099:493;;;;;;:::o;170:580::-;210:13;292:11;306:1;292:15;;312:6;321:5;312:14;;331:36;351:1;344:2;339:7;;;;;:::i;:::-;;;;338:14;331:36;;356:8;;;;;:::i;:::-;;;;331:36;;;402:19;434:6;424:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;402:39;;523:196;530:4;523:196;;;543:8;;;;;:::i;:::-;;;;653:2;645:5;:10;;;;:::i;:::-;637:4;:19;;;;:::i;:::-;624:34;;607:6;614;607:14;;;;;;;;:::i;:::-;;;;;:51;;;;;;;;;;;676:2;667:11;;;;;:::i;:::-;;;701:1;691:6;:11;523:196;687:27;523:196;739:6;725:21;;;;;170:580;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:117::-;799:1;796;789:12;859:238;939:5;980:2;971:6;966:3;962:16;958:25;955:112;;;986:79;;:::i;:::-;955:112;1085:6;1076:15;;859:238;;;;:::o;1103:542::-;1205:6;1213;1262:2;1250:9;1241:7;1237:23;1233:32;1230:119;;;1268:79;;:::i;:::-;1230:119;1388:1;1413:53;1458:7;1449:6;1438:9;1434:22;1413:53;:::i;:::-;1403:63;;1359:117;1515:2;1541:87;1620:7;1611:6;1600:9;1596:22;1541:87;:::i;:::-;1531:97;;1486:152;1103:542;;;;;:::o;1651:126::-;1688:7;1728:42;1721:5;1717:54;1706:65;;1651:126;;;:::o;1783:96::-;1820:7;1849:24;1867:5;1849:24;:::i;:::-;1838:35;;1783:96;;;:::o;1885:118::-;1972:24;1990:5;1972:24;:::i;:::-;1967:3;1960:37;1885:118;;:::o;2009:222::-;2102:4;2140:2;2129:9;2125:18;2117:26;;2153:71;2221:1;2210:9;2206:17;2197:6;2153:71;:::i;:::-;2009:222;;;;:::o;2237:117::-;2346:1;2343;2336:12;2360:117;2469:1;2466;2459:12;2483:117;2592:1;2589;2582:12;2620:553;2678:8;2688:6;2738:3;2731:4;2723:6;2719:17;2715:27;2705:122;;2746:79;;:::i;:::-;2705:122;2859:6;2846:20;2836:30;;2889:18;2881:6;2878:30;2875:117;;;2911:79;;:::i;:::-;2875:117;3025:4;3017:6;3013:17;3001:29;;3079:3;3071:4;3063:6;3059:17;3049:8;3045:32;3042:41;3039:128;;;3086:79;;:::i;:::-;3039:128;2620:553;;;;;:::o;3179:86::-;3214:7;3254:4;3247:5;3243:16;3232:27;;3179:86;;;:::o;3271:118::-;3342:22;3358:5;3342:22;:::i;:::-;3335:5;3332:33;3322:61;;3379:1;3376;3369:12;3322:61;3271:118;:::o;3395:135::-;3439:5;3477:6;3464:20;3455:29;;3493:31;3518:5;3493:31;:::i;:::-;3395:135;;;;:::o;3536:961::-;3632:6;3640;3648;3656;3664;3713:3;3701:9;3692:7;3688:23;3684:33;3681:120;;;3720:79;;:::i;:::-;3681:120;3868:1;3857:9;3853:17;3840:31;3898:18;3890:6;3887:30;3884:117;;;3920:79;;:::i;:::-;3884:117;4033:65;4090:7;4081:6;4070:9;4066:22;4033:65;:::i;:::-;4015:83;;;;3811:297;4147:2;4173:51;4216:7;4207:6;4196:9;4192:22;4173:51;:::i;:::-;4163:61;;4118:116;4273:2;4299:53;4344:7;4335:6;4324:9;4320:22;4299:53;:::i;:::-;4289:63;;4244:118;4401:2;4427:53;4472:7;4463:6;4452:9;4448:22;4427:53;:::i;:::-;4417:63;;4372:118;3536:961;;;;;;;;:::o;4503:742::-;4617:6;4625;4633;4682:2;4670:9;4661:7;4657:23;4653:32;4650:119;;;4688:79;;:::i;:::-;4650:119;4836:1;4825:9;4821:17;4808:31;4866:18;4858:6;4855:30;4852:117;;;4888:79;;:::i;:::-;4852:117;5001:65;5058:7;5049:6;5038:9;5034:22;5001:65;:::i;:::-;4983:83;;;;4779:297;5115:2;5141:87;5220:7;5211:6;5200:9;5196:22;5141:87;:::i;:::-;5131:97;;5086:152;4503:742;;;;;:::o;5298:239::-;5379:5;5420:2;5411:6;5406:3;5402:16;5398:25;5395:112;;;5426:79;;:::i;:::-;5395:112;5525:6;5516:15;;5298:239;;;;:::o;5543:745::-;5658:6;5666;5674;5723:3;5711:9;5702:7;5698:23;5694:33;5691:120;;;5730:79;;:::i;:::-;5691:120;5878:1;5867:9;5863:17;5850:31;5908:18;5900:6;5897:30;5894:117;;;5930:79;;:::i;:::-;5894:117;6043:65;6100:7;6091:6;6080:9;6076:22;6043:65;:::i;:::-;6025:83;;;;5821:297;6157:2;6183:88;6263:7;6254:6;6243:9;6239:22;6183:88;:::i;:::-;6173:98;;6128:153;5543:745;;;;;:::o;6307:552::-;6364:8;6374:6;6424:3;6417:4;6409:6;6405:17;6401:27;6391:122;;6432:79;;:::i;:::-;6391:122;6545:6;6532:20;6522:30;;6575:18;6567:6;6564:30;6561:117;;;6597:79;;:::i;:::-;6561:117;6711:4;6703:6;6699:17;6687:29;;6765:3;6757:4;6749:6;6745:17;6735:8;6731:32;6728:41;6725:128;;;6772:79;;:::i;:::-;6725:128;6307:552;;;;;:::o;6865:872::-;6956:6;6964;6972;6980;7029:2;7017:9;7008:7;7004:23;7000:32;6997:119;;;7035:79;;:::i;:::-;6997:119;7183:1;7172:9;7168:17;7155:31;7213:18;7205:6;7202:30;7199:117;;;7235:79;;:::i;:::-;7199:117;7348:65;7405:7;7396:6;7385:9;7381:22;7348:65;:::i;:::-;7330:83;;;;7126:297;7490:2;7479:9;7475:18;7462:32;7521:18;7513:6;7510:30;7507:117;;;7543:79;;:::i;:::-;7507:117;7656:64;7712:7;7703:6;7692:9;7688:22;7656:64;:::i;:::-;7638:82;;;;7433:297;6865:872;;;;;;;:::o;7743:148::-;7845:11;7882:3;7867:18;;7743:148;;;;:::o;7897:214::-;8037:66;8033:1;8025:6;8021:14;8014:90;7897:214;:::o;8117:402::-;8277:3;8298:85;8380:2;8375:3;8298:85;:::i;:::-;8291:92;;8392:93;8481:3;8392:93;:::i;:::-;8510:2;8505:3;8501:12;8494:19;;8117:402;;;:::o;8525:79::-;8564:7;8593:5;8582:16;;8525:79;;;:::o;8610:157::-;8715:45;8735:24;8753:5;8735:24;:::i;:::-;8715:45;:::i;:::-;8710:3;8703:58;8610:157;;:::o;8773:522::-;8986:3;9008:148;9152:3;9008:148;:::i;:::-;9001:155;;9166:75;9237:3;9228:6;9166:75;:::i;:::-;9266:2;9261:3;9257:12;9250:19;;9286:3;9279:10;;8773:522;;;;:::o;9301:180::-;9349:77;9346:1;9339:88;9446:4;9443:1;9436:15;9470:4;9467:1;9460:15;9487:188;9525:3;9544:18;9560:1;9544:18;:::i;:::-;9539:23;;9576:18;9592:1;9576:18;:::i;:::-;9571:23;;9617:1;9614;9610:9;9603:16;;9640:4;9635:3;9632:13;9629:39;;;9648:18;;:::i;:::-;9629:39;9487:188;;;;:::o;9681:118::-;9768:24;9786:5;9768:24;:::i;:::-;9763:3;9756:37;9681:118;;:::o;9805:112::-;9888:22;9904:5;9888:22;:::i;:::-;9883:3;9876:35;9805:112;;:::o;9923:545::-;10096:4;10134:3;10123:9;10119:19;10111:27;;10148:71;10216:1;10205:9;10201:17;10192:6;10148:71;:::i;:::-;10229:68;10293:2;10282:9;10278:18;10269:6;10229:68;:::i;:::-;10307:72;10375:2;10364:9;10360:18;10351:6;10307:72;:::i;:::-;10389;10457:2;10446:9;10442:18;10433:6;10389:72;:::i;:::-;9923:545;;;;;;;:::o;10474:325::-;10531:6;10580:2;10568:9;10559:7;10555:23;10551:32;10548:119;;;10586:79;;:::i;:::-;10548:119;10706:1;10731:51;10774:7;10765:6;10754:9;10750:22;10731:51;:::i;:::-;10721:61;;10677:115;10474:325;;;;:::o;10805:169::-;10889:11;10923:6;10918:3;10911:19;10963:4;10958:3;10954:14;10939:29;;10805:169;;;;:::o;10980:167::-;11120:19;11116:1;11108:6;11104:14;11097:43;10980:167;:::o;11153:366::-;11295:3;11316:67;11380:2;11375:3;11316:67;:::i;:::-;11309:74;;11392:93;11481:3;11392:93;:::i;:::-;11510:2;11505:3;11501:12;11494:19;;11153:366;;;:::o;11525:419::-;11691:4;11729:2;11718:9;11714:18;11706:26;;11778:9;11772:4;11768:20;11764:1;11753:9;11749:17;11742:47;11806:131;11932:4;11806:131;:::i;:::-;11798:139;;11525:419;;;:::o;11950:214::-;12090:66;12086:1;12078:6;12074:14;12067:90;11950:214;:::o;12170:402::-;12330:3;12351:85;12433:2;12428:3;12351:85;:::i;:::-;12344:92;;12445:93;12534:3;12445:93;:::i;:::-;12563:2;12558:3;12554:12;12547:19;;12170:402;;;:::o;12578:99::-;12630:6;12664:5;12658:12;12648:22;;12578:99;;;:::o;12683:246::-;12764:1;12774:113;12788:6;12785:1;12782:13;12774:113;;;12873:1;12868:3;12864:11;12858:18;12854:1;12849:3;12845:11;12838:39;12810:2;12807:1;12803:10;12798:15;;12774:113;;;12921:1;12912:6;12907:3;12903:16;12896:27;12745:184;12683:246;;;:::o;12935:390::-;13041:3;13069:39;13102:5;13069:39;:::i;:::-;13124:89;13206:6;13201:3;13124:89;:::i;:::-;13117:96;;13222:65;13280:6;13275:3;13268:4;13261:5;13257:16;13222:65;:::i;:::-;13312:6;13307:3;13303:16;13296:23;;13045:280;12935:390;;;;:::o;13331:701::-;13612:3;13634:148;13778:3;13634:148;:::i;:::-;13627:155;;13799:95;13890:3;13881:6;13799:95;:::i;:::-;13792:102;;13911:95;14002:3;13993:6;13911:95;:::i;:::-;13904:102;;14023:3;14016:10;;13331:701;;;;;:::o;14038:77::-;14075:7;14104:5;14093:16;;14038:77;;;:::o;14121:180::-;14169:77;14166:1;14159:88;14266:4;14263:1;14256:15;14290:4;14287:1;14280:15;14307:185;14347:1;14364:20;14382:1;14364:20;:::i;:::-;14359:25;;14398:20;14416:1;14398:20;:::i;:::-;14393:25;;14437:1;14427:35;;14442:18;;:::i;:::-;14427:35;14484:1;14481;14477:9;14472:14;;14307:185;;;;:::o;14498:233::-;14537:3;14560:24;14578:5;14560:24;:::i;:::-;14551:33;;14606:66;14599:5;14596:77;14593:103;;14676:18;;:::i;:::-;14593:103;14723:1;14716:5;14712:13;14705:20;;14498:233;;;:::o;14737:180::-;14785:77;14782:1;14775:88;14882:4;14879:1;14872:15;14906:4;14903:1;14896:15;14923:171;14962:3;14985:24;15003:5;14985:24;:::i;:::-;14976:33;;15031:4;15024:5;15021:15;15018:41;;15039:18;;:::i;:::-;15018:41;15086:1;15079:5;15075:13;15068:20;;14923:171;;;:::o;15100:176::-;15132:1;15149:20;15167:1;15149:20;:::i;:::-;15144:25;;15183:20;15201:1;15183:20;:::i;:::-;15178:25;;15222:1;15212:35;;15227:18;;:::i;:::-;15212:35;15268:1;15265;15261:9;15256:14;;15100:176;;;;:::o;15282:191::-;15322:3;15341:20;15359:1;15341:20;:::i;:::-;15336:25;;15375:20;15393:1;15375:20;:::i;:::-;15370:25;;15418:1;15415;15411:9;15404:16;;15439:3;15436:1;15433:10;15430:36;;;15446:18;;:::i;:::-;15430:36;15282:191;;;;:::o;15479:180::-;15527:77;15524:1;15517:88;15624:4;15621:1;15614:15;15648:4;15645:1;15638:15

Swarm Source

ipfs://ab569fee8d290d72871ef92249f7a9aadd23d206f611ef55490822e403835415

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
[ 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.