Contract 0x8a92CC36cCC275374380460026ef365A4E01778C

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x86d55a99224a6dd1ce32fbb0be9ba8d01607bff870d81982bd8da822faeea6ea0x60806040239197242022-01-19 20:33:02614 days 5 hrs ago archimedescrypto.blockchain  IN  Create: KlimaBondingCalculator0 MATIC0.042968887283 54.655626652
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KlimaBondingCalculator

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at PolygonScan.com on 2022-01-19
*/

/**
 *Submitted for verification at Etherscan.io on 2021-05-28
*/

// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity 0.7.5;

library FullMath {
    function fullMul(uint256 x, uint256 y) private pure returns (uint256 l, uint256 h) {
        uint256 mm = mulmod(x, y, uint256(-1));
        l = x * y;
        h = mm - l;
        if (mm < l) h -= 1;
    }

    function fullDiv(
        uint256 l,
        uint256 h,
        uint256 d
    ) private pure returns (uint256) {
        uint256 pow2 = d & -d;
        d /= pow2;
        l /= pow2;
        l += h * ((-pow2) / pow2 + 1);
        uint256 r = 1;
        r *= 2 - d * r;
        r *= 2 - d * r;
        r *= 2 - d * r;
        r *= 2 - d * r;
        r *= 2 - d * r;
        r *= 2 - d * r;
        r *= 2 - d * r;
        r *= 2 - d * r;
        return l * r;
    }

    function mulDiv(
        uint256 x,
        uint256 y,
        uint256 d
    ) internal pure returns (uint256) {
        (uint256 l, uint256 h) = fullMul(x, y);
        uint256 mm = mulmod(x, y, d);
        if (mm > l) h -= 1;
        l -= mm;
        require(h < d, 'FullMath::mulDiv: overflow');
        return fullDiv(l, h, d);
    }
}

library Babylonian {

    function sqrt(uint256 x) internal pure returns (uint256) {
        if (x == 0) return 0;

        uint256 xx = x;
        uint256 r = 1;
        if (xx >= 0x100000000000000000000000000000000) {
            xx >>= 128;
            r <<= 64;
        }
        if (xx >= 0x10000000000000000) {
            xx >>= 64;
            r <<= 32;
        }
        if (xx >= 0x100000000) {
            xx >>= 32;
            r <<= 16;
        }
        if (xx >= 0x10000) {
            xx >>= 16;
            r <<= 8;
        }
        if (xx >= 0x100) {
            xx >>= 8;
            r <<= 4;
        }
        if (xx >= 0x10) {
            xx >>= 4;
            r <<= 2;
        }
        if (xx >= 0x8) {
            r <<= 1;
        }
        r = (r + x / r) >> 1;
        r = (r + x / r) >> 1;
        r = (r + x / r) >> 1;
        r = (r + x / r) >> 1;
        r = (r + x / r) >> 1;
        r = (r + x / r) >> 1;
        r = (r + x / r) >> 1; // Seven iterations should be enough
        uint256 r1 = x / r;
        return (r < r1 ? r : r1);
    }
}

library BitMath {

    function mostSignificantBit(uint256 x) internal pure returns (uint8 r) {
        require(x > 0, 'BitMath::mostSignificantBit: zero');

        if (x >= 0x100000000000000000000000000000000) {
            x >>= 128;
            r += 128;
        }
        if (x >= 0x10000000000000000) {
            x >>= 64;
            r += 64;
        }
        if (x >= 0x100000000) {
            x >>= 32;
            r += 32;
        }
        if (x >= 0x10000) {
            x >>= 16;
            r += 16;
        }
        if (x >= 0x100) {
            x >>= 8;
            r += 8;
        }
        if (x >= 0x10) {
            x >>= 4;
            r += 4;
        }
        if (x >= 0x4) {
            x >>= 2;
            r += 2;
        }
        if (x >= 0x2) r += 1;
    }
}

