——背景——
当前,区块链跨链平台的接入方式在架构设计上存在着较大差异,如何将应用链快速、便捷地接入跨链系统是一个亟待解决的问题。趣链BitXHub跨链服务平台采用中继链+网关的跨链方案,其中,跨链网关担任着区块链间收集和传播交易的角色。采用插件机制的设计将网关与应用链交互的模块与跨链网关核心功能模块进行解耦,从而实现不同种类应用链高效地接入跨链系统。在Pier运行时,通过动态加载插件的方式完成不同应用链的灵活适配。为了更好的提升Pier与应用链的交互能力,具体应用链插件需要根据不同区块链的特性实现具体的接口,交互接口需要满足以下几个功能:
1)监听应用链上的跨链事件并传给核心模块进行处理;
2)执行来自于网关发出的跨链请求;
3)能够主动查询应用链上已收到和已执行的跨链请求状态。
瑞士信贷与瑞士足协合作推出基于以太坊的NFT系列:金色财经报道,瑞士信贷与瑞士足协合作推出基于以太坊的NFT系列,以支持瑞士女足。据瑞信网站信息显示,NFT系列由756幅瑞士女足国家队球员的数字艺术肖像组成,将于7月11日至8月31日发售。NFT将通过瑞士信贷的CSX应用程序独家销售。瑞士信贷瑞士数字资产主管DanielGorrera表示,当我们设计该产品时,我们有意识地试图让用户轻松参与不断发展的NFT世界。该项目还为数字资产在新型融资和服务模式中的创新应用铺平了道路。在这一领域,瑞信对于寻求受监管合作伙伴的发行方来说处于有利地位。[2023/7/4 22:15:48]
在插件实现方案的设计中,我们先后采用了两种不同的插件机制,下面就来介绍一下我们使用原生插件时碰到的问题以及新插件方案的优势。
Binance资产储备总值超过630亿美元:3月7日消息,Binance公告,其储备证明系统升级,添加了另外11种代币,包括MASK、ENJ、WRX、GRT、CHR、CRV、1INCH、CVP、HFT、SSV和DOGE,现在显示的24项资产储备总值超过630亿美元。[2023/3/7 12:47:52]
——原生插件——
go语言从1.13版本开始支持编译为插件,使用方式如下
gobuild--buildmode=plugin-oappchain.so*.go
go项目在编译时可以通过--buildmode指定为插件模式,这种方式将输出为动态链接文件。该文件并非可直接运行的二进制文件,而是提供给其他二进制运行时的动态调用。
在主二进制文件中的使用方式如下:
加密交易所Gemini进行第二轮裁员,距上次裁员仅七周:金色财经消息,加密货币交易所Gemini由于“动荡的市场状况”而裁员约10%后仅七周后,这家初创公司就进行了第二轮裁员,而且可能还会有更多裁员。该公司并没有透露具体的裁员程度。一位接近该公司的消息人士指出,周一早上Gemini公司的Slack频道中,减少了7%(68名)的成员。(TechCrunch)[2022/7/19 2:22:01]
总结来说原生插件具有以下特点:
Maker协议:stETH抵押品约占所有DAI抵押品的3%,价值约2.6亿美元:6月14日消息,Maker协议发布协议持有stETH的数据详情,
1.stETH抵押品约占所有DAI抵押品的3%,价值约2.6亿美元;
2.WSTETH-A资金库锁定204,661.12WSTETH,价值2.432亿美元,8290万DAI总债务,293.42%的总体抵押;
3.WSTETH-B资金库锁定9,014.31WSTETH,价值1070万美元,250万DAI总债务,424.42%的整体抵押。
Maker表示,对于WSTETH-A资金库,若stETH跌至892美元,价值3330万美元的stETH将被清算;若stETH跌至582美元,价值7460万美元的stETH将被清算。对于WSTETH-B资金库,若stETH跌至903美元,价值64.5万美元的stETH将被清算;若stETH跌至594美元,价值200万美元的stETH将被清算。[2022/6/15 4:26:55]
优点:
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团队
DeFi热潮之后,波卡是下一个热点。想象一下,继以太坊DeFi繁荣,BSC等大幅提升公链吞吐量之后,以Kusama、Polkadot为代表的异构多链网络即将登上舞台.
1900/1/1 0:00:00随着计算机技术和网络技术的不断发展,信息技术水平不断得到提高。人类进入称为信息社会的二十一世纪后,诸如数字通信、数字多媒体、电子商务、搜索引擎、数字图书馆、天气预报、地质勘探、科学研究等海量数据型应用的涌现,各种信息呈现爆炸式的增长趋.
1900/1/1 0:00:00链集市·让区块链落地更简单《区块链行业观察》专栏·第34篇作者丨RafiaRaji 图片丨来源于网络 区块链最简单的形式是一种去中心化的数据库架构。与中央服务器中的数据库不同,区块链允许数据通过全球计算机网络存储.
1900/1/1 0:00:00“波卡知识图谱”是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战,然而我们希望通过这样的努力让大家能够正确认知波卡.
1900/1/1 0:00:002021年6月19日,BixinVentrues联合Rust.CC、Infura中国共同主办的Rust区块链开发者“MatchingDay”如期举行,活动诚邀多位国内区块链开发先锋带来Rust编程原理分享.
1900/1/1 0:00:00比特币和以太坊等加密资产的发展,使初创企业、个人和政府对这些货币背后的技术产生了极大的兴趣。全球超过80%的中央银行正在开发CBDC。一些中央银行已经推出了他们的CBDC,而其他许多中央银行也即将这样做.
1900/1/1 0:00:00