[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: TCCDapp
Compiler Text: v0.4.23+commit.124ca40d
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.21;

//lib SafeMath
library SafeMath {

      /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting '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;
    }

        c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws 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 a / b;
    }

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

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}
contract owned {
    address public owner;
    
    constructor() public{
        owner = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }
    //조건을 설정해 놓고 나중에 재사용 하기 위한 용도인것 같음
    //여기서는 msg.sender == owner랑 같아야지만 사용할 수 있게 해놨음


    function transferOwnership(address newOwner) onlyOwner public {
        owner = newOwner;
    }
    //Owner 변경하는 용도
}
contract Token{
    function totalSupply() public constant returns (uint);
    function balanceOf(address tokenOwner) public constant returns (uint balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}
contract TCCDapp is owned{
    using SafeMath for uint;
    
    struct repairRecipt{
        address from;
        uint repairInfo;
        uint isRepaired;
    }//수리 정보

    struct Escrow{
        uint balance;               //balance
        
        string _carNumber;                //Car Number
        uint price;                 //price
        
        address seller;             //판매자
        address buyer;              //구매자

        bool deposited;             //입금 여부
        bool buyerApprove;          //구매자 승인
        bool sellerApprove;         //판매자 승인

        uint start;                  //startTime;
        bool lived;                 //취소, 거래종료 등 -> true
    }//Escrow


    //등록된 사람인지 확인
    mapping(address => bool) public isPerson;
    mapping(address => string) public personName;
    //등록된 차량인지 확인
    mapping(bytes32 => bool) isCar;
    //차량 정보 저장
    mapping(bytes32 => address) carOwner;
    //차량 수리 이력 카운트
    mapping(bytes32 => uint) repairCount;
    //차량 수리 이력
    mapping(bytes32 => mapping(uint => repairRecipt)) repairList;
    //Escrow
    mapping(uint => Escrow) public escrows;

    //수리 정보 등록시 이벤트 등록
    event repairUpdate(address from, string _carNumber, int data);
    //주인 변경 이벤트
    event changeOwner(address from, address to, string _carNumber);
    //사람 등록 이벤트
    event personRegister(address _who);
    //차량 등록 이벤트
    event carRegister(address _who, string _carNumber);
    //입금
    event Deposit(uint _orderNumber, address  _buyer);                             
    //거래 영수증
    event Receipt(uint _orderNumber, address _seller,address _buyer,string _carNumber ,uint price);
    //취소          
    event Cancel(uint _orderNumber, address _seller, address _buyer);
    //TimeOut 
    event TimeOut(uint _orderNumber,address _seller,address _buyer, uint _time);      

    address tokenAddress;
    Token tokenInstance;
    uint orderCount;
    Escrow escrow;
    uint public feeAmount;
    
    modifier afterDeadline(uint _orderNumber) {
        if(now >= escrows[_orderNumber].start + 30 days) 
            escrows[_orderNumber].lived = false;
        _;
    }

    modifier isLived(uint _orderNumber){
        require(escrows[_orderNumber].lived);
        _;
    }

    constructor(address _tokenAddress) public{
        tokenAddress = _tokenAddress;
        tokenInstance = Token(_tokenAddress);
        orderCount = 0;
    }

    function changeCurrent(address _tokenAddress) onlyOwner public{
        tokenAddress = _tokenAddress;
        tokenInstance = Token(_tokenAddress);
    }
//getter
    function getIsCar(string _carNumber) public view returns(bool){
        bytes32 carNumber = stringToBytes32(_carNumber);
        return(isCar[carNumber]);
    }

    function getCarOwner(string _carNumber)public view returns(address){
        bytes32 carNumber = stringToBytes32(_carNumber);
        return(carOwner[carNumber]);
    }

    function getRepairCount(string _carNumber) public view returns(uint){
        bytes32 carNumber = stringToBytes32(_carNumber);
        return(repairCount[carNumber]);
    }

    function getRepairInfo(string _carNumber,uint _index) public view returns(address _from, uint _repairInfo, uint _isRepaired){
        require(bytes(_carNumber).length <= 32);
        bytes32 carNumber = stringToBytes32(_carNumber);
        require(repairCount[carNumber] > _index);
        _from = repairList[carNumber][_index].from;
        _repairInfo = repairList[carNumber][_index].repairInfo;
        _isRepaired = repairList[carNumber][_index].isRepaired;
        return(_from,_repairInfo,_isRepaired);
    }
//end getter

    function nowCurrent() public view returns(address){
        return(tokenAddress);
    }

    //사람 등록
    function setPerson(string name) public returns(bool){
        require(!isPerson[msg.sender]);
        isPerson[msg.sender] = true;
        personName[msg.sender] = name;
        emit personRegister(msg.sender);
        return true;
    }

    //초기 차량 등록
    function setCar(string _carNumber)public {
        require(bytes(_carNumber).length <= 32);
        bytes32 carNumber = stringToBytes32(_carNumber);
        require(!isCar[carNumber]);
        require(isPerson[msg.sender]);
        carOwner[carNumber] = msg.sender;
        isCar[carNumber] = true;
        emit carRegister(msg.sender,_carNumber);
    }

    //수리이력 등록
    function setRepairInfo(string _carNumber,uint[] _repairInfo,uint[] _isRepaired)public {
        require(isPerson[msg.sender]);
        require(bytes(_carNumber).length <= 32);
        bytes32 carNumber = stringToBytes32(_carNumber);
        require(isCar[carNumber]);

        for(uint i=0;i<_repairInfo.length;i++){
        repairList[carNumber][repairCount[carNumber]] = repairRecipt(msg.sender,_repairInfo[i],_isRepaired[i]);
        repairCount[carNumber]++;
        }
    }

    //Escrow 생성
    function escrowCreate(string _carNumber, uint _price, address _buyer) public returns(uint){
        require(msg.sender == getCarOwner(_carNumber));
        orderCount++;
        escrows[orderCount] = Escrow(0, _carNumber, _price, msg.sender, _buyer, false,false,false,now,true);

        return orderCount;
    }

    function deposit(uint _orderNumber) public afterDeadline(_orderNumber) isLived(_orderNumber){
        require(tokenInstance.balanceOf(msg.sender) >= escrows[_orderNumber].price);
        require(address(escrows[_orderNumber].buyer) == msg.sender);
        require(!escrows[_orderNumber].deposited);
        tokenInstance.transferFrom(msg.sender,address(this),escrows[_orderNumber].price);
        escrows[_orderNumber].balance = escrows[_orderNumber].balance.add(escrows[_orderNumber].price);
        escrows[_orderNumber].deposited = true;
        emit Deposit(_orderNumber,msg.sender);
    }

    function Approve(uint _orderNumber) public isLived(_orderNumber){
        require(msg.sender == escrows[_orderNumber].seller || msg.sender == escrows[_orderNumber].buyer);

        if(msg.sender == escrows[_orderNumber].seller && escrows[_orderNumber].deposited)
            escrows[_orderNumber].sellerApprove = true;
        
        if(msg.sender == escrows[_orderNumber].buyer)
            escrows[_orderNumber].buyerApprove = true;

        if(escrows[_orderNumber].sellerApprove && escrows[_orderNumber].buyerApprove){
            //Pay and Exchange;
            if(!payAndExchange(_orderNumber)){
                revert();
            }
            //Transfer Token
            emit Receipt(_orderNumber,escrows[_orderNumber].seller,escrows[_orderNumber].buyer,escrows[_orderNumber]._carNumber,escrows[_orderNumber].price);
        }
        else if(escrows[_orderNumber].buyerApprove && !escrows[_orderNumber].sellerApprove && now > escrows[_orderNumber].start + 30 days){
            tokenInstance.transfer(escrows[_orderNumber].buyer,escrows[_orderNumber].balance);
            emit TimeOut(_orderNumber,escrows[_orderNumber].seller,escrows[_orderNumber].buyer,now);
            emit Cancel(_orderNumber,escrows[_orderNumber].seller,escrows[_orderNumber].buyer);
            escrows[_orderNumber].lived = false;
        }
    }
    
    function ownerChange(address _from, address _to, string _carNumber) internal returns(bool){
        require(bytes(_carNumber).length <= 32);
        bytes32 carNumber = stringToBytes32(_carNumber);
        require(carOwner[carNumber] == _from);
        require(isPerson[_to]);
        carOwner[carNumber] = _to;
        emit changeOwner(_from,_to,_carNumber);
        return true;
    }

    function payAndExchange(uint _orderNumber) internal returns (bool){
        uint fees;
        fees = escrows[_orderNumber].balance.div(100);
        feeAmount = feeAmount.add(fees);
        escrows[_orderNumber].balance = escrows[_orderNumber].balance.sub(fees);
        if(!tokenInstance.transfer(escrows[_orderNumber].seller,escrows[_orderNumber].balance))
            revert();
        ownerChange(escrows[_orderNumber].seller,escrows[_orderNumber].buyer,escrows[_orderNumber]._carNumber);
        escrows[_orderNumber].balance = 0;
        escrows[_orderNumber].lived = false;   //거래 종료
        return true;
    }

    function cancel(uint _orderNumber) public isLived(_orderNumber){
        if(escrows[_orderNumber].seller == msg.sender){
            escrows[_orderNumber].sellerApprove = false;
        }
        else if(msg.sender == escrows[_orderNumber].buyer){
            escrows[_orderNumber].buyerApprove = false;
        }
        if(!escrows[_orderNumber].sellerApprove && !escrows[_orderNumber].buyerApprove){
            if(escrows[_orderNumber].deposited){
                if(!tokenInstance.transfer(escrows[_orderNumber].buyer,escrows[_orderNumber].balance)) revert();
            }
            emit Cancel(_orderNumber,escrows[_orderNumber].seller,escrows[_orderNumber].buyer);
            escrows[_orderNumber].lived = false;
        }
    }
    
    //Fees withdraw
    function withdraw(address addr,uint _value) onlyOwner public{
        if(!tokenInstance.transfer(addr,_value)) revert();
    }   

    //string to Bytes32
    function stringToBytes32(string memory source) pure internal returns(bytes32 result) {
        bytes memory tempEmptyStringTest = bytes(source);
        if (tempEmptyStringTest.length == 0) {
            return 0x0;
        }
        assembly {
            result := mload(add(source, 32))
        }
    }

}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"escrows","outputs":[{"name":"balance","type":"uint256"},{"name":"_carNumber","type":"string"},{"name":"price","type":"uint256"},{"name":"seller","type":"address"},{"name":"buyer","type":"address"},{"name":"deposited","type":"bool"},{"name":"buyerApprove","type":"bool"},{"name":"sellerApprove","type":"bool"},{"name":"start","type":"uint256"},{"name":"lived","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"personName","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_carNumber","type":"string"}],"name":"getCarOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isPerson","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orderNumber","type":"uint256"}],"name":"cancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nowCurrent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"}],"name":"changeCurrent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_carNumber","type":"string"}],"name":"getRepairCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_orderNumber","type":"uint256"}],"name":"Approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"}],"name":"setPerson","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_carNumber","type":"string"},{"name":"_repairInfo","type":"uint256[]"},{"name":"_isRepaired","type":"uint256[]"}],"name":"setRepairInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_orderNumber","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_carNumber","type":"string"},{"name":"_price","type":"uint256"},{"name":"_buyer","type":"address"}],"name":"escrowCreate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_carNumber","type":"string"}],"name":"getIsCar","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_carNumber","type":"string"},{"name":"_index","type":"uint256"}],"name":"getRepairInfo","outputs":[{"name":"_from","type":"address"},{"name":"_repairInfo","type":"uint256"},{"name":"_isRepaired","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_carNumber","type":"string"}],"name":"setCar","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"_value","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"_carNumber","type":"string"},{"indexed":false,"name":"data","type":"int256"}],"name":"repairUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"_carNumber","type":"string"}],"name":"changeOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_who","type":"address"}],"name":"personRegister","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_who","type":"address"},{"indexed":false,"name":"_carNumber","type":"string"}],"name":"carRegister","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orderNumber","type":"uint256"},{"indexed":false,"name":"_buyer","type":"address"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orderNumber","type":"uint256"},{"indexed":false,"name":"_seller","type":"address"},{"indexed":false,"name":"_buyer","type":"address"},{"indexed":false,"name":"_carNumber","type":"string"},{"indexed":false,"name":"price","type":"uint256"}],"name":"Receipt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orderNumber","type":"uint256"},{"indexed":false,"name":"_seller","type":"address"},{"indexed":false,"name":"_buyer","type":"address"}],"name":"Cancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_orderNumber","type":"uint256"},{"indexed":false,"name":"_seller","type":"address"},{"indexed":false,"name":"_buyer","type":"address"},{"indexed":false,"name":"_time","type":"uint256"}],"name":"TimeOut","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405234801561001057600080fd5b50604051602080611edd833981016040525160008054600160a060020a03338116600160a060020a03199283161783556008805491909416908216811790935560098054909116909217909155600a55611e6e8061006f6000396000f3006080604052600436106101115763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663012f52ee81146101165780630b755556146101fc5780630b8cf8d1146102925780630f73927a1461030757806340e58ee51461033c578063518f09d814610356578063666bec4e1461036b57806369e154041461038c578063727b703f146103b357806377b92c071461040c5780638da5cb5b146104245780639ba0ccfe14610439578063b60b6e2114610492578063b6b55f251461055d578063c288898514610575578063cfd8c06c146105df578063f04bdd8a14610638578063f17a11ed146106bb578063f2fde38b14610714578063f3fef3a314610735575b600080fd5b34801561012257600080fd5b5061012e600435610759565b604080518b8152908101899052600160a060020a0380891660608301528716608082015285151560a082015284151560c082015283151560e0820152610100810183905281151561012082015261014060208083018281528c51928401929092528b516101608401918d019080838360005b838110156101b85781810151838201526020016101a0565b50505050905090810190601f1680156101e55780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b34801561020857600080fd5b5061021d600160a060020a036004351661084e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025757818101518382015260200161023f565b50505050905090810190601f1680156102845780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029e57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102eb9436949293602493928401919081908401838280828437509497506108e79650505050505050565b60408051600160a060020a039092168252519081900360200190f35b34801561031357600080fd5b50610328600160a060020a0360043516610916565b604080519115158252519081900360200190f35b34801561034857600080fd5b5061035460043561092b565b005b34801561036257600080fd5b506102eb610b88565b34801561037757600080fd5b50610354600160a060020a0360043516610b98565b34801561039857600080fd5b506103a1610bec565b60408051918252519081900360200190f35b3480156103bf57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103a1943694929360249392840191908190840183828082843750949750610bf29650505050505050565b34801561041857600080fd5b50610354600435610c14565b34801561043057600080fd5b506102eb6110b3565b34801561044557600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103289436949293602493928401919081908401838280828437509497506110c29650505050505050565b34801561049e57600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610354943694929360249392840191908190840183828082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506111689650505050505050565b34801561056957600080fd5b506103546004356112a9565b34801561058157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103a19436949293602493928401919081908401838280828437509497505084359550505050602090910135600160a060020a0316905061155d565b3480156105eb57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103289436949293602493928401919081908401838280828437509497506117219650505050505050565b34801561064457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261069394369492936024939284019190819084018382808284375094975050933594506117469350505050565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b3480156106c757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103549436949293602493928401919081908401838280828437509497506117c19650505050505050565b34801561072057600080fd5b50610354600160a060020a0360043516611916565b34801561074157600080fd5b50610354600160a060020a0360043516602435611960565b6007602090815260009182526040918290208054600180830180548651600293821615610100026000190190911692909204601f8101869004860283018601909652858252919492939092908301828280156107f65780601f106107cb576101008083540402835291602001916107f6565b820191906000526020600020905b8154815290600101906020018083116107d957829003601f168201915b50505050600283015460038401546004850154600586015460069096015494959294600160a060020a0392831694509181169260ff60a060020a830481169360a860020a840482169360b060020a900482169291168a565b600260208181526000928352604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383529192908301828280156108df5780601f106108b4576101008083540402835291602001916108df565b820191906000526020600020905b8154815290600101906020018083116108c257829003601f168201915b505050505081565b6000806108f383611a0b565b600081815260046020526040902054600160a060020a0316925090505b50919050565b60016020526000908152604090205460ff1681565b600081815260076020526040902060060154819060ff16151561094d57600080fd5b60008281526007602052604090206003015433600160a060020a03908116911614156109a7576000828152600760205260409020600401805476ff00000000000000000000000000000000000000000000191690556109fc565b60008281526007602052604090206004015433600160a060020a03908116911614156109fc576000828152600760205260409020600401805475ff000000000000000000000000000000000000000000191690555b60008281526007602052604090206004015460b060020a900460ff16158015610a3e575060008281526007602052604090206004015460a860020a900460ff16155b15610b845760008281526007602052604090206004015460a060020a900460ff1615610b055760095460008381526007602090815260408083206004808201549154835160e060020a63a9059cbb028152600160a060020a03938416928101929092526024820152915194169363a9059cbb93604480840194938390030190829087803b158015610ace57600080fd5b505af1158015610ae2573d6000803e3d6000fd5b505050506040513d6020811015610af857600080fd5b50511515610b0557600080fd5b60008281526007602090815260409182902060038101546004909101548351868152600160a060020a0392831693810193909352168183015290517f789f8a0b90cb5b009f91a043ae5e1b06674fc2ec6262b58971b87220683951509181900360600190a16000828152600760205260409020600601805460ff191690555b5050565b600854600160a060020a03165b90565b60005433600160a060020a03908116911614610bb357600080fd5b60088054600160a060020a0390921673ffffffffffffffffffffffffffffffffffffffff19928316811790915560098054909216179055565b60125481565b600080610bfe83611a0b565b6000908152600560205260409020549392505050565b600081815260076020526040902060060154819060ff161515610c3657600080fd5b60008281526007602052604090206003015433600160a060020a0390811691161480610c7f575060008281526007602052604090206004015433600160a060020a039081169116145b1515610c8a57600080fd5b60008281526007602052604090206003015433600160a060020a039081169116148015610ccf575060008281526007602052604090206004015460a060020a900460ff165b15610d0a576000828152600760205260409020600401805476ff00000000000000000000000000000000000000000000191660b060020a1790555b60008281526007602052604090206004015433600160a060020a0390811691161415610d65576000828152600760205260409020600401805475ff000000000000000000000000000000000000000000191660a860020a1790555b60008281526007602052604090206004015460b060020a900460ff168015610da5575060008281526007602052604090206004015460a860020a900460ff165b15610eca57610db382611a2a565b1515610dbe57600080fd5b600082815260076020908152604091829020600381015460048201546002808401548651898152600160a060020a03948516968101879052939092169583018690526080830182905260a06060840181815260019586018054610100978116159790970260001901909616929092049084018190527f8d14e6796e9f62724a6f957ff466628d8d39bd0981a09421402786d206947119968996959094909392909160c083019085908015610eb35780601f10610e8857610100808354040283529160200191610eb3565b820191906000526020600020905b815481529060010190602001808311610e9657829003601f168201915b5050965050505050505060405180910390a1610b84565b60008281526007602052604090206004015460a860020a900460ff168015610f0b575060008281526007602052604090206004015460b060020a900460ff16155b8015610f2c575060008281526007602052604090206005015462278d000142115b15610b845760095460008381526007602090815260408083206004808201549154835160e060020a63a9059cbb028152600160a060020a03938416928101929092526024820152915194169363a9059cbb93604480840194938390030190829087803b158015610f9b57600080fd5b505af1158015610faf573d6000803e3d6000fd5b505050506040513d6020811015610fc557600080fd5b505060008281526007602090815260409182902060038101546004909101548351868152600160a060020a0392831693810193909352168183015242606082015290517fe5dea8cdaf65c0fb592fe0da0d74b3041360b7ef3f00a42a94a9a30430748a0b9181900360800190a160008281526007602090815260409182902060038101546004909101548351868152600160a060020a0392831693810193909352168183015290517f789f8a0b90cb5b009f91a043ae5e1b06674fc2ec6262b58971b87220683951509181900360600190a1506000908152600760205260409020600601805460ff19169055565b600054600160a060020a031681565b600160a060020a03331660009081526001602052604081205460ff16156110e857600080fd5b600160a060020a0333166000908152600160208181526040808420805460ff1916909317909255600281529120835161112392850190611daa565b5060408051600160a060020a033316815290517fdb3c2af31dab6bb8584c4e89e61ecedf902774f55c6c67d5a8868ef3950d8c019181900360200190a1506001919050565b600160a060020a033316600090815260016020526040812054819060ff16151561119157600080fd5b8451602010156111a057600080fd5b6111a985611a0b565b60008181526003602052604090205490925060ff1615156111c957600080fd5b5060005b83518110156112a25760606040519081016040528033600160a060020a0316815260200185838151811015156111ff57fe5b906020019060200201518152602001848381518110151561121c57fe5b60209081029190910181015190915260008481526006825260408082206005808552828420805485529185528284208651815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390911617815586860151600180830191909155969093015160029093019290925591869052909152805482019055016111cd565b5050505050565b600081815260076020526040902060050154819062278d000142106112e2576000818152600760205260409020600601805460ff191690555b600082815260076020526040902060060154829060ff16151561130457600080fd5b60008381526007602090815260408083206002015460095482517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301529351929593909116936370a082319360248084019492938390030190829087803b15801561137e57600080fd5b505af1158015611392573d6000803e3d6000fd5b505050506040513d60208110156113a857600080fd5b505110156113b557600080fd5b60008381526007602052604090206004015433600160a060020a039081169116146113df57600080fd5b60008381526007602052604090206004015460a060020a900460ff161561140557600080fd5b60095460008481526007602090815260408083206002015481517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301523081166024830152604482019290925291519416936323b872dd93606480840194938390030190829087803b15801561148a57600080fd5b505af115801561149e573d6000803e3d6000fd5b505050506040513d60208110156114b457600080fd5b50506000838152600760205260409020600281015490546114da9163ffffffff611c1016565b6000848152600760209081526040918290209283556004909201805474ff0000000000000000000000000000000000000000191660a060020a1790558051858152600160a060020a0333169281019290925280517f4bcc17093cdf51079c755de089be5a85e70fa374ec656c194480fbdcda224a539281900390910190a1505050565b6000611568846108e7565b600160a060020a031633600160a060020a031614151561158757600080fd5b600a80546001908101918290556040805161014081018252600080825260208083018a81528385018a9052600160a060020a0333811660608601528916608085015260a0840183905260c0840183905260e084018390524261010085015261012084018690529582526007815292902081518155935180519194936116129390850192910190611daa565b5060408201516002820155606082015160038201805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a0393841617909155608084015160048401805460a087015160c088015160e089015192909516939095169290921774ff0000000000000000000000000000000000000000191660a060020a941515949094029390931775ff000000000000000000000000000000000000000000191660a860020a921515929092029190911776ff00000000000000000000000000000000000000000000191660b060020a911515919091021790556101008201516005820155610120909101516006909101805460ff19169115159190911790555050600a5492915050565b60008061172d83611a0b565b60009081526003602052604090205460ff169392505050565b600080600080602086511115151561175d57600080fd5b61176686611a0b565b600081815260056020526040902054909150851061178357600080fd5b60009081526006602090815260408083209683529590529390932080546001820154600290920154600160a060020a03909116969195509350915050565b600060208251111515156117d457600080fd5b6117dd82611a0b565b60008181526003602052604090205490915060ff16156117fc57600080fd5b600160a060020a03331660009081526001602052604090205460ff16151561182357600080fd5b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a03811691821790925560038452828520805460ff19166001179055825190815280840183815287519382019390935286517f2e2bae4e561087de8b8a0da55929f8f7db9c565632c8f59535b53544b1a1f78695929488949293606085019291860191908190849084905b838110156118d75781810151838201526020016118bf565b50505050905090810190601f1680156119045780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050565b60005433600160a060020a0390811691161461193157600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461197b57600080fd5b6009546040805160e060020a63a9059cbb028152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156119d457600080fd5b505af11580156119e8573d6000803e3d6000fd5b505050506040513d60208110156119fe57600080fd5b50511515610b8457600080fd5b805160009082901515611a215760009150610910565b50506020015190565b6000818152600760205260408120548190611a4c90606463ffffffff611c2316565b601254909150611a62908263ffffffff611c1016565b601255600083815260076020526040902054611a84908263ffffffff611c3816565b6000848152600760209081526040808320848155600954600390910154825160e060020a63a9059cbb028152600160a060020a0391821660048201526024810196909652915191169363a9059cbb9360448083019493928390030190829087803b158015611af157600080fd5b505af1158015611b05573d6000803e3d6000fd5b505050506040513d6020811015611b1b57600080fd5b50511515611b2857600080fd5b60008381526007602090815260409182902060038101546004820154600192830180548651601f600260001997841615610100029790970190921695909504908101869004860285018601909652858452611bec95600160a060020a03938416959290931693929091830182828015611be25780601f10611bb757610100808354040283529160200191611be2565b820191906000526020600020905b815481529060010190602001808311611bc557829003601f168201915b5050505050611c4a565b5050506000908152600760205260408120908155600601805460ff19169055600190565b81810182811015611c1d57fe5b92915050565b60008183811515611c3057fe5b049392505050565b600082821115611c4457fe5b50900390565b6000806020835111151515611c5e57600080fd5b611c6783611a0b565b600081815260046020526040902054909150600160a060020a03868116911614611c9057600080fd5b600160a060020a03841660009081526001602052604090205460ff161515611cb757600080fd5b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038981169182179092558251918a16825281840152606091810182815287519282019290925286517f596d8d8e0558bb71228a790477c45086520126c9edd00e3b7aa5e631b1fcbf90948a948a948a949390926080850192860191908190849084905b83811015611d63578181015183820152602001611d4b565b50505050905090810190601f168015611d905780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1506001949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611deb57805160ff1916838001178555611e18565b82800160010185558215611e18579182015b82811115611e18578251825591602001919060010190611dfd565b50611e24929150611e28565b5090565b610b9591905b80821115611e245760008155600101611e2e5600a165627a7a723058207d4c0f911238673e1adaca597045450e8f467952021723e009083021f2c48db80029000000000000000000000000877a5552347782c664bca10fd6c55312a0b392f4

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000877a5552347782c664bca10fd6c55312a0b392f4


   Swarm Source:
bzzr://7d4c0f911238673e1adaca597045450e8f467952021723e009083021f2c48db8

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward