Contract 0xc645BA686b2Ff2C37699cECfA42c6f6B83E3CF4D

Contract Overview

Balance:
0.003 Ether
Txn Hash
Method
Block
From
To
Value
0x4dd569f9007b576827784a45450e7a283d91210f8c0f5442fa6c5201dda6f801Update83039752020-07-16 8:00:26714 days 15 hrs ago0x281609b6005d3e3235230d9b88e5dd46f9078e76 IN  0xc645ba686b2ff2c37699cecfa42c6f6b83e3cf4d0 Ether0.00105437535
0x6d2b725d65819514cdf9362a7965b1e166393b81b24f4be5c71ff19e7486f440Update82974852020-07-15 8:00:09715 days 15 hrs ago0x281609b6005d3e3235230d9b88e5dd46f9078e76 IN  0xc645ba686b2ff2c37699cecfa42c6f6b83e3cf4d0 Ether0.00105437535
0x912b395115ef4aa69b46e048ec9b5bc9175dd8a37df6252c7a4fcb770796a4d0Update82908942020-07-14 8:00:27716 days 15 hrs ago0x281609b6005d3e3235230d9b88e5dd46f9078e76 IN  0xc645ba686b2ff2c37699cecfa42c6f6b83e3cf4d0 Ether0.00105437535
0xaa4322d21e7492ec05f79784234d8f25844bef9a249b4ebba0e7bb89295c7d9eUpdate82713292020-07-11 7:59:57719 days 15 hrs ago0x281609b6005d3e3235230d9b88e5dd46f9078e76 IN  0xc645ba686b2ff2c37699cecfa42c6f6b83e3cf4d0 Ether0.00105437535
0x16f606c84e734c244f03d77e46deb94d69c7dcf88bb2f329ee87efbb861d3159Update82647572020-07-10 7:59:54720 days 15 hrs ago0x281609b6005d3e3235230d9b88e5dd46f9078e76 IN  0xc645ba686b2ff2c37699cecfa42c6f6b83e3cf4d0 Ether0.00105437535
0x027731985ee8cf76f6a76a5685dd359a9e003d9eb97a0a78ba86904b1bbd5f46Update82582602020-07-09 8:00:24721 days 15 hrs ago0x281609b6005d3e3235230d9b88e5dd46f9078e76 IN  0xc645ba686b2ff2c37699cecfa42c6f6b83e3cf4d0 Ether0.00105437535
0xbdff8ca9939b1f3cf4270a74dfcf0400d55d8e57d0c80e1946642090fbafe6d5Update82516502020-07-08 8:00:15722 days 15 hrs ago0x281609b6005d3e3235230d9b88e5dd46f9078e76 IN  0xc645ba686b2ff2c37699cecfa42c6f6b83e3cf4d0 Ether0.00105437535
0xff10c8c665d58dcf5399070faf04d22c0550a5114f2f7d0795ea1317f4fc72c3Update82450052020-07-07 8:00:14723 days 15 hrs ago0x281609b6005d3e3235230d9b88e5dd46f9078e76 IN  0xc645ba686b2ff2c37699cecfa42c6f6b83e3cf4d0 Ether0.00105437535
0x4e0c69deeb82fc2f903fe11ad0ef14f0b58a17f0aa7d41909f08267e117a000c0x6080604082268572020-07-04 13:53:39726 days 9 hrs ago0x0f60841dfdd78535e11f71192e1ddece598fe541 IN  Contract Creation0.003 Ether0.001449191
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x2b03ed0d95aab7e5bd883df28b4d6951477778fc

Contract Name:
KnockOut

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-05-18
*/

pragma solidity 0.5 .16;

