const { Web3 } = require('web3');

const NODE_URL = "WSS_CHAINSTACK_ENDPOINT";
const web3 = new Web3(NODE_URL);

const UNISWAP_ROUTER_ADDRESS = "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D"; // Uniswap V2
const SWAP_EXACT_ETH_FOR_TOKENS_SIGNATURE = "0x7ff36ab5";
const SWAP_EXACT_ETH_FOR_FEE_TOKENS_SIGNATURE = "0xb6f9de95";

async function subscribeToNewBlocks() {
  const subscription = await web3.eth.subscribe('newBlockHeaders');
  subscription.on('data', handleNewBlock);
}

async function handleNewBlock(blockHeader) {
  console.log(`Got new block: ${blockHeader.number}`);
  const block = await web3.eth.getBlock(blockHeader.number, true);
  block.transactions.forEach((tx) => {
    if (tx.to && tx.to.toLowerCase() === UNISWAP_ROUTER_ADDRESS.toLowerCase() && (tx.input.startsWith(SWAP_EXACT_ETH_FOR_TOKENS_SIGNATURE) || tx.input.startsWith(SWAP_EXACT_ETH_FOR_FEE_TOKENS_SIGNATURE))) {
      console.log("--------------------------------");
      console.log(`Incoming swap transaction: ${tx.hash}`);
      console.log(`From: ${tx.from}`);
      console.log(`Value: ${web3.utils.fromWei(tx.value, "ether")} ETH`);
      console.log("--------------------------------");
    }
  })
}

subscribeToNewBlocks();
Got new block: 17924098
--------------------------------
Incoming swap transaction: 0x188335bbf730f613cea71a58dad9f9964727f3e93ff934149c83045e8ee0cb36
From: 0xe1605580a0054a99db8d778e560f4b0a2e11a2f2
Value: 0.05 ETH
--------------------------------
--------------------------------
Incoming swap transaction: 0xa9212c6fd39c52048b596c6d2588c63fa5900730c60ffad7f878e5b2b05d2b05
From: 0xd6ea485b803e8473d47985c26220bd1fdc67ec39
Value: 0.1 ETH
--------------------------------
--------------------------------
Incoming swap transaction: 0x442640d4db155f4fef5bfc9b1700d22af596aaec22ca06c392354e150336d3cb
From: 0x551c3dd4271602de4bdee71345bb360ca5f6a9dd
Value: 0.3 ETH
--------------------------------
--------------------------------
Incoming swap transaction: 0x53626667bbfa959af2d8d072f8d1f5a5f0a10074ee177676d794be08d9aaf1db
From: 0xefa316a7faa31356eb6ec9be2c290276f28f6377
Value: 0.014928321838883508 ETH
--------------------------------
--------------------------------
Incoming swap transaction: 0xd6fd0a658051e971a20fe8b241dec11b4b396281b5e0535ed79eef0f18ff1983
From: 0xcde474a2ad4542743007a46863ee2a7906419136
Value: 0.1 ETH
--------------------------------
...
footer subedevice
footer subefooter dotsfooter ringfooter shape
See Chainstack in
const { Web3 } = require('web3');

const NODE_URL = "WSS_CHAINSTACK_ENDPOINT";
const web3 = new Web3(NODE_URL);

const UNISWAP_ROUTER_ADDRESS = "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D"; // Uniswap V2
const SWAP_EXACT_ETH_FOR_TOKENS_SIGNATURE = "0x7ff36ab5";
const SWAP_EXACT_ETH_FOR_FEE_TOKENS_SIGNATURE = "0xb6f9de95";

async function subscribeToNewBlocks() {
  const subscription = await web3.eth.subscribe('newBlockHeaders');
  subscription.on('data', handleNewBlock);
}

async function handleNewBlock(blockHeader) {
  console.log(`Got new block: ${blockHeader.number}`);
  const block = await web3.eth.getBlock(blockHeader.number, true);
  block.transactions.forEach((tx) => {
    if (tx.to && tx.to.toLowerCase() === UNISWAP_ROUTER_ADDRESS.toLowerCase() && (tx.input.startsWith(SWAP_EXACT_ETH_FOR_TOKENS_SIGNATURE) || tx.input.startsWith(SWAP_EXACT_ETH_FOR_FEE_TOKENS_SIGNATURE))) {
      console.log("--------------------------------");
      console.log(`Incoming swap transaction: ${tx.hash}`);
      console.log(`From: ${tx.from}`);
      console.log(`Value: ${web3.utils.fromWei(tx.value, "ether")} ETH`);
      console.log("--------------------------------");
    }
  })
}

subscribeToNewBlocks();
Got new block: 17924098
--------------------------------
Incoming swap transaction: 0x188335bbf730f613cea71a58dad9f9964727f3e93ff934149c83045e8ee0cb36
From: 0xe1605580a0054a99db8d778e560f4b0a2e11a2f2
Value: 0.05 ETH
--------------------------------
--------------------------------
Incoming swap transaction: 0xa9212c6fd39c52048b596c6d2588c63fa5900730c60ffad7f878e5b2b05d2b05
From: 0xd6ea485b803e8473d47985c26220bd1fdc67ec39
Value: 0.1 ETH
--------------------------------
--------------------------------
Incoming swap transaction: 0x442640d4db155f4fef5bfc9b1700d22af596aaec22ca06c392354e150336d3cb
From: 0x551c3dd4271602de4bdee71345bb360ca5f6a9dd
Value: 0.3 ETH
--------------------------------
--------------------------------
Incoming swap transaction: 0x53626667bbfa959af2d8d072f8d1f5a5f0a10074ee177676d794be08d9aaf1db
From: 0xefa316a7faa31356eb6ec9be2c290276f28f6377
Value: 0.014928321838883508 ETH
--------------------------------
--------------------------------
Incoming swap transaction: 0xd6fd0a658051e971a20fe8b241dec11b4b396281b5e0535ed79eef0f18ff1983
From: 0xcde474a2ad4542743007a46863ee2a7906419136
Value: 0.1 ETH
--------------------------------
...
footer subedevice
footer subefooter dotsfooter ringfooter shape
See Chainstack in