Sponsored Link:    Chronologic - Self-Mining Ethereum token based on Proof of Time. Join the Contribution.
Contract Overview | ZRX-TeamVesting
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 36 txns
Misc
Address Watch Add To Watch List
Contract Creator 0xa3b2d1087bcebe59d188a23f75620612d967df72at txn 0x59081bdd5267ca821f983290807f8879863c6a70352bac27ef0c8deeabb7830c
Token Tracker
  Latest 25 txns from a total Of 36 transactions View All

TxHash Age From To Value [TxFee]
0x96cac0b46cf010f20db8bb682ba044158bf4546c53d68d642bc0c7ec496e144717 days 6 hrs ago0x935623b545506cbbe5b9d6e97c702a0a6a5eda97  IN   ZRX-TeamVesting0 Ether0.0042
0x6e39b9c6fca3a9dd8edcf4ef0fd65dc6d42b223ef49e4316008b210d22cf3ba735 days 20 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.000601251
0x9d98465a50a0d9709f1b989a1ba29d25f96dd5459d15d12542f7b45fc25dbf6e36 days 6 hrs ago0xcca71809e8870afeb72c4720d0fe50d5c3230e05  IN   ZRX-TeamVesting0 Ether0.0002753
0x41164b336a4e2418fc1634b926b7b7ce73c4c582855e3d8b93bab2370e12f25036 days 22 hrs ago0x257619b7155d247e43c8b6d90c8c17278ae481f0  IN   ZRX-TeamVesting0 Ether0.0002753
0xfa9c13683113d9106175cb467c8d7982cbf91854be0e2c6bac613a0cd5daf7cf37 days 28 mins ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.0028102
0x6caf402de41c85014c012fe49176423879ac15cfe8e21893e9ef2b41c02c5d8f37 days 4 hrs ago0xec9ce6e59ce95248ecef070408e7cf35bbc79989  IN   ZRX-TeamVesting0 Ether0.001154916
0x36e9ff43362d6e5fe25308f83aff120196a2d8047d98732139bbd6cac0a68ff537 days 8 hrs ago0xcac737603fd3d83cfcd213e94cdbfdd2eb60c958  IN   ZRX-TeamVesting0 Ether0.001153572
0x71374f658d42c4511098c321f9a1e57c35acc2168ee3856962f99c2c5924656d37 days 8 hrs ago0x14f7faa5a0910a1eae6ac3a3e283f9a0cca346ea  IN   ZRX-TeamVesting0 Ether0.00115626
0x4afa121be527fcf9a104f7d929ba8b0a2511fa90f2d261ed0c94545721f4e16f37 days 8 hrs ago0x935623b545506cbbe5b9d6e97c702a0a6a5eda97  IN   ZRX-TeamVesting0 Ether0.00115626
0x919d18e2476388e47085f16071b938d22e569610433dd3b0f9e8da9ac457481d37 days 8 hrs ago0x571cb8fe59ed9da0828127d978997a0cf2fdbde6  IN   ZRX-TeamVesting0 Ether0.00115626
0x6148ce76c08ddeef100f96df3ac5e36a8cf00ff8302b373afcf16398b77b19e237 days 9 hrs ago0x85b5022bc07b21d69a0c3656ad74286e137cf5dd  IN   ZRX-TeamVesting0 Ether0.001157604
0xcf30feb02e62234a78753948cd63c24532db5ec13ad57505d3afd4ea6de999d937 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.00295071
0xc37fea786187254bceb22763a4d5932e9ec4e515e720dc62cd17bc30f59d9ac537 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.001374366
0xab657d2e7afe84c4f3ff7ba0acffd0470ff4e7186feba99966447c04e4066df837 days 9 hrs ago0xb088a3bc93f71b4de97b9de773e9647645983688  IN   ZRX-TeamVesting0 Ether0.0014012
0x7a1f356aeebb0f492155131b8d9a7a202c1d1e0b6b5a9fb40956df12480d649c37 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.00137571
0xd75028bc8c77cc9729ddfb2261de2771fe3fc26c0663aa83690b95545657793637 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.001373022
0x33c0a75d6e92caa026a57247aa757dca1485003465b4a876af3864a4b82e1fba37 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.00137571
0x08e19272281645f1997648be992b5e3600bb8f4e8f7f7171ac310d6c782f9f2a37 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.001377054
0x4bff259cf924ad03638c9821d70ad437cef51fa5bdfd41a3818fefb781191f9737 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.00137571
0xa2065927eee1c440c7469a7f309ebfd0458ed87175be3559fd3c85232ecc55e237 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.00137571
0x86d22fba922b637e2f1b0cc645d2d629cd39b0bb42b89c4c16661897e29f3c2137 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.00137571
0xdcc8832524d6b72dcd62be67fdc9716ac470166e28d754eda7c6eacbef2d22c137 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.00137571
0x89484ce8eec23a2ac8a3098efecf8fc1f5f3ba1ec1a0efacb94ba59c1ca3f44337 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.00137571
0x5257527f7f6987d949c296dca1c270deda9714a9fded4974e86afe05ee2d8f2437 days 9 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.00137571
0xcc30c21300f91d50431d2059f8dbf9d9f3a6ae0f2e5e033bb4078f45cfd23d5239 days 3 hrs ago0xa3b2d1087bcebe59d188a23f75620612d967df72  IN   ZRX-TeamVesting0 Ether0.002952054
[ 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 DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity), SkipEmptyStringLiteral (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: VestingWallet
Compiler Version: v0.4.11+commit.68ef5810
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity 0.4.11;

/*
 * Ownable
 *
 * Base contract with an owner.
 * Provides onlyOwner modifier, which prevents function from running if it is called by anyone other than the owner.
 */

contract Ownable {
    address public owner;

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

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

    function transferOwnership(address newOwner) onlyOwner {
        if (newOwner != address(0)) {
            owner = newOwner;
        }
    }
}

contract Token {

    /// @return total amount of tokens
    function totalSupply() constant returns (uint supply) {}

    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) constant returns (uint balance) {}

    /// @notice send `_value` token to `_to` from `msg.sender`
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transfer(address _to, uint _value) returns (bool success) {}

    /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
    /// @param _from The address of the sender
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transferFrom(address _from, address _to, uint _value) returns (bool success) {}

    /// @notice `msg.sender` approves `_addr` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of wei to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint _value) returns (bool success) {}

    /// @param _owner The address of the account owning tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    function allowance(address _owner, address _spender) constant returns (uint remaining) {}

    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}