// This contract is unique per stock
contract KnockOut {
    // Contract specifics //
    // Admin of the contract -> StockVoting (Oracle data from stock market)
    address payable public chairperson;
    // Owner of the pot and creator of the contract
    address payable public contractCreator;
    // Sum of ether available in this contract
    // Note: This is the most money you can obtain when you win
    uint public pot;
    // By default initialized to `false`.
    // Set to true at the end, disallows any change.
    bool public ended;

    // Investment specifics //
    uint public knock_out_threshold;
    // Time how long the bids are allowed
    uint public leverage;
    // If true the certificate is 'Put'. If false the certificate is 'Call'.
    bool public isPut;
    // Time how long the contract is active
    uint public runEndTime;

    // Runtime data //
    struct ShareHolder {
        address payable account;
        uint amount;
        uint buying_closing_price;
    }

    // List of active ShareHolder
    ShareHolder[] public activeShareHolder;

    // Allowed withdrawals of previous bids
    mapping(address => uint)public pendingReturns;

    // Will be updated every day
    uint public last_closing_price;

    // Please notice these events
    // New share bought also means that you have to share the pot in case the
    event ShareBought_ev(address payable shareHolderAddress, uint amount);
    event ShareSold_ev(address payable shareHolderAddress, uint amount);
    // The chairperson can only retract when no Users are active anymore
    // The contract is dissolved
    event KnockOut_ev(uint stockValue);
    event ContractEnded_ev(address terminatorAddress);

    // param: _chairperson - The oracle/admin of this contract, a trusted party that obtains higher authority
    // param: _knock_out_threshold - Under/Over this threshold of the underlying, the shareholder
    // param: _leverage - Leverage for the whole certificate
    // param: _runTime - After this runtime, the contract ends
    // param: _isPut - Determines whether the certificate type is Put or Call
    constructor(address payable _chairperson, uint _knock_out_threshold, uint _leverage, uint _startPrice, uint _runTime, bool _isPut)
    public payable {
        chairperson = _chairperson;
        knock_out_threshold = _knock_out_threshold;
        leverage = _leverage;
        runEndTime = now + _runTime;
        last_closing_price = _startPrice;
        pot = msg.value;
        isPut = _isPut;
        contractCreator = msg.sender;
    }

    // / Buy a share of this contract
    function buyShare()public payable {
        require(!ended, "Contract has already ended");
        require(now <= runEndTime, "Contract is over the runtime");

        activeShareHolder.push(ShareHolder({account: msg.sender, amount: msg.value, buying_closing_price: last_closing_price}));

        emit ShareBought_ev(msg.sender, msg.value);

        return;
    }

    // Sell all shares of your this contract
    // todo: Sell only a number (difficult with gas, etc.)
    function sellShare()public payable {
        require(!ended, "Contract has already ended");
        require(now <= runEndTime, "Contract is over the runtime");

        for (uint p = 0; p < activeShareHolder.length; p ++) {
            if (activeShareHolder[p].account == msg.sender) {
                int buying_closing_price_int = int(activeShareHolder[p].buying_closing_price);
                int stock_price_diff_10000 = int(10000 * (int(last_closing_price) - buying_closing_price_int) / buying_closing_price_int);

                pendingReturns[activeShareHolder[p].account] = calcPendingReturn(stock_price_diff_10000, activeShareHolder[p].amount);

                delete activeShareHolder[p];
                activeShareHolder.length --;
            }
        }

        emit ShareSold_ev(msg.sender, pendingReturns[msg.sender]);

        return;
    }

    function calcPendingReturn(int stock_price_diff_10000, uint amount)private returns(uint) {
        uint pendingReturn;

        // Switch sign when turn
        if (isPut) {
            stock_price_diff_10000 *= -1;
        }

        // Positive or negative -> different cases
        int amount_diff = int(amount) * stock_price_diff_10000 * int(leverage) / 10000;

        if (amount_diff > 0) {
            // Positive performance
            // This is a positive value in positive notation
            uint amount_diff_uint_pos = uint(amount_diff);

            // Money is shifted from pot to stakeholder
            pendingReturn = amount + amount_diff_uint_pos;
            pot = pot - amount_diff_uint_pos;
        } else { // This is a negative value in positive notation
            uint amount_diff_uint_neg = uint(amount_diff * -1);

            if (amount_diff_uint_neg < amount) {
                // Negative performance
                // Money is shifted from amount (stakeHolder) to the pot
                pendingReturn = amount - amount_diff_uint_neg;
                pot = pot + amount_diff_uint_neg;
            } else { // Total loss
                pendingReturn = 0;
                pot = pot + amount;
            }
        }

        return pendingReturn;
    }

    // The contract creator can decide to dissolve the contract, the pot goes back to him
    function retractContract()public {
        require(msg.sender == contractCreator || msg.sender == chairperson, "Not the rights to perform this action");
        // Only possible if no activeShareHolder are encountered
        require(activeShareHolder.length == 0, "We have active shareHolders");

        pendingReturns[contractCreator] = pot;
        pot = 0;
        endContract();
        return;
    }

    // Due Date is over - contract should be ended by contractCreator. So that he can obtain his left pot
    // If he doesn't do it -> chairperson can end it (for the shareholder)
    function endContract()public {
        require(msg.sender == contractCreator || msg.sender == chairperson, "Not the rights to perform this action");

        emit ContractEnded_ev(msg.sender);
        ended = true;
        return;
    }

    // / Withdraw a bid that was overbid
    function withdraw()public returns(bool) {
        uint amount = pendingReturns[msg.sender];

        if (amount > 0) {
            pendingReturns[msg.sender] = 0;
            msg.sender.transfer(amount);
        }

        return true;
    }

    // / Daily update by server -> Oracle (gives the minimum_daily and closing_price)
    function update(uint _minimum, uint _closing_price)external payable {
        require(msg.sender == chairperson, "Not the rights to perform this action");
        require(_minimum <= _closing_price, "Input is wrong");
        require(!ended, "Contract has already ended");

        last_closing_price = _closing_price;

        if (isPut) {
            if (_minimum > knock_out_threshold) {
                knockOut(_minimum);
            }
        } else {
            if (_minimum < knock_out_threshold) {
                knockOut(_minimum);
            }
        }

        return;
    }

    // Stock price is under the threshold -> contract is dissolved, contractCreator takes all the money
    // ShareHolder doesn't receive any money
    function knockOut(uint stockValue)private {
        require(msg.sender == chairperson, "Not the rights to perform this action");

        uint payoutsum = 0;
        for (uint p = 0; p < activeShareHolder.length; p ++) {
            payoutsum += activeShareHolder[p].amount;
            // todo:Check if works
            delete activeShareHolder[p];
            activeShareHolder.length --;
        }
        pendingReturns[contractCreator] = payoutsum + pot;
        pot = 0;

        emit KnockOut_ev(stockValue);
        endContract();
        return;
    }

    // Getter/Setter
    function setrunEndTime(uint _newrunEndTime)public {
        require(msg.sender == chairperson, "Not the rights to change this value");
        runEndTime = _newrunEndTime;
    }
}

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_chairperson","type":"address"},{"internalType":"uint256","name":"_knock_out_threshold","type":"uint256"},{"internalType":"uint256","name":"_leverage","type":"uint256"},{"internalType":"uint256","name":"_startPrice","type":"uint256"},{"internalType":"uint256","name":"_runTime","type":"uint256"},{"internalType":"bool","name":"_isPut","type":"bool"}],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"terminatorAddress","type":"address"}],"name":"ContractEnded_ev","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"stockValue","type":"uint256"}],"name":"KnockOut_ev","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address payable","name":"shareHolderAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ShareBought_ev","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address payable","name":"shareHolderAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ShareSold_ev","type":"event"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"activeShareHolder","outputs":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"buying_closing_price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyShare","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"chairperson","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractCreator","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"endContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ended","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isPut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"knock_out_threshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"last_closing_price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"leverage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pendingReturns","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"retractContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"runEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sellShare","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_newrunEndTime","type":"uint256"}],"name":"setrunEndTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_minimum","type":"uint256"},{"internalType":"uint256","name":"_closing_price","type":"uint256"}],"name":"update","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052604051611788380380611788833981810160405260c081101561002657600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050856000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846004819055508360058190555081420160078190555082600a819055503460028190555080600660006101000a81548160ff02191690831515021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505061164a8061013e6000396000f3fe6080604052600436106101095760003560e01c806345216cee11610095578063708c73ea11610064578063708c73ea14610410578063900181971461043b578063aabf0eb614610466578063bb6e7de91461047d578063f3c274a61461049457610109565b806345216cee146103a65780634ba2363a146103b05780634da13c2e146103db5780636fcda95e146103e557610109565b806326b387bb116100dc57806326b387bb146102585780632c86d98e146102bd5780632e4176cf146102e85780632fb565e81461033f5780633ccfd60b1461037757610109565b806302c229d51461010e5780630cd8b5ad1461019757806312fa6feb146101d25780631e2f73b114610201575b600080fd5b34801561011a57600080fd5b506101476004803603602081101561013157600080fd5b81019080803590602001909291905050506104c3565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b3480156101a357600080fd5b506101d0600480360360208110156101ba57600080fd5b810190808035906020019092919050505061051a565b005b3480156101de57600080fd5b506101e76105c9565b604051808215151515815260200191505060405180910390f35b34801561020d57600080fd5b506102166105dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561026457600080fd5b506102a76004803603602081101561027b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610602565b6040518082815260200191505060405180910390f35b3480156102c957600080fd5b506102d261061a565b6040518082815260200191505060405180910390f35b3480156102f457600080fd5b506102fd610620565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103756004803603604081101561035557600080fd5b810190808035906020019092919080359060200190929190505050610645565b005b34801561038357600080fd5b5061038c610831565b604051808215151515815260200191505060405180910390f35b6103ae610914565b005b3480156103bc57600080fd5b506103c5610c9e565b6040518082815260200191505060405180910390f35b6103e3610ca4565b005b3480156103f157600080fd5b506103fa610eca565b6040518082815260200191505060405180910390f35b34801561041c57600080fd5b50610425610ed0565b6040518082815260200191505060405180910390f35b34801561044757600080fd5b50610450610ed6565b6040518082815260200191505060405180910390f35b34801561047257600080fd5b5061047b610edc565b005b34801561048957600080fd5b506104926110ce565b005b3480156104a057600080fd5b506104a961124b565b604051808215151515815260200191505060405180910390f35b600881815481106104d057fe5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806115f36023913960400191505060405180910390fd5b8060078190555050565b600360009054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915090505481565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806115ce6025913960400191505060405180910390fd5b80821115610760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e7075742069732077726f6e6700000000000000000000000000000000000081525060200191505060405180910390fd5b600360009054906101000a900460ff16156107e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f6e74726163742068617320616c726561647920656e64656400000000000081525060200191505060405180910390fd5b80600a81905550600660009054906101000a900460ff161561081857600454821115610813576108128261125e565b5b61082d565b60045482101561082c5761082b8261125e565b5b5b5050565b600080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561090c576000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561090a573d6000803e3d6000fd5b505b600191505090565b600360009054906101000a900460ff1615610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f6e74726163742068617320616c726561647920656e64656400000000000081525060200191505060405180910390fd5b600754421115610a0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6e7472616374206973206f766572207468652072756e74696d650000000081525060200191505060405180910390fd5b60008090505b600880549050811015610bf1573373ffffffffffffffffffffffffffffffffffffffff1660088281548110610a4657fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610be457600060088281548110610aa357fe5b906000526020600020906003020160020154905060008182600a54036127100281610aca57fe5b059050610af58160088581548110610ade57fe5b90600052602060002090600302016001015461146c565b6009600060088681548110610b0657fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060088381548110610b8357fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055600282016000905550506008805480919060019003610be09190611545565b5050505b8080600101915050610a15565b507f5d369d21d8f78fe3a2cd8842ba33a2974d141ab458c1b1e0e54c2332ac7f412733600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b60025481565b600360009054906101000a900460ff1615610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f6e74726163742068617320616c726561647920656e64656400000000000081525060200191505060405180910390fd5b600754421115610d9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f436f6e7472616374206973206f766572207468652072756e74696d650000000081525060200191505060405180910390fd5b600860405180606001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001348152602001600a548152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201555050507f9d9c9db34618dfe81661a31fe3051678b0807375b4665343550d9b8480a947293334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600a5481565b60045481565b60075481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f8457506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610fd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806115ce6025913960400191505060405180910390fd5b600060088054905014611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5765206861766520616374697665207368617265486f6c64657273000000000081525060200191505060405180910390fd5b60025460096000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006002819055506110cc6110ce565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061117657506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806115ce6025913960400191505060405180910390fd5b7f71a9748e87ebb0fd0ebf59d801148b7c6017fa6a40d36dff6504d5e5cfeee05433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001600360006101000a81548160ff021916908315150217905550565b600660009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806115ce6025913960400191505060405180910390fd5b600080905060008090505b6008805490508110156113b6576008818154811061132857fe5b906000526020600020906003020160010154820191506008818154811061134b57fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055505060088054809190600190036113a89190611545565b50808060010191505061130e565b50600254810160096000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006002819055507fdd5009e40c1bb242c332ec184d4f71bbe65eceff47a8c83584b16c6a590745e8826040518082815260200191505060405180910390a16114686110ce565b5050565b600080600660009054906101000a900460ff16156114aa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff840293505b600061271060055486860202816114bd57fe5b05905060008113156114e4576000819050808501925080600254036002819055505061153a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82029050848110156115285780850392508060025401600281905550611538565b6000925084600254016002819055505b505b819250505092915050565b815481835581811115611572576003028160030283600052602060002091820191016115719190611577565b5b505050565b6115ca91905b808211156115c657600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090555060030161157d565b5090565b9056fe4e6f74207468652072696768747320746f20706572666f726d207468697320616374696f6e4e6f74207468652072696768747320746f206368616e676520746869732076616c7565a265627a7a72315820873885a45f2f5dcd56f44832107db75e8b7a0108c50a9a51ad3384812c9245f664736f6c63430005100032000000000000000000000000281609b6005d3e3235230d9b88e5dd46f9078e760000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

