pancakeswap 开盘抢跑机器人 (附代码)

这篇具有很好参考价值的文章主要介绍了pancakeswap 开盘抢跑机器人 (附代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这个机器人主要就是抢跑用的:机器人一次只能狙击一个令牌。

如何运行
1. 拷贝代码
2. $ npm 安装
3. 复制你的 env.example到 .env
4. 使用以下说明设置您的 .env:        

WBNB_CONTRACT=0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

购买代币的 WBNB 合约

FACTORY=0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73

Pancake Factory 合约获得购买功能 ROUTER=0x10ED43C718714eb63d5aA57B78B54704E256024E

Pancake Factory 合约处理购买功能

YOUR_ADDRESS=

您来自 trustwallet 或其他钱包的 BSC (BEP20) 地址。

SLIPPAGE=5

在这里自定义您的滑点,不能小数。 (例如:1、5、10)。如果你买早期代币推荐 30+ Slippage

GWEI=5

在这里自定义您的 GWEI(gas 费),不能小数。 (例如:5、10、25)。如果买早期代币推荐15+ GWEI

GAS_LIMIT=345684

最低限度是 210000,越多越好。

MIN_LIQUIDITY_ADDED=3

设置您想购买的配对地址中添加多少最低流动性。设置在 BNB 中。 (例如:2、4、7)。 2 表示增加了 2 个 BNB 流动性。

YOUR_MNEMONIC=

在这里输入您的私钥,您可以从您的钱包隐私中获得。

AMOUNT_OF_WBNB=0.002

您想在WBNB中购买代币的金额。 TO_PURCHASE=0xe9e7cea3dedca5984780bafc599bd69add087d56

你想购买的代币地址。

 下面就是具体的代码 :

import ethers from 'ethers';
import express from 'express';
import chalk from 'chalk';
import dotenv from 'dotenv';
import inquirer from 'inquirer';

const app = express();
dotenv.config();

const data = {
  WBNB: process.env.WBNB_CONTRACT, //wbnb

  to_PURCHASE: process.env.TO_PURCHASE, // token that you will purchase = BUSD for test '0xe9e7cea3dedca5984780bafc599bd69add087d56'

  AMOUNT_OF_WBNB : process.env.AMOUNT_OF_WBNB, // how much you want to buy in WBNB

  factory: process.env.FACTORY,  //PancakeSwap V2 factory

  router: process.env.ROUTER, //PancakeSwap V2 router

  recipient: process.env.YOUR_ADDRESS, //your wallet address,

  Slippage : process.env.SLIPPAGE, //in Percentage

  gasPrice : ethers.utils.parseUnits(`${process.env.GWEI}`, 'gwei'), //in gwei
  
  gasLimit : process.env.GAS_LIMIT, //at least 21000

  minBnb : process.env.MIN_LIQUIDITY_ADDED //min liquidity added
}

let initialLiquidityDetected = false;
let jmlBnb = 0;

const bscMainnetUrl = 'https://bsc-dataseed1.defibit.io/' //https://bsc-dataseed1.defibit.io/ https://bsc-dataseed.binance.org/
const wss = 'wss://bsc-ws-node.nariox.org:443';
const mnemonic = process.env.YOUR_MNEMONIC //your memonic;
const tokenIn = data.WBNB;
const tokenOut = data.to_PURCHASE;
const provider = new ethers.providers.WebSocketProvider(wss);
const wallet = new ethers.Wallet(mnemonic);
const account = wallet.connect(provider);


const factory = new ethers.Contract(
  data.factory,
  [
    'event PairCreated(address indexed token0, address indexed token1, address pair, uint)',
    'function getPair(address tokenA, address tokenB) external view returns (address pair)'
  ],
  account
);

const router = new ethers.Contract(
  data.router,
  [
    'function getAmountsOut(uint amountIn, address[] memory path) public view returns (uint[] memory amounts)',
    'function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)',
    'function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts)'
  ],
  account
);

const erc = new ethers.Contract(
  data.WBNB,
  [{"constant": true,"inputs": [{"name": "_owner","type": "address"}],"name": "balanceOf","outputs": [{"name": "balance","type": "uint256"}],"payable": false,"type": "function"}],
  account
);  

const run = async () => {
    await checkLiq();
}

  let checkLiq = async() => {
    const pairAddressx = await factory.getPair(tokenIn, tokenOut);
    console.log(chalk.blue(`pairAddress: ${pairAddressx}`));

    if (pairAddressx !== null && pairAddressx !== undefined) {
      if (pairAddressx.toString().indexOf('0x0000000000000') > -1) {
        console.log(chalk.cyan(`pairAddress ${pairAddressx} not detected. Auto restart`));
        return await run();
      }
    }
    const pairBNBvalue = await erc.balanceOf(pairAddressx); 
    jmlBnb = await ethers.utils.formatEther(pairBNBvalue);
    console.log(`value BNB : ${jmlBnb}`);
  
    if(jmlBnb > data.minBnb){
        setTimeout(() => buyAction(), 5000);
    }
    else{
        initialLiquidityDetected = false;
        console.log(' run again...');
        return await run();
      }
  }

  let buyAction = async() => {
    if(initialLiquidityDetected === true) {
      console.log('not buy cause already buy');
        return null;
    }
    
    console.log('ready to buy');
    try{
      initialLiquidityDetected = true;

      let amountOutMin = 0.;
      //We buy x amount of the new token for our wbnb
      const amountIn = ethers.utils.parseUnits(`${data.AMOUNT_OF_WBNB}`, 'ether');
      //if ( parseInt(data.Slippage) !== 0 ){
      //  const amounts = await router.getAmountsOut(amountIn, [tokenIn, tokenOut]);
        //Our execution price will be a bit different, we need some flexbility
     //   amountOutMin = amounts[1].sub(amounts[1].div(`${data.Slippage}`));
     // }
   
      console.log(
       chalk.green.inverse(`Start to buy \n`)
        +
        `Buying Token
        =================
        tokenIn: ${(amountIn * 1e-18).toString()} ${tokenIn} (BNB)
        tokenOut: ${(amountOutMin / 1e-18).toString()} ${tokenOut}
      `);
     
      console.log('Processing Transaction.....');
      console.log(chalk.yellow(`amountIn: ${(amountIn * 1e-18)} ${tokenIn} (BNB)`));
      console.log(chalk.yellow(`amountOutMin: ${amountOutMin / 1e-18}`));
      console.log(chalk.yellow(`tokenIn: ${tokenIn}`));
      console.log(chalk.yellow(`tokenOut: ${tokenOut}`));
      console.log(chalk.yellow(`data.recipient: ${data.recipient}`));
      console.log(chalk.yellow(`data.gasLimit: ${data.gasLimit}`));
      console.log(chalk.yellow(`data.gasPrice: ${data.gasPrice}`));

      const tx = await router.swapExactTokensForTokensSupportingFeeOnTransferTokens( //uncomment this if you want to buy deflationary token
      // const tx = await router.swapExactTokensForTokens( //uncomment here if you want to buy token
        amountIn,
        amountOutMin,
        [tokenIn, tokenOut],
        data.recipient,
        Date.now() + 1000 * 60 * 5, //5 minutes
        {
          'gasLimit': data.gasLimit,
          'gasPrice': data.gasPrice,
            'nonce' : null //set you want buy at where position in blocks
      });
     
      const receipt = await tx.wait(); 
      console.log(`Transaction receipt : https://www.bscscan.com/tx/${receipt.logs[1].transactionHash}`);
      setTimeout(() => {process.exit()},4000);
    }catch(err){
      let error = JSON.parse(JSON.stringify(err));
        console.log(`Error caused by : 
        {
        reason : ${error.reason},
        transactionHash : ${error.transactionHash}
        message : Please check your BNB/WBNB balance, maybe its due because insufficient balance or approve your token manually on pancakeSwap
        }`);
        console.log(error);

        inquirer.prompt([
    {
      type: 'confirm',
      name: 'runAgain',
      message: 'Do you want to run again thi bot?',
    },
  ])
  .then(answers => {
    if(answers.runAgain === true){
      console.log('= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =');
      console.log('Run again');
      console.log('= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =');
      initialLiquidityDetected = false;
      run();
    }else{
      process.exit();
    }

  });

    }
  }

run();

const PORT = 5001;

app.listen(PORT, console.log(chalk.yellow(`Listening for Liquidity Addition to token ${data.to_PURCHASE}`)));

主要执行交易的就是这个方法:swapExactTokensForTokensSupportingFeeOnTransferTokens

代码是测试过的,执行过程中有问题,可以留言与我沟通。文章来源地址https://www.toymoban.com/news/detail-786622.html

到了这里,关于pancakeswap 开盘抢跑机器人 (附代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器人编程教程2探索机器人-代码和电子设备

    我们将拆开一个机器人,看看它的部件和系统。我们将探索机器人的各个组成部分,包括软件(代码、命令和程序库)和硬件,以及它们是如何组合在一起的。在开始制作机器人时,考虑你想要的部件以及它们之间的关系是很有价值的。我建议您绘制机器人的草图--框图,作

    2024年02月13日
    浏览(49)
  • 【多机器人】基于A_Star算法实现多机器人路径规划附Matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月04日
    浏览(51)
  • 一百行代码实现简易版 ChatGPT 聊天机器人

    💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 最近,OpenAI的一款聊天机器人模型ChatGPT爆火,本篇文章用一百行代码给大家制作

    2024年02月11日
    浏览(37)
  • 快手无需代码连接钉钉群机器人的方法

    快手用户使用场景: 对于视频运营人员来说,每当在快手平台上发布视频进行推广后,常需要关注视频的播放量,点赞量,转发量以及评论等,然后将数据发送到部门群,便于运营人员分析,做好后续策略调整。随着公司的快速发展,公司每天需要发布多个视频,同时还需要

    2024年02月11日
    浏览(63)
  • 基于A*算法的机器人迷宫路径规划(MATLAB代码)

    基于A*算法的机器人迷宫路径规划(MATLAB代码) 迷宫路径规划是一个经典的问题,涉及到在迷宫中找到从起点到终点的最短路径。其中,A 算法是一种常用的启发式搜索算法,它结合了Dijkstra算法和启发式函数,能够有效地找到最优路径。在本文中,我们将介绍如何使用MATLA

    2024年02月07日
    浏览(44)
  • 谷歌AI机器人Bard新增生成、调试和代码解释功能

    据悉,这次谷歌开发的AI聊天机器人Bard目前竟然可以帮助软件开发人员编程,包括生成代码、包括生成代码、调试和代码解释。 另据谷歌研究产品负责人Paige Bailey介绍说,编码一直是谷歌从用户那里收到的最重要的请求之一,也正是基于这种需求逐渐对Ai机器人进行升级。目前

    2024年02月13日
    浏览(42)
  • 暑期代码每日一练Day3:874. 模拟行走机器人

    题目 874. 模拟行走机器人 分析 这道题就是个简单的模拟 主要有两点考察点: 对 方向数组 的运用 方向数组存储的是各个方向的单位向量,也即: 方向 X Y 向北 0 1 向东 1 0 向南 0 -1 向西 -1 0 存储在数组中,则是方向数组: 我们很容易发现: 我们可以使用一个变量 j 来指示当

    2024年02月16日
    浏览(45)
  • 17行代码用python对接openai的微信对话机器人

    itchat python依赖下载 这里推荐这个。链接:衡天云

    2024年02月13日
    浏览(40)
  • Realitykit结合Speech实现语音控制AR机器人移动(完整代码)

    利用Apple最新的Realitykit搭配ARkit实现虚拟物体的放置,结合内置的Speech库实现语音的识别功能,将语音内容转为文本内容,从而让机器进行运动。 大体思路: 1、配置并启动ARkit环境。 2、构建Entity实体。可以用Apple官方的CreatingAPhotogrammetryCommandLineApp的代码文档来生成.usdz文件

    2023年04月22日
    浏览(42)
  • 机器人编程教程5使用Git和SD卡副本备份代码

    在本章中,您将学习到以下内容: 代码是如何破坏或丢失的 策略 1 - 将代码保存在电脑上并上传 策略 2:使用 Git 回溯历史 策略 3 - 制作 SD 卡备份 代码和它的近亲--配置,都需要时间和艰苦的努力。代码需要配置才能运行,例如 Raspberry Pi 操作系统配置、额外软件和必要的数

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包