来源:ConfluentKaiWahner?编译:Masterdai
一:背景和展望
早在2016年InfoQ的国际会议上,KaiWahner?发表了一场演讲名为《区块链——中间件的下一件大事》。他在当时提出了一种新颖的基于区块链数据和中间件的参考架构,这一套架构现如今被大量的技术集成商和供应商所采用。
然而,他并没有加入任何一家加密初创公司。而是在2017年加入了Confluent,因为他认为“通过事务和分析型工作负载来处理任何规模的动态数据是更加重要的范式转变。”对于加入Confluent?这个决策Kai认为他是正确的,正如同Kai在博客中写道,“现如今大部分的企业都利用Kafka作为MQ、ETL和ESB工具的替代中间件,或者使用无服务Kafka实现云原生iPaaS。”
故事并没有在这里戛然而止,区块链、加密技术和NFT的出现和规模化采用激增了对中间件等开源基础软件的需求。出于充分的理由,有许多的加密市场网站、区块链监控基础设施和托管银行建立在Kafka之上。这些客户成功的关键就在于将区块链、加密货币与企业服务软件、数据库和数据湖进行了集成。
如果我们把Chainlink这类预言机比作一道连接链上网络和链下世界的彩虹桥,而像Kafka、Flink?这样的中间件就是用来折射虹光的棱镜塔。
二:什么是中间件
中间件是位于操作系统和在其上运行的应用程序之间的软件,其支持分布式应用程序之间的通信和数据管理。它有时候也被称为管道,因为将两个应用程序连接在一起,因此数据和数据库可以轻松地在“管道”之间传递。常见的中间件包括数据库中间件、应用服务器中间件、面向消息中间件等等。换句话说,它实现了一组\一个应用程序与另一个\一组应用之间的对话和通信,就像是一个跨国派对中的中间介绍人加翻译。而Kafka就是消息中间件的一种。
Aurora CEO:彩虹桥已采取预防措施暂停使用,没有资金损失:2月11日消息,Aurora CEO Alex Shevchenko发推称,彩虹桥已采取预防措施而暂停使用,没有资金损失,团队正在努力恢复彩虹桥。[2023/2/11 12:00:31]
ApacheKafka
Kafka?是一个开源分布式事件流处理平台,最初由2011年在LinkedIn创建并且开源。
Kafka?通过三个关键功能使得用户可以搭建一个实现端到端解决方案的事件流
发布和订阅事件流,包括从其他系统持续导入或导出数据。
持久并且可靠的存储事件流。
处理瞬时发生或者回顾发生的事件流。
事件流:以流式事件的形式将数据从各个数据源进行抓取;为后续的检索进行持久的存储;以实时和可追溯的方式操纵处理和响应事件流;并且根据需要将事件传递到不同目标的技术。事件流确保了数据的连续流动和表达,从而使正确的信息在正确的时间出现在正确的位置。
ApacheKafka?的用例
消息传递:Kafka可替代传统的消息代理。消息代理常被适用于数据存储和处理的解耦,缓冲未处理响应的消息等等。
网站活动跟踪:将跟踪用户活动的管道重建为一组实时的发布—订阅源。将用户在站点的活动发布到中心主题,每一个活动类型都有一个主题。这些订阅源可以用于订阅一系列用例,包括实时处理、监控以及加载到Haadop或者离线数仓系统进行处理和报告。
日志聚合:使用Kafka作为日志聚合方案的替代品。日志聚合通常从服务器收集日志文件,并将它们放在一个中心位置进行处理。Kafka抽象出文件的细节,并将日志或事件数据抽取为更清晰的数据流,这使其在多个数据源和分布式数据库情况下拥有更低延迟的数据处理。
瑞士宇舶表和村上隆推出彩虹宝石腕表NFT系列:2月3日消息,瑞士顶级腕表品牌宇舶表(Hublot)宣布与著名艺术家村上隆合作推出13款腕表,这些腕表将以配套NFT的方式出售。最新发布活动中仅展示了一款腕表及NFT,其他12款将于3月下旬亮相,配套NFT则将于今年四月上线宇舶表官网,每枚售价为5万瑞士法郎,购买NFT后有一年时间在OpenSea平台上交易,2024年4月时如果能收集所有12款NFT才有机会购买最稀有的彩虹版本NFT和配套腕表。
此外,本次发布的新款腕表发售对象仅为Hublot Classic Fusion Takashi Murakami NFT所有者,该NFT当前地板价为1.6ETH。[2023/2/3 11:45:58]
三:kafka和web3的关系
下图是一个非常经典的Dapp技术实现原理,但他却给了很多人一个错觉。似乎只需要一个前端来向以太坊网络请求数据,就能够实现链上和链下行为的交互了。在实际的开发过程中,往往会更加复杂,并且会在区块链后端和前端之间增加一层结构。
在这样的一层结构中我们可以实现:
Kafka?以侧链或者链下的方式来进行大规模实时数据计算;区块链技术与企业其他软件部分的集成,包括CRM、大数据分析、和任何其他自定义的业务应用程序。即Kafka作为区块链集成的中间件。
在加密企业架构中更加普遍的用例是利用Kafka作为区块链与企业应用程序之间的可扩展实时数据中心。下面是一些例子,并且探讨一些Kafka可以提供帮助的技术用例
3.1.Kafka作为元宇宙的数据中枢
Aurora CEO:彩虹桥阻止了一起攻击事件,攻击者损失5枚以太坊:8月22日消息,NEAR生态EVM扩容网络Aurora的CEO Alex Shevchenko在Twitter上表示,北京时间8月21日凌晨,黑客向彩虹桥提交了一个伪造的NEAR区块并尝试对彩虹桥发动攻击,但被看门狗在4个以太坊区块的时间内阻止并导致黑客损失了5枚以太坊。Alex Shevchenko表示,本次攻击与今年5月1日的攻击手段相同,此前的攻击中黑客损失了2.5枚以太坊。[2022/8/22 12:41:34]
零售商家和用户之间的交流必定是实时的,无论你是想要卖实体的衣服、手机、或者在NFT交易市集之中和虚拟人商家进行讨价还价。而以下架构通过编排各种加密和非加密应用程序之间的信息流来实时支持任何规模的虚拟世界架构。
3.2.Kafka在加密交易、市场中作为数据中枢的角色
用户在移动钱包执行比特币交易。实时应用程序监控链下数据、关联数据、在仪表盘中显示并发送推送通知。另外一个完全独立的部门在批处理的过程中回放来自Kafka日志的历史事件,以使用专用分析工具进行合规性检查。
Kafka?生态系统中提供了许多功能,可以将来自区块链和加密世界的数据与来自传统IT的数据一起使用。
四:Kafka可以提供的技术用例
监控区块链基础设施、加密货币和Dapp的健康状况,以避免停机,保护基础设施并使得区块链数据可访问。——基础设施维护
通过KafkaStream或ksqlDB进行流处理可以在Defi、NFT等相关交易市场进行实时数据处理。——链上数据分析
声音 | 赵余:“彩虹表攻击”可以简单理解为“字典攻击”:EOS LaoMao 的赵余在《宁话区块链》之全球EOS节点答疑的节目中称 “前两天发生的’彩虹表攻击’,是由于有些开发者通过设计的自定义助记词功能不完善。既没有过滤空字符串,也没有强制用户设置足够长的助记词。导致黑客可以通过简单的穷举,就能拿到部分账户的私钥。EOS 彩虹表攻击始末:EOS 官方库 eosjs-ecc(https://github.com/EOSIO/eosjs-ecc) 提供了一个自定义助记词生成密钥的接口。有些开发者使用这个接口,做了一个用户可以自定义助记词的密钥生成工具。但是由于产品设计问题,具体问题是下面两个:1. 没有过滤空字符串;2. 没有强制要求用户自己填写的助记词的长度必须达到足够安全的长度(比如 12 个独立的单词作为助记词,就可以认为安全性很高了)。导致部分用户,使用了简单的字母或单词作为助记词生成了自己的私钥。比如 a, b, c, hello, world 等等。这就导致黑客可以轻而易举地“穷举”常见的单词,字母,以及单词组合,进而拿到用户私钥,最终转移用户资产。这个“穷举”的方法,一般也被称为“彩虹表”攻击。对于使用自定义助记词功能生成私钥的用户,建议自查助记词长度,确保助记词长度不少于 12 个单词。”[2018/7/17]
Kafka作为预言机的集成通道:例如从Chainlink传递到Kafka再到IT基础设施。
通过Kafka?主干上的节流和随机数管理来处理背压,并将事务流式传输到链上。——Gamefi和Socialfi?
同时处理多个链:并行监控和关连以太坊、solana、Bsc区块链上的交易。——跨链相关
动态 | EOS账号“彩虹”攻击披露48小时,已累计归还数千个EOS Token:7月11日上午,在发布EOS账户存在”彩虹“攻击风险的高危预警后,区块链安全公司PeckShield紧急启动部署了一系列应急处理方案。其中启用的EOSRescuer公共查询服务已累计提供数万次查询,监测到的受影响的高危账户资产也已做妥善管理。截至目前,PeckShield已累计通过安全账号向用户退还3,163个EOS Token。
考虑到此种攻击方式已公开,为进一步保障EOS账户的资产安全,PeckShield构建起基于全网数据的EOS账户风险云监测服务,同时将扩大”彩虹攻击“的监测范围,覆盖更多存在此类安全隐患的高危账户。[2018/7/13]
我们可以看到,未来随着新一代gamefi、defi、socialfi、移动端Dapp的增长,过去仅仅是将链上数据摄取到数据库和数据湖的方法已经不能满足现有新应用的需求了。在架构设计中充分地利用消息中间件的特性,可以满足大部分用户对于实时性、可靠性的需求。
五:加密和Defi世界中Kafka的真实案例
TokenAnalyst:?加密市场的可视化
EthVM:区块链浏览器和分析引擎
Kaleido:用于区块链和智能合约的RESTAPI?网关
Chainlink:用于将智能合约从区块链连接到现实世界的Oracle?网络
5.1.TokenAnalyst?–?加密市场的可视化
TokenAnalyst?是一个链上数据分析工具,用于可视化和提供企业级API服务。该项目于2020年5月宣布停止运营,其团队大部分成员加入Coinbase。不过他的案例仍然值得借鉴——其利用Kafka堆栈将来自比特币和以太坊的区块链数据与其分析工具集成在一起。
“访问链上数据需要节点,而这并不如人们想象中断那么容易。此外,另一个挑战是使他们与网络保持同步。为了实现零停机,并且确保最高标准的数据质量和可靠性,我们决定使用Kafka?和Confluent?平台。”
TokenAnalyst?开发了一个名为Ethsync的内部解决方案。每个节点加上?Ethsync?都将数据推送到其对应的?Kafka?主题。如同下图所示,其需要运行多个节点以实现冗余。推送到主题的块更新并且客户端接受为新的有效块的块。但是,由于区块链的性质,可能会发生区块链的分叉。因此,以前有效的块可能会变得无效。
基于KafkaStreams的区块确认器:为了防止在下游聚合计算中使用无效块,TokenAnalyst开发了一个基于?Scala?中的KafkaStreams?的块确认器组件。它通过临时保留块来解决重组场景,并且仅在达到一定数量的确认块时才传播它们。
确认器不仅解决了验证规范链的问题,并且能够通过确认丢弃和已经注册的块,来输出具有有效一次性语义的确认块。通过该组件可以使其充分利用容错恢复机制,适用于零停机环境的滚动部署。
5.2.EthVM?–?区块链浏览器和分析引擎
比特币和以太坊等公共去中心化区块链的美妙之处在于其透明度,防篡改日志使得区块链浏览器能够监控和分析所有的交易。
EthVM?是一个开源的以太坊区块链数据处理和分析引擎,由?ApacheKafka?提供支持。该工具支持区块链审计和决策。EthVM?验证交易和智能合约的执行,检查余额并监控gas?价格。该基础设施是使用KafkaConnect、KafkaStreams?和?SchemaRegistry?构建的。还包括一个客户端可视化块资源管理器。
EthVM使用Kafka的契机来源于BoergeSvingen?在Confluent博客上发表的一篇名为《在纽约时报上使用ApacheKafka?发布》的文章,其描述了标志性的纽约时报如何从混杂的API、服务、生产者和消费者转变为用Kafka驱动的基于日志的架构。
而区块链本质上就是一个不断增长的记录列表,合并成块并且用密码学来链接——用程序员的话说就是链表。在Kafka的术语中,以太坊客户端就是生产者——负责创建日志的新条目。
5.3.Kaleido?–?用于加密和智能合约的?Kafka?原生网关
Kaleido?提供企业级区块链?API?来部署和管理智能合约、发送以太坊交易和查询区块链数据。它隐藏了以太坊交易提交、Web3客户端库、nonce管理、RLP?编码、交易签名和智能合约管理的区块链复杂性。
Kaleido?为链上逻辑和数据提供?RESTAPI。它由完全托管的高吞吐量ApacheKafka?基础架构提供支持。
在基于区块链的分布式事务系统中,对事件的检测和反应是不可避免的要求。没有一个参与者或应用程序可以控制状态变化,链上的智能合约逻辑不可能直接与链下系统通信——否则逻辑的确定性就会受到损害。
事件是编程模型的核心部分,使用丰富的类型系统很容易发出。
这些事件不仅可以用来触发逻辑,还可以作为数据流从链中流出。
用于在web端和移动端的高效数据检索
实时分析引擎和数据湖
无服务或传统计算来触发应用程序和业务流程
Kaleido?提供了两种内置功能来处理这些事件,无需直接使用复杂的原始?JSON/RPC?接口、处理检查点重启/恢复或RLP?解码和类型映射。
事件流:使用与RESTAPI?网关集成的RESTAPI?进行订阅,并通过简单的Webhook?将事件传递到任何HTTP?接口,或者通过ApacheKafka?支持的加密App2AppMessaging?层。
5.4.Chainlink?–?用于将智能合约从区块链连接到现实世界的?Oracle?网络
Chainlink?是用于将智能合约连接到现实世界的行业标准预言机网络。“借助?Chainlink,开发人员可以构建混合智能合约,将链上代码与由去中心化?Oracle?网络提供支持的大量安全链下服务相结合。由数十万人组成的全球去中心化社区管理,Chainlink?引入了更公平的合约模型。它的网络目前为去中心化金融?(DeFi)、保险和游戏生态系统等领域的智能合约提供数十亿美元的价值。Chainlink网络的完整愿景可以在Chainlink2.0白皮书中找到。”
Chainlink并没有在任何公开的博客文章和会议中讨论其设计架构。我们只能从其招聘人员的工作栈要求中窥见其设计——Chainlink正在从传统的基于时间序列的监控过渡到事件驱动的架构。
六:小结
在这些节点设施服务商出来之前,普通人想要获取链上的数据信息是非常困难的。而现在,任何一个能够上网的人都可以通过区块链浏览器或者链上数据分析工具看见相对实时的区块数据。
然而,能够看见数据和大规模的使用数据是完全不同的概念。
“神祇们不会攀爬世界之树。他们用彩虹桥穿行于几大世界之间。只有神才能用彩虹桥。如果冰霜巨人或者别的巨人试图通过彩虹桥爬上阿斯加德,他们的脚就会被烧伤。”
尽管我们现在有了节点托管、Web3API等服务的帮助,链上和链下之间进行高效实时沟通的成本依然很大。如同北欧神话中的彩虹桥,它依然是某些神祇们的专属通道。原因就在于链上数据和链下业务之间存在大量的空白环节。Kafka仅仅只是消息传递的一个环节,在此之间还有数据的实时抓取、清洗和存储。而过去服务于传统IT业务的中间件、数据库等并不一定完全适用于现有的Web3IT架构。随着越来越多的企业和业务迈入加密领域,未来也可能会出现一种全新的基于区块链网络的开源中间件和数据分析架构。
我希望有一天,人人都能拥有开启彩虹桥的能力。我们将自由的穿梭在世界之树所缔造的九界之间,与众生灵交流。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。