Contract 0x0ce80662769f22fd161e5e92cfc82121c835e097

 

TxHash Block Age From To Value [TxFee]
0x50bfe622564cc947be3098d7794bf87831abe5103b01d75b90d47c47e464b65b72405567 hrs 17 mins ago0xa771bd27a03ba3d5102f92832754524d85e626de IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970 Ether0.00050291
0xc455bc0d58d9073706f7c027f80e2a83ee914422ea045f382d1e5318e0b43bea72404877 hrs 42 mins ago0xac0d889b915535f0a6484e7a08b232ac0a86217c IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.01 Ether0.000657531
0xcbd34823fb7b18fefc7c45203bdb6c20e9fffb3dad7c63af06ceb0a579e5072c72338311 day 21 hrs ago0x39237d680cfc6dc3630a61823b6f29121a0e62c1 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.0000001 Ether0.000073059
0x3f10565d033c7f1651e95b76f28153300e9d492b87148b07d96a5a18d607eb5672279993 days 6 hrs ago0xe9c53f7db0c6513f50c534389165d9d9245a88cb IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970 Ether0.0002498605
0x0c25385892f33233356afc06ba6a947431d889f3a3c101e820f19eb76e4261ca72279913 days 6 hrs ago0xe9c53f7db0c6513f50c534389165d9d9245a88cb IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.01 Ether0.0008401785
0xd1887635d37438ac56f9cbae0b52ebb0dfd85ab4085a046bfb465f3a31e4d66472264493 days 15 hrs ago0xafbaf132e587d67125a224b947133cb942e6e312 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.001 Ether0.000584472
0xb5e93b8ef084379fd8afa172525e892fdf2e0ce0b27157ad60bed5087ec7444d72250793 days 23 hrs ago0xa771bd27a03ba3d5102f92832754524d85e626de IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970 Ether0.000082938
0x4f666b49d86ab72b295e354c4eedcb0115ceea4fd24baabddb928a75b35a04ba72250763 days 23 hrs ago0xfa6863a6507c94ed52e9276f8a72479924e77a36 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.01 Ether0.000219177
0xe56177dbf90332d35e0a2370bd1e03e5f67ffd53e26a033c52d1f80969ca7ad872206055 days 1 hr ago0xa771bd27a03ba3d5102f92832754524d85e626de IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970 Ether0.000082938
0x745cfb6a22d83c0a959830b4dab5a149f331e566ed3e887b771b6434158dca6972205655 days 1 hr ago0x8b5161c2034bb7daf517f2336c02da5aaff38233 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.004 Ether0.000511413
0x302de2234878ec1f01e1a4c66d6986819551adaa320c9fb997fb2d2525339be772166716 days 2 mins ago0xa771bd27a03ba3d5102f92832754524d85e626de IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970 Ether0.000055292
0x7a5a430610f3101e318f044055e6dba9e6c8d51f79b5b3861152068aa61afea772145866 days 11 hrs ago0xc0ea044ee6d41bdfe780bcb53df9589fe7520269 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.002 Ether0.000840178518
0x901c8d6536caa087c825dc9c37aacdea06baa1c285d9f71391fe5b1d39b8236972120947 days 2 hrs ago0xa771bd27a03ba3d5102f92832754524d85e626de IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970 Ether0.00013823
0x729e9bdac588e1a225093576b6152f8aa9d6e1a84e3d41693bf29d17ff5d43cb72120577 days 2 hrs ago0xfc7bd09fdf9671a4c6722ad67bb30f562ca52f01 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.01 Ether0.000146118
0x44101129b4fff641cac38dfcc34974c4d6e99d31b9b007f722da9b8dd5bd6d0572005509 days 19 hrs ago0xa771bd27a03ba3d5102f92832754524d85e626de IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970 Ether0.000150873
0x278a4ffeca7c015528bbd8c0d69081bb31956ae51913950292bd8c7d171011e172004079 days 20 hrs ago0xa771bd27a03ba3d5102f92832754524d85e626de IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970 Ether0.000201164
0xdaa85591fd0c1b91acfd72cb4a31159c98b1e693ce6224b9d826574eed55613372004009 days 20 hrs ago0xe9489acaddea9f076c8babad6f9cb89390289453 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.0021 Ether0.000219177
0x7ebe4aed424eb7aea7b59e384308c354d4c3f83b86c69fe49d5cbcc298ed11b472003919 days 20 hrs ago0xe9489acaddea9f076c8babad6f9cb89390289453 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.0021 Ether0.000218985
0x2e37be110be5941db0bf40cec6f1c9d01397395529f4c6076880850899689b0772003869 days 20 hrs ago0xe9489acaddea9f076c8babad6f9cb89390289453 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.0021 Ether0.000292236
0x349385046240d41fb4336e88f8c8371ac5617701bde067a48fce2f422fe55b6872001719 days 21 hrs ago0xe9489acaddea9f076c8babad6f9cb89390289453 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.0042 Ether0.000146118
0x58419774b6071b0355f49ce60ad0c7685c88fa0442e2a6590eb3d2c91478610c72001529 days 21 hrs ago0xa771bd27a03ba3d5102f92832754524d85e626de IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970 Ether0.000110584
0x667eb9e23695045c3820e4cb2119ec9124c4e98fd0d9b9510312644ea378cd7772001479 days 21 hrs ago0xe9489acaddea9f076c8babad6f9cb89390289453 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.0084 Ether0.000292236
0x2e793185f538363ec76212c66da6b76c8553a6a4fba6c6ea776cca92ed34faa172000369 days 22 hrs ago0xa771bd27a03ba3d5102f92832754524d85e626de IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970 Ether0.00015338755
0xe7cf6146994bfcee52af5b83e0643fcd8c85e5e97affca31659dba1fcd94c30f72000329 days 22 hrs ago0xe9489acaddea9f076c8babad6f9cb89390289453 IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.0021 Ether0.000219177
0x9e49631d938af545cf84c111fd6d0527c42b47a07e84b4d5b1ae0d4549f5f825719570810 days 19 hrs ago0xc1684452b9e03e97134a6fab92d708f10a8752ee IN  0x0ce80662769f22fd161e5e92cfc82121c835e0970.00001 Ether0.0001607298
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x50bfe622564cc947be3098d7794bf87831abe5103b01d75b90d47c47e464b65b72405567 hrs 17 mins ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xd6e3076a1d37902fb3856a7cb30c18a9f9ecdabc0.01 Ether
0x3f10565d033c7f1651e95b76f28153300e9d492b87148b07d96a5a18d607eb5672279993 days 6 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xe9c53f7db0c6513f50c534389165d9d9245a88cb0.01 Ether
0xb5e93b8ef084379fd8afa172525e892fdf2e0ce0b27157ad60bed5087ec7444d72250793 days 23 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xfa6863a6507c94ed52e9276f8a72479924e77a360.01 Ether
0xe56177dbf90332d35e0a2370bd1e03e5f67ffd53e26a033c52d1f80969ca7ad872206055 days 1 hr ago0x0ce80662769f22fd161e5e92cfc82121c835e0970x8b5161c2034bb7daf517f2336c02da5aaff382330.004 Ether
0x302de2234878ec1f01e1a4c66d6986819551adaa320c9fb997fb2d2525339be772166716 days 2 mins ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xc0ea044ee6d41bdfe780bcb53df9589fe75202690.002 Ether
0x901c8d6536caa087c825dc9c37aacdea06baa1c285d9f71391fe5b1d39b8236972120947 days 2 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xfc7bd09fdf9671a4c6722ad67bb30f562ca52f010.01 Ether
0x44101129b4fff641cac38dfcc34974c4d6e99d31b9b007f722da9b8dd5bd6d0572005509 days 19 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970x6ab4fa05a837235bfd30396ae3fcfbc7018c0d9d0.0021 Ether
0x278a4ffeca7c015528bbd8c0d69081bb31956ae51913950292bd8c7d171011e172004079 days 20 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970x7a3ee380c0b35c24d964980e07afead3d0b2a7910.0021 Ether
0x58419774b6071b0355f49ce60ad0c7685c88fa0442e2a6590eb3d2c91478610c72001529 days 21 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970x1e71da466d5cc533f0435a0af7292405894364490.0084 Ether
0x2e793185f538363ec76212c66da6b76c8553a6a4fba6c6ea776cca92ed34faa172000369 days 22 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xd3bddcc81fd55ee0e5b034010210da97d62ae62b0.0021 Ether
0x8b5e6605bc1399ed84adbe30db7018fbffbac7e24f9b7f5b08a82aa308f861be717959314 days 2 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xa7f9a5bb5083b157e1f2050e671ecd1b50d4c83e0.0028 Ether
0x4c620c56d905530d18265166b216405c71b10713f7508638a44e2802a8785822717957814 days 2 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970x9350ff7cabbd2d650281c601fd723dab4182e90b0.0023 Ether
0xf559a1068c1b73dbee65d0a59970a088fbfa78d399f7186ca70ac4afda0786a8717675114 days 15 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970x9aecdaacdc9e05544a00ebcdd50ff3b3b9ecc7840.001 Ether
0xeb57088a125e8f3af5a3c537d6c08c28b4a7607bac3cca82abdda7a009193f06717523114 days 23 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xa7f9a5bb5083b157e1f2050e671ecd1b50d4c83e0.0023 Ether
0x7a837ae7b087a62a2e14a1110e9c900fe1d3780ac4c73914f61e35659a8baaaf717514414 days 23 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xbe54f5183cb688c4c7f07bb31715934f685fad020.019 Ether
0xd96698d75f5a2bbb58a813deeea0d7907f9c3bcdfe78fb8d6fb6dc24c3fac6b7717504715 days 19 mins ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xb20b860919e4ef3ca8989cd23a0ff61c71e0d2d70.0093 Ether
0x56fd34ca84423abb28c418739d89a95bcfa0e9d5434fee188b605a94369b7039717369315 days 6 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xa4f2374b56badd4516dcca20a81c8a8b678f33ea0.001 Ether
0xccaddd6f6801153e4e943cdf9056cf193135263fc8356730751ce40a1b227876716397217 days 6 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xa4f2374b56badd4516dcca20a81c8a8b678f33ea0.0001 Ether
0x32fd0837a77d511381b64340fcb60600f2d2ed6fd3e366c6a370641476f7955b715423619 days 5 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970x5cecd7be935f6972f0955f1ffbd696e44b56835c0.002 Ether
0x6c339a1af46262d9a4857a21b677032d219f57f904d4e1634dc555ebb1527cc8715178619 days 18 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970x257ea6e6f84a570ef128c65a73940877e24d9e8a0.01 Ether
0x66965633b1c2e0fcc36edb39381559aa5ba44e8fdea9a05a20c939b04c43b874714778520 days 13 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970x546e1fdbe7776728103cc7b47ba1c542682f08ae0.001 Ether
0xc7e31675e485a169c8ce948367818ae406f60b4266223094253e18bc4ebabf2c714362621 days 9 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xbe58cf0a92be143fd60bb7df7bf863a14804268a0.001 Ether
0x7e828a37433f7761d67954aac1c77562d79cf84795336d44fa1e6cba178cd720713106323 days 22 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xe3d60b38d5e5c2d8502dff55ca03b8e35174403d0.00001 Ether
0x3cf91eb9f708036179ec4bd450de8117ff82ba5795129f3137c406d759537a07712710424 days 17 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970xd5143c3909c4660c2ff053b48a98681553a5622f0.001 Ether
0xb387e99d16c09371a1eb3a93d8ed9c0e9c1ff1d40a5b6463cbb8688f24d2c081708650532 days 11 hrs ago0x0ce80662769f22fd161e5e92cfc82121c835e0970x9becbae1e2ea1592d4d2d3173a0a560fc5e2b7c90.01 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: e2pEscrow
Compiler Version: v0.4.23+commit.124ca40d
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
pragma solidity 0.4.23;

