Contract 0xF4BA4C2AA5BC3C373537EC85F61A02AFDB697106

 
Txn Hash
Block
From
To
Value
0x9b39dd3112af2f9adb1f9794b8f6d5f7a046c31aa7ea2bc7ef8283b3ec4616fd92037382020-01-02 23:20:39424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000862641
0xecc16985ccb1a17aa12d855f586b066d801a63c0a91fac73154daa4a4c0c6b5892037352020-01-02 23:20:31424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000834641
0x795ffac3da8a071947d33f15512f24f082465894209e4a2f8f1700d0992e743b92037312020-01-02 23:19:41424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000961841
0xdbe3c32689e56936e792540951c7362dd39df5c15842dd805ebed9703b1cd09a92037272020-01-02 23:18:40424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000637241
0xa73459ef2134daed2feb3afb3d2c1322782e500f1ff1d272e463a08f6e4c3e7f92037272020-01-02 23:18:40424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000637481
0x4c7065c53153b7e6ab10bb4825ca1917428a93265026a63331a1805062b5d55792037222020-01-02 23:17:41424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000637481
0xc36febb805ec4b00c6003cdfffc60acd9a312712ca09bfa6b1e04a0da2bb76f192036902020-01-02 23:10:31424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0004321128
0x7f550402806cac7a24bde00ccc9ce89c6371c3c1b7ccf7f03f8397fb9b3ae1c392036842020-01-02 23:08:46424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.000372168
0x780eaa24dfe4b02abe990ba9d131622dc4978b0fd2a3b651c2fa4881e83937d592036782020-01-02 23:06:09424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.000402728
0xcc88d25e3d50ccf23051e0b566f99c22197e61e4521c051db7976e83babebef592036622020-01-02 23:03:15424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.000411968
0xd9d60c9073e9b95aa62ed216d7f4cf837c26b10e7ca6b437ec22889b4017228292036532020-01-02 23:01:39424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.000363368
0x1870c1cd042e988deecb12a417a9ff1c7f68b67aac7627b4b773e9c5106f22fe92036432020-01-02 22:59:49424 days 2 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0003604648
0x364abcbe1daf3e9429a82e0f150c6d7c91e655e07c3d4c1f8a8de90e33fb168992036232020-01-02 22:56:19424 days 3 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0011364968
0xdc2a7e5647db21a991e636493f0d009d9255e77f03c1edba7687e3e153340cb292036152020-01-02 22:54:10424 days 3 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0002628488
0x3a2cf138b14d1a570020348369b45258ed039330b471ede56aeddd4deb5ca40f92036072020-01-02 22:52:07424 days 3 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.000098283
0xb37d8b65b0b9397beb9e3cf34b4a0417ef65be7a1a26698fd3d4939cc88c892392035132020-01-02 22:29:22424 days 3 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000461013
0xaab741ac6b30cab5a8a42f9d6d5facbc2b9d4cacc10e5b4d228b9950f6b382da92034582020-01-02 22:16:15424 days 3 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000461013
0x6390700de0df1a3f56f2e9f1fc4fa16da1a33e4a35cd166adbe3c76d9059159991555302019-12-24 11:33:53433 days 14 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0004537910
0x2306e84ddbfab7a853c95e6cb383b5c4917c1001d9067ac15c8077c190c5ed0a91555222019-12-24 11:32:31433 days 14 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0004537910
0xc2e34273b71603ed1378d928be4a9b191bbc1df95949b1c3abfe51e493db1b5491262912019-12-18 15:48:52439 days 10 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0006179412
0xf5ec70d30a28642ae8c26d1f06e4db637e11eb9b31a844e701d976d9c70244d890403612019-12-02 22:15:22455 days 3 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000462453
0x56c2c858f329d347f413ad4fb18ffb7a6c3c06c2f84103253d6566740dc6525290403582019-12-02 22:14:42455 days 3 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000462453
0xfe09f8f5eeb11aa0cbe11ef9c17ab77881cdb2055a9dc4c1967ff4165b1a9eba90403562019-12-02 22:14:34455 days 3 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000462453
0x713a3dd4d2ca241f943ffef745f734b4c46439d29a398d3fc4c28d5a6bc6777290403562019-12-02 22:14:34455 days 3 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000462453
0xb5ae648f383b4f5331355bf6af80eeb968348f60134564591eab34beeaf62dae90403562019-12-02 22:14:34455 days 3 hrs ago0xfb0fce9d94f3f69d419dbf11cf35bed84a501034 IN  0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060 Ether0.0000462453
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xdc2a7e5647db21a991e636493f0d009d9255e77f03c1edba7687e3e153340cb292036152020-01-02 22:54:10424 days 3 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060xfb0fce9d94f3f69d419dbf11cf35bed84a50103437.704384753044671391 Ether
0x3a2cf138b14d1a570020348369b45258ed039330b471ede56aeddd4deb5ca40f92036072020-01-02 22:52:07424 days 3 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060xfb0fce9d94f3f69d419dbf11cf35bed84a50103437 wei
0x0900fb30ea010843e2ae11b9a6e788e58bd9a9a3efb237c69c4fcfff364d99fb91909142019-12-31 12:47:03426 days 13 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060x23f88b1dc47263447842685aee73324c4b629eab2.539844721150448064 Ether
0xa1d5737d3790db6de8a3e33b6a82003fd8f0de7373856a4ff6fde275e3e790e891816022019-12-29 16:09:15428 days 9 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060x630c0690f17abdb3b4727d3ff45db1211aa31a060.488 Ether
0x39b71240e9860bc4f39a039719200e5b4abf646156ae0775405f2fbd7ef14d3391616192019-12-25 16:45:37432 days 9 hrs ago 0x1417371d6165dd012fb320b490fc38cec0f41dd8 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060.3622894058 Ether
0x3e407260dd00a20d2f283b9193303df42f6fc28bf38f9d98cf2aaa747c4f016c91612432019-12-25 15:03:18432 days 10 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060xa93a7294c9807f0d32a9b674781662d75d6326ec0.371171688805202045 Ether
0x6cf5d8313fe39db31eb3d703c542cb4f0c2577e111a9977b3306e9e89faeba9891555432019-12-24 11:37:10433 days 14 hrs ago 0x1417371d6165dd012fb320b490fc38cec0f41dd8 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060.003840098306516647 Ether
0x3a52ede1cdf0dfa2be04d7d15c28a0626905559e0c35edc9484197b3bd27851390825762019-12-10 10:15:14447 days 15 hrs ago 0xf8f01591cdd84df098b224d682d792ea65adeab5 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060.000010151346695746 Ether
0xb3631633ffa9a8477d7eb0e7110752f7cabdb45cd0ba386b51351043b67bb92490824432019-12-10 9:42:25447 days 16 hrs ago 0xf8f01591cdd84df098b224d682d792ea65adeab5 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060.00000676756446383 Ether
0x15a04903ad41151325b715d62ae8ac646685e66eb9b1679bf68c4c187fde25db90771032019-12-09 11:12:57448 days 14 hrs ago 0xf8f01591cdd84df098b224d682d792ea65adeab5 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060.000006623014543244 Ether
0xe2f8147325580931aafb0d2ae2836fa5a5beb31e734e713b8174483c2727268690009482019-11-25 22:39:18462 days 3 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060x652bbfe7d20001d95f5d50d70be0f431e1f4bd1f0.716079654120929919 Ether
0x5030dfaf8df9e0edc3e9ce351a276dec5ce37f4534723d8baf993410ebd82c7490005892019-11-25 21:04:55462 days 4 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060x23f88b1dc47263447842685aee73324c4b629eab9.020285318563307173 Ether
0x88207dad06ff12642c4123ab065845f6c4dd45f0ddc68af90735b592dafc134790005072019-11-25 20:44:28462 days 5 hrs ago 0x1417371d6165dd012fb320b490fc38cec0f41dd8 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060.057 Ether
0x56f0cb732e447c998d19c16c140604e1257e099220a68a86085b3bf3d44c4cd490004812019-11-25 20:38:23462 days 5 hrs ago 0xd0183c90d1dda5357ce349984a51cc24b7d2b78d 0xf4ba4c2aa5bc3c373537ec85f61a02afdb69710650 Ether
0xd23885c755d39db0886ade3fe31e2667eb5930613a4ef3435e46cc12180a705a90001812019-11-25 19:23:29462 days 6 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060x55d2bdf6117e41d65ee2b828a04f67ae485a61d50.361979115046130327 Ether
0x6be78a182e124815db772eaeecbfd7d2f3dd233170e642db3ac5eeab1297f5b690001512019-11-25 19:16:12462 days 6 hrs ago 0x975838481fb911a2306073150b56e7721b764bb2 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060.37 Ether
0xb7cc66c00fd07aed9d4f3f06c9d93192c9cd3130dec69e71a1b7fb557602d52489995862019-11-25 16:49:31462 days 9 hrs ago 0xf5a47bf0a9633df382ba574810e065df12491b50 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060.143 Ether
0xc04cdc6664f9b7391883c1f1613e26e3b259989d39c18d8060e3cd1bebb4abf189987952019-11-25 13:41:48462 days 12 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060xf9073714fb39f9aaeb83ce72e418d8511017210d4.9999999980905 Ether
0xe10fd88a99bba4677d0450048198c87de6c2cd34cb7503b64944699e529781f689986172019-11-25 12:57:34462 days 13 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060x09ec337f82cbdb2c6afd9401802e1d28a86c82711.097265 Ether
0x66715f30b2c23d3e595d2239ab9668178bb02e13f90f23ea87a56bc69251013e89986172019-11-25 12:57:34462 days 13 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060xaa4a052e56018496efa187f379eafb08a9cf69291.032080363353 Ether
0x96dc0af7d1c62501c168c7c6b741993b9f3664f151e76355df4026d90c005b7689985532019-11-25 12:42:53462 days 13 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060x6e7c83d71df40c0daaeecacd141b98eb799c029a0.9802234 Ether
0xb25150b2693a141e91b7752a17ba6ff7e6ea64025fbc7c57f71532663050766b89985022019-11-25 12:31:30462 days 13 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060x3408c2a155388edb3846db8ad4d2b479ade15f1e19.5997526572796 Ether
0xdc0ed711187b75b022ec3b3fba5e4e258ebb95a421ca7018bcf5353b16424d4489984692019-11-25 12:23:14462 days 13 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060x3408c2a155388edb3846db8ad4d2b479ade15f1e18.45264991024 Ether
0x99cb68bebd810e8ebe7906221d79240c11760388c771d18f99fa9978348375ef89984412019-11-25 12:16:25462 days 13 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060x3408c2a155388edb3846db8ad4d2b479ade15f1e17.6221439889508 Ether
0x9b8aa7ec2c53d693a827c0e393405f4e015c863b279ab2f39d0a787d3bb2dc2189983822019-11-25 12:04:04462 days 13 hrs ago 0xf4ba4c2aa5bc3c373537ec85f61a02afdb6971060x1958b4421e2d6df9f554294a7fc572d5f16524a516.7895814492419 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Wallet

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2019-06-03
*/

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

