ETH Price: $2,064.64 (-3.45%)

Contract

0x8155A9E3Cbff8e659A2E4B78Cddb0cfcDb6b69B2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x0183b04d...9D0c08B79
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
etherForwarder

Compiler Version
v0.5.11+commit.c082d0b4

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-06-29
*/

pragma solidity 0.5.11;

contract ERC20Interface {
  function transfer(address _to, uint256 _value) public returns (bool success);
  function balanceOf(address _owner) public view returns (uint256 balance);
}

interface BadERC20 {
  function transfer(address to, uint value) external;
}


contract etherForwarder {

  address payable public ownerAddress;
  address payable public trezorAddress;
  
  
  constructor(address payable _trezorAddress) public {
    ownerAddress = msg.sender;
    trezorAddress = _trezorAddress;
  }

  modifier onlyOwner {

    if (msg.sender != ownerAddress) {
      revert();
    }

    _;

  }
  
  modifier onlyTrezorOwner {

    if (msg.sender != trezorAddress) {
      revert();
    }

    _;

  }


  function() external payable {

    if(!trezorAddress.send(msg.value)){
      revert();
    }
  }
  
  function changeOwner(address payable newOwnerAddress) external onlyTrezorOwner {
      trezorAddress = newOwnerAddress;
  }

  function transferTokens(address tokenContractAddress) external onlyOwner {

    ERC20Interface instance = ERC20Interface(tokenContractAddress);
    address forwarderAddress = address(this);
    uint256 forwarderBalance = instance.balanceOf(forwarderAddress);

    if (forwarderBalance == 0) {
      return;
    }
    
    if(!safeTransfer(tokenContractAddress,forwarderBalance)){
        revert();
    }

    //if (!instance.transfer(trezorAddress, forwarderBalance)) {
    //  revert();
    //}

  }

  function withdrawEther() public {

    uint256 balance = address(this).balance;

    if(!trezorAddress.send(balance)){
        revert();
    }

  }
  
  function safeTransfer(address token,  uint value) public returns (bool result) {
        
        BadERC20(token).transfer(trezorAddress,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) 
                }
        }
    require(result);                          // revert() if result is false
    }

}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"internalType":"address","name":"tokenContractAddress","type":"address"}],"name":"transferTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"safeTransfer","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"trezorAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"newOwnerAddress","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_trezorAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

0x608060405234801561001057600080fd5b5060405161074d38038061074d8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610678806100d56000396000f3fe6080604052600436106100555760003560e01c80630c89a0df146100b7578063423f6cef146101085780637362377b1461017b5780638926a976146101925780638f84aa09146101e9578063a6f9dae114610240575b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050506100b557600080fd5b005b3480156100c357600080fd5b50610106600480360360208110156100da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610291565b005b34801561011457600080fd5b506101616004803603604081101561012b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103db565b604051808215151515815260200191505060405180910390f35b34801561018757600080fd5b506101906104db565b005b34801561019e57600080fd5b506101a761055a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f557600080fd5b506101fe610580565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561024c57600080fd5b5061028f6004803603602081101561026357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105a5565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102ea57600080fd5b6000819050600030905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561037357600080fd5b505afa158015610387573d6000803e3d6000fd5b505050506040513d602081101561039d57600080fd5b8101908080519060200190929190505050905060008114156103c1575050506103d8565b6103cb84826103db565b6103d457600080fd5b5050505b50565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561048657600080fd5b505af115801561049a573d6000803e3d6000fd5b505050503d600081146104b457602081146104be57600080fd5b60001991506104ca565b60206000803e60005191505b50806104d557600080fd5b92915050565b60003073ffffffffffffffffffffffffffffffffffffffff16319050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505061055757600080fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ff57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea265627a7a7231582014aa0f587f76c325951fb03fcdb3ebd7b0e08bf066b4e87644e9cb9ad30444e364736f6c634300050b00320000000000000000000000005640c59f1a4acc7961f667e6dca80d2ca2c661d5

