都在说数据已经成为新时代的生产资料。

但随着大数据和人工智能等技术的发展,即便人们都知道数据的价值日益凸显,却无法凭借一己之力获取和分析如此大规模的数据。

要想富,先修路。要想利用新时代的数据致富,也必须要有趁手的工具。只有合适的工具才能完成大规模数据的采集、清洗、存储、处理和可视化等各个环节。只有具备这样的工具,才能更好地利用数据来推动经济社会发展,并为人类创造更多的价值。

现如今,免费的,蚂蚁集团图计算团队开源的超大规模流图处理系统——TuGraph-Analytics。正成为一款专注于图计算领域的开源数据处理工具。我们从一个简单的问题开始,让你体会TuGraph-Analytics的强大之处。

“谁在以太坊的区块链上进行循环交易?”

如何回答这个问题?

大数据领域的同学可能会立即举手,Kafka给我上,Flink给我上,实在不行Spark... 这些系统在处理大规模数据时,工作流程通常非常长,开发效率较低,无法迅速地响应用户的需求。各有各的长处,各有各的毛病。因此,我们需要寻找全新的数据分析工具,以提高大数据领域的工作效率,并更好地应对日益复杂和多变的数据处理挑战。

新的工具?那么试试GPT?

Q:谁在以太坊的区块链上进行循环交易?

GPT:这个问题需要进行数据分析,涉及到大量的以太坊交易数据。如果要确定谁在以太坊的区块链上进行循环交易,可以通过以下步骤:

获取以太坊的交易数据,包括交易哈希、发送方地址、接收方地址、交易类型和交易金额等信息。

对交易数据进行清洗和处理,去掉无效数据和重复数据等。

利用图计算等技术,构建以太坊交易网络,并对交易网络进行分析,识别出交易中的循环交易。

进一步分析循环交易的发送方地址和接收方地址,识别出谁在以太坊的区块链上进行循环交易。

需要注意的是,由于以太坊区块链的去中心化特性,交易数据的获取和分析可能存在一定的难度和挑战。

姿势不对,再来一次。

Q:谁在以太坊的区块链上进行循环交易?一句话回答

GPT:无法通过一句话回答,需要进行数据分析。

可见,虽然GPT等人工智能在自然语言处理和图像识别等方面已经取得了显著进展,但在数据洞察方面仍然存在挑战。因为数据洞察往往需要结合具体的业务背景和领域知识,而这些人类经验和智慧难以完全被机器模拟和替代。此外,在数据清洗、数据预处理、特征提取和建模等关键步骤上,仍需要人类专家进行干预和优化。

今天,我们使用开源的TuGraph-Analytics与流式消息系统Kafka,不仅能够很好回答谁在以太坊的区块链上进行循环交易,而且能够搭建秒级实时的金融级解决方案,客官且看----

何为循环交易?

来看这个例子

图中有7个不同颜色的点代表交易账户,每个账户对应以太坊上的一个钱包地址。一个账户转出到另一个账户的过程,表示为图中有方向的边,这个图中共有8笔交易构成一个交易网络。

将交易头尾相连,能够找到返回起点的循环,就可以视为循环交易。

循环交易通常是指通过多个交易步骤,从而实现利用价格差异来获取利润的一种交易方式。其过程包括在不同的市场或不同的时间段内进行买卖行为,从而获得利润。在交易网络图中,可以使用环路检测算法来发现潜在的循环交易路径,并检索这条路径上的账户就能够知道哪些账户可能参与了循环交易。

可是,当一笔新的交易发生时——

可见,环路检测并不是一劳永逸的静态图算法。随着消息实时不断到来,交易网络图中的最新环路不断发生变化。如果关心每一笔交易产生的交易环路,这将成为一个极其复杂的问题。

以太坊是基于区块链技术的智能合约平台,其交易速度取决于众多的参与者。交易成交速度通常在15秒到1分钟之间,交易吞吐量可以达到每秒数十到数百笔交易。但别忘了,以太坊还有海量的历史交易数据,相当于存在一个相当复杂的”底图“,循环交易问题不仅需要考虑新的交易,还必须综合分析历史上所有的交易!

这就是为什么强如GPT也无法一句话回答这个问题的原因。

那么真的能够在每笔交易发生时实时地检测循环交易的产生吗?

实际上,使用专业的图计算系统TuGraph-Analytics,这个问题只需要几十行代码即可解决,还能够迅速结合Kafka搭建起交易听单->交易网络生成->实时循环交易检出->给下游发送消息完整的金融级实时解决方案。更关键的是,这一切都是免费的~ 感谢开源!

我们在TuGraph-Analytics新建一个图计算作业,只需大约40行代码,即可完成整个端到端流程。

代码描述如下,需要自取。

在这短短40行中,我们创建了以太坊交易的整个底图,命名为ethereum_transaction_network。把来自Kafka的实时交易流table_new_trade不断添加到命名为ethereum_transaction_network的图中。

接下来,每当有新的交易到达的时刻,都将触发一次3跳循环交易模式的检查,把更新的结果存入位于Kafka的外部表tbl_circular_trade,可以很方便地分发给下游组件。

实时交易数据我们采用了XBlock-ETH: Extracting and exploring blockchain data from Ethereum这篇论文整理的真实的以太坊区块数据,在这个Demo中把以太坊地址隐去,以一个数字替代,即每个数字代表以太坊的一个钱包地址,相同的数字表示相同的地址。生成的循环路径结果我们拼接成一个字符串,方便观察。

  1. set geaflow.dsl.window.size = 200;
  2. -- 以太坊交易的底图
  3. CREATE GRAPH IF NOT EXISTS ethereum_transaction_network (
  4. Vertex address (id bigint ID),
  5. Edge trade (srcId bigint SOURCE ID, targetId bigint DESTINATION ID, mount double)
  6. ) WITH (
  7. storeType='rocksdb'
  8. );
  9. -- Kafka监听最新的交易
  10. CREATE TABLE IF NOT EXISTS table_new_trade (
  11. srcId bigint, targetId bigint, mount double
  12. ) WITH (
  13. type='kafka',
  14. geaflow.dsl.kafka.servers = '{your.kafka.server.ip}:9092',
  15. geaflow.dsl.kafka.topic = 'tbl-trade'
  16. );
  17. -- 将新的交易添加到底图
  18. INSERT INTO ethereum_transaction_network.address SELECT srcId FROM table_new_trade;
  19. INSERT INTO ethereum_transaction_network.address SELECT targetId FROM table_new_trade;
  20. INSERT INTO ethereum_transaction_network.trade SELECT srcId, targetId, mount FROM table_new_trade;
  21. -- 一张外部表连接Kafka以输出检出的循环交易结果
  22. CREATE TABLE IF NOT EXISTS tbl_circular_trade (
  23. circular VARCHAR
  24. ) WITH (
  25. type='kafka',
  26. geaflow.dsl.kafka.servers = '{your.kafka.server.ip}:9092',
  27. geaflow.dsl.kafka.topic = 'tbl-circular-trade'
  28. );
  29. -- 使用以太坊交易图进行实时查询
  30. USE GRAPH ethereum_transaction_network;
  31. -- 查询3跳循环交易模式存入位于Kafka的外部表
  32. INSERT INTO tbl_circular_trade
  33. MATCH (v1)-[:trade]->(v2)-[:trade]->(v3)-[:trade]->(v4)
  34. WHERE v1.id = v4.id AND v1.id != v2.id AND v1.id != v3.id AND v2.id != v3.id
  35. RETURN concat(CAST(v1.id as VARCHAR), '->', CAST(v2.id as VARCHAR),
  36. '->', CAST(v3.id as VARCHAR), '->', CAST(v4.id as VARCHAR)) AS circular
  37. ;

实机演示!

打开一个Kafka Producer,产生消息流,将交易不断发送给Kafka,如左侧终端窗口所示。平均1秒左右,最新的图中循环交易检出结果就打印在右侧的Kafka Consumer窗口中。

当添加一些新的交易日志时,右侧的Kafka Consumer窗口中也实时更新了新的循环交易检出结果,响应十分迅速。

以上便是开源图计算平台TuGraph Analytics结合Kafka,快速搭建的以太坊循环交易检出解决方案。虽然这只是一个小小的demo,但实机演示中强大的图计算语法和系统性能可见一斑,大大较低了我们普通人搭建图计算应用的难度和成本。

说多不如现在开始行动,TuGraph Analytics是你不容错过的利器。现在就赶快访问https://github.com/TuGraph-family/tugraph-analytics,亲自体验TuGraph Analytics的魅力吧!此外,我们欢迎各位参与到开源贡献中来,为社区贡献自己的智慧和代码,共同促进国产图计算系统的发展。

[参考文献]

P. Zheng, Z. Zheng, J. Wu, and H.-N. Dai, “XBlock-ETH: Extracting and exploring blockchain data from Ethereum,” IEEE Open J. Comput. Soc., vol. 1, pp. 95–106, May 2020, doi: 10.1109/OJCS.2020.2990458.

谁在以太坊区块链上循环交易?TuGraph+Kafka的0元流图解决方案的更多相关文章

  1. 使用Geth 构建以太坊区块链并模拟挖矿过程

    使用Geth 构建以太坊区块链并模拟挖矿过程 Go-ethereum 是以太坊官方的一个Golang 实现,我们可以使用Geth 工具来创建创世区块并启动区块链,使用Clef 实现以太坊钱包的功能,以 ...

  2. 以太坊区块链Java(EthereumJ)学习笔记:概述

    本系列文章介绍以太坊区块链基于Java语言的解决方案.通过介绍EthereumJ定义的主要模块和Class,希望为大家学习和使用EthereumJ提供一些帮助. 整体架构 以太坊的Java解决方案主要 ...

  3. 区块链--Ubuntu上搭建以太坊私有链

    1.搭建私链所需环境 操作系统:ubuntu16.04,开虚拟机的话要至少4G,否则会影响测试挖矿时的速度 软件: geth客户端 Mist和Ethereum Wallet:https://githu ...

  4. geth搭建以太坊私链及常用操作

    一.下载安装geth客户端 https://www.ethereum.org/ 二.搭建私有链 1.准备创世区块配置文件 要运行私有链,我们就需要定义自己的创世区块,创世区块信息写在一个json格式的 ...

  5. 区块链学习(四)truffle部署编译智能合约以太坊私有链

    前面我们介绍了以太坊私有链的搭建以及多节点私有链网络,这次我们介绍如何使用truffle框架来部署编译智能合约到我们之前搭建的私有链网络中. 搭建环境及需使用的工具:ubuntu18.04  Truf ...

  6. 使用 Go-Ethereum 1.7.2搭建以太坊私有链

    目录 [toc] 1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球 ...

  7. 转:使用 Go-Ethereum 1.7.2搭建以太坊私有链

    使用 Go-Ethereum 1.7.2搭建以太坊私有链 目录 [toc] 1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底 ...

  8. Mac环境搭建以太坊私有链

    原文地址: 石匠的blog 为了测试以太坊智能合约,最方便的是在本地搭建一个以太坊私有链.在mac上搭建环境主要需要以下步骤. geth安装 geth是go-ethereum的简写,是一个用go语言编 ...

  9. 基于Vue、web3的以太坊项目开发及交易内幕初探 错误解决总结

    基于Vue.web3的以太坊项目开发及交易内幕初探 本文通过宏观和微观两个层面窥探以太坊底层执行逻辑. 宏观层面描述创建并运行一个小型带钱包的发币APP的过程,微观层面是顺藤摸瓜从http api深入 ...

  10. 以太坊联盟链 parity 节点搭建

    https://www.cnblogs.com/sumingk/articles/9097996.html 上一篇文章介绍了以太坊私有链 geth节点的搭建,本篇介绍下企业级应用 联盟链搭建,运用pa ...

随机推荐

  1. 逍遥自在学C语言 | 位运算符的基础用法

    前言 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是和我们一起学习的小白程序猿 -- 逍遥. 二.构成和表达方式 位运算符是一组用于在二进制数之间进行操作 ...

  2. 论文解读( FGSM)《Adversarial training methods for semi-supervised text classification》

    论文信息 论文标题:Adversarial training methods for semi-supervised text classification论文作者:Taekyung Kim论文来源: ...

  3. linux shell 自动化部署 npm vue 项目

    此 shell 是提供给前端登录服务器自动化部署 vue 项目的 用此命令,工具化部署项目,可以杜绝前端自己部署项目时,对服务器违规操作 如有其它问题,可在下方留言! #!/bin/sh # url: ...

  4. php对接snmp设备详细讲解

    1.Php安装snmp扩展 1.基础环境准备 Php7.2版本 yum -y install php72w-snmp Php7.4版本 yum install net-snmp php-snmp ne ...

  5. CommunityToolkit.Mvvm系列文章导航

    包 CommunityToolkit.Mvvm (又名 MVVM 工具包,以前名为 Microsoft.Toolkit.Mvvm) 是一个现代.快速且模块化的 MVVM 库. 它是 .NET 社区工具 ...

  6. .NET快速开发框架-RDIFramework.NET 全新EasyUI版发布

    RDIFramework.NET,基于.NET的快速信息化系统快速开发框架.10年专注.易上手.多组件.全源码.可灵活构建各类型系统. 1.RDIFramework.NET快速开发框架简介 RDIFr ...

  7. LeetCode SQL 基础题

    链接: 力扣 个人做法: # Write your MySQL query statement below SELECT A.name Employee FROM Employee A,Employe ...

  8. 基于Canal实现MySQL 8.0 数据库数据同步

    前言 服务器说明 主机名称 操作系统 说明 192.168.11.82 Ubuntu 22.04 主库所在服务器 192.168.11.28 Oracle Linux Server 8.7 从库所在服 ...

  9. NEQR: novel enhanced quantum representation

    一.概述   NEQR利用量子叠加和量子纠缠的特性,将数字图像转换为量子态表示,并通过量子门操作进行处理和操作.相较于传统的经典图像表示方法,NEQR具有更高的图像压缩率和更强的安全性,能够在保持图像 ...

  10. WSGI实现支持多URL的WEB服务器