pragma solidity ^0.4.24;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 _a, uint256 _b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (_a == 0) {
      return 0;
    }

    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 _a / _b;
  }

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

// File: contracts/Interfaces/IWallet.sol

pragma solidity ^0.4.24;

/**
 * @title Wallet interface.
 * @dev The interface of the SC that own the assets.
 */
interface IWallet {

  function transferAssetTo(
    address _assetAddress,
    address _to,
    uint _amount
  ) external payable returns (bool);

  function withdrawAsset(
    address _assetAddress,
    uint _amount
  ) external returns (bool);

  function setTokenSwapAllowance (
    address _tokenSwapAddress,
    bool _allowance
  ) external returns(bool);
}

// File: contracts/Interfaces/IBadERC20.sol

pragma solidity ^0.4.24;

/**
 * @title Bad formed ERC20 token interface.
 * @dev The interface of the a bad formed ERC20 token.
 */
interface IBadERC20 {
    function transfer(address to, uint256 value) external;
    function approve(address spender, uint256 value) external;
    function transferFrom(
      address from,
      address to,
      uint256 value
    ) external;

    function totalSupply() external view returns (uint256);

    function balanceOf(
      address who
    ) external view returns (uint256);

    function allowance(
      address owner,
      address spender
    ) external view returns (uint256);

