Latest 14 txns

TxHash Age From To Value [TxFee]
0x8a7117e04fcb6b0529925e1e7d51b4a0cf7d660656f96378c6ee067b031a1130219 days 23 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa0 Ether0.000032218
0xbd7723d6b023b44aace8e39edc05041c6c7f6051be3bcfef74ac3b5b170ec1e7220 days 5 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa2 Ether0.00002343
0x9b1db45fdf32512221f81bfa2fce5e0975a0e2f10a366789cd9e2d3c1ceb8964220 days 7 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa0 Ether0.00161385
0x24a0e402708ddf79ff34402319956f5df654e26bd4df98392e8408af0d3b5da3220 days 7 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa0 Ether0.000132334
0x2b9a244af7f452357663e981badfeb1f9f9bff130372bff5949eb127ba9155d6220 days 7 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa0 Ether0.000037866
0x0e70a4a720c99c757118cfa949b087a2ae3fb5337f588a6e0c6252b349bd394c220 days 7 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa0 Ether0.000037866
0x68b4be2a209fc8d4e41244af40e7250ae709859556b41410ec967ccd9bebd0c6220 days 7 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa0 Ether0.000045731
0xaf885013db7661fd4b6d86faa2ec47203f112f98603bcab6aa642ceca3b1358c220 days 7 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa1.5 Ether0.00002343
0xb556e398d7197a4e124b932e9fdde108fca9df8b295ff3d86cf2037ee4a56928220 days 7 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa0 Ether0.005373029
0xea6c5150230bd280d946d84720f5216fe5e9a8b153bd2805b7e2349e662fb74c220 days 8 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa0 Ether0.000102268
0x8322f7806b56242c72ef5c00fe2ae8491cd99191166f2c5bc711799aae83d95a220 days 8 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa0 Ether0.000102204
0x696be36e6763c54136601f7cce531c3e2e2f0fe7717130df8ad1f5a0d341457e220 days 8 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa0 Ether0.000102204
0xab9819c3cb8f896296b4704d9a48edfb6547d3910b3f02bcb62c3ecb54febf36220 days 8 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN   0x643324ed5e37e502be570906e65ba43ca2d2d8aa0.5 Ether0.00002343
0xa44ba9a14eff4e5bfeb170384da17dc3dc93d63e8691ac2246ca33406d516124220 days 8 hrs ago0x51b937965646792d76876a7c71d89bcbf6ac70b5  IN    Contract Creation0 Ether0.1700904
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 3 Internal Transactions

ParentTxHash Block Age From To Value
0x2b9a244af7f452357663e981badfeb1f9f9bff130372bff5949eb127ba9155d63610919220 days 7 hrs ago0x643324ed5e37e502be570906e65ba43ca2d2d8aa0x51b937965646792d76876a7c71d89bcbf6ac70b50 Ether
0x0e70a4a720c99c757118cfa949b087a2ae3fb5337f588a6e0c6252b349bd394c3610919220 days 7 hrs ago0x643324ed5e37e502be570906e65ba43ca2d2d8aa0x81b7e08f65bdf5648606c89998a9cc81643976470 Ether
0x68b4be2a209fc8d4e41244af40e7250ae709859556b41410ec967ccd9bebd0c63610918220 days 7 hrs ago0x643324ed5e37e502be570906e65ba43ca2d2d8aa0x455530be355ad45a942360dff71a8eb1e71478300 Ether
[ Download CSV Export  ] 
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: Payroll
Compiler Version: v0.4.23+commit.124ca40d
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.13;