/*
 * 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;

  constructor() public {
    owner = msg.sender;
  }

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

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() public onlyOwner whenNotPaused {
    paused = true;
    emit Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() public onlyOwner whenPaused {
    paused = false;
    emit Unpause();
  }
}

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

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

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

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

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

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

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

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


/**
 * @title Stoppable
 * @dev Base contract which allows children to implement final irreversible stop mechanism.
 */
contract Stoppable is Pausable {
  event Stop();

  bool public stopped = false;


  /**
   * @dev Modifier to make a function callable only when the contract is not stopped.
   */
  modifier whenNotStopped() {
    require(!stopped);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is stopped.
   */
  modifier whenStopped() {
    require(stopped);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function stop() public onlyOwner whenNotStopped {
    stopped = true;
    emit Stop();
  }
}


/**
 * @title Eth2Phone Escrow Contract
 * @dev Contract allows to send ether through verifier (owner of contract).
 * 
 * Only verifier can initiate withdrawal to recipient's address. 
 * Verifier cannot choose recipient's address without 
 * transit private key generated by sender. 
 * 
 * Sender is responsible to provide transit private key
 * to recipient off-chain.
 * 
 * Recepient signs address to receive with transit private key and 
 * provides signed address to verification server. 
 * (See VerifyTransferSignature method for details.)
 * 
 * Verifier verifies off-chain the recipient in accordance with verification 
 * conditions (e.g., phone ownership via SMS authentication) and initiates
 * withdrawal to the address provided by recipient.
 * (See withdraw method for details.)
 * 
 * Verifier charges commission for it's services.
 * 
 * Sender is able to cancel transfer if it's not yet cancelled or withdrawn
 * by recipient.
 * (See cancelTransfer method for details.)
 */
contract e2pEscrow is Stoppable, SafeMath {

  // fixed amount of wei accrued to verifier with each transfer
  uint public commissionFee;

  // verifier can withdraw this amount from smart-contract
  uint public commissionToWithdraw; // in wei

  // verifier's address
  address public verifier;
    
  /*
   * EVENTS
   */
  event LogDeposit(
		   address indexed sender,
		   address indexed transitAddress,
		   uint amount,
		      uint commission
		   );

  event LogCancel(
		  address indexed sender,
		  address indexed transitAddress
		  );

  event LogWithdraw(
		    address indexed sender,
		    address indexed transitAddress,
		    address indexed recipient,
		    uint amount
		    );

  event LogWithdrawCommission(uint commissionAmount);

  event LogChangeFixedCommissionFee(
				    uint oldCommissionFee,
				    uint newCommissionFee
				    );
  
  event LogChangeVerifier(
			  address oldVerifier,
			  address newVerifier
			  );  
  
  struct Transfer {
    address from;
    uint amount; // in wei
  }

  // Mappings of transitAddress => Transfer Struct
  mapping (address => Transfer) transferDct;


  /**
   * @dev Contructor that sets msg.sender as owner (verifier) in Ownable
   * and sets verifier's fixed commission fee.
   * @param _commissionFee uint Verifier's fixed commission for each transfer
   */
  constructor(uint _commissionFee, address _verifier) public {
    commissionFee = _commissionFee;
    verifier = _verifier;
  }


  modifier onlyVerifier() {
    require(msg.sender == verifier);
    _;
  }
  
  /**
   * @dev Deposit ether to smart-contract and create transfer.
   * Transit address is assigned to transfer by sender. 
   * Recipient should sign withrawal address with the transit private key 
   * 
   * @param _transitAddress transit address assigned to transfer.
   * @return True if success.
   */
  function deposit(address _transitAddress)
                            public
                            whenNotPaused
                            whenNotStopped
                            payable
    returns(bool)
  {
    // can not override existing transfer
    require(transferDct[_transitAddress].amount == 0);

    require(msg.value > commissionFee);

    // saving transfer details
    transferDct[_transitAddress] = Transfer(
					    msg.sender,
					    safeSub(msg.value, commissionFee)//amount = msg.value - comission
					    );

    // accrue verifier's commission
    commissionToWithdraw = safeAdd(commissionToWithdraw, commissionFee);

    // log deposit event
    emit LogDeposit(msg.sender, _transitAddress, msg.value, commissionFee);
    return true;
  }

  /**
   * @dev Change verifier's fixed commission fee.
   * Only owner can change commision fee.
   * 
   * @param _newCommissionFee uint New verifier's fixed commission
   * @return True if success.
   */
  function changeFixedCommissionFee(uint _newCommissionFee)
                          public
                          whenNotPaused
                          whenNotStopped
                          onlyOwner
    returns(bool success)
  {
    uint oldCommissionFee = commissionFee;
    commissionFee = _newCommissionFee;
    emit LogChangeFixedCommissionFee(oldCommissionFee, commissionFee);
    return true;
  }

  
  /**
   * @dev Change verifier's address.
   * Only owner can change verifier's address.
   * 
   * @param _newVerifier address New verifier's address
   * @return True if success.
   */
  function changeVerifier(address _newVerifier)
                          public
                          whenNotPaused
                          whenNotStopped
                          onlyOwner
    returns(bool success)
  {
    address oldVerifier = verifier;
    verifier = _newVerifier;
    emit LogChangeVerifier(oldVerifier, verifier);
    return true;
  }

  
  /**
   * @dev Transfer accrued commission to verifier's address.
   * @return True if success.
   */
  function withdrawCommission()
                        public
                        whenNotPaused
    returns(bool success)
  {
    uint commissionToTransfer = commissionToWithdraw;
    commissionToWithdraw = 0;
    owner.transfer(commissionToTransfer); // owner is verifier

    emit LogWithdrawCommission(commissionToTransfer);
    return true;
  }

  /**
   * @dev Get transfer details.
   * @param _transitAddress transit address assigned to transfer
   * @return Transfer details (id, sender, amount)
   */
  function getTransfer(address _transitAddress)
            public
            constant
    returns (
	     address id,
	     address from, // transfer sender
	     uint amount) // in wei
  {
    Transfer memory transfer = transferDct[_transitAddress];
    return (
	    _transitAddress,
	    transfer.from,
	        transfer.amount
	    );
  }


  /**
   * @dev Cancel transfer and get sent ether back. Only transfer sender can
   * cancel transfer.
   * @param _transitAddress transit address assigned to transfer
   * @return True if success.
   */
  function cancelTransfer(address _transitAddress) public returns (bool success) {
    Transfer memory transferOrder = transferDct[_transitAddress];

    // only sender can cancel transfer;
    require(msg.sender == transferOrder.from);

    delete transferDct[_transitAddress];
    
    // transfer ether to recipient's address
    msg.sender.transfer(transferOrder.amount);

    // log cancel event
    emit LogCancel(msg.sender, _transitAddress);
    
    return true;
  }

  /**
   * @dev Verify that address is signed with correct verification private key.
   * @param _transitAddress transit address assigned to transfer
   * @param _recipient address Signed address.
   * @param _v ECDSA signature parameter v.
   * @param _r ECDSA signature parameters r.
   * @param _s ECDSA signature parameters s.
   * @return True if signature is correct.
   */
  function verifySignature(
			   address _transitAddress,
			   address _recipient,
			   uint8 _v,
			   bytes32 _r,
			   bytes32 _s)
    public pure returns(bool success)
  {
    bytes32 prefixedHash = keccak256("\x19Ethereum Signed Message:\n32", _recipient);
    address retAddr = ecrecover(prefixedHash, _v, _r, _s);
    return retAddr == _transitAddress;
  }

  /**
   * @dev Verify that address is signed with correct private key for
   * verification public key assigned to transfer.
   * @param _transitAddress transit address assigned to transfer
   * @param _recipient address Signed address.
   * @param _v ECDSA signature parameter v.
   * @param _r ECDSA signature parameters r.
   * @param _s ECDSA signature parameters s.
   * @return True if signature is correct.
   */
  function verifyTransferSignature(
				   address _transitAddress,
				   address _recipient,
				   uint8 _v,
				   bytes32 _r,
				   bytes32 _s)
    public pure returns(bool success)
  {
    return (verifySignature(_transitAddress,
			    _recipient, _v, _r, _s));
  }

  /**
   * @dev Withdraw transfer to recipient's address if it is correctly signed
   * with private key for verification public key assigned to transfer.
   * 
   * @param _transitAddress transit address assigned to transfer
   * @param _recipient address Signed address.
   * @param _v ECDSA signature parameter v.
   * @param _r ECDSA signature parameters r.
   * @param _s ECDSA signature parameters s.
   * @return True if success.
   */
  function withdraw(
		    address _transitAddress,
		    address _recipient,
		    uint8 _v,
		    bytes32 _r,
		    bytes32 _s
		    )
    public
    onlyVerifier // only through verifier can withdraw transfer;
    whenNotPaused
    whenNotStopped
    returns (bool success)
  {
    Transfer memory transferOrder = transferDct[_transitAddress];

    // verifying signature
    require(verifySignature(_transitAddress,
		     _recipient, _v, _r, _s ));

    delete transferDct[_transitAddress];

    // transfer ether to recipient's address
    _recipient.transfer(transferOrder.amount);

    // log withdraw event
    emit LogWithdraw(transferOrder.from, _transitAddress, _recipient, transferOrder.amount);

    return true;
  }

  // fallback function - do not receive ether by default
  function() public payable {
    revert();
  }
}

Contract ABI
[{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"commissionToWithdraw","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"verifier","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_transitAddress","type":"address"},{"name":"_recipient","type":"address"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"verifySignature","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"withdrawCommission","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_transitAddress","type":"address"},{"name":"_recipient","type":"address"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"verifyTransferSignature","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"commissionFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newCommissionFee","type":"uint256"}],"name":"changeFixedCommissionFee","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_transitAddress","type":"address"},{"name":"_recipient","type":"address"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"withdraw","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_transitAddress","type":"address"}],"name":"cancelTransfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newVerifier","type":"address"}],"name":"changeVerifier","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_transitAddress","type":"address"}],"name":"getTransfer","outputs":[{"name":"id","type":"address"},{"name":"from","type":"address"},{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_transitAddress","type":"address"}],"name":"deposit","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[{"name":"_commissionFee","type":"uint256"},{"name":"_verifier","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transitAddress","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"commission","type":"uint256"}],"name":"LogDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transitAddress","type":"address"}],"name":"LogCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transitAddress","type":"address"},{"indexed":true,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"commissionAmount","type":"uint256"}],"name":"LogWithdrawCommission","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldCommissionFee","type":"uint256"},{"indexed":false,"name":"newCommissionFee","type":"uint256"}],"name":"LogChangeFixedCommissionFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldVerifier","type":"address"},{"indexed":false,"name":"newVerifier","type":"address"}],"name":"LogChangeVerifier","type":"event"},{"anonymous":false,"inputs":[],"name":"Stop","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]

Contract Creation Code
608060405260008060146101000a81548160ff02191690831515021790555060008060156101000a81548160ff02191690831515021790555034801561004457600080fd5b5060405160408061177d8339810180604052810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160018190555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506116738061010a6000396000f3006080604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806307da68f5146101015780630ee2b0e6146101185780632b7ac3f3146101435780633dabb0f61461019a5780633e25e8371461023e5780633f4ba83a1461026d5780635ac3835d146102845780635c975abb146103285780636fb1eb0c146103575780637297be7f1461038257806375f12b21146103c75780638456cb59146103f65780638bdc5a5f1461040d5780638da5cb5b146104b1578063a7c1e62914610508578063cf04fb9414610563578063db0d5175146105be578063f340fa011461067b575b600080fd5b34801561010d57600080fd5b506101166106c9565b005b34801561012457600080fd5b5061012d610789565b6040518082815260200191505060405180910390f35b34801561014f57600080fd5b5061015861078f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a657600080fd5b50610224600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291905050506107b5565b604051808215151515815260200191505060405180910390f35b34801561024a57600080fd5b506102536108f4565b604051808215151515815260200191505060405180910390f35b34801561027957600080fd5b506102826109c7565b005b34801561029057600080fd5b5061030e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050610a85565b604051808215151515815260200191505060405180910390f35b34801561033457600080fd5b5061033d610a9f565b604051808215151515815260200191505060405180910390f35b34801561036357600080fd5b5061036c610ab2565b6040518082815260200191505060405180910390f35b34801561038e57600080fd5b506103ad60048036038101908080359060200190929190505050610ab8565b604051808215151515815260200191505060405180910390f35b3480156103d357600080fd5b506103dc610ba5565b604051808215151515815260200191505060405180910390f35b34801561040257600080fd5b5061040b610bb8565b005b34801561041957600080fd5b50610497600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050610c78565b604051808215151515815260200191505060405180910390f35b3480156104bd57600080fd5b506104c6610f28565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561051457600080fd5b50610549600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f4d565b604051808215151515815260200191505060405180910390f35b34801561056f57600080fd5b506105a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611161565b604051808215151515815260200191505060405180910390f35b3480156105ca57600080fd5b506105ff600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061131f565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390f35b6106af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113f1565b604051808215151515815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561072457600080fd5b600060159054906101000a900460ff1615151561074057600080fd5b6001600060156101000a81548160ff0219169083151502179055507fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b60405160405180910390a1565b60025481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008660405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390209150600182878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156108ac573d6000803e3d6000fd5b5050506020604051035190508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16149250505095945050505050565b600080600060149054906101000a900460ff1615151561091357600080fd5b600254905060006002819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610987573d6000803e3d6000fd5b507f3edf228d54016de2c57c145318c98467681be853eb40b70bc72ffd795550aa26816040518082815260200191505060405180910390a1600191505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a2257600080fd5b600060149054906101000a900460ff161515610a3d57600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b6000610a9486868686866107b5565b905095945050505050565b600060149054906101000a900460ff1681565b60015481565b600080600060149054906101000a900460ff16151515610ad757600080fd5b600060159054906101000a900460ff16151515610af357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b4e57600080fd5b6001549050826001819055507f9f43d788b36e7b67ff4c6a52197dfb4a40cce888efd52a5a7240c1276c85adbf81600154604051808381526020018281526020019250505060405180910390a16001915050919050565b600060159054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c1357600080fd5b600060149054906101000a900460ff16151515610c2f57600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000610c82611617565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cde57600080fd5b600060149054906101000a900460ff16151515610cfa57600080fd5b600060159054906101000a900460ff16151515610d1657600080fd5b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040805190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815250509050610dcf87878787876107b5565b1515610dda57600080fd5b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905550508573ffffffffffffffffffffffffffffffffffffffff166108fc82602001519081150290604051600060405180830381858888f19350505050158015610e95573d6000803e3d6000fd5b508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff167faa5b60cdfa493767441e10be5daea291b831cb9faa638ebf160d434588d7ecbd84602001516040518082815260200191505060405180910390a4600191505095945050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f57611617565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040805190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815250509050806000015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561104157600080fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905550503373ffffffffffffffffffffffffffffffffffffffff166108fc82602001519081150290604051600060405180830381858888f193505050501580156110fc573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fbadeab042d3a4137cdc34a05ee0e698eb9bb91cea276c79d4c8cafeeee302a3760405160405180910390a36001915050919050565b600080600060149054906101000a900460ff1615151561118057600080fd5b600060159054906101000a900460ff1615151561119c57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111f757600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507e23b4b8d3b24bb4e63a4d72a2a8012e5134c4b51c84fa61ae55749793c6418381600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a16001915050919050565b600080600061132c611617565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040805190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152505090508481600001518260200151935093509350509193909250565b60008060149054906101000a900460ff1615151561140e57600080fd5b600060159054906101000a900460ff1615151561142a57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015414151561147b57600080fd5b6001543411151561148b57600080fd5b60408051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016114be346001546115e0565b815250600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506115626002546001546115f9565b6002819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4e3e4894f24a7c50bcb21d1ef785e34688bee05663c55d822eed7cefc253312334600154604051808381526020018281526020019250505060405180910390a360019050919050565b60008282111515156115ee57fe5b818303905092915050565b600080828401905083811015151561160d57fe5b8091505092915050565b6040805190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815250905600a165627a7a72305820b09d845a1ccae545a3d2818772a714c6c0412e02e25a6b1003658ab8369970f60029000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000000000000000000


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

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000002386f26fc10000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


   Swarm Source:
bzzr://b09d845a1ccae545a3d2818772a714c6c0412e02e25a6b1003658ab8369970f6
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.