    event Transfer(
      address indexed from,
      address indexed to,
      uint256 value
    );
    event Approval(
      address indexed owner,
      address indexed spender,
      uint256 value
    );
}

// File: contracts/Utils/Ownable.sol

pragma solidity ^0.4.24;

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


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


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

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

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @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 {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0), "_newOwner == 0");
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

// File: contracts/Utils/Destructible.sol

pragma solidity ^0.4.24;


/**
 * @title Destructible
 * @dev Base contract that can be destroyed by owner. All funds in contract will be sent to the owner.
 */
contract Destructible is Ownable {
  /**
   * @dev Transfers the current balance to the owner and terminates the contract.
   */
  function destroy() public onlyOwner {
    selfdestruct(owner);
  }

  function destroyAndSend(address _recipient) public onlyOwner {
    selfdestruct(_recipient);
  }
}

// File: contracts/Utils/SafeTransfer.sol

pragma solidity ^0.4.24;


/**
 * @title SafeTransfer
 * @dev Transfer Bad ERC20 tokens
 */
library SafeTransfer {
/**
   * @dev Wrapping the ERC20 transferFrom function to avoid missing returns.
   * @param _tokenAddress The address of bad formed ERC20 token.
   * @param _from Transfer sender.
   * @param _to Transfer receiver.
   * @param _value Amount to be transfered.
   * @return Success of the safeTransferFrom.
   */

  function _safeTransferFrom(
    address _tokenAddress,
    address _from,
    address _to,
    uint256 _value
  )
    internal
    returns (bool result)
  {
    IBadERC20(_tokenAddress).transferFrom(_from, _to, _value);

    assembly {
      switch returndatasize()
      case 0 {                      // This is our BadToken
        result := not(0)            // result is true
      }
      case 32 {                     // This is our GoodToken
        returndatacopy(0, 0, 32)
        result := mload(0)          // result == returndata of external call
      }
      default {                     // This is not an ERC20 token
        revert(0, 0)
      }
    }
  }

  /**
   * @dev Wrapping the ERC20 transfer function to avoid missing returns.
   * @param _tokenAddress The address of bad formed ERC20 token.
   * @param _to Transfer receiver.
   * @param _amount Amount to be transfered.
   * @return Success of the safeTransfer.
   */
  function _safeTransfer(
    address _tokenAddress,
    address _to,
    uint _amount
  )
    internal
    returns (bool result)
  {
    IBadERC20(_tokenAddress).transfer(_to, _amount);

    assembly {
      switch returndatasize()
      case 0 {                      // This is our BadToken
        result := not(0)            // result is true
      }
      case 32 {                     // This is our GoodToken
        returndatacopy(0, 0, 32)
        result := mload(0)          // result == returndata of external call
      }
      default {                     // This is not an ERC20 token
        revert(0, 0)
      }
    }
  }
}

