Contract 0xA3baC05723c35aA0b30Ea63F5A5e9986465a9391 3

 

Contract Overview

Balance:
0 MATIC

MATIC Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xbf6058527cc92106af47522d7696ed2d9a8e6dff537f5c4f880c4722aedeb312Approve340044452022-10-06 13:19:364 hrs 51 mins ago0x50906c8e5a1da6dd6e7ff1d55e6078a174c23cf6 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.001435516888 30.870003203
0xd7a19a1ede57d07ddf7911692cca64a927925736f0e79450980452596833131bApprove339621062022-10-05 12:49:151 day 5 hrs ago0x1118869ea46bd1673e0ac7261e85a2bcfb6764cd IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.00143551674 30.870000017
0xfcb5dadf7bc7ffc6a31664e0fc4f75fd328dd97daad8b868626042233e4835d6Approve339520002022-10-05 6:55:001 day 11 hrs ago0x1aaf23e0586a2fd7d1b8e23b99c44112906d52a2 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.023227749499.5
0xab889e3def42825eac7d06acb602df04f8bf7537256b93e673dfe65cee57547eApprove339520002022-10-05 6:55:001 day 11 hrs ago0x9ad796117ea99e145aa434b9739126df01c9a801 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.0232928518500.9
0x8b2d5af73b48ca61d244380c06d9982bf5248d254762f03a451533d67d4b25c6Approve339359192022-10-04 21:37:371 day 20 hrs ago0x88f859db067c45b114897db6920f3e4a61a5ca66 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.001400119417 30.108799999
0xaaa17478e4b35783c76e53a78efd95ffda725b531038b66f2c942d733a8444aaApprove337003562022-09-29 5:13:117 days 12 hrs ago0x1d0fcd4f16e60ca95099ff4bb2e314ca8e9e58d5 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.002943576663.3
0x796311402a5f42f9ce3e65a4157f5fb0ecfc5f95c14384d0653553b211c59d16Approve336985872022-09-29 4:12:117 days 13 hrs ago0x5dd6d4a6c6ea5a2b88b4c60550a901c1a1b94e47 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.001548516633.3
0xbd03c9861d29f01e8f4a100b6666afeafb4fd69622390099f26f7bff2a9203faApprove336983732022-09-29 4:04:517 days 14 hrs ago0x237b008e6472f65fd7a34d93ff265f47a2a0d8fb IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.001424026095 30.622900003
0xf8e84c222bf2634077d2d8f25dd9e728bd4b9859be88d8d6c553eb9c75bfb07fEnter336361312022-09-27 16:07:349 days 2 hrs ago0x522a83c7e20ab02802ce44fb7d9f1dc0846f0681 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.000935130001 30.000000042
0x14bf054bdc85962a7987ba465e4c8c062d679c6affec1cad6f2084e9b1e97dedExit336305962022-09-27 12:46:249 days 5 hrs ago0x522a83c7e20ab02802ce44fb7d9f1dc0846f0681 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.002726200629 30.000116971
0xa71c5ef92cb9a6c07a743dac4d807339bb67efdfec53bc60d3885229c5a95938Exit336296632022-09-27 12:07:539 days 6 hrs ago0x083e958db271a5ba105c0878a94507fe37f25446 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.003634920004 40.000000048
0x226b9a7f01f6938bae8293f86c7f402fc9b57ee2942dcd9415d865b3a18deebcEnter336236052022-09-27 8:16:089 days 9 hrs ago0xcad0a207c41399d0c8d4d57101985f47fa9e5903 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.00093477 30.000000018
0x1d3412598308c3b8b0bdc3e185c21c8f130f8d4fca00531986d71c47a33f6212Exit336172832022-09-27 4:34:239 days 13 hrs ago0x522a83c7e20ab02802ce44fb7d9f1dc0846f0681 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.003023961011 33.276782005
0xcf3ce85e4567bf707b6eaa60eb8dd2700eee4abf223e29d69440579a042671afExit336029792022-09-26 20:11:229 days 21 hrs ago0x522a83c7e20ab02802ce44fb7d9f1dc0846f0681 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.002726190001 30.000000015
0x929e6aa4bb0c7237826be50aafd01900c04294b44397d2cf5aff298863b7fa69Approve335918332022-09-26 13:41:2510 days 4 hrs ago0x4af3f6ce6a79cc7bee89fbacbdc83f3a0b4b9c6d IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.001395062733 30.000058792
0x1dec85d36c4a108205296cc53130e8aa252a876a7ee5bf35820d1535da61af83Exit335917812022-09-26 13:39:3710 days 4 hrs ago0x4af3f6ce6a79cc7bee89fbacbdc83f3a0b4b9c6d IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.003173163267 34.921348661
0x43a11f0f73224683d29228e3fd8747793224b912e9bcf2d05470684f86304bc8Approve335783842022-09-26 5:49:2810 days 12 hrs ago0x083e958db271a5ba105c0878a94507fe37f25446 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.00117608 40.000000013
0x7bfee74c5c243636f7dca310080d11c12aa97b9bf69f5ab6a36b6029f4989880Exit335783742022-09-26 5:49:0810 days 12 hrs ago0x083e958db271a5ba105c0878a94507fe37f25446 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.003634920001 40.000000014
0x400bdca4e999ab3bc0d727c83e8836fb4b7dd7de3d3ef3a5c72d9a6fabeec47dExit335777042022-09-26 5:26:0410 days 12 hrs ago0x522a83c7e20ab02802ce44fb7d9f1dc0846f0681 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.00293766858 32.34
0x61fefca8e6020ff387e368a0e57775a5eea04b6f50eef38cc4308f79b556f823Enter335604772022-09-25 19:21:0010 days 22 hrs ago0x040636fad0540596a0cee6de64185d6d25fbff00 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.00155675 50
0x59ed15af1f129a2f155efe2018ffa055c49cc18522adb918bc630256fc613e1bExit335604442022-09-25 19:19:5010 days 22 hrs ago0x040636fad0540596a0cee6de64185d6d25fbff00 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.0036877 50
0x2b84fe134c4c941b0f7852fafc4423099dcfb4f74028519dbbbe97053003f005Enter334458202022-09-23 0:43:0513 days 17 hrs ago0x083e958db271a5ba105c0878a94507fe37f25446 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.00124684 40.000000011
0xb2a02008e0ed8b4c32dc099c5563d70df34c645275a80c954a0596e9ec26c43aApprove334457372022-09-23 0:40:1513 days 17 hrs ago0x65a8f07bd9a8598e1b5b6c0a88f4779dbc077675 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.001552902292 33.394311904
0xb4ce99c435aa3c883ee682bfc4b9f16b3dec9680ec9d52f3e45c4143c452b1a1Exit334457192022-09-23 0:39:3913 days 17 hrs ago0x65a8f07bd9a8598e1b5b6c0a88f4779dbc077675 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.003252860101 44.100000018
0xeaa1e65a8b2f8fef0926fe374dd6ff55ce003046288500673bf7def39044d6f0Exit334456492022-09-23 0:37:1513 days 17 hrs ago0x522a83c7e20ab02802ce44fb7d9f1dc0846f0681 IN  0xa3bac05723c35aa0b30ea63f5a5e9986465a93910 MATIC0.003840074889 42.257600054
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BridgedECH

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-04-27
*/

