Bitcoin Forum
May 04, 2024, 08:02:50 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: [ERC-20] Фейковые транзакции ))  (Read 129 times)
bomj (OP)
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
August 07, 2019, 09:29:11 PM
Merited by xenon131 (2), CryptoPravda (1)
 #1

Некоторое время тому назад прочитал любопытную статью Джеффа Ху о фейковых транзакциях
ERC-20 токенов, в которой рассказано, как создать контракт с помощью которого можно сделать
фейковый вывод, созданных по данному контракту токенов, с любого адреса.
Т.е. заглянув на свой Эфирный адрес вы можете обнаружить, что с вашего адреса было выведено
н-ное кол-во каких-то-либо токенов.
На самом деле никакие токены не выводились, ваш баланс не изменился, как и не пополнился
баланс адреса на который якобы ушли данные токены. Т.е. не произошло никакого перемещения
токенов, но в блокчейне сохранилась запись о событии.

Код Github здесь.

Я протестировал контракты и действительно все работает.
 
Через некоторое время мне было скучно и я решил закинуть подобный контракт в Гл. сеть эфира.
В качестве жертвы, с чьего адреса я решил совершить фейк. вывод, я выбрал всеми нами "любимый"
WEX.
Подумал: "Мож хоть разок икнут эти жертвы аборта )"

Возможно некоторые из вас уже видели эту транзакцию:
https://etherscan.io/tx/0x25e96fbce81f03d819d5bc430b274241c79af0e038dcc1e11599e523824bbad6
В дальнейшем я сделал еще пару транзакций, где якобы вывел эти токены на контракт Dai-Uniswap.
В реальности же никаких перемещений токенов не происходило.

Контракт:
https://etherscan.io/address/0x90c0b811b44e885f6a4ea520ea76e2b8a06e96f1

В данном контракте я создал токены Dai Stablecoin v0.0x536D696C653A29, которые я якобы и вывел с WEXа.
Если кто был внимательным, то он конечно увидел, что версия токена - 0.0x536D696C653A29 и если
перевести из hex в text, то получите = Smile:)

Вы можете попробовать создать свой контракт, а можете воспользоваться данным c помощью MyEtherWallet,
используя ABI контракта:
Quote

[
   {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
         {
            "name": "",
            "type": "string"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": false,
      "inputs": [
         {
            "name": "_spender",
            "type": "address"
         },
         {
            "name": "_value",
            "type": "uint256"
         }
      ],
      "name": "approve",
      "outputs": [
         {
            "name": "",
            "type": "bool"
         }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": false,
      "inputs": [
         {
            "name": "_from",
            "type": "address"
         },
         {
            "name": "_to",
            "type": "address"
         },
         {
            "name": "_value",
            "type": "uint256"
         }
      ],
      "name": "transferFrom",
      "outputs": [
         {
            "name": "",
            "type": "bool"
         }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "INITIAL_SUPPLY",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "decimals",
      "outputs": [
         {
            "name": "",
            "type": "uint8"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": true,
      "inputs": [
         {
            "name": "_owner",
            "type": "address"
         }
      ],
      "name": "balanceOf",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": false,
      "inputs": [
         {
            "name": "_sender",
            "type": "address"
         },
         {
            "name": "_receiver",
            "type": "address"
         },
         {
            "name": "_value",
            "type": "uint256"
         },
         {
            "name": "_note",
            "type": "string"
         }
      ],
      "name": "fTransfer",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
         {
            "name": "",
            "type": "address"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
         {
            "name": "",
            "type": "string"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": false,
      "inputs": [
         {
            "name": "_to",
            "type": "address"
         },
         {
            "name": "_value",
            "type": "uint256"
         }
      ],
      "name": "transfer",
      "outputs": [
         {
            "name": "",
            "type": "bool"
         }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
   },
   {
      "constant": true,
      "inputs": [
         {
            "name": "_owner",
            "type": "address"
         },
         {
            "name": "_spender",
            "type": "address"
         }
      ],
      "name": "allowance",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": false,
      "inputs": [
         {
            "name": "newOwner",
            "type": "address"
         }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
   },
   {
      "anonymous": false,
      "inputs": [
         {
            "indexed": true,
            "name": "_from",
            "type": "address"
         },
         {
            "indexed": true,
            "name": "_to",
            "type": "address"
         },
         {
            "indexed": false,
            "name": "_value",
            "type": "uint256"
         }
      ],
      "name": "Transfer",
      "type": "event"
   },
   {
      "anonymous": false,
      "inputs": [
         {
            "indexed": true,
            "name": "_owner",
            "type": "address"
         },
         {
            "indexed": true,
            "name": "_spender",
            "type": "address"
         },
         {
            "indexed": false,
            "name": "_value",
            "type": "uint256"
         }
      ],
      "name": "Approval",
      "type": "event"
   }
]


Используйте функцию - FTransfer

Удачи...

Данная статья размещена в ознакомительных целях..............)))



Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!