Deployed Bytecode

0x6080604052600436106100555760003560e01c80630c89a0df146100b7578063423f6cef146101085780637362377b1461017b5780638926a976146101925780638f84aa09146101e9578063a6f9dae114610240575b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050506100b557600080fd5b005b3480156100c357600080fd5b50610106600480360360208110156100da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610291565b005b34801561011457600080fd5b506101616004803603604081101561012b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506103db565b604051808215151515815260200191505060405180910390f35b34801561018757600080fd5b506101906104db565b005b34801561019e57600080fd5b506101a761055a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f557600080fd5b506101fe610580565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561024c57600080fd5b5061028f6004803603602081101561026357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105a5565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102ea57600080fd5b6000819050600030905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561037357600080fd5b505afa158015610387573d6000803e3d6000fd5b505050506040513d602081101561039d57600080fd5b8101908080519060200190929190505050905060008114156103c1575050506103d8565b6103cb84826103db565b6103d457600080fd5b5050505b50565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561048657600080fd5b505af115801561049a573d6000803e3d6000fd5b505050503d600081146104b457602081146104be57600080fd5b60001991506104ca565b60206000803e60005191505b50806104d557600080fd5b92915050565b60003073ffffffffffffffffffffffffffffffffffffffff16319050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505061055757600080fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ff57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea265627a7a7231582014aa0f587f76c325951fb03fcdb3ebd7b0e08bf066b4e87644e9cb9ad30444e364736f6c634300050b0032

Deployed Bytecode Sourcemap

301:2227:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;821:13;;;;;;;;;;;:18;;:29;840:9;821:29;;;;;;;;;;;;;;;;;;;;;;;817:59;;860:8;;;817:59;301:2227;1020:518;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1020:518:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1020:518:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1707:816;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1707:816:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1707:816:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1544:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1544:155:0;;;:::i;:::-;;372:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;332:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;332:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;889:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;889:125:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;889:125:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1020:518;599:12;;;;;;;;;;;585:26;;:10;:26;;;581:57;;622:8;;;581:57;1102:23;1143:20;1102:62;;1171:24;1206:4;1171:40;;1218:24;1245:8;:18;;;1264:16;1245:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1245:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1245:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1245:36:0;;;;;;;;;;;;;;;;1218:63;;1314:1;1294:16;:21;1290:50;;;1326:7;;;;;1290:50;1356:51;1369:20;1390:16;1356:12;:51::i;:::-;1352:83;;1419:8;;;1352:83;646:1;;;;1020:518;:::o;1707:816::-;1773:11;1816:5;1807:24;;;1832:13;;;;;;;;;;;1846:5;1807:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1807:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1807:45:0;;;;1896:16;1938:1;1933:137;;;;2093:2;2088:208;;;;2405:1;2402;2395:12;1933:137;2022:1;2018:6;2008:16;;1933:137;;2088:208;2185:2;2182:1;2179;2164:24;2227:1;2221:8;2211:18;;1889:538;;2452:6;2444:15;;;;;;1707:816;;;;:::o;1544:155::-;1585:15;1611:4;1603:21;;;1585:39;;1637:13;;;;;;;;;;;:18;;:27;1656:7;1637:27;;;;;;;;;;;;;;;;;;;;;;;1633:59;;1676:8;;;1633:59;1544:155;:::o;372:36::-;;;;;;;;;;;;;:::o;332:35::-;;;;;;;;;;;;;:::o;889:125::-;715:13;;;;;;;;;;;701:27;;:10;:27;;;697:58;;739:8;;;697:58;993:15;977:13;;:31;;;;;;;;;;;;;;;;;;889:125;:::o

Swarm Source

bzzr://14aa0f587f76c325951fb03fcdb3ebd7b0e08bf066b4e87644e9cb9ad30444e3

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.