ETH Price: $2,148.64 (-0.84%)

Contract

0xb9e6565b4B31Ba14ab3d5FF153E513fa94de016D
 

Overview

ETH Balance

0.11503 ETH

Eth Value

$247.16 (@ $2,148.64/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Age:24H
Reset Filter

Transaction Hash
Method
Block
From
To

There are no matching entries

Update your filters to view other transactions

Age:24H
Reset Filter

Advanced mode:
Parent Transaction Hash Method Block
From
To

There are no matching entries

Update your filters to view other transactions

View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x44852FAE...A732Df298
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
TeambrellaWallet

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-07-30
*/

pragma solidity ^0.4.19;

contract TeambrellaWallet {
    
    uint public m_opNum;
    uint public m_teamId;
    address public m_owner;
    address[] public m_cosigners;
    address[] public m_cosignersApprovedDisband;    
    
    modifier orderedOps(uint opNum) {
        require(opNum >= m_opNum);
        _; 
    }

    modifier onlyOwner {
        require(msg.sender == m_owner);
        _; 
    }
    
    function() public payable { }


    // Duplicate Solidity's ecrecover, but catching the CALL return value
    function safer_ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal returns (bool, address) {
        // We do our own memory management here. Solidity uses memory offset
        // 0x40 to store the current end of memory. We write past it (as
        // writes are memory extensions), but don't update the offset so
        // Solidity will reuse it. The memory used here is only needed for
        // this context.

        bool ret;
        address addr;

        assembly {
            let size := mload(0x40)
            mstore(size, hash)
            mstore(add(size, 32), v)
            mstore(add(size, 64), r)
            mstore(add(size, 96), s)

            // NOTE: we can reuse the request memory because we deal with
            //       the return code
            ret := call(3000, 1, 0, size, 128, size, 32)
            addr := mload(size)
        }

        return (ret, addr);
    }

    function ecrecovery(bytes32 hash, bytes sig) private returns (bool, address) {
        bytes32 r;
        bytes32 s;
        uint8 v;

        // The signature format is a compact form of:
        //   {bytes32 r}{bytes32 s}{uint8 v}
        // Compact means, uint8 is not padded to 32 bytes.
        assembly {
            r := mload(add(sig, 32))
            s := mload(add(sig, 64))

            // Here we are loading the last 32 bytes. We exploit the fact that
            // 'mload' will pad with zeroes if we overread.
            // There is no 'mload8' to do this, but that would be nicer.
            v := byte(0, mload(add(sig, 96)))

            // Alternative solution:
            // 'byte' is not working due to the Solidity parser, so lets
            // use the second best option, 'and'
            // v := and(mload(add(sig, 65)), 255)
        }

        return safer_ecrecover(hash, v, r, s);
    }

    function ecverify(bytes32 hash, bytes sig, address signer) private returns (bool) {
        bool ret;
        address addr;

        (ret, addr) = ecrecovery(hash, sig);

        return ret == true && addr == signer;
    }

    function checkSignatures(
        bytes32 hash,
        uint[3] cosignersPos,
        bytes sigCosigner0,
        bytes sigCosigner1,
        bytes sigCosigner2
        ) private returns(bool) {

        uint cosignersNum = m_cosigners.length;
        bool signed = ecverify(hash, sigCosigner0, m_cosigners[cosignersPos[0]]);
        if (cosignersNum > 3) {
            signed = signed && ecverify(hash, sigCosigner1, m_cosigners[cosignersPos[1]]);
        }
        if (cosignersNum > 6) {
            signed = signed && ecverify(hash, sigCosigner2, m_cosigners[cosignersPos[2]]);
        }

        return signed;
    }
    
    function checkSignatures2(
        bytes32 hash,
        bytes sigCosigner0,
        bytes sigCosigner1,
        bytes sigCosigner2
        ) private returns(bool) {

        uint cosignersNum = m_cosigners.length;
        uint pos = uint(sigCosigner0[65]);
        bool signed = ecverify(hash, sigCosigner0, m_cosigners[pos]);
        if (cosignersNum > 3) {
            pos = uint(sigCosigner1[65]);
            signed = signed && ecverify(hash, sigCosigner1, m_cosigners[pos]);
        }
        if (cosignersNum > 6) {
            pos = uint(sigCosigner2[65]);
            signed = signed && ecverify(hash, sigCosigner2, m_cosigners[pos]);
        }
        return signed;
    }

    function toBytes(uint256[] x) private pure returns (bytes b) {
        b = new bytes(32 * x.length);
        for (uint j = 0; j < x.length; j++) {
            for (uint i = 0; i < 32; i++) {
                b[j*32 + i] = byte(uint8(x[j] / (2**(8*(31 - i))))); 
            }
        }
    }

    function toBytes(address[] x) private pure returns (bytes b) {

        b = new bytes(20 * x.length);
        for (uint j = 0; j < x.length; j++) {
            for (uint i = 0; i < 20; i++) {
                b[j*20 + i] = byte(uint8(uint160(x[j]) / (2**(8*(19 - i))))); 
            }
        }
    }

    function TeambrellaWallet() public payable {
        m_opNum = 1;
		m_owner = msg.sender;
    }
    
     function assignOwner(address[] cosigners, uint teamId, address newOwner) onlyOwner external {
		if (m_cosigners.length == 0)
		{
			m_cosigners = cosigners;
			m_teamId = teamId;
			m_owner = newOwner;
		}
    }
       
    function changeAllCosigners(
        uint opNum,
        address[] newCosigners,
        uint[3] cosignersPos,
        bytes sigCosigner0, 
        bytes sigCosigner1,
        bytes sigCosigner2 
        ) onlyOwner orderedOps(opNum) external {

        bytes32 hash = keccak256("NS", m_teamId, opNum, toBytes(newCosigners));
        require(checkSignatures(hash, cosignersPos, sigCosigner0, sigCosigner1, sigCosigner2));
        m_opNum = opNum + 1;
        m_cosignersApprovedDisband.length = 0;
        m_cosigners = newCosigners;
    }

    function changeAllCosigners2(
        uint opNum,
        address[] newCosigners,
        bytes sigCosigner0, 
        bytes sigCosigner1,
        bytes sigCosigner2,
        bytes sigOwner 
        ) onlyOwner orderedOps(opNum) external {

        bytes32 hash = keccak256("NS", m_teamId, opNum, toBytes(newCosigners));
        require(checkSignatures2(hash, sigCosigner0, sigCosigner1, sigCosigner2));
        require(ecverify(hash, sigOwner, m_owner));
        m_opNum = opNum + 1;
        m_cosignersApprovedDisband.length = 0;
        m_cosigners = newCosigners;
    }
        
    function getsum(uint[] values) private pure returns (uint s) {
        s = 0;

        for (uint j = 0; j < values.length; j++) {
            s += values[j];
        }

        return s;    
    }
        
    function transfer(
        uint opNum,
        address[] tos, 
        uint[] values,
        uint[3] cosignersPos,
        bytes sigCosigner0, 
        bytes sigCosigner1, 
        bytes sigCosigner2
        ) onlyOwner orderedOps(opNum) external {

        require (getsum(values) <= this.balance);
        bytes32 hash = keccak256("TR", m_teamId, opNum, toBytes(tos), toBytes(values));
        require (checkSignatures(hash, cosignersPos, sigCosigner0, sigCosigner1, sigCosigner2));
        m_opNum = opNum + 1;
        realtransfer(tos, values);
    }

    function transfer2(
        uint opNum,
        address[] tos, 
        uint[] values,
        bytes sigCosigner0,
        bytes sigCosigner1,
        bytes sigCosigner2,
        bytes sigOwner
        ) external {
        require(opNum >= m_opNum);
        require (getsum(values) <= this.balance);
        bytes32 hash = keccak256("TR", m_teamId, opNum, toBytes(tos), toBytes(values));
        require(checkSignatures2(hash, sigCosigner0, sigCosigner1, sigCosigner2));
        require(ecverify(hash, sigOwner, m_owner));
        m_opNum = opNum + 1;
        realtransfer(tos, values);
    }    

    function realtransfer(address[] tos, uint[] values) private {

        for (uint i = 0; i < values.length; i++) {
            tos[i].transfer(values[i]);
        }
    }

    function approveDisband() external {

        for (uint pos=0; pos<m_cosignersApprovedDisband.length; pos++) {
            if (m_cosignersApprovedDisband[pos] == msg.sender) {
                return;
            }
        }
        for (pos=0; pos<m_cosigners.length; pos++) {
            if (m_cosigners[pos] == msg.sender) {
                m_cosignersApprovedDisband.push(msg.sender);
            }
        }
    }

    function disbandTo(address to) onlyOwner external {

        uint cosignersNum = m_cosigners.length;
        uint approved = m_cosignersApprovedDisband.length;
        if (cosignersNum > 6) {
            require(approved > 2);
        }
        if (cosignersNum > 3) {
            require(approved > 1);
        }
        require(approved > 0);

        to.transfer(this.balance);
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"m_cosignersApprovedDisband","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"opNum","type":"uint256"},{"name":"newCosigners","type":"address[]"},{"name":"sigCosigner0","type":"bytes"},{"name":"sigCosigner1","type":"bytes"},{"name":"sigCosigner2","type":"bytes"},{"name":"sigOwner","type":"bytes"}],"name":"changeAllCosigners2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"m_cosigners","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"approveDisband","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"m_teamId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"opNum","type":"uint256"},{"name":"tos","type":"address[]"},{"name":"values","type":"uint256[]"},{"name":"sigCosigner0","type":"bytes"},{"name":"sigCosigner1","type":"bytes"},{"name":"sigCosigner2","type":"bytes"},{"name":"sigOwner","type":"bytes"}],"name":"transfer2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"opNum","type":"uint256"},{"name":"tos","type":"address[]"},{"name":"values","type":"uint256[]"},{"name":"cosignersPos","type":"uint256[3]"},{"name":"sigCosigner0","type":"bytes"},{"name":"sigCosigner1","type":"bytes"},{"name":"sigCosigner2","type":"bytes"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"opNum","type":"uint256"},{"name":"newCosigners","type":"address[]"},{"name":"cosignersPos","type":"uint256[3]"},{"name":"sigCosigner0","type":"bytes"},{"name":"sigCosigner1","type":"bytes"},{"name":"sigCosigner2","type":"bytes"}],"name":"changeAllCosigners","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"disbandTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"cosigners","type":"address[]"},{"name":"teamId","type":"uint256"},{"name":"newOwner","type":"address"}],"name":"assignOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"m_owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"m_opNum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