contract SafeMath {
    function safeMul(uint a, uint b) internal constant returns (uint) {
        uint c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function safeDiv(uint a, uint b) internal constant returns (uint) {
        uint c = a / b;
        return c;
    }

    function safeSub(uint a, uint b) internal constant returns (uint) {
        assert(b <= a);
        return a - b;
    }

    function safeAdd(uint a, uint b) internal constant returns (uint) {
        uint c = a + b;
        assert(c >= a);
        return c;
    }

    function max64(uint64 a, uint64 b) internal constant returns (uint64) {
        return a >= b ? a : b;
    }

    function min64(uint64 a, uint64 b) internal constant returns (uint64) {
        return a < b ? a : b;
    }

    function max256(uint256 a, uint256 b) internal constant returns (uint256) {
        return a >= b ? a : b;
    }

    function min256(uint256 a, uint256 b) internal constant returns (uint256) {
        return a < b ? a : b;
    }
}

contract VestingWallet is Ownable, SafeMath {

    mapping(address => VestingSchedule) public schedules;        // vesting schedules for given addresses
    mapping(address => address) public addressChangeRequests;    // requested address changes

    Token vestingToken;

    event VestingScheduleRegistered(
        address indexed registeredAddress,
        address depositor,
        uint startTimeInSec,
        uint cliffTimeInSec,
        uint endTimeInSec,
        uint totalAmount
    );
    event VestingScheduleConfirmed(
        address indexed registeredAddress,
        address depositor,
        uint startTimeInSec,
        uint cliffTimeInSec,
        uint endTimeInSec,
        uint totalAmount
    );
    event Withdrawal(address indexed registeredAddress, uint amountWithdrawn);
    event VestingEndedByOwner(address indexed registeredAddress, uint amountWithdrawn, uint amountRefunded);
    event AddressChangeRequested(address indexed oldRegisteredAddress, address indexed newRegisteredAddress);
    event AddressChangeConfirmed(address indexed oldRegisteredAddress, address indexed newRegisteredAddress);

    struct VestingSchedule {
        uint startTimeInSec;
        uint cliffTimeInSec;
        uint endTimeInSec;
        uint totalAmount;
        uint totalAmountWithdrawn;
        address depositor;
        bool isConfirmed;
    }

    modifier addressRegistered(address target) {
        VestingSchedule storage vestingSchedule = schedules[target];
        require(vestingSchedule.depositor != address(0));
        _;
    }

    modifier addressNotRegistered(address target) {
        VestingSchedule storage vestingSchedule = schedules[target];
        require(vestingSchedule.depositor == address(0));
        _;
    }

    modifier vestingScheduleConfirmed(address target) {
        VestingSchedule storage vestingSchedule = schedules[target];
        require(vestingSchedule.isConfirmed);
        _;
    }

    modifier vestingScheduleNotConfirmed(address target) {
        VestingSchedule storage vestingSchedule = schedules[target];
        require(!vestingSchedule.isConfirmed);
        _;
    }

    modifier pendingAddressChangeRequest(address target) {
        require(addressChangeRequests[target] != address(0));
        _;
    }

    modifier pastCliffTime(address target) {
        VestingSchedule storage vestingSchedule = schedules[target];
        require(block.timestamp > vestingSchedule.cliffTimeInSec);
        _;
    }

    modifier validVestingScheduleTimes(uint startTimeInSec, uint cliffTimeInSec, uint endTimeInSec) {
        require(cliffTimeInSec >= startTimeInSec);
        require(endTimeInSec >= cliffTimeInSec);
        _;
    }

    modifier addressNotNull(address target) {
        require(target != address(0));
        _;
    }

    /// @dev Assigns a vesting token to the wallet.
    /// @param _vestingToken Token that will be vested.
    function VestingWallet(address _vestingToken) {
        vestingToken = Token(_vestingToken);
    }

    /// @dev Registers a vesting schedule to an address.
    /// @param _addressToRegister The address that is allowed to withdraw vested tokens for this schedule.
    /// @param _depositor Address that will be depositing vesting token.
    /// @param _startTimeInSec The time in seconds that vesting began.
    /// @param _cliffTimeInSec The time in seconds that tokens become withdrawable.
    /// @param _endTimeInSec The time in seconds that vesting ends.
    /// @param _totalAmount The total amount of tokens that the registered address can withdraw by the end of the vesting period.
    function registerVestingSchedule(
        address _addressToRegister,
        address _depositor,
        uint _startTimeInSec,
        uint _cliffTimeInSec,
        uint _endTimeInSec,
        uint _totalAmount
    )
        public
        onlyOwner
        addressNotNull(_depositor)
        vestingScheduleNotConfirmed(_addressToRegister)
        validVestingScheduleTimes(_startTimeInSec, _cliffTimeInSec, _endTimeInSec)
    {
        schedules[_addressToRegister] = VestingSchedule({
            startTimeInSec: _startTimeInSec,
            cliffTimeInSec: _cliffTimeInSec,
            endTimeInSec: _endTimeInSec,
            totalAmount: _totalAmount,
            totalAmountWithdrawn: 0,
            depositor: _depositor,
            isConfirmed: false
        });

        VestingScheduleRegistered(
            _addressToRegister,
            _depositor,
            _startTimeInSec,
            _cliffTimeInSec,
            _endTimeInSec,
            _totalAmount
        );
    }

    /// @dev Confirms a vesting schedule and deposits necessary tokens. Throws if deposit fails or schedules do not match.
    /// @param _startTimeInSec The time in seconds that vesting began.
    /// @param _cliffTimeInSec The time in seconds that tokens become withdrawable.
    /// @param _endTimeInSec The time in seconds that vesting ends.
    /// @param _totalAmount The total amount of tokens that the registered address can withdraw by the end of the vesting period.
    function confirmVestingSchedule(
        uint _startTimeInSec,
        uint _cliffTimeInSec,
        uint _endTimeInSec,
        uint _totalAmount
    )
        public
        addressRegistered(msg.sender)
        vestingScheduleNotConfirmed(msg.sender)
    {
        VestingSchedule storage vestingSchedule = schedules[msg.sender];

        require(vestingSchedule.startTimeInSec == _startTimeInSec);
        require(vestingSchedule.cliffTimeInSec == _cliffTimeInSec);
        require(vestingSchedule.endTimeInSec == _endTimeInSec);
        require(vestingSchedule.totalAmount == _totalAmount);

        vestingSchedule.isConfirmed = true;
        require(vestingToken.transferFrom(vestingSchedule.depositor, address(this), _totalAmount));

        VestingScheduleConfirmed(
            msg.sender,
            vestingSchedule.depositor,
            _startTimeInSec,
            _cliffTimeInSec,
            _endTimeInSec,
            _totalAmount
        );
    }

    /// @dev Allows a registered address to withdraw tokens that have already been vested.
    function withdraw()
        public
        vestingScheduleConfirmed(msg.sender)
        pastCliffTime(msg.sender)
    {
        VestingSchedule storage vestingSchedule = schedules[msg.sender];

        uint totalAmountVested = getTotalAmountVested(vestingSchedule);
        uint amountWithdrawable = safeSub(totalAmountVested, vestingSchedule.totalAmountWithdrawn);
        vestingSchedule.totalAmountWithdrawn = totalAmountVested;

        if (amountWithdrawable > 0) {
            require(vestingToken.transfer(msg.sender, amountWithdrawable));
            Withdrawal(msg.sender, amountWithdrawable);
        }
    }

    /// @dev Allows contract owner to terminate a vesting schedule, transfering remaining vested tokens to the registered address and refunding owner with remaining tokens.
    /// @param _addressToEnd Address that is currently registered to the vesting schedule that will be closed.
    /// @param _addressToRefund Address that will receive unvested tokens.
    function endVesting(address _addressToEnd, address _addressToRefund)
        public
        onlyOwner
        vestingScheduleConfirmed(_addressToEnd)
        addressNotNull(_addressToRefund)
    {
        VestingSchedule storage vestingSchedule = schedules[_addressToEnd];

        uint amountWithdrawable = 0;
        uint amountRefundable = 0;

        if (block.timestamp < vestingSchedule.cliffTimeInSec) {
            amountRefundable = vestingSchedule.totalAmount;
        } else {
            uint totalAmountVested = getTotalAmountVested(vestingSchedule);
            amountWithdrawable = safeSub(totalAmountVested, vestingSchedule.totalAmountWithdrawn);
            amountRefundable = safeSub(vestingSchedule.totalAmount, totalAmountVested);
        }

        delete schedules[_addressToEnd];
        require(amountWithdrawable == 0 || vestingToken.transfer(_addressToEnd, amountWithdrawable));
        require(amountRefundable == 0 || vestingToken.transfer(_addressToRefund, amountRefundable));

        VestingEndedByOwner(_addressToEnd, amountWithdrawable, amountRefundable);
    }

    /// @dev Allows a registered address to request an address change.
    /// @param _newRegisteredAddress Desired address to update to.
    function requestAddressChange(address _newRegisteredAddress)
        public
        vestingScheduleConfirmed(msg.sender)
        addressNotRegistered(_newRegisteredAddress)
        addressNotNull(_newRegisteredAddress)
    {
        addressChangeRequests[msg.sender] = _newRegisteredAddress;
        AddressChangeRequested(msg.sender, _newRegisteredAddress);
    }

    /// @dev Confirm an address change and migrate vesting schedule to new address.
    /// @param _oldRegisteredAddress Current registered address.
    /// @param _newRegisteredAddress Address to migrate vesting schedule to.
    function confirmAddressChange(address _oldRegisteredAddress, address _newRegisteredAddress)
        public
        onlyOwner
        pendingAddressChangeRequest(_oldRegisteredAddress)
        addressNotRegistered(_newRegisteredAddress)
    {
        address newRegisteredAddress = addressChangeRequests[_oldRegisteredAddress];
        require(newRegisteredAddress == _newRegisteredAddress);    // prevents race condition

        VestingSchedule memory vestingSchedule = schedules[_oldRegisteredAddress];
        schedules[newRegisteredAddress] = vestingSchedule;

        delete schedules[_oldRegisteredAddress];
        delete addressChangeRequests[_oldRegisteredAddress];

        AddressChangeConfirmed(_oldRegisteredAddress, _newRegisteredAddress);
    }

    /// @dev Calculates the total tokens that have been vested for a vesting schedule, assuming the schedule is past the cliff.
    /// @param vestingSchedule Vesting schedule used to calculate vested tokens.
    /// @return Total tokens vested for a vesting schedule.
    function getTotalAmountVested(VestingSchedule vestingSchedule)
        internal
        returns (uint)
    {
        if (block.timestamp >= vestingSchedule.endTimeInSec) return vestingSchedule.totalAmount;

        uint timeSinceStartInSec = safeSub(block.timestamp, vestingSchedule.startTimeInSec);
        uint totalVestingTimeInSec = safeSub(vestingSchedule.endTimeInSec, vestingSchedule.startTimeInSec);
        uint totalAmountVested = safeDiv(
            safeMul(timeSinceStartInSec, vestingSchedule.totalAmount),
            totalVestingTimeInSec
        );

        return totalAmountVested;
    }
}

  Contract ABI  
[{"constant":false,"inputs":[{"name":"_addressToRegister","type":"address"},{"name":"_depositor","type":"address"},{"name":"_startTimeInSec","type":"uint256"},{"name":"_cliffTimeInSec","type":"uint256"},{"name":"_endTimeInSec","type":"uint256"},{"name":"_totalAmount","type":"uint256"}],"name":"registerVestingSchedule","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newRegisteredAddress","type":"address"}],"name":"requestAddressChange","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_startTimeInSec","type":"uint256"},{"name":"_cliffTimeInSec","type":"uint256"},{"name":"_endTimeInSec","type":"uint256"},{"name":"_totalAmount","type":"uint256"}],"name":"confirmVestingSchedule","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"schedules","outputs":[{"name":"startTimeInSec","type":"uint256"},{"name":"cliffTimeInSec","type":"uint256"},{"name":"endTimeInSec","type":"uint256"},{"name":"totalAmount","type":"uint256"},{"name":"totalAmountWithdrawn","type":"uint256"},{"name":"depositor","type":"address"},{"name":"isConfirmed","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_addressToEnd","type":"address"},{"name":"_addressToRefund","type":"address"}],"name":"endVesting","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"addressChangeRequests","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_oldRegisteredAddress","type":"address"},{"name":"_newRegisteredAddress","type":"address"}],"name":"confirmAddressChange","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_vestingToken","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"registeredAddress","type":"address"},{"indexed":false,"name":"depositor","type":"address"},{"indexed":false,"name":"startTimeInSec","type":"uint256"},{"indexed":false,"name":"cliffTimeInSec","type":"uint256"},{"indexed":false,"name":"endTimeInSec","type":"uint256"},{"indexed":false,"name":"totalAmount","type":"uint256"}],"name":"VestingScheduleRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"registeredAddress","type":"address"},{"indexed":false,"name":"depositor","type":"address"},{"indexed":false,"name":"startTimeInSec","type":"uint256"},{"indexed":false,"name":"cliffTimeInSec","type":"uint256"},{"indexed":false,"name":"endTimeInSec","type":"uint256"},{"indexed":false,"name":"totalAmount","type":"uint256"}],"name":"VestingScheduleConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"registeredAddress","type":"address"},{"indexed":false,"name":"amountWithdrawn","type":"uint256"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"registeredAddress","type":"address"},{"indexed":false,"name":"amountWithdrawn","type":"uint256"},{"indexed":false,"name":"amountRefunded","type":"uint256"}],"name":"VestingEndedByOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldRegisteredAddress","type":"address"},{"indexed":true,"name":"newRegisteredAddress","type":"address"}],"name":"AddressChangeRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldRegisteredAddress","type":"address"},{"indexed":true,"name":"newRegisteredAddress","type":"address"}],"name":"AddressChangeConfirmed","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000c57fe5b604051602080611e73833981016040528080519060200190919050505b5b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505b611db4806100bf6000396000f300606060405236156100a2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301d490fd146100a45780630633cd321461011d5780633ccfd60b146101535780634ed600d11461016557806380c3780f146101a05780638da5cb5b14610244578063a5b1993714610296578063b1e9ee64146102eb578063bff44f0d14610361578063f2fde38b146103b6575bfe5b34156100ac57fe5b61011b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919080359060200190919080359060200190919080359060200190919050506103ec565b005b341561012557fe5b610151600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106e3565b005b341561015b57fe5b61016361090e565b005b341561016d57fe5b61019e6004808035906020019091908035906020019091908035906020019091908035906020019091905050610c33565b005b34156101a857fe5b6101d4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ff9565b604051808881526020018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200197505050505050505060405180910390f35b341561024c57fe5b610254611068565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561029e57fe5b6102e9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061108e565b005b34156102f357fe5b61031f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115cc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561036957fe5b6103b4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115ff565b005b34156103be57fe5b6103ea600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b82565b005b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104495760006000fd5b84600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156104875760006000fd5b866000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060050160149054906101000a900460ff161515156104ea5760006000fd5b8686868282101515156104fd5760006000fd5b81811015151561050d5760006000fd5b60e0604051908101604052808b81526020018a8152602001898152602001888152602001600081526020018c73ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c08201518160050160146101000a81548160ff0219169083151502179055509050508b73ffffffffffffffffffffffffffffffffffffffff167feabffab667737db1059b7735b91f5924be3f07f24e6374dbb1b9d11668ed89a58c8c8c8c8c604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a25b5b5050505b50505b505b505050505050565b336000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060050160149054906101000a900460ff1615156107455760006000fd5b826000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156107e95760006000fd5b84600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156108275760006000fd5b85600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4fd8411c817c0b524aeeef15446e8327901fcf5b6a31246930dfbe5f8c12235160405180905060405180910390a35b5b505b50505b505050565b600060006000336000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060050160149054906101000a900460ff1615156109765760006000fd5b336000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060010154421115156109cd5760006000fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209650610ac68760e0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a900460ff161515151581525050611c5c565b9550610ad6868860040154611cc6565b94508587600401819055506000851115610c2757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33876000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610bb457fe5b6102c65a03f11515610bc257fe5b505050604051805190501515610bd85760006000fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65866040518082815260200191505060405180910390a25b5b5b50505b5050505050565b6000336000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610cda5760006000fd5b336000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060050160149054906101000a900460ff16151515610d3d5760006000fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209450888560000154141515610d915760006000fd5b878560010154141515610da45760006000fd5b868560020154141515610db75760006000fd5b858560030154141515610dca5760006000fd5b60018560050160146101000a81548160ff021916908315150217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630896000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1515610f0957fe5b6102c65a03f11515610f1757fe5b505050604051805190501515610f2d5760006000fd5b3373ffffffffffffffffffffffffffffffffffffffff167fea82fa2a35ca7f8325d2d09b332a681a74ef8ee132b47febf11e0d6cfbd07b7d8660050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a25b5b50505b50505050505050565b60016020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050160149054906101000a900460ff16905087565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600060006000600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110f35760006000fd5b856000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060050160149054906101000a900460ff1615156111555760006000fd5b86600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156111935760006000fd5b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209650600095506000945086600101544210156111f457866003015494506112cf565b6112ac8760e0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a900460ff161515151581525050611c5c565b93506112bc848860040154611cc6565b95506112cc876003015485611cc6565b94505b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600082016000905560018201600090556002820160009055600382016000905560048201600090556005820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556005820160146101000a81549060ff0219169055505060008614806114625750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8a886000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561144957fe5b6102c65a03f1151561145757fe5b505050604051805190505b151561146e5760006000fd5b600085148061155b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89876000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561154257fe5b6102c65a03f1151561155057fe5b505050604051805190505b15156115675760006000fd5b8873ffffffffffffffffffffffffffffffffffffffff167f5312918bb945e949b32d01afc69cad19c589287f4711f3c39aa84ae39a478f2e8787604051808381526020018281526020019250505060405180910390a25b5b505b50505b505050505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611609611d32565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116665760006000fd5b83600073ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156117035760006000fd5b836000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156117a75760006000fd5b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1694508573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415156118445760006000fd5b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060e0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a900460ff161515151581525050935083600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c08201518160050160146101000a81548160ff021916908315150217905550905050600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600082016000905560018201600090556002820160009055600382016000905560048201600090556005820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556005820160146101000a81549060ff02191690555050600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f3e4882fc047fc5cb92f283c6f3b683c6befb9b02aed687b56407df15640b388560405180905060405180910390a35b5b50505b505b50505050565b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bdf5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611c575780600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b50565b6000600060006000846040015142101515611c7d5784606001519350611cbe565b611c8b428660000151611cc6565b9250611c9f85604001518660000151611cc6565b9150611cb8611cb2848760600151611ce0565b83611d15565b90508093505b505050919050565b6000828211151515611cd457fe5b81830390505b92915050565b6000600082840290506000841480611d025750828482811515611cff57fe5b04145b1515611d0a57fe5b8091505b5092915050565b600060008284811515611d2457fe5b0490508091505b5092915050565b60e0604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250905600a165627a7a723058205075ca9172c7a95c8731702b65656f3faf7424d36ac456971ce52e6901e58e250029000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f498

    Constructor Arguments (ABI-encoded and appended to the ByteCode above)
000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f498

-----Decoded View---------------
Found 1 constructor arguments :
Arg [0] : 000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f498


   Swarm Source:
bzzr://5075ca9172c7a95c8731702b65656f3faf7424d36ac456971ce52e6901e58e25
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.