实时监控一个区块链某地址的实现方案

这篇具有很好参考价值的文章主要介绍了实时监控一个区块链某地址的实现方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

区块链数据都在链上大家都可以看到,前阵子发现一些卖NFT pass卡的,其实就是跟踪以太坊的钱包地址,发现几个大V都去免费mint NFT的时候就去跟着mint, 他实现第一步就是必须监控这些钱包的地址

监控区块链地址实现方案

个人分析,实现方式有两种,第一种是监听以太坊区块内容,监听最新区块内的数据,解析出地址和方法等方式和监控的地址对比,这个方式更快,但是更底层,实现起来难一些;第二种方式就是用爬虫的方式,比如以太坊链都是有以太坊浏览器的,这样就可以方便的用爬虫的方式监控某地址页面的变化,来判断账户中的变化,进行监控。

具体实现

我是以golang语言编写,定时对某个地址的以太坊浏览器的内容进行监控,如果有操作就进行分析

具体实现逻辑,就是监控最新“账单”时间,小于一定的时间,通过钉钉通知自己

实时监控一个区块链某地址的实现方案

package main

import (
	"bytes"
	"fmt"
	"github.com/gocolly/colly"
	"io/ioutil"
	"net/http"
	"strings"
	"time"
)



func sendDDingMsg(msg string){

	//钉钉机器人自己获取自己的api
	postUrl := "https://oapi.dingtalk.com/robot/send?access_token=xxxxx
	msgjson := `{"text":{"content":"free mint报警, 赶快去查看\r\n` + msg +`"},"msgtype":"text"}`

	req, err := http.NewRequest("POST", postUrl, bytes.NewBuffer([]byte(msgjson)))
	req.Header.Set("Content-Type", "application/json")

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	fmt.Println("response Status:", resp.Status)
	fmt.Println("response Headers:", resp.Header)
	body, _ := ioutil.ReadAll(resp.Body)
	fmt.Println("response Body:", string(body))
	fmt.Println("发送钉钉消息成功")
}

func startTimer(f func(), duration time.Duration) {
	go func() {
		for {
			fmt.Println("start search")
			f()
			now := time.Now()
			// 计算下一个零点
			next := now.Add(duration)
			next = time.Date(next.Year(), next.Month(), next.Day(), next.Hour(), next.Minute(), next.Second(), 0, next.Location())
			t := time.NewTimer(next.Sub(now))
			<-t.C
		}
	}()
}

func startM(){
	c := colly.NewCollector()
	
	c.OnHTML("tr", func(e *colly.HTMLElement) {
			/*mint_time := e.ChildAttr("td","showAge")
			fmt.Println("mint time is ", mint_time)*/

		mint_time := e.ChildText("td.showAge")
		if mint_time == "" {
			return
		}
		fmt.Println("mint time is ", mint_time)


		if strings.Contains(mint_time, "hrs") || strings.Contains(mint_time, "day") || strings.Contains(mint_time, "hr")  {
			return
		}

		var time_s int = 6
		if strings.Contains(mint_time, "mins") {
			fmt.Sscanf(mint_time, "%d mins ago", &time_s)
		}
		if strings.Contains(mint_time, "min") {
			fmt.Sscanf(mint_time, "%d min ago", &time_s)
		}

		if time_s <= 2 {

			mint_contract := e.ChildText("td:nth-child(9)")
			if mint_contract != "" {
				mint_contract = "https://etherscan.io/address/" + mint_contract
				fmt.Println("mint contract is ", mint_contract)
				mint_hash := e.ChildText("td:nth-child(2)")

				mint_hash = "https://etherscan.io/tx/" + mint_hash
				fmt.Println("mint hash is ", mint_hash)
				mint_method := e.ChildText("td:nth-child(3)")
				fmt.Println("mint Method is ", mint_method)
				sendDDingMsg("监控地址为:https://etherscan.io/address/0x111111111111111\r\n 交易页为:" + mint_hash + "\r\n 调用函数为:" + mint_method + "\r\n 交易合同页为:"+ mint_contract)
			}

		}

	})

	c.OnRequest(func(r *colly.Request) {
		fmt.Println("Visiting", r.URL)
	})

	//这里写需要监控页的地址
	c.Visit("https://etherscan.io/address/0x1111111111111111")
}

func main() {

	startTimer(startM, time.Duration(1)*time.Minute)
	for {
		fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
		fmt.Println("wait .....")
		time.Sleep(30 * time.Second)
	}
}

总结,以上只是个简单的例子,用到了golang的一个爬虫框架colly,其实只是一个抛砖引玉的作用,我这里只做了钉钉提醒,其实可以在这个基础上做你想做的事情。文章来源地址https://www.toymoban.com/news/detail-509430.html

