From a8c1a79d3463cb830df0579b45fc50ab852d2699 Mon Sep 17 00:00:00 2001 From: lanyi1998 Date: Thu, 18 Jul 2024 15:46:24 +0800 Subject: [PATCH] feat(monitor): add script to monitor smart money transactions --- 27_Monitor/img/img.png | Bin 0 -> 50294 bytes 27_Monitor/monitor.js | 71 +++++++++++++++++++++++++ 27_Monitor/readme.md | 118 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 189 insertions(+) create mode 100644 27_Monitor/img/img.png create mode 100644 27_Monitor/monitor.js create mode 100644 27_Monitor/readme.md diff --git a/27_Monitor/img/img.png b/27_Monitor/img/img.png new file mode 100644 index 0000000000000000000000000000000000000000..ac2bbf42ec6754e76e13f12e32b46ba604b3821c GIT binary patch literal 50294 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]$hn=)-jJ`U;{|z;=67|BdEAuA;e( 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 { + console.log(`新区块: ${blockNumber}`); + + // 检查余额变化 + const currentBalance = await provider.getBalance(WALLET_ADDRESS); + if (currentBalance !== previousBalance) { + console.log(`余额变化: ${ethers.formatEther(currentBalance)} ETH`); + previousBalance = currentBalance; + } + + // 获取区块 + const block = await provider.getBlock(blockNumber); + + // 检查交易 + if (block && block.transactions) { + for (const txHash of block.transactions) { + const tx = await provider.getTransaction(txHash); + + if (!tx) continue; + + if (tx.from && tx.from.toLowerCase() === WALLET_ADDRESS.toLowerCase() || + (tx.to && tx.to.toLowerCase() === WALLET_ADDRESS.toLowerCase())) { + + console.log(`检测到交易: ${tx.hash}`); + console.log(`从: ${tx.from}`); + console.log(`到: ${tx.to || 'Contract Creation'}`); + console.log(`金额: ${ethers.formatEther(tx.value)} ETH`); + + // 检查是否是合约交互 + if (tx.data && tx.data !== '0x') { + console.log('检测到合约交互'); + + // 获取交易收据以查看事件日志 + const receipt = await provider.getTransactionReceipt(tx.hash); + + if (receipt && receipt.logs) { + console.log(`事件日志数量: ${receipt.logs.length}`); + + for (const log of receipt.logs) { + console.log(` 事件主题: ${log.topics[0]}`); + console.log(` 合约地址: ${log.address}`); + } + } + } + + console.log('---'); + } + } + } + }); +} + +monitorWallet().catch(console.error); diff --git a/27_Monitor/readme.md b/27_Monitor/readme.md new file mode 100644 index 0000000..9736a81 --- /dev/null +++ b/27_Monitor/readme.md @@ -0,0 +1,118 @@ +--- +title: 27. 聪明钱监控 +tags: + - ethers + - javascript + - signature + - airdrop + - frontend + - web +--- + +# Ethers极简入门: 27. 聪明钱监控 + +我最近在重新学`ethers.js`,巩固一下细节,也写一个`WTF Ethers极简入门`,供小白们使用。 + +推特:[@0xAA_Science](https://twitter.com/0xAA_Science)|[@WTFAcademy_](https://twitter.com/WTFAcademy_) + +WTF Academy 社群:[Discord](https://discord.gg/5akcruXrsk)|[微信群](https://docs.google.com/forms/d/e/1FAIpQLSe4KGT8Sh6sJ7hedQRuIYirOoZK_85miz3dw7vA1-YjodgJ-A/viewform?usp=sf_link)|[官网 wtf.academy](https://wtf.academy) + +所有代码和教程开源在 github: [github.com/WTFAcademy/WTFEthers](https://github.com/WTFAcademy/WTF-Ethers) + +--- + +在本教程中,我们将介绍如何使用 Ethers.js 完成一个钱包地址监控的脚本 + +### **什么是聪明钱?** + +在加密领域,聪明钱(Smart Money)是指**拥有专业知识、对市场有深入了解以及具有信息优势的专业投资机构或个人投资者**。 聪明钱一直以来都是加密市场中的**关注焦点**,因为这些实体通常可以获得普通交易者不易获得的**信息和资源**,他们有着丰富的交易经验和优异的历史业绩,投资理念成熟,这可能使他们在存在**严重信息不对称**的加密货币市场中占据优势。 + + + +因为在区块链中所有数据都是公开的,我们可以看到所有人的交易数据。所以我们可以对历史成绩比较优秀的钱包地址进行监控。第一时间知道这些聪明钱的动向。 + + + +## 聪明钱监控 + +首先配置需要监控的钱包的地址,这里我们监控V神的钱包地址 + +```js +// 配置 +const WALLET_ADDRESS = `0x220866B1A2219f40e72f5c628B65D54268cA3A9D`; + +const ALCHEMY_GOERLI_URL = 'https://eth-mainnet.g.alchemy.com/v2/abWt0F-bY-Z4Amf_xOU_QQLftkhLU4cO'; +const provider = new ethers.JsonRpcProvider(ALCHEMY_GOERLI_URL); +``` + +然后获取当前的eth余额记录下了 + +```js +// 获取初始余额 +let previousBalance = await provider.getBalance(WALLET_ADDRESS); +console.log(`初始余额: ${ethers.formatEther(previousBalance)} ETH`); +``` + +监听链上的新区块,如果有转账或者是合约交互的话进行提醒。 + +```js +// 监听新区块 +provider.on('block', async (blockNumber) => { + console.log(`新区块: ${blockNumber}`); + + // 检查余额变化 + const currentBalance = await provider.getBalance(WALLET_ADDRESS); + if (currentBalance !== previousBalance) { + console.log(`余额变化: ${ethers.formatEther(currentBalance)} ETH`); + previousBalance = currentBalance; + } + + // 获取区块 + const block = await provider.getBlock(blockNumber); + + // 检查交易 + if (block && block.transactions) { + for (const txHash of block.transactions) { + const tx = await provider.getTransaction(txHash); + + if (!tx) continue; + + if (tx.from && tx.from.toLowerCase() === WALLET_ADDRESS.toLowerCase() || + (tx.to && tx.to.toLowerCase() === WALLET_ADDRESS.toLowerCase())) { + + console.log(`检测到交易: ${tx.hash}`); + console.log(`从: ${tx.from}`); + console.log(`到: ${tx.to || 'Contract Creation'}`); + console.log(`金额: ${ethers.formatEther(tx.value)} ETH`); + + // 检查是否是合约交互 + if (tx.data && tx.data !== '0x') { + console.log('检测到合约交互'); + + // 获取交易收据以查看事件日志 + const receipt = await provider.getTransactionReceipt(tx.hash); + + if (receipt && receipt.logs) { + console.log(`事件日志数量: ${receipt.logs.length}`); + + for (const log of receipt.logs) { + console.log(` 事件主题: ${log.topics[0]}`); + console.log(` 合约地址: ${log.address}`); + } + } + } + + console.log('---'); + } + } + } +}); +``` + +效果图 + +![](./img/img.png) + +## 总结 + +在本教程中,我们介绍了如何使用 Ethers.js 对聪明钱包的转账和合约交互进行监控。