0x6060604052600160005560028054600160a060020a033316600160a060020a0319909116179055611495806100356000396000f3006060604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630b7b3eb781146100bb5780631305d2de146100ed57806322c5ec0f1461013f5780633bf2b4cd146101555780638d475461146101685780638f08a60a1461018d57806391f34dbd146101eb578063a0175b9614610241578063d41097e31461028a578063de41e1a1146102a9578063deff41c1146102d7578063df98ba00146102ea575b005b34156100c657600080fd5b6100d16004356102fd565b604051600160a060020a03909116815260200160405180910390f35b34156100f857600080fd5b6100b960048035906024803580820192908101359160443580820192908101359160643580820192908101359160843580820192908101359160a435908101910135610325565b341561014a57600080fd5b6100d160043561054b565b341561016057600080fd5b6100b9610559565b341561017357600080fd5b61017b610639565b60405190815260200160405180910390f35b341561019857600080fd5b6100b960048035906024803580820192908101359160443580820192908101359160643580820192908101359160843580820192908101359160a43580820192908101359160c43590810191013561063f565b34156101f657600080fd5b6100b960048035906024803580820192908101359160443580820192908101359160649160c43580830192908201359160e43580830192908201359161010435918201910135610950565b341561024c57600080fd5b6100b960048035906024803580820192908101359160449160a43580830192908201359160c43580830192908201359160e435918201910135610bd9565b341561029557600080fd5b6100b9600160a060020a0360043516610dce565b34156102b457600080fd5b6100b9602460048035828101929101359035600160a060020a0360443516610e71565b34156102e257600080fd5b6100d1610ed6565b34156102f557600080fd5b61017b610ee5565b600480548290811061030b57fe5b600091825260209091200154600160a060020a0316905081565b60025460009033600160a060020a0390811691161461034357600080fd5b6000548c9081101561035457600080fd5b6001548d61038e8e8e8080602002602001604051908101604052809392919081815260200183836020028082843750610eeb945050505050565b60405180807f4e5300000000000000000000000000000000000000000000000000000000000081525060020184815260200183815260200182805190602001908083835b602083106103f15780518252601f1990920191602091820191016103d2565b6001836020036101000a03801982511681845116179092525050509190910194506040935050505051809103902091506104be828b8b8080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050508a8a8080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505089898080601f016020809104026020016040519081016040528181529291906020840183838082843750610fce945050505050565b15156104c957600080fd5b61050f8285858080601f01602080910402602001604051908101604052818152929190602084018383808284375050600254600160a060020a031693506110d992505050565b151561051a57600080fd5b60018d01600090815561052e600482611375565b5061053b60038d8d611399565b5050505050505050505050505050565b600380548290811061030b57fe5b60005b6004548110156105a75733600160a060020a031660048281548110151561057f57fe5b600091825260209091200154600160a060020a0316141561059f57610636565b60010161055c565b5060005b6003548110156106365733600160a060020a03166003828154811015156105ce57fe5b600091825260209091200154600160a060020a0316141561062e5760048054600181016105fb8382611375565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a03161790555b6001016105ab565b50565b60015481565b600080548e101561064f57600080fd5b30600160a060020a0316316106908c8c808060200260200160405190810160405280939291908181526020018383602002808284375061111a945050505050565b111561069b57600080fd5b6001548e6106d58f8f8080602002602001604051908101604052809392919081815260200183836020028082843750610eeb945050505050565b61070b8e8e808060200260200160405190810160405280939291908181526020018383602002808284375061114f945050505050565b60405180807f545200000000000000000000000000000000000000000000000000000000000081525060020185815260200184815260200183805190602001908083835b6020831061076e5780518252601f19909201916020918201910161074f565b6001836020036101000a038019825116818451161790925250505091909101905082805190602001908083835b602083106107ba5780518252601f19909201916020918201910161079b565b6001836020036101000a038019825116818451161790925250505091909101955060409450505050505180910390209050610888818a8a8080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505089898080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505088888080601f016020809104026020016040519081016040528181529291906020840183838082843750610fce945050505050565b151561089357600080fd5b6108d98184848080601f01602080910402602001604051908101604052818152929190602084018383808284375050600254600160a060020a031693506110d992505050565b15156108e457600080fd5b60018e0160005561053b8d8d8060208082020160405190810160405280939291908181526020018383602002808284378201915050505050508c8c8080602002602001604051908101604052809392919081815260200183836020028082843750611222945050505050565b60025460009033600160a060020a0390811691161461096e57600080fd5b6000548d9081101561097f57600080fd5b30600160a060020a0316316109c08c8c808060200260200160405190810160405280939291908181526020018383602002808284375061111a945050505050565b11156109cb57600080fd5b6001548e610a058f8f8080602002602001604051908101604052809392919081815260200183836020028082843750610eeb945050505050565b610a3b8e8e808060200260200160405190810160405280939291908181526020018383602002808284375061114f945050505050565b60405180807f545200000000000000000000000000000000000000000000000000000000000081525060020185815260200184815260200183805190602001908083835b60208310610a9e5780518252601f199092019160209182019101610a7f565b6001836020036101000a038019825116818451161790925250505091909101905082805190602001908083835b60208310610aea5780518252601f199092019160209182019101610acb565b6001836020036101000a038019825116818451161790925250505091909101955060409450505050505190819003902091506108d9828a600360606040519081016040529190828260608082843782019150505050508a8a8080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505089898080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505088888080601f016020809104026020016040519081016040528181529291906020840183838082843750611293945050505050565b60025460009033600160a060020a03908116911614610bf757600080fd5b6000548b90811015610c0857600080fd5b6001548c610c428d8d8080602002602001604051908101604052809392919081815260200183836020028082843750610eeb945050505050565b60405180807f4e5300000000000000000000000000000000000000000000000000000000000081525060020184815260200183815260200182805190602001908083835b60208310610ca55780518252601f199092019160209182019101610c86565b6001836020036101000a038019825116818451161790925250505091909101945060409350505050519081900390209150610d93828a600360606040519081016040529190828260608082843782019150505050508a8a8080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505089898080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505088888080601f016020809104026020016040519081016040528181529291906020840183838082843750611293945050505050565b1515610d9e57600080fd5b60018c016000908155610db2600482611375565b50610dbf60038c8c611399565b50505050505050505050505050565b600254600090819033600160a060020a03908116911614610dee57600080fd5b50506003546004546006821115610e0c5760028111610e0c57600080fd5b6003821115610e225760018111610e2257600080fd5b60008111610e2f57600080fd5b82600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f193505050501515610e6c57600080fd5b505050565b60025433600160a060020a03908116911614610e8c57600080fd5b6003541515610ed057610ea160038585611399565b5060018290556002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50505050565b600254600160a060020a031681565b60005481565b610ef3611409565b6000808351601402604051805910610f085750595b818152601f19601f830116810160200160405290509250600091505b8351821015610fc7575060005b6014811015610fbc578060130360080260020a848381518110610f5057fe5b90602001906020020151600160a060020a0316811515610f6c57fe5b0460f860020a028382846014020181518110610f8457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610f31565b600190910190610f24565b5050919050565b600354600090818086604181518110610fe357fe5b016020015160f860020a900460f860020a0260f860020a9004915061102c888860038581548110151561101257fe5b600091825260209091200154600160a060020a03166110d9565b9050600383111561107e578560418151811061104457fe5b016020015160f860020a900460f860020a0260f860020a9004915080801561107b575061107b888760038581548110151561101257fe5b90505b60068311156110ce578460418151811061109457fe5b016020015160f860020a900460f860020a0260f860020a900491508080156110cb57506110cb888660038581548110151561101257fe5b90505b979650505050505050565b60008060006110e886866112fb565b90925090506001821515148015611110575083600160a060020a031681600160a060020a0316145b9695505050505050565b6000805b82518110156111495782818151811061113357fe5b906020019060200201519091019060010161111e565b50919050565b611157611409565b600080835160200260405180591061116c5750595b818152601f19601f830116810160200160405290509250600091505b8351821015610fc7575060005b60208110156112175780601f0360080260020a8483815181106111b457fe5b906020019060200201518115156111c757fe5b0460f860020a0283828460200201815181106111df57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101611195565b600190910190611188565b60005b8151811015610e6c5782818151811061123a57fe5b90602001906020020151600160a060020a03166108fc83838151811061125c57fe5b906020019060200201519081150290604051600060405180830381858888f19350505050151561128b57600080fd5b600101611225565b6003805460009182906112b690899088908a855b60200201518154811061101257fe5b905060038211156112db578080156112d857506112d8888660038a60016112a7565b90505b60068211156110ce578080156110cb57506110cb888560038a60026112a7565b60008060008060006020860151925060408601519150606086015160001a905061132787828585611335565b945094505050509250929050565b60008060008060405188815287602082015286604082015285606082015260208160808360006001610bb8f1925080519299929850919650505050505050565b815481835581811511610e6c57600083815260209020610e6c91810190830161141b565b8280548282559060005260206000209081019282156113f9579160200282015b828111156113f957815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038435161782556020909201916001909101906113b9565b50611405929150611438565b5090565b60206040519081016040526000815290565b61143591905b808211156114055760008155600101611421565b90565b61143591905b8082111561140557805473ffffffffffffffffffffffffffffffffffffffff1916815560010161143e5600a165627a7a72305820f804d644fb80a7cd5cfe5cba3c2e743b0aebf990a32cea9576355e63600b51240029