contract Ownable {
    address public owner;


    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    function Ownable() public {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}

contract Payroll is Ownable {

    /**
     * event will be introduced in lesson 6
     */
    event AddFund(address indexed from, uint value);
    event GetPaid(address indexed employee, uint value);
    event AddEmployee(address indexed from, address indexed employee, uint salary);
    event UpdateEmployee(address indexed from, address indexed employee, uint salary);
    event RemoveEmployee(address indexed from, address indexed removed);

    using SafeMath for uint;

    /**
     * We are using mapping here, the key is already the address.
     */
    struct Employee {
        uint index;
        uint salary;
        uint lastPayday;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    modifier shouldExist(address employeeId) {
        assert(employees[employeeId].lastPayday != 0);
        _;
    }

    modifier shouldNotExist(address employeeId) {
        assert(employees[employeeId].lastPayday == 0);
        _;
    }

    uint constant PAY_DURATION = 10 seconds;
    uint public totalSalary = 0;
    address[] employeeAddressList;

    /**
     * This contract is simple, We update employees by the key directly
     * instead of updating a copy so that we could save some gas.
     */
    mapping(address => Employee) public employees;

    function Payroll() payable public Ownable {
        owner = msg.sender;
    }

    function _partialPaid(address employeeId) private {
        uint payment = employees[employeeId].salary
        .mul(now.sub(employees[employeeId].lastPayday))
        .div(PAY_DURATION);
        employeeId.transfer(payment);
    }

    function addEmployee(address employeeId, uint salary) public onlyOwner shouldNotExist(employeeId) {
        salary = salary.mul(1 ether);

        uint index = employeeAddressList.length;
        employeeAddressList.push(employeeId);
        employees[employeeId] = Employee(index, salary, now);

        totalSalary = totalSalary.add(salary);
        AddEmployee(msg.sender, employeeId, salary);
    }

    function removeEmployee(address employeeId) public onlyOwner shouldExist(employeeId) {
        _partialPaid(employeeId);

        uint salary = employees[employeeId].salary;
        uint index = employees[employeeId].index;
        totalSalary = totalSalary.sub(salary);

        delete employees[employeeId];

        delete employeeAddressList[index];
        address moveAddress = employeeAddressList[employeeAddressList.length - 1];
        employeeAddressList[index] = moveAddress;

        // update index
        employees[moveAddress].index = index;

        // adjust length
        employeeAddressList.length -= 1;
        RemoveEmployee(msg.sender, employeeId);
    }

    function changePaymentAddress(address oldAddress, address newAddress) public onlyOwner shouldExist(oldAddress) shouldNotExist(newAddress) {
        _partialPaid(oldAddress);

        employees[newAddress] = Employee(employees[oldAddress].index, employees[oldAddress].salary, now);
        delete employees[oldAddress];
    }

    function updateEmployee(address employeeId, uint salary) public onlyOwner shouldExist(employeeId) {
        _partialPaid(employeeId);

        uint oldSalary = employees[employeeId].salary;
        salary = salary.mul(1 ether);

        employees[employeeId].salary = salary;
        employees[employeeId].lastPayday = now;
        totalSalary = totalSalary.add(salary).sub(oldSalary);

        UpdateEmployee(msg.sender, employeeId, salary);
    }

    function addFund() payable public returns (uint) {
        AddFund(msg.sender, msg.value);
        return address(this).balance;
    }

    function calculateRunway() public view returns (uint) {
        if (totalSalary == 0) {
            return 0;
        }
        return address(this).balance.div(totalSalary);
    }

    function hasEnoughFund() public view returns (bool) {
        return calculateRunway() > 0;
    }

    function getPaid() public shouldExist(msg.sender) {
        address employeeId = msg.sender;

        uint nextPayday = employees[employeeId].lastPayday.add(PAY_DURATION);
        assert(nextPayday < now);

        employees[employeeId].lastPayday = nextPayday;
        employeeId.transfer(employees[employeeId].salary);
        GetPaid(msg.sender, employees[employeeId].salary);
    }

    function getEmployerInfo() view public returns (uint balance, uint runway, uint employeeCount) {
        balance = address(this).balance;
        runway = calculateRunway();
        employeeCount = employeeAddressList.length;
    }

    function getEmployeeInfo(uint index) view public returns (address employeeAddress, uint salary, uint lastPayday, uint balance) {
        address id = employeeAddressList[index];
        employeeAddress = id;
        salary = employees[id].salary;
        lastPayday = employees[id].lastPayday;
        balance = address(id).balance;
    }

    function getEmployeeInfoById(address id) view public returns (uint salary, uint lastPayday, uint balance) {
        salary = employees[id].salary;
        lastPayday = employees[id].lastPayday;
        balance = address(id).balance;
    }
}

library SafeMath {

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 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 c;
    }

    /**
    * @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) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"hasEnoughFund","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSalary","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"calculateRunway","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"employeeId","type":"address"},{"name":"salary","type":"uint256"}],"name":"updateEmployee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getEmployerInfo","outputs":[{"name":"balance","type":"uint256"},{"name":"runway","type":"uint256"},{"name":"employeeCount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"addFund","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"oldAddress","type":"address"},{"name":"newAddress","type":"address"}],"name":"changePaymentAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getPaid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"employees","outputs":[{"name":"index","type":"uint256"},{"name":"salary","type":"uint256"},{"name":"lastPayday","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"employeeId","type":"address"}],"name":"removeEmployee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"employeeId","type":"address"},{"name":"salary","type":"uint256"}],"name":"addEmployee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getEmployeeInfo","outputs":[{"name":"employeeAddress","type":"address"},{"name":"salary","type":"uint256"},{"name":"lastPayday","type":"uint256"},{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"address"}],"name":"getEmployeeInfoById","outputs":[{"name":"salary","type":"uint256"},{"name":"lastPayday","type":"uint256"},{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"AddFund","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"employee","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"GetPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"employee","type":"address"},{"indexed":false,"name":"salary","type":"uint256"}],"name":"AddEmployee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"employee","type":"address"},{"indexed":false,"name":"salary","type":"uint256"}],"name":"UpdateEmployee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"removed","type":"address"}],"name":"RemoveEmployee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60806040526000600155336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061179e806100986000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806323fed09e146100e05780632e46eb1d1461010f5780634ec195121461013a5780635e91d8ec146101655780638da5cb5b146101b25780638ef8f24114610209578063a2f09dfa14610242578063bc456c4214610260578063cf41d6f8146102c3578063d0678947146102da578063d108177a1461033f578063e7fd9a1314610382578063f2fde38b146103cf578063f6757cff14610412578063fc5378bb14610494575b600080fd5b3480156100ec57600080fd5b506100f56104f9565b604051808215151515815260200191505060405180910390f35b34801561011b57600080fd5b5061012461050a565b6040518082815260200191505060405180910390f35b34801561014657600080fd5b5061014f610510565b6040518082815260200191505060405180910390f35b34801561017157600080fd5b506101b0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610557565b005b3480156101be57600080fd5b506101c7610794565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021557600080fd5b5061021e6107b9565b60405180848152602001838152602001828152602001935050505060405180910390f35b61024a6107ef565b6040518082815260200191505060405180910390f35b34801561026c57600080fd5b506102c1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061085c565b005b3480156102cf57600080fd5b506102d8610abf565b005b3480156102e657600080fd5b5061031b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cdd565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561034b57600080fd5b50610380600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d07565b005b34801561038e57600080fd5b506103cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611058565b005b3480156103db57600080fd5b50610410600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611291565b005b34801561041e57600080fd5b5061043d600480360381019080803590602001909291905050506113e6565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390f35b3480156104a057600080fd5b506104d5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114d9565b60405180848152602001838152602001828152602001935050505060405180910390f35b600080610504610510565b11905090565b60015481565b60008060015414156105255760009050610554565b6105516001543073ffffffffffffffffffffffffffffffffffffffff163161158990919063ffffffff16565b90505b90565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105b457600080fd5b826000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541415151561060457fe5b61060d846115a4565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154915061066d670de0b6b3a7640000846116af90919063ffffffff16565b925082600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555042600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061072482610716856001546116ea90919063ffffffff16565b61170890919063ffffffff16565b6001819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167eabb30ee5dd471f27161ac580cf2589ae5900f7a641ec81837c023a643aa33a856040518082815260200191505060405180910390a350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060003073ffffffffffffffffffffffffffffffffffffffff163192506107e0610510565b91506002805490509050909192565b60003373ffffffffffffffffffffffffffffffffffffffff167f85475feba15e127a3c020e9ed07784e81fa905ad45771316e168bf8e0784f884346040518082815260200191505060405180910390a23073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108b757600080fd5b816000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541415151561090757fe5b816000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414151561095657fe5b61095f846115a4565b606060405190810160405280600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001548152602001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154815260200142815250600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090556002820160009055505050505050565b600080336000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414151515610b1257fe5b339250610b6b600a600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546116ea90919063ffffffff16565b91504282101515610b7857fe5b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508273ffffffffffffffffffffffffffffffffffffffff166108fc600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549081150290604051600060405180830381858888f19350505050158015610c47573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f6316f060ea43ea4ad36e9f21ea77e0e4c9474d149c4011c8957b8fe2c9061c31600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546040518082815260200191505060405180910390a2505050565b60036020528060005260406000206000915090508060000154908060010154908060020154905083565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d6757600080fd5b836000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414151515610db757fe5b610dc0856115a4565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549350600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549250610e5f8460015461170890919063ffffffff16565b600181905550600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160009055600182016000905560028201600090555050600283815481101515610ece57fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002600160028054905003815481101515610f1257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915081600284815481101515610f4f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506001600281818054905003915081610ff69190611721565b508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2addb317b82f54c3cfe26d79d287fdf8c85a0586f58f5df491428d1e5039e49060405160405180910390a35050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110b557600080fd5b826000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015414151561110457fe5b61111f670de0b6b3a7640000846116af90919063ffffffff16565b9250600280549050915060028490806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060606040519081016040528083815260200184815260200142815250600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050611220836001546116ea90919063ffffffff16565b6001819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe693f3f4319c11111a1c24c16bc68b0d50cf5f310f5545c83cc78267c831dcbf856040518082815260200191505060405180910390a350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ec57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561132857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060006002868154811015156113fd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050809450600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549350600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015492508073ffffffffffffffffffffffffffffffffffffffff16319150509193509193565b6000806000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549250600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015491508373ffffffffffffffffffffffffffffffffffffffff163190509193909250565b600080828481151561159757fe5b0490508091505092915050565b6000611662600a611654611603600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201544261170890919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546116af90919063ffffffff16565b61158990919063ffffffff16565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156116aa573d6000803e3d6000fd5b505050565b60008060008414156116c457600091506116e3565b82840290508284828115156116d557fe5b041415156116df57fe5b8091505b5092915050565b60008082840190508381101515156116fe57fe5b8091505092915050565b600082821115151561171657fe5b818303905092915050565b81548183558181111561174857818360005260206000209182019101611747919061174d565b5b505050565b61176f91905b8082111561176b576000816000905550600101611753565b5090565b905600a165627a7a72305820daa8fc29733b3ddb31a1b5546d55960479ae37731d2182a52aaa14974e25d6ed0029

   Swarm Source:
bzzr://daa8fc29733b3ddb31a1b5546d55960479ae37731d2182a52aaa14974e25d6ed

 

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