// File: SignatureUtils.sol

pragma solidity ^0.4.24;

/// @title A library of utilities for (multi)signatures
/// @author Alexander Kern <[email protected]>
/// @dev This library can be linked to another Solidity contract to expose signature manipulation functions.
contract SignatureUtils {

    /// @notice Converts a bytes32 to an signed message hash.
    /// @param _msg The bytes32 message (i.e. keccak256 result) to encrypt
    function toEthBytes32SignedMessageHash(
        bytes32 _msg
    )
        pure
        public
        returns (bytes32 signHash)
    {
        signHash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _msg));
    }

    /// @notice Converts a byte array to a personal signed message hash (result of `web3.personal.sign(...)`) by concatenating its length.
    /// @param _msg The bytes array to encrypt
    function toEthPersonalSignedMessageHash(
        bytes _msg
    )
        pure
        public
        returns (bytes32 signHash)
    {
        signHash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", uintToString(_msg.length), _msg));
    }

    /// @notice Converts a uint to its decimal string representation.
    /// @param v The uint to convert
    function uintToString(
        uint v
    )
        pure
        public
        returns (string)
    {
        uint w = v;
        bytes32 x;
        if (v == 0) {
            x = "0";
        } else {
            while (w > 0) {
                x = bytes32(uint(x) / (2 ** 8));
                x |= bytes32(((w % 10) + 48) * 2 ** (8 * 31));
                w /= 10;
            }
        }

        bytes memory bytesString = new bytes(32);
        uint charCount = 0;
        for (uint j = 0; j < 32; j++) {
            byte char = byte(bytes32(uint(x) * 2 ** (8 * j)));
            if (char != 0) {
                bytesString[charCount] = char;
                charCount++;
            }
        }
        bytes memory resultBytes = new bytes(charCount);
        for (j = 0; j < charCount; j++) {
            resultBytes[j] = bytesString[j];
        }

        return string(resultBytes);
    }

    /// @notice Extracts the r, s, and v parameters to `ecrecover(...)` from the signature at position `_pos` in a densely packed signatures bytes array.
    /// @dev Based on [OpenZeppelin's ECRecovery](https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ECRecovery.sol)
    /// @param _signatures The signatures bytes array
    /// @param _pos The position of the signature in the bytes array (0 indexed)
    function parseSignature(
        bytes _signatures,
        uint _pos
    )
        pure
        public
        returns (uint8 v, bytes32 r, bytes32 s)
    {
        uint offset = _pos * 65;
        // The signature format is a compact form of:
        //   {bytes32 r}{bytes32 s}{uint8 v}
        // Compact means, uint8 is not padded to 32 bytes.
        assembly { // solium-disable-line security/no-inline-assembly
            r := mload(add(_signatures, add(32, offset)))
            s := mload(add(_signatures, add(64, offset)))
            // Here we are loading the last 32 bytes, including 31 bytes
            // of 's'. There is no 'mload8' to do this.
            //
            // 'byte' is not working due to the Solidity parser, so lets
            // use the second best option, 'and'
            v := and(mload(add(_signatures, add(65, offset))), 0xff)
        }

        if (v < 27) v += 27;

        require(v == 27 || v == 28);
    }

    /// @notice Counts the number of signatures in a signatures bytes array. Returns 0 if the length is invalid.
    /// @param _signatures The signatures bytes array
    /// @dev Signatures are 65 bytes long and are densely packed.
    function countSignatures(
        bytes _signatures
    )
        pure
        public
        returns (uint)
    {
        return _signatures.length % 65 == 0 ? _signatures.length / 65 : 0;
    }

    /// @notice Recovers an address using a message hash and a signature in a bytes array.
    /// @param _hash The signed message hash
    /// @param _signatures The signatures bytes array
    /// @param _pos The signature's position in the bytes array (0 indexed)
    function recoverAddress(
        bytes32 _hash,
        bytes _signatures,
        uint _pos
    )
        pure
        public
        returns (address)
    {
        uint8 v;
        bytes32 r;
        bytes32 s;
        (v, r, s) = parseSignature(_signatures, _pos);
        return ecrecover(_hash, v, r, s);
    }

    /// @notice Recovers an array of addresses using a message hash and a signatures bytes array.
    /// @param _hash The signed message hash
    /// @param _signatures The signatures bytes array
    function recoverAddresses(
        bytes32 _hash,
        bytes _signatures
    )
        pure
        public
        returns (address[] addresses)
    {
        uint8 v;
        bytes32 r;
        bytes32 s;
        uint count = countSignatures(_signatures);
        addresses = new address[](count);
        for (uint i = 0; i < count; i++) {
            (v, r, s) = parseSignature(_signatures, i);
            addresses[i] = ecrecover(_hash, v, r, s);
        }
    }

}

