——背景——
当前,区块链跨链平台的接入方式在架构设计上存在着较大差异,如何将应用链快速、便捷地接入跨链系统是一个亟待解决的问题。趣链BitXHub跨链服务平台采用中继链+网关的跨链方案,其中,跨链网关担任着区块链间收集和传播交易的角色。采用插件机制的设计将网关与应用链交互的模块与跨链网关核心功能模块进行解耦,从而实现不同种类应用链高效地接入跨链系统。在Pier运行时,通过动态加载插件的方式完成不同应用链的灵活适配。为了更好的提升Pier与应用链的交互能力,具体应用链插件需要根据不同区块链的特性实现具体的接口,交互接口需要满足以下几个功能:
1)监听应用链上的跨链事件并传给核心模块进行处理;
2)执行来自于网关发出的跨链请求;
以太坊网络销毁量超346.56万枚ETH:金色财经报道,据Ultrasound数据显示,以太坊网络销毁量超346.56万枚ETH,本文撰写时销毁量为3,465,676.51枚ETH。其中,OpenSea销毁230050.66枚ETH,ETHtransfers销毁293553.61枚ETH,UniswapV2销毁190883.31枚。
注:自以太坊伦敦升级引入EIP-1559后,以太坊网络会根据交易需求和区块大小动态调整每笔交易的BaseFee,而这部分的费用将直接燃烧销毁[2023/7/17 10:58:39]
3)能够主动查询应用链上已收到和已执行的跨链请求状态。
在插件实现方案的设计中,我们先后采用了两种不同的插件机制,下面就来介绍一下我们使用原生插件时碰到的问题以及新插件方案的优势。
纳斯达克CEO:正协助美国金融业监管局和SEC对Coinbase的诉讼执法工作:6月7日消息,彭博社报道,纳斯达克CEO Adena Friedman在访谈中表示,纳斯达克正在协助美国金融业监管局和SEC对Coinbase进行的诉讼执法工作。[2023/6/8 21:22:25]
——原生插件——
go语言从1.13版本开始支持编译为插件,使用方式如下
gobuild--buildmode=plugin-oappchain.so*.gogo项目在编译时可以通过--buildmode指定为插件模式,这种方式将输出为动态链接文件。该文件并非可直接运行的二进制文件,而是提供给其他二进制运行时的动态调用。
在主二进制文件中的使用方式如下:
dForce:受到攻击的为Arbitrum和Optimism上的wstETH/ETH Curve Gauge Vaults:2月10日消息,dForce在推特上表示,Arbitrum和Optimism上的wstETH/ETH Curve Gauge Vaults遭到攻击,之后dForce立即暂停了dForce Vaults,协议的其他部分不受影响,用户资金在dForce Lending中是安全的。dForce表示将尽快提供详细的报告和补救措施。[2023/2/10 11:58:59]
总结来说原生插件具有以下特点:
优点:
1)?使用体验和原生代码一致,类似于代码模块的二进制化;
2)?效率较高,插件直接在主程序进程空间中运行。
Adidas Originals与腾讯音乐旗下首个虚拟音乐社交平台TMELAND合作举办元宇宙音乐节:5月24日消息,Adidas Originals与腾讯音乐旗下首个虚拟音乐社交平台TMELAND合作举办元宇宙音乐节OZ未来音乐会。TMELAND在核心地标广场区为Adidas Originals品牌定制了道旗、logo牌等多种形式的专属虚拟户外广告,参与者完成定时活动即可以兑换数字Ozworld运动鞋。(JINGDAILY)[2022/5/24 3:38:29]
缺点:
1)原生插件中的依赖库与主程序必须保持完全一致,否则启动的时候会报错,而且不论这个依赖是直接引用还是间接引用,都会出现这个问题。
——转战RPC插件——
原生插件中严厉的版本限制,使得在升级插件和或网关主程序功能时,可能因为无意升级了主程序某些依赖,插件也必须作出相同的适配升级。这种方式不利于插件的完全解耦,因此我们转向了另外一个使用RPC方式的GO插件项目。
在GO原生支持的插件机制出现之前,hashicorp的go-plugin就已经存在,不过GO原生插件出来之后,他们也并没有放弃对该项目的支持,因为总的来说原生插件并不是很完善,在某些场景下还是go-plugin更方便。
go-plugin插件的使用方式如下:
简单来说,go-plugin项目实现的插件方式采用了C/S模式,主程序作为RPCClient,具体插件作为RPCServer,Server和Client通信也是基于的interface接口规范来通信。
具体使用流程如下:
1)抽象需要插件化的interface,这里直接复用原生插件中使用的接口定义即可;
2)针对Client端和Server端,都实现上述接口。Server端的实现是具体的插件处理逻辑部分的代码;Client端的实现只需封装一下gRPC处理的结果和异常信息,之后便可以做到主程序在使用插件时对于gRPC的弱感知化。
Server实现部分:
Client实现部分:
▲额外需要注意的是:
插件中需要调用plugin.Serve来授权主程序使用自己的RPC服务。这里需要注意的是,主程序和插件通信前需要进行握手,主要包括确认该插件的版本信息。主程序使用plugin.Client对象启动插件,该插件是运行在另一个进程中的,所以插件崩溃并不会影响到主程序。client与server在使用中实际上是通过进程间Socket来完成通信,这虽然牺牲了一定的性能却换来了原生插件的单进程方案所不具备的依赖解耦?多语言支持等灵活应用。——结语——
go-plugin提供两种通信方式的选择,一种是GRPC,一种是GO语言标准库中自带的net/rpc。GRPC插件的好处是可以采用不同的语言来实现,并且Googleprotobuf也是支持多语言的。网关插件本质上已成为连接应用链并实现对网关提供RPC服务的桥梁,开发者在跨语言编写插件时的阻碍会大大降低,在面对不同应用链特性时也能做到更加可靠与简洁的逻辑呈现。
作者简介
王荻矣?趣链科技数据网格实验室BitXHub团队
Cent成立于2017年,是一个无广告的创作者网络,它允许用户为好的帖子和评论相互提供加密奖励——这就像在Reddit上送礼物一样,但它是基于以太坊.
1900/1/1 0:00:00据TheBlock8月25日报道,在全球芯片短缺的情况下,台积电据称将提高晶圆代工价格。晶圆用于构建集成电路,而集成电路是比特币矿机的关键组件.
1900/1/1 0:00:00据雅虎体育8月5日消息,美国纳斯卡车赛宣布与区块链赛马游戏ZedRun合作,将发布纳斯卡品牌的数字赛马。目前,双方仍在敲定细节,其中可能包括ZedRun的场地和广播活动,以及未来可能出现在ZedRun数字宇宙中的车队、车手和赛道IP.
1900/1/1 0:00:00巴比特讯,8月14日,PolyNetwork攻击者再次留下链上信息,主要内容如下:1.FBI没有试图联系我。我很高兴他们和其他安全团队可能会从这场“游戏”中受益。对研究人员来说,甚至攻击本身就是“一种享受”.
1900/1/1 0:00:00近日,Facebook首席执行官马克·扎克伯格(MarkZuckerberg)宣布,自家科技巨头将从一家社交媒体公司转变为一家“元宇宙公司”,并将发挥“实体互联网”的作用,成为截然不同的现实和虚拟世界的综合体.
1900/1/1 0:00:00巴比特讯,8月30日,三箭资本联合创始人KyleDavis及首席执行官ZhuSu转发VincentVanDough推文。该推文表示,“很高兴能与三箭资本的zhusu和KyleDavis合作推出NFT基金StarryNight.
1900/1/1 0:00:00