Deployed Bytecode

0x6060604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630b7b3eb781146100bb5780631305d2de146100ed57806322c5ec0f1461013f5780633bf2b4cd146101555780638d475461146101685780638f08a60a1461018d57806391f34dbd146101eb578063a0175b9614610241578063d41097e31461028a578063de41e1a1146102a9578063deff41c1146102d7578063df98ba00146102ea575b005b34156100c657600080fd5b6100d16004356102fd565b604051600160a060020a03909116815260200160405180910390f35b34156100f857600080fd5b6100b960048035906024803580820192908101359160443580820192908101359160643580820192908101359160843580820192908101359160a435908101910135610325565b341561014a57600080fd5b6100d160043561054b565b341561016057600080fd5b6100b9610559565b341561017357600080fd5b61017b610639565b60405190815260200160405180910390f35b341561019857600080fd5b6100b960048035906024803580820192908101359160443580820192908101359160643580820192908101359160843580820192908101359160a43580820192908101359160c43590810191013561063f565b34156101f657600080fd5b6100b960048035906024803580820192908101359160443580820192908101359160649160c43580830192908201359160e43580830192908201359161010435918201910135610950565b341561024c57600080fd5b6100b960048035906024803580820192908101359160449160a43580830192908201359160c43580830192908201359160e435918201910135610bd9565b341561029557600080fd5b6100b9600160a060020a0360043516610dce565b34156102b457600080fd5b6100b9602460048035828101929101359035600160a060020a0360443516610e71565b34156102e257600080fd5b6100d1610ed6565b34156102f557600080fd5b61017b610ee5565b600480548290811061030b57fe5b600091825260209091200154600160a060020a0316905081565b60025460009033600160a060020a0390811691161461034357600080fd5b6000548c9081101561035457600080fd5b6001548d61038e8e8e8080602002602001604051908101604052809392919081815260200183836020028082843750610eeb945050505050565b60405180807f4e5300000000000000000000000000000000000000000000000000000000000081525060020184815260200183815260200182805190602001908083835b602083106103f15780518252601f1990920191602091820191016103d2565b6001836020036101000a03801982511681845116179092525050509190910194506040935050505051809103902091506104be828b8b8080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050508a8a8080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505089898080601f016020809104026020016040519081016040528181529291906020840183838082843750610fce945050505050565b15156104c957600080fd5b61050f8285858080601f01602080910402602001604051908101604052818152929190602084018383808284375050600254600160a060020a031693506110d992505050565b151561051a57600080fd5b60018d01600090815561052e600482611375565b5061053b60038d8d611399565b5050505050505050505050505050565b600380548290811061030b57fe5b60005b6004548110156105a75733600160a060020a031660048281548110151561057f57fe5b600091825260209091200154600160a060020a0316141561059f57610636565b60010161055c565b5060005b6003548110156106365733600160a060020a03166003828154811015156105ce57fe5b600091825260209091200154600160a060020a0316141561062e5760048054600181016105fb8382611375565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a03161790555b6001016105ab565b50565b60015481565b600080548e101561064f57600080fd5b30600160a060020a0316316106908c8c808060200260200160405190810160405280939291908181526020018383602002808284375061111a945050505050565b111561069b57600080fd5b6001548e6106d58f8f8080602002602001604051908101604052809392919081815260200183836020028082843750610eeb945050505050565b61070b8e8e808060200260200160405190810160405280939291908181526020018383602002808284375061114f945050505050565b60405180807f545200000000000000000000000000000000000000000000000000000000000081525060020185815260200184815260200183805190602001908083835b6020831061076e5780518252601f19909201916020918201910161074f565b6001836020036101000a038019825116818451161790925250505091909101905082805190602001908083835b602083106107ba5780518252601f19909201916020918201910161079b565b6001836020036101000a038019825116818451161790925250505091909101955060409450505050505180910390209050610888818a8a8080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505089898080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505088888080601f016020809104026020016040519081016040528181529291906020840183838082843750610fce945050505050565b151561089357600080fd5b6108d98184848080601f01602080910402602001604051908101604052818152929190602084018383808284375050600254600160a060020a031693506110d992505050565b15156108e457600080fd5b60018e0160005561053b8d8d8060208082020160405190810160405280939291908181526020018383602002808284378201915050505050508c8c8080602002602001604051908101604052809392919081815260200183836020028082843750611222945050505050565b60025460009033600160a060020a0390811691161461096e57600080fd5b6000548d9081101561097f57600080fd5b30600160a060020a0316316109c08c8c808060200260200160405190810160405280939291908181526020018383602002808284375061111a945050505050565b11156109cb57600080fd5b6001548e610a058f8f8080602002602001604051908101604052809392919081815260200183836020028082843750610eeb945050505050565b610a3b8e8e808060200260200160405190810160405280939291908181526020018383602002808284375061114f945050505050565b60405180807f545200000000000000000000000000000000000000000000000000000000000081525060020185815260200184815260200183805190602001908083835b60208310610a9e5780518252601f199092019160209182019101610a7f565b6001836020036101000a038019825116818451161790925250505091909101905082805190602001908083835b60208310610aea5780518252601f199092019160209182019101610acb565b6001836020036101000a038019825116818451161790925250505091909101955060409450505050505190819003902091506108d9828a600360606040519081016040529190828260608082843782019150505050508a8a8080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505089898080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505088888080601f016020809104026020016040519081016040528181529291906020840183838082843750611293945050505050565b60025460009033600160a060020a03908116911614610bf757600080fd5b6000548b90811015610c0857600080fd5b6001548c610c428d8d8080602002602001604051908101604052809392919081815260200183836020028082843750610eeb945050505050565b60405180807f4e5300000000000000000000000000000000000000000000000000000000000081525060020184815260200183815260200182805190602001908083835b60208310610ca55780518252601f199092019160209182019101610c86565b6001836020036101000a038019825116818451161790925250505091909101945060409350505050519081900390209150610d93828a600360606040519081016040529190828260608082843782019150505050508a8a8080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505089898080601f016020809104026020016040519081016040528181529291906020840183838082843782019150505050505088888080601f016020809104026020016040519081016040528181529291906020840183838082843750611293945050505050565b1515610d9e57600080fd5b60018c016000908155610db2600482611375565b50610dbf60038c8c611399565b50505050505050505050505050565b600254600090819033600160a060020a03908116911614610dee57600080fd5b50506003546004546006821115610e0c5760028111610e0c57600080fd5b6003821115610e225760018111610e2257600080fd5b60008111610e2f57600080fd5b82600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f193505050501515610e6c57600080fd5b505050565b60025433600160a060020a03908116911614610e8c57600080fd5b6003541515610ed057610ea160038585611399565b5060018290556002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50505050565b600254600160a060020a031681565b60005481565b610ef3611409565b6000808351601402604051805910610f085750595b818152601f19601f830116810160200160405290509250600091505b8351821015610fc7575060005b6014811015610fbc578060130360080260020a848381518110610f5057fe5b90602001906020020151600160a060020a0316811515610f6c57fe5b0460f860020a028382846014020181518110610f8457fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610f31565b600190910190610f24565b5050919050565b600354600090818086604181518110610fe357fe5b016020015160f860020a900460f860020a0260f860020a9004915061102c888860038581548110151561101257fe5b600091825260209091200154600160a060020a03166110d9565b9050600383111561107e578560418151811061104457fe5b016020015160f860020a900460f860020a0260f860020a9004915080801561107b575061107b888760038581548110151561101257fe5b90505b60068311156110ce578460418151811061109457fe5b016020015160f860020a900460f860020a0260f860020a900491508080156110cb57506110cb888660038581548110151561101257fe5b90505b979650505050505050565b60008060006110e886866112fb565b90925090506001821515148015611110575083600160a060020a031681600160a060020a0316145b9695505050505050565b6000805b82518110156111495782818151811061113357fe5b906020019060200201519091019060010161111e565b50919050565b611157611409565b600080835160200260405180591061116c5750595b818152601f19601f830116810160200160405290509250600091505b8351821015610fc7575060005b60208110156112175780601f0360080260020a8483815181106111b457fe5b906020019060200201518115156111c757fe5b0460f860020a0283828460200201815181106111df57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101611195565b600190910190611188565b60005b8151811015610e6c5782818151811061123a57fe5b90602001906020020151600160a060020a03166108fc83838151811061125c57fe5b906020019060200201519081150290604051600060405180830381858888f19350505050151561128b57600080fd5b600101611225565b6003805460009182906112b690899088908a855b60200201518154811061101257fe5b905060038211156112db578080156112d857506112d8888660038a60016112a7565b90505b60068211156110ce578080156110cb57506110cb888560038a60026112a7565b60008060008060006020860151925060408601519150606086015160001a905061132787828585611335565b945094505050509250929050565b60008060008060405188815287602082015286604082015285606082015260208160808360006001610bb8f1925080519299929850919650505050505050565b815481835581811511610e6c57600083815260209020610e6c91810190830161141b565b8280548282559060005260206000209081019282156113f9579160200282015b828111156113f957815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038435161782556020909201916001909101906113b9565b50611405929150611438565b5090565b60206040519081016040526000815290565b61143591905b808211156114055760008155600101611421565b90565b61143591905b8082111561140557805473ffffffffffffffffffffffffffffffffffffffff1916815560010161143e5600a165627a7a72305820f804d644fb80a7cd5cfe5cba3c2e743b0aebf990a32cea9576355e63600b51240029

Swarm Source

bzzr://f804d644fb80a7cd5cfe5cba3c2e743b0aebf990a32cea9576355e63600b5124

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
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.