月亮链 月亮链
Ctrl+D收藏月亮链

RPC:「跨链网关的模块化进程」插件机制演化-ODAILY_SERP价格

作者:

时间:1900/1/1 0:00:00

——背景——

当前,区块链跨链平台的接入方式在架构设计上存在着较大差异,如何将应用链快速、便捷地接入跨链系统是一个亟待解决的问题。趣链BitXHub跨链服务平台采用中继链+网关的跨链方案,其中,跨链网关担任着区块链间收集和传播交易的角色。采用插件机制的设计将网关与应用链交互的模块与跨链网关核心功能模块进行解耦,从而实现不同种类应用链高效地接入跨链系统。在Pier运行时,通过动态加载插件的方式完成不同应用链的灵活适配。为了更好的提升Pier与应用链的交互能力,具体应用链插件需要根据不同区块链的特性实现具体的接口,交互接口需要满足以下几个功能:

1)监听应用链上的跨链事件并传给核心模块进行处理;

2)执行来自于网关发出的跨链请求;

阿里巴巴旗下跨境电商平台全球速卖通已删除发布NFT的推文:金色财经报道,6月8日消息,阿里巴巴旗下跨境电商平台全球速卖通(AliExpress)在推特上宣布与The Moment3!联手打造AliExpress主题购物时刻NFT,并将于6月25日与The Moment3!共同发行,总计5555枚。

据金色财经查询发现,全球速卖通(AliExpress)发布的相关推文已删除,但The_Moment3目前并未删除此消息。[2023/6/9 21:26:13]

3)能够主动查询应用链上已收到和已执行的跨链请求状态。

在插件实现方案的设计中,我们先后采用了两种不同的插件机制,下面就来介绍一下我们使用原生插件时碰到的问题以及新插件方案的优势。

Moonbirds宣布启动第二批艺术家的Diamond Exhibition NFT投放:金色财经报道,蓝筹NFT项目Moonbirds在社交媒体宣布启动第二批艺术家的Diamond Exhibition NFT投放,涉及12位数字艺术家的10,000件NFT作品,包括 Hideki Tsukamoto、Ippsketch、Andrew Mitchell、Melissa Wiederrecht 等。“Choice Pass”空投将于4月18日进行,随后是4月24日至4月27日的偏好选择,Choice Pass 持有者的抽奖和空投将于4月27日进行。[2023/4/15 14:05:44]

——原生插件——

go语言从1.13版本开始支持编译为插件,使用方式如下

Laster Digital计划从2023年年中开始推出加密货币基金和交易所交易基金:金色财经报道,野村控股加密子公司Laser Digital计划放缓招聘计划。Laser Digital预计将在2023年初从迪拜获得第一个许可证,从2023年年中开始推出加密货币基金和交易平台交易基金。

此前Laser Digital表示,将于2023年第一季度推出一个专门的加密货币交易平台,业务将??包括高频交易、做市和自营交易,以迎合机构客户、家族办公室、高净值个人和对冲基金的需求。[2022/11/15 13:08:46]

gobuild--buildmode=plugin-oappchain.so*.go

go项目在编译时可以通过--buildmode指定为插件模式,这种方式将输出为动态链接文件。该文件并非可直接运行的二进制文件,而是提供给其他二进制运行时的动态调用。

Lido Finance计划支持直接在Layer 2上质押以太坊:7月18日消息,Lido Finance发布公告称将在Layer 2上支持stETH。Lido将首先支持wstETH在Layer2上的跨链和质押,并计划未来直接支持在Layer 2上质押以太坊。而无需跨链至以太坊主网。Lido表示,初期将仅支持wstETH以及Optimism和Arbitrum网络。[2022/7/19 2:21:39]

在主二进制文件中的使用方式如下:

总结来说原生插件具有以下特点:

优点:

1)使用体验和原生代码一致,类似于代码模块的二进制化;

2)效率较高,插件直接在主程序进程空间中运行。

缺点:

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团队

标签:RPCENT应用链SERRPC币DENT币SERP价格

中币交易所热门资讯
NFT:AutographNFT:为NFT做数字身份证明-ODAILY_Shambala

7月15日,财新传媒发表公开声明,声明中指出:有用户将文章《显影|中国告别比特币“挖矿”》中的图片“捧着矿机的藏族妇女”经改编后上传到OpenSea等代币交易平台进行NFT售卖.

1900/1/1 0:00:00
区块链:波卡插槽拍卖机制「蜡烛拍卖」最新研究进展-ODAILY_AUSDT币

平行链拍卖是Kusama和Polkadot的核心特征。拍卖结果决定了哪些项目可以获得平行链插槽以及需要锁定代币的数量。为了生态系统的健康,重点的是要把稀缺的插槽分配给最能充分利用它们的项目.

1900/1/1 0:00:00
POL:PolyNetwork披露目前进展及路线图:约1.41亿美金待授权 已进入资产复原阶段-ODAILY_OLY

吴说区块链获悉,8月19日PolyNetwork发布公开信,内容如下:致各位关心PolyNetwork事件进展的朋友们感谢大家对此次PolyNetwork事件的持续关注.

1900/1/1 0:00:00
NFT:NFT 使元宇宙成为可能?-ODAILY_TOP

30年前,科幻小说家尼尔·史蒂芬森在自己的小说《雪崩》中首次提出了“元宇宙”概念,在他的最初设想中“通过数字替身,人们可以在一个虚拟三维空间中生活,在这个虚拟世界里.

1900/1/1 0:00:00
TUA:解析Estuary如何助力Filecoin存储-ODAILY_STUD价格

Estuary是什么?Estuary是一种将大量公开许可的数据发送到Filecoin网络的方式,以便为公共利益检索数据.

1900/1/1 0:00:00
OIN:为什么 Filecoin 非常适合开发 Web3 应用?-ODAILY_FILE

作为一个旨在存储人类社会最重要信息的分布式网络,为抵达这一最终目标,Filecoin的前方依然还有很长的一段路要走,在实现这一愿景的过程中,对于Filecoin而言最重要的事项之一.

1900/1/1 0:00:00