Contract Overview
ETH Balance: 0 Ether
No Of Transactions: 6 txns
  Latest 6 txns

TxHash Age From To Value [TxFee]
0x59f5266e0e92e1843e0fd0b0c1d3ff93a90a75b4b0420fcc00890ea48320ffe481 days 15 hrs ago0xab0a9a1536cd409f884f853d7acff47da0d0e088  IN   0xd509e8ad840ba86bcafd97fa2b413c83fe2697450 Ether0.001075956
0x4693e9ea0e88559e97717fedcb92133e76ee340e3ff2d7bba0b5265ec7a65f1281 days 15 hrs ago0x06c4e1731f01838436f7cdcd1c4c516482b7cdf6  IN   0xd509e8ad840ba86bcafd97fa2b413c83fe2697450 Ether0.005525142
0xef958064edc51dba675a9e58f610456a9fb3337e0cce52d01afba10efbbe0319137 days 6 hrs ago0x2cb08c4bd5b30ff9b71efe2624c2b0e07172a139  IN   0xd509e8ad840ba86bcafd97fa2b413c83fe2697450 Ether0.005512249395
0x5e94c6c381aa1f80a5e9b35bb89378ce4aeaee5d7940d4bd4abcb7c223a12d8f170 days 16 hrs ago0x8b719ce8d234f7d92fb4a683954f650a3a57fcfe  IN   0xd509e8ad840ba86bcafd97fa2b413c83fe2697450 Ether0.00578798
0x04e9eb0b5d9db01ce770187ab795fbc2d189498a1906379b7cd4b670327e434a174 days 1 hr ago0x9fbeae2a2333dda564876bcf11d60c7c29b77138  IN   0xd509e8ad840ba86bcafd97fa2b413c83fe2697450 Ether0.00556308
0x6d4f964a5d91c02b184f9c8fa68473f13e452068719a0e661823a980679d750c175 days 18 mins ago0xa73c2551b69f2eaf2a08ef9e1b8f937aa643c696  IN    Contract Creation0 Ether0.03018508
[ 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 ZeroFunctionSelector (very low-severity), DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity), SkipEmptyStringLiteral (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Note: Displaying matching verified source code at contract 0xe275e9c7cebf2c093c365439b836adf9a28537e2
Contract Name: Trustlines
Compiler Version: v0.4.11+commit.68ef5810
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.11;

/**
@dev Library for a Set that can be iterated over
*/
library ItSet {
    struct SetEntry {
        uint index; // index of the entry, starting at 1
    }

    struct AddressSet {
        mapping(address=>SetEntry) addressToEntry;
        address[] list;
    }

    function insert(AddressSet storage self, address address_) internal {
        var entry = self.addressToEntry[address_];
        if(entry.index == 0) {
            entry.index = self.list.length + 1;
            self.list.push(address_);
        }
    }

    function contains(AddressSet storage self, address address_) internal constant returns (bool) {
        return self.addressToEntry[address_].index > 0;
    }

    function remove(AddressSet storage self, address address_) internal {
        var entry = self.addressToEntry[address_];
        if(entry.index > 0) {
            // remove from list
            var last_address = self.list[self.list.length - 1];
            self.list[entry.index - 1] = last_address;
            self.list.length -= 1;
            // update entries
            self.addressToEntry[last_address].index = entry.index;
            entry.index = 0;
        }
    }

    function size(AddressSet storage self) internal constant returns (uint) {
        return self.list.length;
    }
}

// Implements a subset of the ERC 20 Token standard: https://github.com/ethereum/EIPs/issues/20
contract ERC20Token {
    function transfer(address _to, uint256 _value) returns (bool success);

    function totalSupply() constant returns (uint256 supply);
    function balanceOf(address _owner) constant returns (uint256 balance);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
}


// Use network of debt relationships to support multihop payments
contract Trustlines is ERC20Token {

    // Iterable Set
    using ItSet for ItSet.AddressSet;

    // meta data
    string public name;
    string public symbol;
    uint8 public decimals;

    // Events
    event CreditlineUpdate(address indexed _creditor, address indexed _debtor, uint256 _value);
    event BalanceUpdate(address indexed _from, address indexed _to, int256 _value);
    event Transfer(address indexed _from, address indexed _to, uint256 _value);

    // mapping of sha3 hash of two users to account, see hashFunc and Account
    mapping (bytes32 => int256) internal balances;
    mapping (bytes32 => int256) internal creditlines;
    // mapping for the users a user has a trustline with
    mapping (address => ItSet.AddressSet) internal _friends;

    // set of all users of the system
    ItSet.AddressSet internal _users;


    function Trustlines (string tokenName, string tokenSymbol, uint8 decimalUnits) {
        name = tokenName;  // Set the name for display purposes
        symbol = tokenSymbol;  // Set the symbol for display purposes
        decimals = decimalUnits;  // Amount of decimals for display purposes
    }

    // check value is inbounds for accounting to prevent overflows
    modifier valueWithinInt192(uint256 value)
    {
        require(value < 2**192);
        _;
    }

    // public functions

    /// @notice send `_value` tokens to `_to` from `msg.sender`
    /// @dev sender and recipient must have a trustline with enough credit
    /// @param _to The address of the recipient
    /// @param _value The amount of tokens to be transferred, needs to fit in int192
    /// @return Whether the transfer was successful or not
    function transfer(address _to, uint256 _value) valueWithinInt192(_value) returns (bool success) {
        int256 value = int256(_value);
        _transfer(msg.sender, _to, value);
        Transfer(msg.sender, _to, _value);
        success = true;
    }

    /// @notice send `_value` token to `_to` from `msg.sender`
    /// @dev send tokens over the given path.
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @param _path The path over which the token is sent. The path must include the recipient and exclude the sender
    ///              The path must have enough capacity for the transfer
    /// @return Whether the transfer was successful or not
    function mediatedTransfer(address _to, uint256 _value, address[] _path) valueWithinInt192(_value) returns (bool success) {
        // for all addresses in path[:-1] the accumulated balance over all their accounts won't change
        address sender = msg.sender;
        int256 value = int256(_value);
        uint8 idx = 0;
        require(_path.length != 0);
        require(_to == _path[_path.length - 1]);

        while(idx < _path.length){
            _to = _path[idx];
            _transfer(sender, _to, value);
            sender = _to;
            idx++;
        }
        Transfer(msg.sender, _to, _value);
        success = true;
    }

    /// @notice `msg.sender` sets a creditline for `_debtor` of `_value` tokens
    /// @param _debtor The account that can spend tokens up to the given amount
    /// @param _value The maximum amount of tokens that can be spend
    /// @return Whether the credit was successful or not
    function updateCreditline(address _debtor, uint256 _value) valueWithinInt192(_value) returns (bool success) {
        int256 value = int256(_value);
        address _creditor = msg.sender;

        var balance = loadBalance(_creditor, _debtor);

        // onboard users and debtors
        _users.insert(_creditor);
        _users.insert(_debtor);
        _friends[_creditor].insert(_debtor);
        _friends[_debtor].insert(_creditor);

        assert(value >= 0);
        require(value >= balance);
        storeCreditline(_creditor, _debtor, value);
        CreditlineUpdate(_creditor, _debtor, _value);
        success = true;
    }

    /// @dev Checks for the spendable amount by spender
    /// @param _spender The address from which the balance will be retrieved
    /// @return spendable The spendable amount
    function spendable(address _spender) constant returns (uint256 spendable) {
        spendable = 0;
        var myfriends = _friends[_spender].list;
        for(uint i = 0; i < myfriends.length; i++) {
            spendable += spendableTo(_spender, myfriends[i]);
        }
    }

    /// @dev the maximum spendable amount by the spender to the receiver.
    /// @param _spender The account spending the tokens
    /// @param _receiver the receiver that receives the tokens
    /// @return Amount of remaining tokens allowed to spend
    function spendableTo(address _spender, address _receiver) constant returns (uint256 remaining) {
        // returns the current trustline given by A to B
        var balance = uint(loadBalance(_spender, _receiver));
        var creditline = uint(loadCreditline(_receiver, _spender));
        remaining = creditline + balance;
    }

    /// @dev The ERC20 Token balance for the spender. This is different from the balance within a trustline.
    ///      In Trustlines this is the spendable amount
    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) constant returns (uint256) {
        return spendable(_owner);
    }

    /// @return total amount of tokens. In Trustlines this is the sum of all creditlines
    function totalSupply() constant returns (uint256 supply) {
        supply = 0;
        var users = _users.list;
        for(uint i = 0; i < users.length; i++) {
            supply += spendable(users[i]);
        }
    }

    /// @dev Returns the trustline between A and B from the point of A
    /// @param _A The account spending the tokens
    /// @param _B the receiver that receives the tokens
    /// @return the creditline given from A to B, the creditline given from B to A, the balance from the point of A
    function trustline(address _A, address _B) constant returns (int creditlineAB, int creditlineBA, int balanceAB) {
        creditlineAB = loadCreditline(_A, _B);
        creditlineBA = loadCreditline(_B, _A);
        balanceAB = loadBalance(_A, _B);
    }

    function friends(address _user) public constant returns (address[]) {
        return _friends[_user].list;
    }

    function users() public constant returns (address[]) {
        return _users.list;
    }

    // internal and private functions

    // key to look up the the balance There is only one balance between two users
    function keyBalance(address _A, address _B) internal constant returns (bytes32) {
        if (_A < _B) {
            return sha3(_A, _B);
        } else if (_A > _B) {
            return sha3(_B, _A);
        } else {
            // A == B not allowed
            throw;
        }
    }

    // load balance from storage
    function loadBalance(address _A, address _B) internal constant returns (int256) {
        int256 balance;
        balance = balances[keyBalance(_A, _B)];
        if (_A > _B) {
            balance = -balance;
        }
        return balance;
    }

    // store balance to storage
    function storeBalance(address _A, address _B, int256 balance) internal {
        if (_A < _B) {
             balances[keyBalance(_A, _B)] = balance;
        } else {
             balances[keyBalance(_A, _B)] = -balance;
        }
    }

    // key to look up the the creditline given from _A to _B
    function keyCreditline(address _A, address _B) internal constant returns (bytes32) {
        if (_A == _B) {
            throw;
        }
        return sha3(_A, _B);
    }

    // load the Creditline given from _A to _B from storage
    function loadCreditline(address _A, address _B) internal constant returns (int256) {
        int256 creditline = creditlines[keyCreditline(_A, _B)];
        return creditline;
    }

    // store the Creditline given from _A to _B
    function storeCreditline(address _A, address _B, int256 creditline) internal {
        creditlines[keyCreditline(_A, _B)] = creditline;
    }

    // internal transfer function
    // sender transfers value to receiver
    // receiver will only accept if the total value owed by sender is within the creditline given to sender
    function _transfer(address _sender, address _receiver, int256 _value) private returns (bool success) {
        assert(_value >= 0);

        var balance = loadBalance(_receiver, _sender);
        var creditline = loadCreditline(_receiver, _sender);
        // check if updated balance is within creditline
        require(_value + balance <= creditline);

        int256 newBalance = balance + _value;
        storeBalance(_receiver, _sender, newBalance);
        BalanceUpdate(_receiver, _sender, newBalance);
        success = true;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"_A","type":"address"},{"name":"_B","type":"address"}],"name":"trustline","outputs":[{"name":"creditlineAB","type":"int256"},{"name":"creditlineBA","type":"int256"},{"name":"balanceAB","type":"int256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"supply","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"friends","outputs":[{"name":"","type":"address[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_spender","type":"address"},{"name":"_receiver","type":"address"}],"name":"spendableTo","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_path","type":"address[]"}],"name":"mediatedTransfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_spender","type":"address"}],"name":"spendable","outputs":[{"name":"spendable","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_debtor","type":"address"},{"name":"_value","type":"uint256"}],"name":"updateCreditline","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"users","outputs":[{"name":"","type":"address[]"}],"payable":false,"type":"function"},{"inputs":[{"name":"tokenName","type":"string"},{"name":"tokenSymbol","type":"string"},{"name":"decimalUnits","type":"uint8"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_creditor","type":"address"},{"indexed":true,"name":"_debtor","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"CreditlineUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"int256"}],"name":"BalanceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405234156200000d57fe5b6040516200159f3803806200159f833981016040528080518201919060200180518201919060200180519060200190919050505b82600090805190602001906200005992919062000098565b5081600190805190602001906200007292919062000098565b5080600260006101000a81548160ff021916908360ff1602179055505b50505062000147565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000db57805160ff19168380011785556200010c565b828001600101855582156200010c579182015b828111156200010b578251825591602001919060010190620000ee565b5b5090506200011b91906200011f565b5090565b6200014491905b808211156200014057600081600090555060010162000126565b5090565b90565b61144880620001576000396000f300606060405236156100c2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062683c8c146100c457806306fdde031461013b57806318160ddd146101d45780631ddabf7a146101fa5780632ed40caf14610293578063313ce567146102fc5780635f3b7a7f1461032857806370a08231146103bf57806395d89b4114610409578063a219fdd6146104a2578063a9059cbb146104ec578063c81d078b14610543578063f20202751461059a575bfe5b34156100cc57fe5b610117600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061060f565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561014357fe5b61014b610641565b604051808060200182810382528381815181526020019150805190602001908083836000831461019a575b80518252602083111561019a57602082019150602081019050602083039250610176565b505050905090810190601f1680156101c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101dc57fe5b6101e46106df565b6040518082815260200191505060405180910390f35b341561020257fe5b61022e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061075c565b6040518080602001828103825283818151815260200191508051906020019060200280838360008314610280575b8051825260208311156102805760208201915060208101905060208303925061025c565b5050509050019250505060405180910390f35b341561029b57fe5b6102e6600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610833565b6040518082815260200191505060405180910390f35b341561030457fe5b61030c61085f565b604051808260ff1660ff16815260200191505060405180910390f35b341561033057fe5b6103a5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610872565b604051808215151515815260200191505060405180910390f35b34156103c757fe5b6103f3600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109d1565b6040518082815260200191505060405180910390f35b341561041157fe5b6104196109e4565b6040518080602001828103825283818151815260200191508051906020019080838360008314610468575b80518252602083111561046857602082019150602081019050602083039250610444565b505050905090810190601f1680156104945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104aa57fe5b6104d6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a82565b6040518082815260200191505060405180910390f35b34156104f457fe5b610529600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b3f565b604051808215151515815260200191505060405180910390f35b341561054b57fe5b610580600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bee565b604051808215151515815260200191505060405180910390f35b34156105a257fe5b6105aa610d98565b60405180806020018281038252838181518152602001915080519060200190602002808383600083146105fc575b8051825260208311156105fc576020820191506020810190506020830392506105d8565b5050509050019250505060405180910390f35b60006000600061061f8585610e30565b925061062b8486610e30565b91506106378585610e66565b90505b9250925092565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b505050505081565b6000600060006000925060066001019150600090505b818054905081101561075657610744828281548110151561071257fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a82565b830192505b80806001019150506106f5565b5b505090565b6107646113b7565b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180548060200260200160405190810160405280929190818152602001828054801561082657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116107dc575b505050505090505b919050565b6000600060006108438585610e66565b915061084f8486610e30565b905081810192505b505092915050565b600260009054906101000a900460ff1681565b6000600060006000857801000000000000000000000000000000000000000000000000811015156108a35760006000fd5b3393508692506000915060008651141515156108bf5760006000fd5b8560018751038151811015156108d157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415156109155760006000fd5b5b85518260ff16101561095b57858260ff1681518110151561093357fe5b90602001906020020151975061094a848985610ed7565b508793508180600101925050610916565b8773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a3600194505b5b505050509392505050565b60006109dc82610a82565b90505b919050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a7a5780601f10610a4f57610100808354040283529160200191610a7a565b820191906000526020600020905b815481529060010190602001808311610a5d57829003601f168201915b505050505081565b60006000600060009250600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019150600090505b8180549050811015610b3757610b25848383815481101515610af357fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610833565b830192505b8080600101915050610ad5565b5b5050919050565b6000600082780100000000000000000000000000000000000000000000000081101515610b6c5760006000fd5b839150610b7a338684610ed7565b508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600192505b5b505092915050565b600060006000600084780100000000000000000000000000000000000000000000000081101515610c1f5760006000fd5b859350339250610c2f8388610e66565b9150610c45836006610f9a90919063ffffffff16565b610c59876006610f9a90919063ffffffff16565b610caa87600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610f9a90919063ffffffff16565b610cfb83600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610f9a90919063ffffffff16565b60008412151515610d0857fe5b818412151515610d185760006000fd5b610d2383888661106c565b8673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd8c5c77a6121c9b0db83e136f18a72ae68cc79dd6436a09ebdcdb93a47d7713e886040518082815260200191505060405180910390a3600194505b5b5050505092915050565b610da06113b7565b6006600101805480602002602001604051908101604052809291908181526020018280548015610e2557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610ddb575b505050505090505b90565b6000600060046000610e42868661109b565b600019166000191681526020019081526020016000205490508091505b5092915050565b6000600060036000610e788686611174565b600019166000191681526020019081526020016000205490508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610ecc578060000390505b8091505b5092915050565b600060006000600060008512151515610eec57fe5b610ef68688610e66565b9250610f028688610e30565b91508183860113151515610f165760006000fd5b8483019050610f26868883611322565b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f90496e8ae1151e3218a7f81bfa88e883bcd6fd5695aac012f6e49ac0cdf7b56a836040518082815260200191505060405180910390a3600193505b5050509392505050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001541415611066576001836001018054905001816000018190555082600101805480600101828161101591906113cb565b916000526020600020900160005b84909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b5b505050565b806004600061107b868661109b565b60001916600019168152602001908152602001600020819055505b505050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110d75760006000fd5b8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902090505b92915050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161015611245578282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020905061131c565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161115611314578183604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020905061131c565b60006000fd5b5b5b92915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610156113845780600360006113658686611174565b60001916600019168152602001908152602001600020819055506113b1565b80600003600360006113968686611174565b60001916600019168152602001908152602001600020819055505b5b505050565b602060405190810160405280600081525090565b8154818355818115116113f2578183600052602060002091820191016113f191906113f7565b5b505050565b61141991905b808211156114155760008160009055506001016113fd565b5090565b905600a165627a7a72305820afae808740d77e9d44fd474e82a0b8d0d8924b7908b7ae3c1871d58f7f0e75170029000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003455552000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034555520000000000000000000000000000000000000000000000000000000000

   Swarm Source:
bzzr://afae808740d77e9d44fd474e82a0b8d0d8924b7908b7ae3c1871d58f7f0e7517
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward