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

这篇具有很好参考价值的文章主要介绍了谁在以太坊区块链上循环交易?TuGraph+Kafka的0元流图解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

现如今,免费的,蚂蚁集团图计算团队开源的超大规模流图处理系统——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中把以太坊地址隐去,以一个数字替代,即每个数字代表以太坊的一个钱包地址,相同的数字表示相同的地址。生成的循环路径结果我们拼接成一个字符串,方便观察。

set geaflow.dsl.window.size = 200;
-- 以太坊交易的底图
CREATE GRAPH IF NOT EXISTS ethereum_transaction_network (
	Vertex address (id bigint ID),
	Edge trade (srcId bigint SOURCE ID, targetId bigint DESTINATION ID, mount double)
) WITH (
	storeType='rocksdb'
);

-- 从Kafka监听最新的交易
CREATE TABLE IF NOT EXISTS table_new_trade (
  srcId bigint, targetId bigint, mount double
) WITH (
	type='kafka',
  geaflow.dsl.kafka.servers = '{your.kafka.server.ip}:9092',
	geaflow.dsl.kafka.topic = 'tbl-trade'
);

-- 将新的交易添加到底图
INSERT INTO ethereum_transaction_network.address SELECT srcId FROM table_new_trade;
INSERT INTO ethereum_transaction_network.address SELECT targetId FROM table_new_trade;
INSERT INTO ethereum_transaction_network.trade SELECT srcId, targetId, mount FROM table_new_trade;

-- 一张外部表连接Kafka以输出检出的循环交易结果
CREATE TABLE IF NOT EXISTS tbl_circular_trade (
	  circular VARCHAR
) WITH (
	type='kafka',
  geaflow.dsl.kafka.servers = '{your.kafka.server.ip}:9092',
	geaflow.dsl.kafka.topic = 'tbl-circular-trade'
);

-- 使用以太坊交易图进行实时查询
USE GRAPH ethereum_transaction_network;

-- 查询3跳循环交易模式存入位于Kafka的外部表
INSERT INTO tbl_circular_trade
MATCH (v1)-[:trade]->(v2)-[:trade]->(v3)-[:trade]->(v4)
WHERE v1.id = v4.id AND v1.id != v2.id AND v1.id != v3.id AND v2.id != v3.id
RETURN concat(CAST(v1.id as VARCHAR), '->', CAST(v2.id as VARCHAR),
       '->', CAST(v3.id as VARCHAR), '->', CAST(v4.id as VARCHAR)) AS circular
;

实机演示!

打开一个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.文章来源地址https://www.toymoban.com/news/detail-511351.html

到了这里,关于谁在以太坊区块链上循环交易?TuGraph+Kafka的0元流图解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 在本地以太坊私链上,使用go调用智能合约,获取事件日志

    完整go项目文件目录      

    2024年02月11日
    浏览(45)
  • 玩以太坊链上项目的必备技能(类型-引用类型-Solidity之旅三)

    在前文我们讲述了值类型,也就说再修改值类型的时候,每次都有一个独立的副本,如:string 类型的状态变量,其值是无法修改,而是拷贝出一份该状态的变量,将新值存起来。对于处理稍微复杂地值类型时,拷贝将变得愈发大了,也正是介于此,才考虑到将数据存放在 内

    2024年01月24日
    浏览(33)
  • 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一)

    前面一篇关于 智能合约 翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用 程序语言 去编写 智能合约 了。 而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂 智能合约 代码,或找出其中的漏洞,那么,学习 Solidity 这门高级的智能合约语言是有

    2023年04月16日
    浏览(84)
  • 玩以太坊链上项目的必备技能(错误处理以及异常-Solidity之旅十四)

    错误处理 作为开发者的我们知道,我们所编写出来的程序难免会出现 bug ,而要做的是捕获异常,给用户抛出一个友好地错误提示。 而在 Solidity 中,根据 状态恢复 异常来处理错误,该异常将撤销在当前调用中对状态所做的所有修改,与此同时,还向调用者标记错误。 它有

    2024年02月01日
    浏览(37)
  • 玩以太坊链上项目的必备技能(Constant 和 Immutable 状态变量-Solidity之旅十六)

    constant(常量) 说到 常量 这一概念,拥有现代编程经历的您,对这一词再熟悉不过了。 常量 , 常量 ,顾名思义便是变量值始终不变,这在很多面向对象程序语言中都有。 相对 Solidity 来说,它也是支持 常量 的。 假若将 状态变量(State Vriable) 声明为 constant(常量) ,而

    2024年02月02日
    浏览(36)
  • 浅析『链上数据分析』 : 区块链 + 数据分析

    什么是链上数据分析? 01 区块链 02 链上数据 03 为什么要分析链上数据 04 数据分析思维 05 数据分析技能 06 数据分析工具 07 业务逻辑理解 链上数据分析,顾名思义,就是对区块链上的数据进行分析。 其实就是将数据分析运用到区块链行业上,和其他的如电商数据分析一样,

    2023年04月08日
    浏览(28)
  • 一文读懂Casper区块链上的NFT

    Casper区块链很荣幸已带来超过140个包括交易所、合作开发、Web3应用等在内的各类项目(数目还在不断增加)。通过区块链将开发者和企业无缝对接,Casper生态实现了快速成长并延伸至了新的领域。 在Casper区块链触达的新领域中,NFT无疑是用户及开发者的最爱。Casper区块链不

    2023年04月09日
    浏览(39)
  • 【使用go开发区块链】之获取链上数据(01)

    在我们实际开发项目中,很多时候都需要从链上获取区块数据,将数据加工处理后存入到数据库中,本章开始,我们来学习一下如何从链上获取数据(主动拉取)并存储到数据库中 本系列文章 1、【使用go开发区块链】之获取链上数据(01) 2、【使用go开发区块链】之获取链

    2024年01月22日
    浏览(32)
  • 【使用go开发区块链】之获取链上数据(04)

    上一篇文章,我们完成了go连接区块链的操作,本章我们将要完成获取链上数据,并持久化到数据库的功能开发 本系列文章 1、【使用go开发区块链】之获取链上数据(01) 2、【使用go开发区块链】之获取链上数据(02) 3、【使用go开发区块链】之获取链上数据(03) 4、【使

    2024年02月12日
    浏览(38)
  • 榕树贷款migrations迁移文件用于将合约部署到区块链上

    Migrations(迁移)是 JavaScript 文件,这些文件负责暂存我们的部署任务,并且假定部署需求会随着时间推移而改变。榕树贷款随着项目的发展,我们应该创建新的迁移脚本,来改变链上的合约状态。榕树贷款所有运行过的 migration 历史记录,都会通过特殊的迁移合约记录在链上

    2024年02月12日
    浏览(25)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包