// File: ERC20.sol

pragma solidity ^0.4.24;

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
interface IERC20 {
  function totalSupply() external view returns (uint256);

  function balanceOf(address who) external view returns (uint256);

  function allowance(address owner, address spender)
    external view returns (uint256);

  function transfer(address to, uint256 value) external returns (bool);

  function approve(address spender, uint256 value)
    external returns (bool);

  function transferFrom(address from, address to, uint256 value)
    external returns (bool);

  event Transfer(
    address indexed from,
    address indexed to,
    uint256 value
  );

  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}


/**
 * @title SafeMath
 * @dev Math operations with safety checks that revert on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, reverts on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b);

    return c;
  }

  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0); // Solidity only automatically asserts when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold

    return c;
  }

  /**
  * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a);
    uint256 c = a - b;

    return c;
  }

  /**
  * @dev Adds two numbers, reverts on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a);

    return c;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
 * Originally based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract ERC20 is IERC20 {
  using SafeMath for uint256;

  mapping (address => uint256) private _balances;

  mapping (address => mapping (address => uint256)) private _allowed;

  uint256 private _totalSupply;

  /**
  * @dev Total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return _totalSupply;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param owner The address to query the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address owner) public view returns (uint256) {
    return _balances[owner];
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param owner address The address which owns the funds.
   * @param spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(
    address owner,
    address spender
   )
    public
    view
    returns (uint256)
  {
    return _allowed[owner][spender];
  }

  /**
  * @dev Transfer token for a specified address
  * @param to The address to transfer to.
  * @param value The amount to be transferred.
  */
  function transfer(address to, uint256 value) public returns (bool) {
    _transfer(msg.sender, to, value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param spender The address which will spend the funds.
   * @param value The amount of tokens to be spent.
   */
  function approve(address spender, uint256 value) public returns (bool) {
    require(spender != address(0));

    _allowed[msg.sender][spender] = value;
    emit Approval(msg.sender, spender, value);
    return true;
  }

  /**
   * @dev Transfer tokens from one address to another
   * @param from address The address which you want to send tokens from
   * @param to address The address which you want to transfer to
   * @param value uint256 the amount of tokens to be transferred
   */
  function transferFrom(
    address from,
    address to,
    uint256 value
  )
    public
    returns (bool)
  {
    require(value <= _allowed[from][msg.sender]);

    _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
    _transfer(from, to, value);
    return true;
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed_[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param spender The address which will spend the funds.
   * @param addedValue The amount of tokens to increase the allowance by.
   */
  function increaseAllowance(
    address spender,
    uint256 addedValue
  )
    public
    returns (bool)
  {
    require(spender != address(0));

    _allowed[msg.sender][spender] = (
      _allowed[msg.sender][spender].add(addedValue));
    emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed_[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param spender The address which will spend the funds.
   * @param subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseAllowance(
    address spender,
    uint256 subtractedValue
  )
    public
    returns (bool)
  {
    require(spender != address(0));

    _allowed[msg.sender][spender] = (
      _allowed[msg.sender][spender].sub(subtractedValue));
    emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
    return true;
  }

  /**
  * @dev Transfer token for a specified addresses
  * @param from The address to transfer from.
  * @param to The address to transfer to.
  * @param value The amount to be transferred.
  */
  function _transfer(address from, address to, uint256 value) internal {
    require(value <= _balances[from]);
    require(to != address(0));

    _balances[from] = _balances[from].sub(value);
    _balances[to] = _balances[to].add(value);
    emit Transfer(from, to, value);
  }

  /**
   * @dev Internal function that mints an amount of the token and assigns it to
   * an account. This encapsulates the modification of balances such that the
   * proper events are emitted.
   * @param account The account that will receive the created tokens.
   * @param value The amount that will be created.
   */
  function _mint(address account, uint256 value) internal {
    require(account != 0);
    _totalSupply = _totalSupply.add(value);
    _balances[account] = _balances[account].add(value);
    emit Transfer(address(0), account, value);
  }

  /**
   * @dev Internal function that burns an amount of the token of a given
   * account.
   * @param account The account whose tokens will be burnt.
   * @param value The amount that will be burnt.
   */
  function _burn(address account, uint256 value) internal {
    require(account != 0);
    require(value <= _balances[account]);

    _totalSupply = _totalSupply.sub(value);
    _balances[account] = _balances[account].sub(value);
    emit Transfer(account, address(0), value);
  }

  /**
   * @dev Internal function that burns an amount of the token of a given
   * account, deducting from the sender's allowance for said account. Uses the
   * internal burn function.
   * @param account The account whose tokens will be burnt.
   * @param value The amount that will be burnt.
   */
  function _burnFrom(address account, uint256 value) internal {
    require(value <= _allowed[account][msg.sender]);

    // Should https://github.com/OpenZeppelin/zeppelin-solidity/issues/707 be accepted,
    // this function needs to emit an event with the updated approval.
    _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(
      value);
    _burn(account, value);
  }
}
// File: Bridgeable.sol

pragma solidity ^0.4.24;


/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;

  function Ownable() {
    owner = msg.sender;
  }

  modifier onlyOwner() {
    if (msg.sender != owner) {
      throw;
    }
    _;
  }

  function transferOwnership(address newOwner) onlyOwner {
    if (newOwner != address(0)) {
      owner = newOwner;
    }
  }
}


contract Bridgeable is ERC20, SignatureUtils, Ownable {
	address[] public validators;
	address public foreignContract;
	mapping (bytes32 => bool) foreignTransactions;

	event EnterBridgeEvent(address indexed from, uint256 amount);
  event ExitBridgeEvent(address indexed sender, uint256 amount);
  event Mint(address indexed to, uint256 amount);
	event Burn(address indexed burner, uint256 value);

    function addValidator(address _validator) public onlyOwner {
        validators.push(_validator);
    }

    function pair(address _foreignContract) public onlyOwner {
    	foreignContract = _foreignContract;
    }
        
    function enter(uint256 _amount) public {
        emit EnterBridgeEvent(msg.sender, _amount);
        burn(_amount);
    }
    
    function exit(bytes32 _txnHash, address _foreignContract, uint256 _amount, bytes _signatures) public {
    	require(contains(_txnHash) == false, 'Foreign transaction has already been processed');
        bytes32 hash = toEthBytes32SignedMessageHash(entranceHash(_txnHash,_foreignContract, _amount));
        address[] memory recovered = recoverAddresses(hash, _signatures);
        require(verifyValidators(recovered), "Validator verification failed.");
        require(_foreignContract == foreignContract, "Invalid contract target.");
        mint(msg.sender, _amount);
        foreignTransactions[_txnHash] = true;
        emit ExitBridgeEvent(msg.sender, _amount);      
    }

    function contains(bytes32 _txnHash) internal view returns (bool){
        return foreignTransactions[_txnHash];
    }

    function verifyValidators(address[] recovered) internal view returns (bool) {
        require(recovered.length == validators.length, "Invalid number of signatures");
        for(uint i = 0 ; i < validators.length; i++) {
            if(validators[i] != recovered[i]) {
                return false;
            }
        }
        return true;
    }

    function mint( address _to, uint256 _amount )
	    internal returns (bool) {
      _mint(_to, _amount);
	    // emit Mint(_to, _amount);
	    return true;
	  }

    /**
    * @dev Burns a specific amount of tokens.
    * @param _value The amount of token to be burned.
    */
    function burn(uint256 _value) internal {
      _burn(msg.sender, _value);
    }
	    
    /**
     * @notice Hash (keccak256) of the payload used by deposit
     * @param _contractAddress the target ERC20 address
     * @param _amount the original minter
     */
    function entranceHash(bytes32 txnHash, address _contractAddress, uint256 _amount) public view returns (bytes32) {
        // "0x8177cf3c": entranceHash(bytes32, address,uint256)
        return keccak256(abi.encode( bytes4(0x8177cf3c), msg.sender, txnHash, _contractAddress, _amount));
    }

}
// File: bECH.sol

pragma solidity ^0.4.24;


contract BridgedECH is Bridgeable {
    string public name = "Bridged Echelon"; 
    string public symbol = "bECH";
    uint public decimals = 18;
    // uint public INITIAL_SUPPLY = 10000 * (10 ** decimals);

    constructor() public {
        // totalSupply = INITIAL_SUPPLY / 2;
        // balanceOf[msg.sender] = totalSupply;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"_signatures","type":"bytes"},{"name":"_pos","type":"uint256"}],"name":"recoverAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_signatures","type":"bytes"}],"name":"countSignatures","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"validators","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_validator","type":"address"}],"name":"addValidator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_foreignContract","type":"address"}],"name":"pair","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"txnHash","type":"bytes32"},{"name":"_contractAddress","type":"address"},{"name":"_amount","type":"uint256"}],"name":"entranceHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"enter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"foreignContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_signatures","type":"bytes"},{"name":"_pos","type":"uint256"}],"name":"parseSignature","outputs":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_msg","type":"bytes"}],"name":"toEthPersonalSignedMessageHash","outputs":[{"name":"signHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_msg","type":"bytes32"}],"name":"toEthBytes32SignedMessageHash","outputs":[{"name":"signHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_txnHash","type":"bytes32"},{"name":"_foreignContract","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_signatures","type":"bytes"}],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"v","type":"uint256"}],"name":"uintToString","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"},{"name":"_signatures","type":"bytes"}],"name":"recoverAddresses","outputs":[{"name":"addresses","type":"address[]"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EnterBridgeEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"ExitBridgeEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60c0604052600f60808190527f4272696467656420456368656c6f6e000000000000000000000000000000000060a0908152620000409160079190620000b3565b506040805180820190915260048082527f624543480000000000000000000000000000000000000000000000000000000060209092019182526200008791600891620000b3565b5060126009553480156200009a57600080fd5b5060038054600160a060020a0319163317905562000158565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000f657805160ff191683800117855562000126565b8280016001018555821562000126579182015b828111156200012657825182559160200191906001019062000109565b506200013492915062000138565b5090565b6200015591905b808211156200013457600081556001016200013f565b90565b61181e80620001686000396000f30060806040526004361061015e5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610163578063095ea7b3146101ed57806318160ddd146102255780631c2a15b81461024c57806323b872dd146102c8578063313ce567146102f257806333ae3ad01461030757806335aa2e441461036057806339509351146103785780634d238c8e1461039c57806370a08231146103bf5780637fb992f7146103e05780638177cf3c146104015780638da5cb5b1461042857806395d89b411461043d578063a457c2d714610452578063a59f3e0c14610476578063a9059cbb1461048e578063abd4d716146104b2578063b31d63cc146104c7578063d8a40f6b14610544578063dd62ed3e1461059d578063e5990d20146105c4578063e6bce1ae146105dc578063e93956791461064b578063f0c8e96914610663578063f2fde38b14610711575b600080fd5b34801561016f57600080fd5b50610178610732565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b257818101518382015260200161019a565b50505050905090810190601f1680156101df5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f957600080fd5b50610211600160a060020a03600435166024356107c0565b604080519115158252519081900360200190f35b34801561023157600080fd5b5061023a61083e565b60408051918252519081900360200190f35b34801561025857600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526102ac95833595369560449491939091019190819084018382808284375094975050933594506108449350505050565b60408051600160a060020a039092168252519081900360200190f35b3480156102d457600080fd5b50610211600160a060020a03600435811690602435166044356108cd565b3480156102fe57600080fd5b5061023a61096a565b34801561031357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261023a9436949293602493928401919081908401838280828437509497506109709650505050505050565b34801561036c57600080fd5b506102ac600435610992565b34801561038457600080fd5b50610211600160a060020a03600435166024356109ba565b3480156103a857600080fd5b506103bd600160a060020a0360043516610a6a565b005b3480156103cb57600080fd5b5061023a600160a060020a0360043516610ae0565b3480156103ec57600080fd5b506103bd600160a060020a0360043516610afb565b34801561040d57600080fd5b5061023a600435600160a060020a0360243516604435610b41565b34801561043457600080fd5b506102ac610c08565b34801561044957600080fd5b50610178610c17565b34801561045e57600080fd5b50610211600160a060020a0360043516602435610c72565b34801561048257600080fd5b506103bd600435610cbd565b34801561049a57600080fd5b50610211600160a060020a0360043516602435610cff565b3480156104be57600080fd5b506102ac610d15565b3480156104d357600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526105229436949293602493928401919081908401838280828437509497505093359450610d249350505050565b6040805160ff9094168452602084019290925282820152519081900360600190f35b34801561055057600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261023a943694929360249392840191908190840183828082843750949750610d789650505050505050565b3480156105a957600080fd5b5061023a600160a060020a0360043581169060243516610ebd565b3480156105d057600080fd5b5061023a600435610ee8565b3480156105e857600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526103bd94803594600160a060020a036024803591909116956044359536956084949301918190840183828082843750949750610f5f9650505050505050565b34801561065757600080fd5b5061017860043561112e565b34801561066f57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526106c19583359536956044949193909101919081908401838280828437509497506113099650505050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156106fd5781810151838201526020016106e5565b505050509050019250505060405180910390f35b34801561071d57600080fd5b506103bd600160a060020a0360043516611407565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107b85780601f1061078d576101008083540402835291602001916107b8565b820191906000526020600020905b81548152906001019060200180831161079b57829003601f168201915b505050505081565b6000600160a060020a03831615156107d757600080fd5b336000818152600160209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b6000806000806108548686610d24565b60408051600080825260208083018085528e905260ff8716838501526060830186905260808301859052925195985093965091945060019360a0808401949293601f19830193908390039091019190865af11580156108b7573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b600160a060020a03831660009081526001602090815260408083203384529091528120548211156108fd57600080fd5b600160a060020a0384166000908152600160209081526040808320338452909152902054610931908363ffffffff61145a16565b600160a060020a0385166000908152600160209081526040808320338452909152902055610960848484611471565b5060019392505050565b60095481565b8051600090604190061561098557600061098c565b8151604190045b92915050565b60048054829081106109a057fe5b600091825260209091200154600160a060020a0316905081565b6000600160a060020a03831615156109d157600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610a05908363ffffffff61156316565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600354600160a060020a03163314610a8157600080fd5b600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a03163314610b1257600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f8177cf3c00000000000000000000000000000000000000000000000000000000602080830191909152338284015260608201869052600160a060020a038516608083015260a08083018590528351808403909101815260c0909201928390528151600093918291908401908083835b60208310610bd45780518252601f199092019160209182019101610bb5565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120979650505050505050565b600354600160a060020a031681565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107b85780601f1061078d576101008083540402835291602001916107b8565b6000600160a060020a0383161515610c8957600080fd5b336000908152600160209081526040808320600160a060020a0387168452909152902054610a05908363ffffffff61145a16565b60408051828152905133917fc6b9e46d1489b207d3057f60c8ac6b283467391239ee8e388c1583c20418f36d919081900360200190a2610cfc8161157c565b50565b6000610d0c338484611471565b50600192915050565b600554600160a060020a031681565b604180820283810160208101516040820151919093015160ff169291601b841015610d5057601b840193505b8360ff16601b1480610d6557508360ff16601c145b1515610d7057600080fd5b509250925092565b6000610d84825161112e565b8260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a000000000000815250601a0183805190602001908083835b60208310610ddf5780518252601f199092019160209182019101610dc0565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610e275780518252601f199092019160209182019101610e08565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310610e8b5780518252601f199092019160209182019101610e6c565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c80830185905283518084039091018152605c9092019283905281516000939182919084019080838360208310610e8b5780518252601f199092019160209182019101610e6c565b60006060610f6c86611586565b15610fe7576040805160e560020a62461bcd02815260206004820152602e60248201527f466f726569676e207472616e73616374696f6e2068617320616c72656164792060448201527f6265656e2070726f636573736564000000000000000000000000000000000000606482015290519081900360840190fd5b610ffa610ff5878787610b41565b610ee8565b91506110068284611309565b90506110118161159b565b1515611067576040805160e560020a62461bcd02815260206004820152601e60248201527f56616c696461746f7220766572696669636174696f6e206661696c65642e0000604482015290519081900360640190fd5b600554600160a060020a038681169116146110cc576040805160e560020a62461bcd02815260206004820152601860248201527f496e76616c696420636f6e7472616374207461726765742e0000000000000000604482015290519081900360640190fd5b6110d6338561166e565b50600086815260066020908152604091829020805460ff191660011790558151868152915133927f8fc406a425362a34b826c493c710d249c4006ec0fde54cebe73112447567b1a192908290030190a2505050505050565b60608160008281808083861515611167577f3000000000000000000000000000000000000000000000000000000000000000955061119f565b600087111561119f5761010086049550600a870660300160f860020a0260010286179550600a8781151561119757fe5b049650611167565b604080516020808252818301909252908082016104008038833901905050945060009350600092505b6020831015611255576008830260020a860291507fff0000000000000000000000000000000000000000000000000000000000000082161561124a5781858581518110151561121357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001909301925b6001909201916111c8565b836040519080825280601f01601f191660200182016040528015611283578160200160208202803883390190505b509050600092505b838310156112fd5784838151811015156112a157fe5b90602001015160f860020a900460f860020a0281848151811015156112c257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060019092019161128b565b98975050505050505050565b6060600080600080600061131c87610970565b915081604051908082528060200260200182016040528015611348578160200160208202803883390190505b509550600090505b818110156113fc576113628782610d24565b60408051600080825260208083018085528f905260ff87168385015260608301869052608083018590529251959a5093985091965060019360a0808401949293601f19830193908390039091019190865af11580156113c5573d6000803e3d6000fd5b5050506020604051035186828151811015156113dd57fe5b600160a060020a03909216602092830290910190910152600101611350565b505050505092915050565b600354600160a060020a0316331461141e57600080fd5b600160a060020a03811615610cfc5760038054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b6000808383111561146a57600080fd5b5050900390565b600160a060020a03831660009081526020819052604090205481111561149657600080fd5b600160a060020a03821615156114ab57600080fd5b600160a060020a0383166000908152602081905260409020546114d4908263ffffffff61145a16565b600160a060020a038085166000908152602081905260408082209390935590841681522054611509908263ffffffff61156316565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561157557600080fd5b9392505050565b610cfc338261167a565b60009081526006602052604090205460ff1690565b60045481516000918291146115fa576040805160e560020a62461bcd02815260206004820152601c60248201527f496e76616c6964206e756d626572206f66207369676e61747572657300000000604482015290519081900360640190fd5b5060005b60045481101561166357828181518110151561161657fe5b90602001906020020151600160a060020a031660048281548110151561163857fe5b600091825260209091200154600160a060020a03161461165b5760009150611668565b6001016115fe565b600191505b50919050565b6000610d0c8383611748565b600160a060020a038216151561168f57600080fd5b600160a060020a0382166000908152602081905260409020548111156116b457600080fd5b6002546116c7908263ffffffff61145a16565b600255600160a060020a0382166000908152602081905260409020546116f3908263ffffffff61145a16565b600160a060020a038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b600160a060020a038216151561175d57600080fd5b600254611770908263ffffffff61156316565b600255600160a060020a03821660009081526020819052604090205461179c908263ffffffff61156316565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350505600a165627a7a723058208d5dd3d373bf165c29a241561383ccf30a9be600c7c07a7a2d4c6086b22811810029

Deployed ByteCode Sourcemap

18482:347:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18523:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18523:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18523:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10280:226;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10280:226:0;-1:-1:-1;;;;;10280:226:0;;;;;;;;;;;;;;;;;;;;;;;;;8491:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8491:85:0;;;;;;;;;;;;;;;;;;;;4342:330;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4342:330:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4342:330:0;;-1:-1:-1;;4342:330:0;;;-1:-1:-1;4342:330:0;;-1:-1:-1;;;;4342:330:0;;;;;-1:-1:-1;;;;;4342:330:0;;;;;;;;;;;;;;10786:301;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10786:301:0;-1:-1:-1;;;;;10786:301:0;;;;;;;;;;;;18605:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18605:25:0;;;;3861:203;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3861:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3861:203:0;;-1:-1:-1;3861:203:0;;-1:-1:-1;;;;;;;3861:203:0;15649:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15649:27:0;;;;;11549:343;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11549:343:0;-1:-1:-1;;;;;11549:343:0;;;;;;;16004:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16004:105:0;-1:-1:-1;;;;;16004:105:0;;;;;;;8780:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8780:100:0;-1:-1:-1;;;;;8780:100:0;;;;;16117:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16117:107:0;-1:-1:-1;;;;;16117:107:0;;;;;18131:293;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18131:293:0;;;-1:-1:-1;;;;;18131:293:0;;;;;;;15277:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15277:20:0;;;;18569:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18569:29:0;;;;12359:353;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12359:353:0;-1:-1:-1;;;;;12359:353:0;;;;;;;16240:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16240:124:0;;;;;9523:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9523:130:0;-1:-1:-1;;;;;9523:130:0;;;;;;;15680:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15680:30:0;;;;2638:979;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2638:979:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2638:979:0;;-1:-1:-1;;2638:979:0;;;-1:-1:-1;2638:979:0;;-1:-1:-1;;;;2638:979:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;883:263;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;883:263:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;883:263:0;;-1:-1:-1;883:263:0;;-1:-1:-1;;;;;;;883:263:0;9205:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9205:159:0;-1:-1:-1;;;;;9205:159:0;;;;;;;;;;448:239;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;448:239:0;;;;;16376:688;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16376:688:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16376:688:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16376:688:0;;-1:-1:-1;16376:688:0;;-1:-1:-1;;;;;;;16376:688:0;1263:932;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1263:932:0;;;;;4880:487;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4880:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4880:487:0;;-1:-1:-1;4880:487:0;;-1:-1:-1;;;;;;;4880:487:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4880:487:0;;;;;;;;;;;;;;;;;15454:128;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15454:128:0;-1:-1:-1;;;;;15454:128:0;;;;;18523:38;;;;;;;;;;;;;;;-1:-1:-1;;18523:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10280:226::-;10345:4;-1:-1:-1;;;;;10366:21:0;;;;10358:30;;;;;;10406:10;10397:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;10397:29:0;;;;;;;;;;;;:37;;;10446:36;;;;;;;10397:29;;10406:10;10446:36;;;;;;;;;;;-1:-1:-1;10496:4:0;10280:226;;;;:::o;8491:85::-;8558:12;;8491:85;:::o;4342:330::-;4493:7;4518;4536:9;4556;4588:33;4603:11;4616:4;4588:14;:33::i;:::-;4639:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4576:45;;-1:-1:-1;4576:45:0;;-1:-1:-1;4576:45:0;;-1:-1:-1;4639:25:0;;;;;;;;;-1:-1:-1;;4639:25:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4639:25:0;;-1:-1:-1;;4639:25:0;;;4342:330;-1:-1:-1;;;;;;;;4342:330:0:o;10786:301::-;-1:-1:-1;;;;;10928:14:0;;10895:4;10928:14;;;:8;:14;;;;;;;;10943:10;10928:26;;;;;;;;10919:35;;;10911:44;;;;;;-1:-1:-1;;;;;10993:14:0;;;;;;:8;:14;;;;;;;;11008:10;10993:26;;;;;;;;:37;;11024:5;10993:37;:30;:37;:::i;:::-;-1:-1:-1;;;;;10964:14:0;;;;;;:8;:14;;;;;;;;10979:10;10964:26;;;;;;;:66;11037:26;10973:4;11053:2;11057:5;11037:9;:26::i;:::-;-1:-1:-1;11077:4:0;10786:301;;;;;:::o;18605:25::-;;;;:::o;3861:203::-;3998:18;;3969:4;;4019:2;;3998:23;:28;:58;;4055:1;3998:58;;;4029:18;;4050:2;;4029:23;3998:58;3991:65;3861:203;-1:-1:-1;;3861:203:0:o;15649:27::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15649:27:0;;-1:-1:-1;15649:27:0;:::o;11549:343::-;11654:4;-1:-1:-1;;;;;11678:21:0;;;;11670:30;;;;;;11759:10;11750:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;11750:29:0;;;;;;;;;;:45;;11784:10;11750:45;:33;:45;:::i;:::-;11718:10;11709:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;11709:29:0;;;;;;;;;;;;:87;;;11808:60;;;;;;11709:29;;11808:60;;;;;;;;;;;-1:-1:-1;11882:4:0;11549:343;;;;:::o;16004:105::-;15406:5;;-1:-1:-1;;;;;15406:5:0;15392:10;:19;15388:47;;15422:5;;;15388:47;16074:10;27::-1;;39:1;23:18;;45:23;;-1:-1;16074:27:0;;;;;;;;-1:-1:-1;;16074:27:0;-1:-1:-1;;;;;16074:27:0;;;;;;;;;;16004:105::o;8780:100::-;-1:-1:-1;;;;;8858:16:0;8835:7;8858:16;;;;;;;;;;;;8780:100::o;16117:107::-;15406:5;;-1:-1:-1;;;;;15406:5:0;15392:10;:19;15388:47;;15422:5;;;15388:47;16182:15;:34;;-1:-1:-1;;16182:34:0;-1:-1:-1;;;;;16182:34:0;;;;;;;;;;16117:107::o;18131:293::-;18336:79;;;18348:18;18336:79;;;;;;;;18368:10;18336:79;;;;;;;;;;-1:-1:-1;;;;;18336:79:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18336:79:0;;;;;;;;18326:90;;18234:7;;18336:79;;;18326:90;;;;;18336:79;18326:90;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;18326:90:0;;;;;;;;;;;;-1:-1:-1;;;;;;;18131:293:0:o;15277:20::-;;;-1:-1:-1;;;;;15277:20:0;;:::o;18569:29::-;;;;;;;;;;;;;;;-1:-1:-1;;18569:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12359:353;12469:4;-1:-1:-1;;;;;12493:21:0;;;;12485:30;;;;;;12574:10;12565:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;12565:29:0;;;;;;;;;;:50;;12599:15;12565:50;:33;:50;:::i;16240:124::-;16295:37;;;;;;;;16312:10;;16295:37;;;;;;;;;;16343:13;16348:7;16343:4;:13::i;:::-;16240:124;:::o;9523:130::-;9584:4;9597:32;9607:10;9619:2;9623:5;9597:9;:32::i;:::-;-1:-1:-1;9643:4:0;9523:130;;;;:::o;15680:30::-;;;-1:-1:-1;;;;;15680:30:0;;:::o;2638:979::-;2833:2;2826:9;;;3093:33;;;3114:2;3093:33;;3087:40;3173:2;3152:33;;3146:40;3486:33;;;;3480:40;3522:4;3476:51;;3087:40;3558:2;3554:6;;3550:19;;;3567:2;3562:7;;;;3550:19;3590:1;:7;;3595:2;3590:7;:18;;;;3601:1;:7;;3606:2;3601:7;3590:18;3582:27;;;;;;;;2638:979;;;;;;:::o;883:263::-;999:16;1105:25;1118:4;:11;1105:12;:25::i;:::-;1132:4;1054:83;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1054:83:0;;;;;;;;;;-1:-1:-1;1054:83:0;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1054:83:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1054:83:0;;;1044:94;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;1044:94:0;;;;;;;;;;;;-1:-1:-1;;;;;883:263:0:o;9205:159::-;-1:-1:-1;;;;;9334:15:0;;;9308:7;9334:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;9205:159::o;448:239::-;620:58;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;620:58:0;;;;;;;;610:69;;565:16;;620:58;;;610:69;;;;;620:58;610:69;66:2:-1;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;16376:688:0;16582:12;16687:26;16493:18;16502:8;16493;:18::i;:::-;:27;16485:86;;;;;-1:-1:-1;;;;;16485:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16597:79;16627:48;16640:8;16649:16;16667:7;16627:12;:48::i;:::-;16597:29;:79::i;:::-;16582:94;;16716:35;16733:4;16739:11;16716:16;:35::i;:::-;16687:64;;16770:27;16787:9;16770:16;:27::i;:::-;16762:70;;;;;;;-1:-1:-1;;;;;16762:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16871:15;;-1:-1:-1;;;;;16851:35:0;;;16871:15;;16851:35;16843:72;;;;;-1:-1:-1;;;;;16843:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16926:25;16931:10;16943:7;16926:4;:25::i;:::-;-1:-1:-1;16962:29:0;;;;:19;:29;;;;;;;;;:36;;-1:-1:-1;;16962:36:0;16994:4;16962:36;;;17014;;;;;;;17030:10;;17014:36;;;;;;;;;16376:688;;;;;;:::o;1263:932::-;1357:6;1390:1;1381:6;1357;1381;;;1357;1426;;1422:248;;;1449:7;;;1422:248;;;1500:1;1496;:5;1489:170;;;1545:6;1539:1;1534:18;;-1:-1:-1;1591:2:0;1587:1;:6;1597:2;1586:13;-1:-1:-1;;;1585:31:0;1577:40;;1572:45;;;;1641:2;1636:7;;;;;;;;;;;1489:170;;;1709:13;;;1719:2;1709:13;;;;;;;;;;;;;17:15:-1;;105:10;1709:13:0;88:34:-1;136:17;;-1:-1;1709:13:0;1682:40;;1750:1;1733:18;;1776:1;1767:10;;1762:229;1783:2;1779:1;:6;1762:229;;;1848:1;:5;;1842:1;:12;1832:22;;;-1:-1:-1;1875:9:0;;;;1871:109;;1930:4;1905:11;1917:9;1905:22;;;;;;;;;;;;;;:29;;;;;;;;;;-1:-1:-1;1953:11:0;;;;;1871:109;1787:3;;;;;1762:229;;;2038:9;2028:20;;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;2028:20:0;;2001:47;;2068:1;2064:5;;2059:90;2075:9;2071:1;:13;2059:90;;;2123:11;2135:1;2123:14;;;;;;;;;;;;;;;-1:-1:-1;;;2123:14:0;;-1:-1:-1;;;2123:14:0;2106:11;2118:1;2106:14;;;;;;;;;;;;;;:31;;;;;;;;;;-1:-1:-1;2086:3:0;;;;;2059:90;;;2175:11;1263:932;-1:-1:-1;;;;;;;;1263:932:0:o;4880:487::-;5013:19;5050:7;5068:9;5088;5108:10;5208:6;5121:28;5137:11;5121:15;:28::i;:::-;5108:41;;5186:5;5172:20;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;5172:20:0;;5160:32;;5217:1;5208:10;;5203:157;5224:5;5220:1;:9;5203:157;;;5263:30;5278:11;5291:1;5263:14;:30::i;:::-;5323:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5251:42;;-1:-1:-1;5251:42:0;;-1:-1:-1;5251:42:0;;-1:-1:-1;5323:25:0;;;;;;;;;-1:-1:-1;;5323:25:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5323:25:0;;;;;;;;5308:9;5318:1;5308:12;;;;;;;;;;-1:-1:-1;;;;;5308:40:0;;;:12;;;;;;;;;;:40;5231:3;;5203:157;;;4880:487;;;;;;;;;:::o;15454:128::-;15406:5;;-1:-1:-1;;;;;15406:5:0;15392:10;:19;15388:47;;15422:5;;;15388:47;-1:-1:-1;;;;;15520:22:0;;;15516:61;;15553:5;:16;;-1:-1:-1;;;;;15553:16:0;;-1:-1:-1;;15553:16:0;;;;;;15454:128;:::o;7317:136::-;7375:7;;7399:6;;;;7391:15;;;;;;-1:-1:-1;;7425:5:0;;;7317:136::o;12920:284::-;-1:-1:-1;;;;;13013:15:0;;:9;:15;;;;;;;;;;;13004:24;;;12996:33;;;;;;-1:-1:-1;;;;;13044:16:0;;;;13036:25;;;;;;-1:-1:-1;;;;;13088:15:0;;:9;:15;;;;;;;;;;;:26;;13108:5;13088:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;13070:15:0;;;:9;:15;;;;;;;;;;;:44;;;;13137:13;;;;;;;:24;;13155:5;13137:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;13121:13:0;;;:9;:13;;;;;;;;;;;;:40;;;;13173:25;;;;;;;13121:13;;13173:25;;;;;;;;;;;;;12920:284;;;:::o;7521:136::-;7579:7;7607:5;;;7627:6;;;;7619:15;;;;;;7650:1;7521:136;-1:-1:-1;;;7521:136:0:o;17855:81::-;17903:25;17909:10;17921:6;17903:5;:25::i;17072:119::-;17131:4;17154:29;;;:19;:29;;;;;;;;;17072:119::o;17199:357::-;17314:10;:17;17294:16;;17269:4;;;;17294:37;17286:78;;;;;-1:-1:-1;;;;;17286:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17388:1:0;17375:152;17396:10;:17;17392:21;;17375:152;;;17455:9;17465:1;17455:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17438:29:0;:10;17449:1;17438:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17438:13:0;:29;17435:81;;17495:5;17488:12;;;;17435:81;17415:3;;17375:152;;;17544:4;17537:11;;17199:357;;;;;:::o;17564:164::-;17634:4;17649:19;17655:3;17660:7;17649:5;:19::i;14000:285::-;-1:-1:-1;;;;;14071:12:0;;;;14063:21;;;;;;-1:-1:-1;;;;;14108:18:0;;:9;:18;;;;;;;;;;;14099:27;;;14091:36;;;;;;14151:12;;:23;;14168:5;14151:23;:16;:23;:::i;:::-;14136:12;:38;-1:-1:-1;;;;;14202:18:0;;:9;:18;;;;;;;;;;;:29;;14225:5;14202:29;:22;:29;:::i;:::-;-1:-1:-1;;;;;14181:18:0;;:9;:18;;;;;;;;;;;:50;;;;14243:36;;;;;;;14181:9;;14243:36;;;;;;;;;;;14000:285;;:::o;13540:240::-;-1:-1:-1;;;;;13611:12:0;;;;13603:21;;;;;;13646:12;;:23;;13663:5;13646:23;:16;:23;:::i;:::-;13631:12;:38;-1:-1:-1;;;;;13697:18:0;;:9;:18;;;;;;;;;;;:29;;13720:5;13697:29;:22;:29;:::i;:::-;-1:-1:-1;;;;;13676:18:0;;:9;:18;;;;;;;;;;;:50;;;;13738:36;;;;;;;13676:18;;:9;;13738:36;;;;;;;;;;13540:240;;:::o

Swarm Source

bzzr://8d5dd3d373bf165c29a241561383ccf30a9be600c7c07a7a2d4c6086b2281181
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.