——背景——
当前,区块链跨链平台的接入方式在架构设计上存在着较大差异,如何将应用链快速、便捷地接入跨链系统是一个亟待解决的问题。趣链BitXHub跨链服务平台采用中继链+网关的跨链方案,其中,跨链网关担任着区块链间收集和传播交易的角色。采用插件机制的设计将网关与应用链交互的模块与跨链网关核心功能模块进行解耦,从而实现不同种类应用链高效地接入跨链系统。在Pier运行时,通过动态加载插件的方式完成不同应用链的灵活适配。为了更好的提升Pier与应用链的交互能力,具体应用链插件需要根据不同区块链的特性实现具体的接口,交互接口需要满足以下几个功能:
1)监听应用链上的跨链事件并传给核心模块进行处理;
2)执行来自于网关发出的跨链请求;
分析 | 如果FCoin经营上出现问题 在2018年下半年可能就已经显现:北京链安今日发布分析文章认为,2018年,FCoin可谓横空出世,“交易即挖矿”的模式让其一时间成为最红交易所。但是,从12rU7whLERNrkDb8bTe9VJJSKZvCXy7dj7这个冷钱包存放的比特币总量变化来看,危机可能就在当年显露。
北京链安通过ChainsMap监测系统,重现了这个冷钱包中比特币总量的变化曲线,很明显,在2018年上半年,大量用户向交易所充值,并汇聚到热钱包最终向这个冷钱包汇集。2018年7月22日,该钱包迎来巅峰时刻,总量达到11509枚BTC,但是此后整体呈现下降趋势。在2019年一季度后,这个地址上的比特币存量其实已经比巅峰时期少很多,2000枚出头,在2019年9月到10月更是基本清空,只剩数十比特币。因此,如果是经营上出现问题,在2018年下半年可能就已经显现,这也与FCoin创始人的自述,以及FT价格暴跌的时间线基本吻合。[2020/2/19]
3)能够主动查询应用链上已收到和已执行的跨链请求状态。
声音 | 迅雷CEO陈磊:下半年将进一步扩大在区块链领域的优势:据金融界消息,迅雷(XNET)在美股周三盘前公布Q2财报,营收环比大幅增长。对于下半年的重点工作,CEO陈磊在财报中透露:在2019年下半年,我们将进一步扩大我们在共享计算和区块链领域的领先优势,为企业长期发展奠定坚实的基础。[2019/8/15]
在插件实现方案的设计中,我们先后采用了两种不同的插件机制,下面就来介绍一下我们使用原生插件时碰到的问题以及新插件方案的优势。
——原生插件——
go语言从1.13版本开始支持编译为插件,使用方式如下
gobuild--buildmode=plugin-oappchain.so*.go
2018年下半年区块链技术迭代将进一步加快:据火币区块链研究院发布的2018年上半年全球区块链产业全景与趋势报告显示,技术方面,目前区块链的性能尚不能支撑大规模的应用落地,扩展性、隐私性、互通性是主要瓶颈,但过去一年中各方面都有新的解决方案不断涌现,且近期出现了 DAG、哈希图等区块链之外的新型分布式账本技术。预计 2018 下半年区块链技术的迭代将进一步加快。[2018/5/30]
go项目在编译时可以通过--buildmode指定为插件模式,这种方式将输出为动态链接文件。该文件并非可直接运行的二进制文件,而是提供给其他二进制运行时的动态调用。
在主二进制文件中的使用方式如下:
总结来说原生插件具有以下特点:
优点:
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团队
IdleMystic是一款3DNFT区块链游戏,在新加坡时间8月20日0点已经开启预售。 注册 点击首页右上角的按钮,进入注册页面,用户可以通过邮箱验证码登录,登录成功后再绑定metamask钱.
跨链一开始的目标在于让资产能从一条链转移到另一条链,又可以安全的返回,后来扩展到解决两个或多个不同链上资产及状态的互相传递、转移、交换的问题.
SmartCon是对快速扩展的区块链生态系统及其蓬勃发展社区的庆祝活动,包括行业领袖的演讲、与顶级dApp开发人员的技术研讨会、对尖端智能合约研究的深入研究以及对大型项目空间未来的洞察在DeFi.
链集市·让区块链落地更简单 《区块链行业观察》专栏·第45篇作者丨Eports.net 图片丨来源于网络 编者注:原报告来自www.esports.net.
加入PolkaWorld社区,共建Web3.0! 本文由Web3基金会技术教育和社区负责人BillLaboon撰写!主要分享了:Polkadot和Kusama的Crowdloans是一种安全的参.
为提升用户的使用体验,MDEX一直在创新性以及功能性上进行自我突破,在DEX领域做到头部之后,MDEX也没有放弃继续摸寻整个DEX市场未来的方向.