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 контракта:
[
{
"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
Удачи...
Данная статья размещена в ознакомительных целях..............)))