——背景——
当前,区块链跨链平台的接入方式在架构设计上存在着较大差异,如何将应用链快速、便捷地接入跨链系统是一个亟待解决的问题。趣链BitXHub跨链服务平台采用中继链+网关的跨链方案,其中,跨链网关担任着区块链间收集和传播交易的角色。采用插件机制的设计将网关与应用链交互的模块与跨链网关核心功能模块进行解耦,从而实现不同种类应用链高效地接入跨链系统。在Pier运行时,通过动态加载插件的方式完成不同应用链的灵活适配。为了更好的提升Pier与应用链的交互能力,具体应用链插件需要根据不同区块链的特性实现具体的接口,交互接口需要满足以下几个功能:
1)监听应用链上的跨链事件并传给核心模块进行处理;
2)执行来自于网关发出的跨链请求;
Circle首席战略官呼吁稳定币立法:金色财经报道,Circle首席战略官Dante Disparte表示,今年早些时候美国的银行倒闭导致投资者进入海外“不安全、不透明”的加密货币,并呼吁联邦监管机构围绕稳定币立法,因为其价值应该与美元保持相等。Disparte称,任何地方的任何人都有可能使用加密方法伪造美元,因此应该制定一套规则来规范互联网上那些不安全的美元稳定币,并尊重美国的安全、稳健和货币政策。[2023/8/16 21:25:49]
3)能够主动查询应用链上已收到和已执行的跨链请求状态。
在插件实现方案的设计中,我们先后采用了两种不同的插件机制,下面就来介绍一下我们使用原生插件时碰到的问题以及新插件方案的优势。
——原生插件——
罗马尼亚Rapid Bucharest俱乐部与Binance合作推出NFT:5月3日消息,罗马尼亚足球俱乐部Rapid Bucharest宣布与Binance合作推出免费NFT合集「FC Rapid Bucharest at 100 years old」。所有免费NFT均附带奖励,例如球员亲笔签名球衣、VIP看台座位、100美元、限量版围巾或Rapid贴纸。(valahia)[2023/5/4 14:40:45]
go语言从1.13版本开始支持编译为插件,使用方式如下
gobuild--buildmode=plugin-oappchain.so*.go
go项目在编译时可以通过--buildmode指定为插件模式,这种方式将输出为动态链接文件。该文件并非可直接运行的二进制文件,而是提供给其他二进制运行时的动态调用。
美联储宣布加息25个基点,符合市场预期:金色财经报道,美国联邦储备委员会结束为期两天的货币政策会议,宣布上调联邦基金利率目标区间25个基点到4.50%至4.75%之间,加息幅度符合市场预期。这是美联储自去年3月开启本轮加息周期以来连续第八次加息,累计加息幅度为450个基点。本次加息后,美国基准利率水平再次刷新2008年金融危机以来的峰值。[2023/2/2 11:41:52]
在主二进制文件中的使用方式如下:
总结来说原生插件具有以下特点:
优点:
报告:ASIC融资债务使比特币矿工在2022年负债恶化:金色财经报道,根据Hashrate Index最近的一份报告,比特币矿工在2022年面临偿还债务的困难,尤其是当他们有高息设备融资贷款时。报道称,估计私人和公共矿工资产负债表上的ASIC融资债务价值在2-40亿美元之间。据分析,2020年执行了6笔ASIC融资交易,价值4784万美元,而2021年完成了26笔交易,价值66225万美元。自2020年以来,越来越多的设备融资方进入市场,导致2022年的平均利率为10.46%,低于2020年的12.77%和2021年的12.82%。[2023/1/23 11:26:12]
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团队
Web时代经历了上个世纪80年的Web1.0门户网,到2000年的Web2.0社交网络时代,目前正逐渐步入去中心化的Web3.0时代.
《$HTCoin》——卡西斯“最有味道”的NFT艺术品——《$HTCoin》7月29至30日期间,富艺斯会在24小时内拍卖由卡西斯创作的、收入最高的白人男性艺术家的粪便之罐头.
随着数字经济的发展,区块链作为新型分布式数据库,在推动相关行业的数字化转型进程、促使经济社会发生深刻变革中发挥着至关重要的作用.
前言: 本文介绍了韩国央行近期发表了比特币不能取代法定货币,但作为投资方式热度持续增加的消息。 最近,各国金融部门引进了大数据和云计算、人工智能、区块链等数字转换新技术,随之出现了新的金融革新.
近日,财新周刊发表的《显影|中国告别比特币“挖矿”》中,配有一张一位藏族妇女正在搬运矿机的图片,稿件甫一发出,这张“记录了四川比特币矿场关闭的历史时刻”的配图就迅速走红.
吴说作者|ColinWu本期编辑|ColinWu据福布斯8月24日报道,作为B轮融资的一部分,比特币基础设施公司Blockstream以32亿美元的估值筹集了2.1亿美元.