木星链 木星链
Ctrl+D收藏木星链

RPC:一文读懂「跨链网关的模块化进程」插件机制演化

作者:

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

——背景——

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

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

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

元宇宙游戏开发工作室Flying Sheep Studios完成约120万美元融资:金色财经报道,iCandy Interactive (iCandy)子公司、元宇宙游戏开发工作室Flying Sheep Studios完成约120万美元融资,德国联邦经济事务和气候行动部参投,旨在构建基于NFT的免费社交大型多人在线元宇宙游戏《Star Life》。Flying Sheep Studios于2014年成立于德国科隆,使用HTML5构建元宇宙手游并与乐高、芭比娃娃和梦工厂等品牌达成合作关系。(vulcanpost)[2023/3/20 13:15:18]

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

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

金融科技公司Amwal完成250万美元Pre种子轮融资:3月2日消息,基于多设备身份验证 Token 的金融科技公司 Amwal 宣布完成 250 万美元 pre-seed 轮融资,Shorooq Partners、Outliers Venture Capital 等参投。Amwal 公司希望将设备识别、欺诈预防和支付 Token 等功能集成到独立应用程序接口(API)中,以提供使用多设备身份验证 Token 的加密生物识别结算解决方案。[2023/3/2 12:38:46]

——原生插件——

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

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

数据:交易所以太坊地址余额回升至21年11月同期水平,共计超903万枚ETH:8月26日消息,据欧科云链OKLink多链浏览器数据显示,截至目前全部交易所链上地址中的ETH总量已超903万枚,回升至2021年11月同期水平,处于2022年链上持有量高水平阶段,按当前市场价格价值约150亿美元。[2022/8/26 12:50:00]

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

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

优点:

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

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

缺点:

1)原生插件中的依赖库与主程序必须保持完全一致,否则启动的时候会报错,而且不论这个依赖是直接引用还是间接引用,都会出现这个问题。

韩国监管机构正研究制定虚拟资产会计和审计准则:7月27日消息,韩国金融监管服务局(FSS)将于7月28日和韩国会计标准院、韩国注册会计师等一起举行首次专家座谈会,讨论虚拟资产相关会计监管问题,并讨论编制会计和审计准则以保护市场投资者。首次会议的主题为虚拟资产会计处理现状以及为保护投资者加强信息披露,将讨论是否披露虚拟资产发行及出售情况、持仓情况以及顾客委托虚拟资产等相关信息。(Dailian)[2022/7/27 2:40:42]

——转战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团队

标签:RPC应用链GINPLUGRPC币GINZA价格PlugChain

pepe最新价格热门资讯
SAM:波卡周报 | Kusama 第五次拍卖将于 7/20 结束,Bifrost 或将赢得第五个插槽!

Kusama7月13日下午16:33左右,Kusama网络的第四个平行链插槽拍卖结束!随后进行了1个小时的随机结束期,在17:29左右Phala的先行网Khala以锁定132.

1900/1/1 0:00:00
PUN:冒牌货受追捧:带上新冠口罩的COVIDPunks为ETH燃烧第一的项目

以太坊于昨晚完成了“伦敦”硬分叉的升级,根据EIP-1559提案,本轮升级后,原本支付给矿工或验证者的部分交易费用将永远从流通中移除.

1900/1/1 0:00:00
BDC:摩根大通:CBDC的发展不应破坏现有的银行基础设施

摩根大通分析师JoshYoung表示,银行代表着一切特定经济体的商业金融基础设施,因此不应该受到因为开发央行数字货币而逐步将其淘汰的威胁.

1900/1/1 0:00:00
以太坊:V神回应EIP-1559推迟传言:大部分Geth核心开发者没有参与EthCC

巴比特讯,7月22日,以太坊社区成员JimmyRagosa在推特上调侃表示,以太坊EIP-1559将推迟至2022年上线,因为大部分以太坊核心开发者正在“Raavehangover”.

1900/1/1 0:00:00
区块链:苏杭:不要去神话区块链,区块链作为一项技术一定是依托于其他的产业而生

巴比特讯,7月24日,“2021世界区块链大会·杭州”在杭州未来科技城学术交流中心开幕。本次大会由杭州时戳信息科技有限公司主办,杭州未来科技城管委会等机构支持.

1900/1/1 0:00:00
区块链:数秦科技创始人高航:区块链应用场景具象化有三个判断标准丨2021世界区块链大会

巴比特讯,7月24日,“2021世界区块链大会·杭州”在杭州未来科技城学术交流中心开幕。本次大会由杭州时戳信息科技有限公司主办,杭州未来科技城管委会等机构支持?.

1900/1/1 0:00:00