library FixedPoint {
    // range: [0, 2**112 - 1]
    // resolution: 1 / 2**112
    struct uq112x112 {
        uint224 _x;
    }

    // range: [0, 2**144 - 1]
    // resolution: 1 / 2**112
    struct uq144x112 {
        uint256 _x;
    }

    uint8 private constant RESOLUTION = 112;
    uint256 private constant Q112 = 0x10000000000000000000000000000;
    uint256 private constant Q224 = 0x100000000000000000000000000000000000000000000000000000000;
    uint256 private constant LOWER_MASK = 0xffffffffffffffffffffffffffff; // decimal of UQ*x112 (lower 112 bits)

    // decode a UQ112x112 into a uint112 by truncating after the radix point
    function decode(uq112x112 memory self) internal pure returns (uint112) {
        return uint112(self._x >> RESOLUTION);
    }

    // decode a uq112x112 into a uint with 18 decimals of precision
    function decode112with18(uq112x112 memory self) internal pure returns (uint) {
        return uint(self._x) / 5192296858534827;
    }

    function fraction(uint256 numerator, uint256 denominator) internal pure returns (uq112x112 memory) {
        require(denominator > 0, 'FixedPoint::fraction: division by zero');
        if (numerator == 0) return FixedPoint.uq112x112(0);

        if (numerator <= uint144(-1)) {
            uint256 result = (numerator << RESOLUTION) / denominator;
            require(result <= uint224(-1), 'FixedPoint::fraction: overflow');
            return uq112x112(uint224(result));
        } else {
            uint256 result = FullMath.mulDiv(numerator, Q112, denominator);
            require(result <= uint224(-1), 'FixedPoint::fraction: overflow');
            return uq112x112(uint224(result));
        }
    }

    // square root of a UQ112x112
    // lossy between 0/1 and 40 bits
    function sqrt(uq112x112 memory self) internal pure returns (uq112x112 memory) {
        if (self._x <= uint144(-1)) {
            return uq112x112(uint224(Babylonian.sqrt(uint256(self._x) << 112)));
        }

        uint8 safeShiftBits = 255 - BitMath.mostSignificantBit(self._x);
        safeShiftBits -= safeShiftBits % 2;
        return uq112x112(uint224(Babylonian.sqrt(uint256(self._x) << safeShiftBits) << ((112 - safeShiftBits) / 2)));
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function sqrrt(uint256 a) internal pure returns (uint c) {
        if (a > 3) {
            c = a;
            uint b = add( div( a, 2), 1 );
            while (b < c) {
                c = b;
                b = div( add( div( a, b ), b), 2 );
            }
        } else if (a != 0) {
            c = 1;
        }
    }
}

interface IERC20 {
    function decimals() external view returns (uint8);
}

interface IUniswapV2ERC20 {
    function totalSupply() external view returns (uint);
}

interface IUniswapV2Pair is IUniswapV2ERC20 {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function token0() external view returns ( address );
    function token1() external view returns ( address );
}

interface IBondingCalculator {
    function valuation( address pair_, uint amount_ ) external view returns ( uint _value );
}

contract KlimaBondingCalculator is IBondingCalculator {

    using FixedPoint for *;
    using SafeMath for uint;
    using SafeMath for uint112;

    address public KLIMA;

    constructor( address _KLIMA ) {
        require( _KLIMA != address(0) );
        KLIMA = _KLIMA;
    }



    function getKValue( address _pair ) public view returns( uint k_ ) {
        uint token0 = IERC20( IUniswapV2Pair( _pair ).token0() ).decimals();
        uint token1 = IERC20( IUniswapV2Pair( _pair ).token1() ).decimals();
        //uint decimals = token0.add( token1 ).sub( IERC20( _pair ).decimals() );

        uint decimals = token0.add(token1);
        uint targetDecimals = 18;

        if ( decimals < targetDecimals){
            decimals = targetDecimals.sub(decimals);
            (uint reserve0, uint reserve1, ) = IUniswapV2Pair( _pair ).getReserves();
            k_ = reserve0.mul(reserve1).mul( 10 ** decimals );
        }
        else {
            (uint reserve0, uint reserve1, ) = IUniswapV2Pair( _pair ).getReserves();
            k_ = reserve0.mul(reserve1).div( 10 ** decimals );
        }
        
    }

    function getTotalValue( address _pair ) public view returns ( uint _value ) {
        _value = getKValue( _pair ).sqrrt().mul(2);
    }

    function valuation( address _pair, uint amount_ ) external view override returns ( uint _value ) {
        uint totalValue = getTotalValue( _pair );
        uint totalSupply = IUniswapV2Pair( _pair ).totalSupply();

        _value = totalValue.mul( FixedPoint.fraction( amount_, totalSupply ).decode112with18() ).div( 1e18 );
    }

    function markdown( address _pair ) external view returns ( uint ) {
        ( uint reserve0, uint reserve1, ) = IUniswapV2Pair( _pair ).getReserves();

        uint reserve;
        if ( IUniswapV2Pair( _pair ).token0() == KLIMA ) {
            reserve = reserve1;
        } else {
            reserve = reserve0;
        }
        return reserve.mul( 2 * ( 10 ** IERC20( KLIMA ).decimals() ) ).div( getTotalValue( _pair ) );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_KLIMA","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"KLIMA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"getKValue","outputs":[{"internalType":"uint256","name":"k_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"getTotalValue","outputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"markdown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"valuation","outputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610d4d380380610d4d8339818101604052602081101561003357600080fd5b50516001600160a01b03811661004857600080fd5b600080546001600160a01b039092166001600160a01b0319909216919091179055610cd5806100786000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806332da80a31461005c5780634249719f14610094578063490084ef146100c057806368637549146100e6578063e3ed12a01461010c575b600080fd5b6100826004803603602081101561007257600080fd5b50356001600160a01b0316610130565b60408051918252519081900360200190f35b610082600480360360408110156100aa57600080fd5b506001600160a01b0381351690602001356102df565b610082600480360360208110156100d657600080fd5b50356001600160a01b0316610387565b610082600480360360208110156100fc57600080fd5b50356001600160a01b03166106a9565b6101146106c7565b604080516001600160a01b039092168252519081900360200190f35b6000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561016e57600080fd5b505afa158015610182573d6000803e3d6000fd5b505050506040513d606081101561019857600080fd5b5080516020918201516000805460408051630dfe168160e01b815290516001600160701b03958616985094909316955090936001600160a01b039182169391891692630dfe16819260048083019392829003018186803b1580156101fb57600080fd5b505afa15801561020f573d6000803e3d6000fd5b505050506040513d602081101561022557600080fd5b50516001600160a01b0316141561023d575080610240565b50815b6102d461024c866106a9565b6000546040805163313ce56760e01b815290516102ce926001600160a01b03169163313ce567916004808301926020929190829003018186803b15801561029257600080fd5b505afa1580156102a6573d6000803e3d6000fd5b505050506040513d60208110156102bc57600080fd5b5051849060ff16600a0a6002026106d6565b90610736565b93505050505b919050565b6000806102eb846106a9565b90506000846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561032857600080fd5b505afa15801561033c573d6000803e3d6000fd5b505050506040513d602081101561035257600080fd5b5051905061037e670de0b6b3a76400006102ce6103776103728886610778565b6108ef565b85906106d6565b95945050505050565b600080826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156103c357600080fd5b505afa1580156103d7573d6000803e3d6000fd5b505050506040513d60208110156103ed57600080fd5b50516040805163313ce56760e01b815290516001600160a01b039092169163313ce56791600480820192602092909190829003018186803b15801561043157600080fd5b505afa158015610445573d6000803e3d6000fd5b505050506040513d602081101561045b57600080fd5b50516040805163d21220a760e01b8152905160ff90921692506000916001600160a01b0386169163d21220a7916004808301926020929190829003018186803b1580156104a757600080fd5b505afa1580156104bb573d6000803e3d6000fd5b505050506040513d60208110156104d157600080fd5b50516040805163313ce56760e01b815290516001600160a01b039092169163313ce56791600480820192602092909190829003018186803b15801561051557600080fd5b505afa158015610529573d6000803e3d6000fd5b505050506040513d602081101561053f57600080fd5b505160ff16905060006105528383610907565b905060128082101561060a576105688183610961565b9150600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156105a657600080fd5b505afa1580156105ba573d6000803e3d6000fd5b505050506040513d60608110156105d057600080fd5b5080516020909101516001600160701b039182169350169050610601600a85900a6105fb84846106d6565b906106d6565b965050506106a0565b600080876001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561064657600080fd5b505afa15801561065a573d6000803e3d6000fd5b505050506040513d606081101561067057600080fd5b5080516020909101516001600160701b03918216935016905061069b600a85900a6102ce84846106d6565b965050505b50505050919050565b60006106c160026105fb6106bc85610387565b6109a3565b92915050565b6000546001600160a01b031681565b6000826106e5575060006106c1565b828202828482816106f257fe5b041461072f5760405162461bcd60e51b8152600401808060200182810382526021815260200180610c7f6021913960400191505060405180910390fd5b9392505050565b600061072f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610a0d565b610780610c46565b600082116107bf5760405162461bcd60e51b8152600401808060200182810382526026815260200180610c596026913960400191505060405180910390fd5b826107d957506040805160208101909152600081526106c1565b71ffffffffffffffffffffffffffffffffffff831161088057600082607085901b8161080157fe5b0490506001600160e01b03811115610860576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b03168152509150506106c1565b600061089184600160701b85610aaf565b90506001600160e01b03811115610860576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b516612725dd1d243ab6001600160e01b039091160490565b60008282018381101561072f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061072f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b4f565b600060038211156109ff57508060006109c76109c0836002610736565b6001610907565b90505b818110156109f9578091506109f26109eb6109e58584610736565b83610907565b6002610736565b90506109ca565b506102da565b81156102da57506001919050565b60008183610a995760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a5e578181015183820152602001610a46565b50505050905090810190601f168015610a8b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610aa557fe5b0495945050505050565b6000806000610abe8686610ba9565b9150915060008480610acc57fe5b868809905082811115610ae0576001820391505b8083039250848210610b39576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a3a6d756c4469763a206f766572666c6f77000000000000604482015290519081900360640190fd5b610b44838387610bd6565b979650505050505050565b60008184841115610ba15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610a5e578181015183820152602001610a46565b505050900390565b6000808060001984860990508385029250828103915082811015610bce576001820391505b509250929050565b60008181038216808381610be657fe5b049250808581610bf257fe5b049450808160000381610c0157fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b6040805160208101909152600081529056fe4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212204254d7942ed654afabfd52ba05231c4be48c9fbf60f5e34f59d79474c9a017b464736f6c634300070500330000000000000000000000004e78011ce80ee02d2c3e649fb657e45898257815

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

0000000000000000000000004e78011ce80ee02d2c3e649fb657e45898257815

-----Decoded View---------------
Arg [0] : _KLIMA (address): 0x4e78011ce80ee02d2c3e649fb657e45898257815

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004e78011ce80ee02d2c3e649fb657e45898257815


Deployed ByteCode Sourcemap

7634:2088:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9278:441;;;;;;;;;;;;;;;;-1:-1:-1;9278:441:0;-1:-1:-1;;;;;9278:441:0;;:::i;:::-;;;;;;;;;;;;;;;;8934:336;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8934:336:0;;;;;;;;:::i;7937:844::-;;;;;;;;;;;;;;;;-1:-1:-1;7937:844:0;-1:-1:-1;;;;;7937:844:0;;:::i;8789:137::-;;;;;;;;;;;;;;;;-1:-1:-1;8789:137:0;-1:-1:-1;;;;;8789:137:0;;:::i;7791:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;7791:20:0;;;;;;;;;;;;;;9278:441;9337:4;9357:13;9372;9407:5;-1:-1:-1;;;;;9391:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9391:37:0;;;;;;;9441:12;9505:5;;9391:37;9469:32;;-1:-1:-1;;;9469:32:0;;;;-1:-1:-1;;;;;9355:73:0;;;;-1:-1:-1;9355:73:0;;;;;-1:-1:-1;9441:12:0;;-1:-1:-1;;;;;9505:5:0;;;;9469:30;;;;;;:32;;;;;9391:37;9469:32;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9469:32:0;-1:-1:-1;;;;;9469:41:0;;9464:145;;;-1:-1:-1;9538:8:0;9464:145;;;-1:-1:-1;9589:8:0;9464:145;9626:85;9687:22;9702:5;9687:13;:22::i;:::-;9659:5;;9651:26;;;-1:-1:-1;;;9651:26:0;;;;9626:55;;-1:-1:-1;;;;;9659:5:0;;9651:24;;:26;;;;;;;;;;;;;;9659:5;9651:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9651:26:0;9626:7;;9645:32;;:2;:32;9639:1;:40;9626:11;:55::i;:::-;:59;;:85::i;:::-;9619:92;;;;;9278:441;;;;:::o;8934:336::-;9017:11;9042:15;9060:22;9075:5;9060:13;:22::i;:::-;9042:40;;9093:16;9128:5;-1:-1:-1;;;;;9112:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9112:37:0;;-1:-1:-1;9171:91:0;9256:4;9171:79;9187:61;:43;9208:7;9112:37;9187:19;:43::i;:::-;:59;:61::i;:::-;9171:10;;:14;:79::i;:91::-;9162:100;8934:336;-1:-1:-1;;;;;8934:336:0:o;7937:844::-;7994:7;8015:11;8053:5;-1:-1:-1;;;;;8037:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8037:32:0;8029:53;;;-1:-1:-1;;;8029:53:0;;;;-1:-1:-1;;;;;8029:51:0;;;;;;:53;;;;;8037:32;;8029:53;;;;;;;;:51;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8029:53:0;8115:32;;;-1:-1:-1;;;8115:32:0;;;;8015:67;;;;;-1:-1:-1;8093:11:0;;-1:-1:-1;;;;;8115:30:0;;;;;:32;;;;;8029:53;;8115:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8115:32:0;8107:53;;;-1:-1:-1;;;8107:53:0;;;;-1:-1:-1;;;;;8107:51:0;;;;;;:53;;;;;8115:32;;8107:53;;;;;;;;:51;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8107:53:0;8093:67;;;-1:-1:-1;8256:13:0;8272:18;:6;8093:67;8272:10;:18::i;:::-;8256:34;-1:-1:-1;8323:2:0;8343:25;;;8338:426;;;8395:28;:14;8414:8;8395:18;:28::i;:::-;8384:39;;8439:13;8454;8489:5;-1:-1:-1;;;;;8473:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8473:37:0;;;;;;;-1:-1:-1;;;;;8438:72:0;;;;-1:-1:-1;8438:72:0;;-1:-1:-1;8530:44:0;8558:2;:14;;;8530:22;8438:72;;8530:12;:22::i;:::-;:26;;:44::i;:::-;8525:49;;8338:426;;;;;8617:13;8632;8667:5;-1:-1:-1;;;;;8651:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8651:37:0;;;;;;;-1:-1:-1;;;;;8616:72:0;;;;-1:-1:-1;8616:72:0;;-1:-1:-1;8708:44:0;8736:2;:14;;;8708:22;8616:72;;8708:12;:22::i;:44::-;8703:49;;8338:426;;;7937:844;;;;;;;:::o;8789:137::-;8851:11;8885:33;8916:1;8885:26;:18;8896:5;8885:9;:18::i;:::-;:24;:26::i;:33::-;8876:42;8789:137;-1:-1:-1;;8789:137:0:o;7791:20::-;;;-1:-1:-1;;;;;7791:20:0;;:::o;6021:252::-;6079:7;6105:6;6101:47;;-1:-1:-1;6135:1:0;6128:8;;6101:47;6172:5;;;6176:1;6172;:5;:1;6196:5;;;;;:10;6188:56;;;;-1:-1:-1;;;6188:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6264:1;6021:252;-1:-1:-1;;;6021:252:0:o;6281:132::-;6339:7;6366:39;6370:1;6373;6366:39;;;;;;;;;;;;;;;;;:3;:39::i;4197:719::-;4278:16;;:::i;:::-;4329:1;4315:11;:15;4307:66;;;;-1:-1:-1;;;4307:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4388:14;4384:50;;-1:-1:-1;4411:23:0;;;;;;;;;-1:-1:-1;4411:23:0;;4404:30;;4384:50;4451:24;;;4447:462;;4492:14;4537:11;3478:3;4510:23;;;4537:11;4509:39;;;;;;-1:-1:-1;;;;;;4571:21:0;;;4563:64;;;;;-1:-1:-1;;;4563:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4649:26;;;;;;;;4667:6;-1:-1:-1;;;;;4649:26:0;;;;4642:33;;;;;4447:462;4708:14;4725:45;4741:9;-1:-1:-1;;;4758:11:0;4725:15;:45::i;:::-;4708:62;-1:-1:-1;;;;;;4793:21:0;;;4785:64;;;;;-1:-1:-1;;;4785:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4054:135;4154:7;4165:16;-1:-1:-1;;;;;4149:13:0;;;:32;;4054:135::o;5488:181::-;5546:7;5578:5;;;5602:6;;;;5594:46;;;;;-1:-1:-1;;;5594:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5677:136;5735:7;5762:43;5766:1;5769;5762:43;;;;;;;;;;;;;;;;;:3;:43::i;6707:333::-;6756:6;6783:1;6779;:5;6775:258;;;-1:-1:-1;6805:1:0;6821:6;6830:20;6835:10;6805:1;6843;6835:3;:10::i;:::-;6847:1;6830:3;:20::i;:::-;6821:29;;6865:107;6876:1;6872;:5;6865:107;;;6902:1;6898:5;;6926:30;6931:20;6936:11;6941:1;6944;6936:3;:11::i;:::-;6949:1;6931:3;:20::i;:::-;6953:1;6926:3;:30::i;:::-;6922:34;;6865:107;;;6775:258;;;;6993:6;;6989:44;;-1:-1:-1;7020:1:0;6707:333;;;:::o;6421:278::-;6507:7;6542:12;6535:5;6527:28;;;;-1:-1:-1;;;6527:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6566:9;6582:1;6578;:5;;;;;;;6421:278;-1:-1:-1;;;;;6421:278:0:o;876:347::-;982:7;1003:9;1014;1027:13;1035:1;1038;1027:7;:13::i;:::-;1002:38;;;;1051:10;1077:1;1064:15;;;;;1074:1;1071;1064:15;1051:28;;1099:1;1094:2;:6;1090:18;;;1107:1;1102:6;;;;1090:18;1124:2;1119:7;;;;1149:1;1145;:5;1137:44;;;;;-1:-1:-1;;;1137:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:16;1207:1;1210;1213;1199:7;:16::i;:::-;1192:23;876:347;-1:-1:-1;;;;;;;876:347:0:o;5821:192::-;5907:7;5943:12;5935:6;;;;5927:29;;;;-1:-1:-1;;;5927:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5979:5:0;;;5821:192::o;168:210::-;229:9;;;-1:-1:-1;;285:1:0;282;275:25;262:38;;319:1;315;:5;311:9;;340:1;335:2;:6;331:10;;361:1;356:2;:6;352:18;;;369:1;364:6;;;;352:18;168:210;;;;;;:::o;386:482::-;492:7;531:2;;;527:6;;;532:1;527:6;544:9;;;;;;;569:4;564:9;;;;;;;;;604:4;596;595:5;;594:14;;;;;653:1;:9;;;682:5;;;678:9;;673:14;707:5;;;703:9;;698:14;732:5;;;728:9;;723:14;757:5;;;753:9;;748:14;782:5;;;778:9;;773:14;807:5;;;803:9;;798:14;832:5;;;828:9;;823:14;;;594;;611:1;594:18;589:24;;;;584:29;;;;855:5;;386:482;-1:-1:-1;;386:482:0:o;-1:-1:-1:-;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://4254d7942ed654afabfd52ba05231c4be48c9fbf60f5e34f59d79474c9a017b4
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.