66:8232:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1099:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1099:38:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1099:38:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8115:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8115:180:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8115:180:0;;;;;;;;;;;;;;;;;:::i;:::-;;569:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;569:17:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;292:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;292:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1191:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1191:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1191:45:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;708:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;708:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;198:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;198:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6741:608;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6741:608:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6396:250;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6396:250:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3189:880;;;:::i;:::-;;450:15;;8:9:-1;5:2;;;30:1;27;20:12;5:2;450:15:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2702:373;;;:::i;:::-;;1279:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1279:30:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;627:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;627:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;882:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;882:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5498:415;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5498:415:0;;;:::i;:::-;;6104:242;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6104:242:0;;;:::i;:::-;;813:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;813:17:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1099:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8115:180::-;8198:11;;;;;;;;;;;8184:25;;:10;:25;;;8176:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8273:14;8260:10;:27;;;;8115:180;:::o;569:17::-;;;;;;;;;;;;;:::o;292:38::-;;;;;;;;;;;;;:::o;1191:45::-;;;;;;;;;;;;;;;;;:::o;708:20::-;;;;:::o;198:34::-;;;;;;;;;;;;;:::o;6741:608::-;6842:11;;;;;;;;;;;6828:25;;:10;:25;;;6820:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6926:14;6914:8;:26;;6906:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6979:5;;;;;;;;;;;6978:6;6970:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7049:14;7028:18;:35;;;;7080:5;;;;;;;;;;;7076:247;;;7117:19;;7106:8;:30;7102:89;;;7157:18;7166:8;7157;:18::i;:::-;7102:89;7076:247;;;7238:19;;7227:8;:30;7223:89;;;7278:18;7287:8;7278;:18::i;:::-;7223:89;7076:247;6741:608;;:::o;6396:250::-;6430:4;6447:11;6461:14;:26;6476:10;6461:26;;;;;;;;;;;;;;;;6447:40;;6513:1;6504:6;:10;6500:115;;;6560:1;6531:14;:26;6546:10;6531:26;;;;;;;;;;;;;;;:30;;;;6576:10;:19;;:27;6596:6;6576:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6576:27:0;6500:115;6634:4;6627:11;;;6396:250;:::o;3189:880::-;3244:5;;;;;;;;;;;3243:6;3235:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3306:10;;3299:3;:17;;3291:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3367:6;3376:1;3367:10;;3362:611;3383:17;:24;;;;3379:1;:28;3362:611;;;3466:10;3434:42;;:17;3452:1;3434:20;;;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;:42;;;3430:532;;;3497:28;3532:17;3550:1;3532:20;;;;;;;;;;;;;;;;;;:41;;;3497:77;;3593:26;3689:24;3661;3639:18;;3635:50;3626:5;:60;:87;;;;;;3593:121;;3782:70;3800:22;3824:17;3842:1;3824:20;;;;;;;;;;;;;;;;;;:27;;;3782:17;:70::i;:::-;3735:14;:44;3750:17;3768:1;3750:20;;;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;3735:44;;;;;;;;;;;;;;;:117;;;;3880:17;3898:1;3880:20;;;;;;;;;;;;;;;;;;;3873:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3919:17;:27;;;;;;;;;;;;:::i;:::-;;3430:532;;;3409:4;;;;;;;3362:611;;;;3990:52;4003:10;4015:14;:26;4030:10;4015:26;;;;;;;;;;;;;;;;3990:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;3189:880::o;450:15::-;;;;:::o;2702:373::-;2756:5;;;;;;;;;;;2755:6;2747:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2818:10;;2811:3;:17;;2803:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2874:17;2897:95;;;;;;;;2919:10;2897:95;;;;;;2939:9;2897:95;;;;2972:18;;2897:95;;;2874:119;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;2874:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3011:37;3026:10;3038:9;3011:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:373::o;1279:30::-;;;;:::o;627:31::-;;;;:::o;882:22::-;;;;:::o;5498:415::-;5564:15;;;;;;;;;;;5550:29;;:10;:29;;;:58;;;;5597:11;;;;;;;;;;;5583:25;;:10;:25;;;5550:58;5542:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5763:1;5735:17;:24;;;;:29;5727:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5843:3;;5809:14;:31;5824:15;;;;;;;;;;;5809:31;;;;;;;;;;;;;;;:37;;;;5863:1;5857:3;:7;;;;5875:13;:11;:13::i;:::-;5498:415::o;6104:242::-;6166:15;;;;;;;;;;;6152:29;;:10;:29;;;:58;;;;6199:11;;;;;;;;;;;6185:25;;:10;:25;;;6152:58;6144:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6270:28;6287:10;6270:28;;;;;;;;;;;;;;;;;;;;;;6317:4;6309:5;;:12;;;;;;;;;;;;;;;;;;6104:242::o;813:17::-;;;;;;;;;;;;;:::o;7508:577::-;7583:11;;;;;;;;;;;7569:25;;:10;:25;;;7561:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7649:14;7666:1;7649:18;;7683:6;7692:1;7683:10;;7678:240;7699:17;:24;;;;7695:1;:28;7678:240;;;7759:17;7777:1;7759:20;;;;;;;;;;;;;;;;;;:27;;;7746:40;;;;7844:17;7862:1;7844:20;;;;;;;;;;;;;;;;;;;7837:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7879:17;:27;;;;;;;;;;;;:::i;:::-;;7725:4;;;;;;;7678:240;;;;7974:3;;7962:9;:15;7928:14;:31;7943:15;;;;;;;;;;;7928:31;;;;;;;;;;;;;;;:49;;;;7994:1;7988:3;:7;;;;8013:23;8025:10;8013:23;;;;;;;;;;;;;;;;;;8047:13;:11;:13::i;:::-;8071:7;7508:577;:::o;4077:1322::-;4160:4;4177:18;4246:5;;;;;;;;;;;4242:66;;;4294:2;4268:28;;;;4242:66;4372:15;4445:5;4433:8;;4404:22;4394:6;4390:36;:52;:60;;;;;;4372:78;;4481:1;4467:11;:15;4463:896;;;4598:25;4631:11;4598:45;;4742:20;4733:6;:29;4717:45;;4789:20;4783:3;;:26;4777:3;:32;;;;4463:896;;;;4891:25;4938:2;4924:11;:16;4891:50;;4985:6;4962:20;:29;4958:390;;;5152:20;5143:6;:29;5127:45;;5203:20;5197:3;;:26;5191:3;:32;;;;4958:390;;;5294:1;5278:17;;5326:6;5320:3;;:12;5314:3;:18;;;;4958:390;4463:896;;5378:13;5371:20;;;;4077:1322;;;;:::o;66:8232::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://873885a45f2f5dcd56f44832107db75e8b7a0108c50a9a51ad3384812c9245f6
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading

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.