到了这里,关于实时监控一个区块链某地址的实现方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 智能分析网关V4+EasyCVR视频融合平台——高速公路交通情况的实时监控和分析一体化方案

    随着2024年春运帷幕的拉开,不少人的返乡之旅也即将开启,从这几日的新闻来看,高速上一路飘红。伴随恶劣天气,加上激增的车流,极易导致高速瘫痪,无法正常使用。为解决此问题,助力高速高效运营,TSINGSEE青犀智能分析网关V4+EasyCVR视频融合平台——高速公路一体化监

    2024年02月22日
    浏览(44)
  • 使用手机摄像头实现视频监控实时播放

    视频监控实时播放的原理与目前较为流行的直播是一致的,所以采用直播的架构实现视频监控实时播放,流程图如下: 目前实时视频流的传输协议有以下几种:RTSP、RTMP、HLS、Http-flv。 安卓APP开发使用HBuilder,而HBuilder内置了LivePusher直播推流控件,该控件使用了RTMP协议,所以

    2023年04月08日
    浏览(37)
  • 如何使用Java Websocket实现实时数据监控功能?

    随着互联网应用的不断发展,实时数据监控功能成为了许多应用的必备功能之一。本文将介绍如何使用Java WebSocket实现实时数据监控功能,并提供具体的代码示例。 :Java WebSocket、实时数据监控、代码示例 一、什么是WebSocket? WebSocket是一种网络协议,可以在实现了We

    2024年02月03日
    浏览(30)
  • 微信小程序实现实时日志和接口监控的接入

    前提:产品提出能够实时监控菜品展示、加购、下单的整个流程。方便正式环境查看接口运行情况。所以就接入了,小程序的日志和接口监控。 Log.js 在需要监听的页面进行调用 注意事项: Log的输出,必需是在手机上运行时才会有记录,在开发者上运行是没有记录的 查看位

    2024年02月13日
    浏览(38)
  • 基于华为云 IoT 物联网平台实现家居环境实时监控

    01 智能家居环境监测 智能家居环境监测采用 Ruff 开发板作为主控,串口线连接温湿度传感器 DHT11 和空气质量传感器 SDS011,每5分钟采集一次数据,通过 MQTT 协议发送到华为云 IoT 物联网平台,并基于数据分析服务实时计算出整个家庭的平均温度值。

    2024年02月08日
    浏览(35)
  • 人工智能语音助手:如何实现智能助手的实时语音监控功能?

    作者:禅与计算机程序设计艺术 随着人工智能技术的快速发展,语音助手已经成为人们日常生活中不可或缺的智能助手。作为人工智能助手,实时语音监控是必不可少的。本文将介绍如何更好地实现智能助手的实时语音监控功能,为用户提供更加优质的服务。 1 基本概念解释

    2024年02月08日
    浏览(44)
  • 户外组网摆脱布线困扰,工业5G网关实现无人值守、远程实时监控

    在物联网通信技术发达的2023,网络覆盖对所及之处的全面覆盖,科技发展的促使下很多高危户外场景也在思考如何利用无线技术提高人员安全及现场无人化管理。 煤矿是我们国家不可缺少的重要能源,其开采过程的危险系数也是众所皆知的, 如何让煤矿业保障人员安全、提

    2024年02月13日
    浏览(33)
  • vue使用webrtcstreamer实现rtsp无转码播放实时监控

    因为video标签只能播放特定格式的视频,比如MP4、WebM和Ogg格式,而对于这种视频流文件则需要通过转码实现,而vue-video-player也只能播放特定格式的视频。所以要播放监控的实时视频,除了在浏览器的地址栏直接打开摄像头的地址,还可以通过webrtc-streamer和video标签在页面实现

    2024年02月06日
    浏览(72)
  • 使用flink实现《实时监控和日志分析》的案例 java版

    本文档介绍了使用Java和Flink实现实时监控和日志分析的案例。该案例旨在通过实时监控和日志分析来提高系统的可靠性和性能。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kjPKQuIf-1686052913444)(./architecture.png)] 如上图所示,该系统由以下组件组成

    2024年02月06日
    浏览(35)
  • BNetDisk:一个安全高效、基于区块链的云存储解决方案

    项目地址:https://gitcode.com/SunRain/BNetDisk BNetDisk 是一个创新性的开源项目,它利用区块链技术构建了一个去中心化的云存储平台。这个项目旨在提供更安全、透明且高效的个人和企业数据存储服务,改变传统云存储模式。 BNetDisk 的核心理念是通过区块链的分布式特性,将用户的

    2024年04月11日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包