// File: contracts/Wallet.sol

pragma solidity ^0.4.24;






/**
 * @title Wallet.
 * The wallet that will manage the TokenSwap contract liquidity.
 */
contract Wallet is IWallet, Destructible {
  using SafeMath for uint;

  mapping (address => bool) public isTokenSwapAllowed;

  event LogTransferAssetTo(
    address indexed _assetAddress,
    address indexed _to,
    uint _amount
  );
  event LogWithdrawAsset(
    address indexed _assetAddress,
    address indexed _from,
    uint _amount
  );
  event LogSetTokenSwapAllowance(
    address indexed _tokenSwapAddress,
    bool _allowance
  );

  constructor(address[] memory _tokenSwapContractsAddress) public {
    for (uint i = 0; i < _tokenSwapContractsAddress.length; i++) {
      isTokenSwapAllowed[_tokenSwapContractsAddress[i]] = true;
    }
  }

  /**
   * @dev Throws if called by any TokenSwap not allowed.
   */
  modifier onlyTokenSwapAllowed() {
    require(
      isTokenSwapAllowed[msg.sender],
      "msg.sender is not one of the allowed TokenSwap smart contract"
    );
    _;
  }

  /**
   * @dev Fallback function.
   * So the contract is able to receive ETH.
   */
  function() external payable {}

  /**
   * @dev Transfer an asset from this wallet to a receiver.
   * This function can be call only from allowed TokenSwap smart contracts.
   * @param _assetAddress The asset address.
   * @param _to The asset receiver.
   * @param _amount The amount to be received.
   */
  function transferAssetTo(
    address _assetAddress,
    address _to,
    uint _amount
  )
    external
    payable
    onlyTokenSwapAllowed
    returns (bool)
  {
    require(_to != address(0), "_to == 0");
    if (isETH(_assetAddress)) {
      require(address(this).balance >= _amount, "ETH balance not sufficient");
      _to.transfer(_amount);
    } else {
      require(
        IBadERC20(_assetAddress).balanceOf(address(this)) >= _amount,
        "Token balance not sufficient"
      );
      require(
        SafeTransfer._safeTransfer(
          _assetAddress,
          _to,
          _amount
        ),
        "Token transfer failed"
      );
    }
    emit LogTransferAssetTo(_assetAddress, _to, _amount);
    return true;
  }

  /**
   * @dev Asset withdraw.
   * This function can be call only from the owner of the Wallet smart contract.
   * @param _assetAddress The asset address.
   * @param _amount The amount to be received.
   */
  function withdrawAsset(
    address _assetAddress,
    uint _amount
  )
    external
    onlyOwner
    returns(bool)
  {
    if (isETH(_assetAddress)) {
      require(
        address(this).balance >= _amount,
        "ETH balance not sufficient"
      );
      msg.sender.transfer(_amount);
    } else {
      require(
        IBadERC20(_assetAddress).balanceOf(address(this)) >= _amount,
        "Token balance not sufficient"
      );
      require(
        SafeTransfer._safeTransfer(
          _assetAddress,
          msg.sender,
          _amount
        ),
        "Token transfer failed"
      );
    }
    emit LogWithdrawAsset(_assetAddress, msg.sender, _amount);
    return true;
  }

  /**
   * @dev Add or remove Token Swap allowance.
   * @param _tokenSwapAddress The token swap sc address.
   * @param _allowance The allowance TRUE or FALSE.
   */
  function setTokenSwapAllowance (
    address _tokenSwapAddress,
    bool _allowance
  ) external onlyOwner returns(bool) {
    emit LogSetTokenSwapAllowance(
      _tokenSwapAddress,
      _allowance
    );
    isTokenSwapAllowed[_tokenSwapAddress] = _allowance;
    return true;
  }

  /**
   * @dev Understand if the token is ETH or not.
   * @param _tokenAddress The token address to be checked.
   */
  function isETH(address _tokenAddress)
    public
    pure
    returns (bool)
  {
    return _tokenAddress == 0;
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_assetAddress","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawAsset","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isTokenSwapAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"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":"_tokenSwapAddress","type":"address"},{"name":"_allowance","type":"bool"}],"name":"setTokenSwapAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_assetAddress","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferAssetTo","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"destroyAndSend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenAddress","type":"address"}],"name":"isETH","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"inputs":[{"name":"_tokenSwapContractsAddress","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetAddress","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"LogTransferAssetTo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetAddress","type":"address"},{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"LogWithdrawAsset","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenSwapAddress","type":"address"},{"indexed":false,"name":"_allowance","type":"bool"}],"name":"LogSetTokenSwapAllowance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

608060405234801561001057600080fd5b50604051610cc4380380610cc483398101604052805160008054600160a060020a031916331781559101905b8151811015610092576001806000848481518110151561005857fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff191691151591909117905560010161003c565b5050610c21806100a36000396000f3006080604052600436106100a35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166338e4f06481146100a557806361acdf70146100dd578063715018a6146100fe57806383197ef0146101135780638da5cb5b14610128578063df5c833814610159578063f2fde38b1461017f578063f46e62f0146101a0578063f5074f41146101bd578063f70a2508146101de575b005b3480156100b157600080fd5b506100c9600160a060020a03600435166024356101ff565b604080519115158252519081900360200190f35b3480156100e957600080fd5b506100c9600160a060020a036004351661047a565b34801561010a57600080fd5b506100a361048f565b34801561011f57600080fd5b506100a3610534565b34801561013457600080fd5b5061013d610592565b60408051600160a060020a039092168252519081900360200190f35b34801561016557600080fd5b506100c9600160a060020a036004351660243515156105a1565b34801561018b57600080fd5b506100a3600160a060020a0360043516610663565b6100c9600160a060020a03600435811690602435166044356106bf565b3480156101c957600080fd5b506100a3600160a060020a03600435166109ed565b3480156101ea57600080fd5b506100c9600160a060020a0360043516610a49565b60008054600160a060020a03163314610250576040805160e560020a62461bcd0281526020600482015260146024820152600080516020610bd6833981519152604482015290519081900360640190fd5b61025983610a49565b156102ea5730318211156102b7576040805160e560020a62461bcd02815260206004820152601a60248201527f4554482062616c616e6365206e6f742073756666696369656e74000000000000604482015290519081900360640190fd5b604051339083156108fc029084906000818181858888f193505050501580156102e4573d6000803e3d6000fd5b50610431565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290518391600160a060020a038616916370a08231916024808201926020929091908290030181600087803b15801561034e57600080fd5b505af1158015610362573d6000803e3d6000fd5b505050506040513d602081101561037857600080fd5b505110156103d0576040805160e560020a62461bcd02815260206004820152601c60248201527f546f6b656e2062616c616e6365206e6f742073756666696369656e7400000000604482015290519081900360640190fd5b6103db833384610a56565b1515610431576040805160e560020a62461bcd02815260206004820152601560248201527f546f6b656e207472616e73666572206661696c65640000000000000000000000604482015290519081900360640190fd5b6040805183815290513391600160a060020a038616917f9eee58f2a65397b5d83268766f2ef5bcdae50480bdc3e350b0e0b81732555a399181900360200190a350600192915050565b60016020526000908152604090205460ff1681565b600054600160a060020a031633146104df576040805160e560020a62461bcd0281526020600482015260146024820152600080516020610bd6833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a03163314610584576040805160e560020a62461bcd0281526020600482015260146024820152600080516020610bd6833981519152604482015290519081900360640190fd5b600054600160a060020a0316ff5b600054600160a060020a031681565b60008054600160a060020a031633146105f2576040805160e560020a62461bcd0281526020600482015260146024820152600080516020610bd6833981519152604482015290519081900360640190fd5b6040805183151581529051600160a060020a038516917fbb30081a0ed5b8b57574d10de11d818e723dd006e844f87c9eab2f3ef44f3f3e919081900360200190a250600160a060020a0382166000908152600160208190526040909120805483151560ff1990911617905592915050565b600054600160a060020a031633146106b3576040805160e560020a62461bcd0281526020600482015260146024820152600080516020610bd6833981519152604482015290519081900360640190fd5b6106bc81610b0d565b50565b3360009081526001602052604081205460ff16151561074e576040805160e560020a62461bcd02815260206004820152603d60248201527f6d73672e73656e646572206973206e6f74206f6e65206f662074686520616c6c60448201527f6f77656420546f6b656e5377617020736d61727420636f6e7472616374000000606482015290519081900360840190fd5b600160a060020a03831615156107ae576040805160e560020a62461bcd02815260206004820152600860248201527f5f746f203d3d2030000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6107b784610a49565b15610851573031821115610815576040805160e560020a62461bcd02815260206004820152601a60248201527f4554482062616c616e6365206e6f742073756666696369656e74000000000000604482015290519081900360640190fd5b604051600160a060020a0384169083156108fc029084906000818181858888f1935050505015801561084b573d6000803e3d6000fd5b50610998565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290518391600160a060020a038716916370a08231916024808201926020929091908290030181600087803b1580156108b557600080fd5b505af11580156108c9573d6000803e3d6000fd5b505050506040513d60208110156108df57600080fd5b50511015610937576040805160e560020a62461bcd02815260206004820152601c60248201527f546f6b656e2062616c616e6365206e6f742073756666696369656e7400000000604482015290519081900360640190fd5b610942848484610a56565b1515610998576040805160e560020a62461bcd02815260206004820152601560248201527f546f6b656e207472616e73666572206661696c65640000000000000000000000604482015290519081900360640190fd5b82600160a060020a031684600160a060020a03167fbf74501c3ae032b3e21c87ef8918787f8eabeeb62dc12152070f52fd8d443775846040518082815260200191505060405180910390a35060019392505050565b600054600160a060020a03163314610a3d576040805160e560020a62461bcd0281526020600482015260146024820152600080516020610bd6833981519152604482015290519081900360640190fd5b80600160a060020a0316ff5b600160a060020a03161590565b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015260248201849052915160009286169163a9059cbb916044808301928692919082900301818387803b158015610ac157600080fd5b505af1158015610ad5573d6000803e3d6000fd5b505050503d60008114610aef5760208114610af957600080fd5b6000199150610b05565b60206000803e60005191505b509392505050565b600160a060020a0381161515610b6d576040805160e560020a62461bcd02815260206004820152600e60248201527f5f6e65774f776e6572203d3d2030000000000000000000000000000000000000604482015290519081900360640190fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905556006d73672e73656e646572206e6f74206f776e6572000000000000000000000000a165627a7a72305820d0103a715da00c447ddee1f9a9e340b0c6b5e7379cf6820a7f972c525b05f4fc002900000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------

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


Deployed ByteCode Sourcemap

7623:3791:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9964:725;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9964:725:0;-1:-1:-1;;;;;9964:725:0;;;;;;;;;;;;;;;;;;;;;;;;;7699:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7699:51:0;-1:-1:-1;;;;;7699:51:0;;;;;4064:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4064:114:0;;;;5140:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5140:68:0;;;;3245:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3245:20:0;;;;;;;;-1:-1:-1;;;;;3245:20:0;;;;;;;;;;;;;;10867:293;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10867:293:0;-1:-1:-1;;;;;10867:293:0;;;;;;;;;4346:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4346:105:0;-1:-1:-1;;;;;4346:105:0;;;;;8972:769;;-1:-1:-1;;;;;8972:769:0;;;;;;;;;;;;5214:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5214:98:0;-1:-1:-1;;;;;5214:98:0;;;;;11290:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11290:121:0;-1:-1:-1;;;;;11290:121:0;;;;;9964:725;10081:4;3748:5;;-1:-1:-1;;;;;3748:5:0;3734:10;:19;3726:52;;;;;-1:-1:-1;;;;;3726:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3726:52:0;;;;;;;;;;;;;;;10101:20;10107:13;10101:5;:20::i;:::-;10097:505;;;10158:4;10150:21;:32;-1:-1:-1;10150:32:0;10132:98;;;;;-1:-1:-1;;;;;10132:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10239:28;;:10;;:28;;;;;10259:7;;10239:28;;;;10259:7;10239:10;:28;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10239:28:0;10097:505;;;10308:49;;;;;;10351:4;10308:49;;;;;;10361:7;;-1:-1:-1;;;;;10308:34:0;;;;;:49;;;;;;;;;;;;;;;-1:-1:-1;10308:34:0;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;10308:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10308:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10308:49:0;:60;;10290:128;;;;;-1:-1:-1;;;;;10290:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10445:106;10484:13;10510:10;10533:7;10445:26;:106::i;:::-;10427:167;;;;;;;-1:-1:-1;;;;;10427:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10613:52;;;;;;;;10645:10;;-1:-1:-1;;;;;10613:52:0;;;;;;;;;;;;-1:-1:-1;10679:4:0;9964:725;;;;:::o;7699:51::-;;;;;;;;;;;;;;;:::o;4064:114::-;3748:5;;-1:-1:-1;;;;;3748:5:0;3734:10;:19;3726:52;;;;;-1:-1:-1;;;;;3726:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3726:52:0;;;;;;;;;;;;;;;4141:5;;;4122:25;;-1:-1:-1;;;;;4141:5:0;;;;4122:25;;;4170:1;4154:18;;-1:-1:-1;;4154:18:0;;;4064:114::o;5140:68::-;3748:5;;-1:-1:-1;;;;;3748:5:0;3734:10;:19;3726:52;;;;;-1:-1:-1;;;;;3726:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3726:52:0;;;;;;;;;;;;;;;5196:5;;-1:-1:-1;;;;;5196:5:0;5183:19;3245:20;;;-1:-1:-1;;;;;3245:20:0;;:::o;10867:293::-;10985:4;3748:5;;-1:-1:-1;;;;;3748:5:0;3734:10;:19;3726:52;;;;;-1:-1:-1;;;;;3726:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3726:52:0;;;;;;;;;;;;;;;11003:76;;;;;;;;;;-1:-1:-1;;;;;11003:76:0;;;;;;;;;;;;;-1:-1:-1;;;;;;11086:37:0;;;;;;:18;:37;;;;;;;;:50;;;;;-1:-1:-1;;11086:50:0;;;;;;10867:293;;;;:::o;4346:105::-;3748:5;;-1:-1:-1;;;;;3748:5:0;3734:10;:19;3726:52;;;;;-1:-1:-1;;;;;3726:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3726:52:0;;;;;;;;;;;;;;;4416:29;4435:9;4416:18;:29::i;:::-;4346:105;:::o;8972:769::-;8453:10;9134:4;8434:30;;;:18;:30;;;;;;;;8418:125;;;;;;;-1:-1:-1;;;;;8418:125:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9158:17:0;;;;9150:38;;;;;-1:-1:-1;;;;;9150:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9199:20;9205:13;9199:5;:20::i;:::-;9195:464;;;9246:4;9238:21;:32;-1:-1:-1;9238:32:0;9230:71;;;;;-1:-1:-1;;;;;9230:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9310:21;;-1:-1:-1;;;;;9310:12:0;;;:21;;;;;9323:7;;9310:21;;;;9323:7;9310:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9310:21:0;9195:464;;;9372:49;;;;;;9415:4;9372:49;;;;;;9425:7;;-1:-1:-1;;;;;9372:34:0;;;;;:49;;;;;;;;;;;;;;;-1:-1:-1;9372:34:0;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;9372:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9372:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9372:49:0;:60;;9354:128;;;;;-1:-1:-1;;;;;9354:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9509:99;9548:13;9574:3;9590:7;9509:26;:99::i;:::-;9491:160;;;;;;;-1:-1:-1;;;;;9491:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9704:3;-1:-1:-1;;;;;9670:47:0;9689:13;-1:-1:-1;;;;;9670:47:0;;9709:7;9670:47;;;;;;;;;;;;;;;;;;-1:-1:-1;9731:4:0;8972:769;;;;;:::o;5214:98::-;3748:5;;-1:-1:-1;;;;;3748:5:0;3734:10;:19;3726:52;;;;;-1:-1:-1;;;;;3726:52:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3726:52:0;;;;;;;;;;;;;;;5295:10;-1:-1:-1;;;;;5282:24:0;;11290:121;-1:-1:-1;;;;;11387:18:0;;;11290:121::o;6791:659::-;6935:47;;;;;;-1:-1:-1;;;;;6935:47:0;;;;;;;;;;;;;;;6912:11;;6935:33;;;;;:47;;;;;6912:11;;6935:47;;;;;;;6912:11;6935:33;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;6935:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6935:47:0;;;;7016:16;7045:1;7040:117;;;;7170:2;7165:175;;;;7427:1;7424;7417:12;7040:117;-1:-1:-1;;7113:6:0;-1:-1:-1;7040:117:0;;7165:175;7250:2;7247:1;7244;7229:24;7279:1;7273:8;7263:18;;7009:429;;7000:445;;;;;:::o;4592:193::-;-1:-1:-1;;;;;4663:23:0;;;;4655:50;;;;;-1:-1:-1;;;;;4655:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4738:5;;;4717:38;;-1:-1:-1;;;;;4717:38:0;;;;4738:5;;;4717:38;;;4762:5;:17;;-1:-1:-1;;4762:17:0;-1:-1:-1;;;;;4762:17:0;;;;;;;;;;4592:193::o

Swarm Source

bzzr://d0103a715da00c447ddee1f9a9e340b0c6b5e7379cf6820a7f972c525b05f4fc
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.