【跨链实力派PalletOne】程序员眼中的PalletOne
PalletOne是由来多位技术带头人历时4年时间,经过数次迭代打造的跨链项目。这个项目旨在达到一个目的:实现跨链的图灵完备的通用的区块链智能合约平台。
打开PalletOne的官方网站可以看到有三份材料可供阅读,分别是:白皮书、黄皮书和通证经济白皮书。其中白皮书的内容主要包括项目要解决的问题、解决方案、主要产品、技术架构,及其与用户交互的详细说明。白皮书大家都见多了,下面咱们着重来讲讲这个黄皮书。
1、PalletOne的技术黄皮书
在区块链项目中,白皮书常有,而黄皮书不常有。PalletOne却在网站首页公布了长达85多页,共计31000多字的技术黄皮书,这是我们技术人员最喜欢的阅读材料。
这本黄皮书对PalletOne的整个跨链平台进行了详细的拆解,针对PalletOne内核、共识算法、分布式账本存储、智能合约、适配层和示例等核心模块,以图文结合的方式进行了详细的阐述与分析,这个黄皮书的内容说白了,就是赤裸裸的展示技术实力。
在目前区块链项目中,公链项目是最火爆的,然而目前公链上的应用只能运行在各自的公链上,这种各自为营的状态不利于区块链应用的普及和发展。为此,跨链技术应运而生,Cosmos、Polkadot和Arcblock等各自推出了跨链协议,然而目前的跨链技术并未成熟。
与已有的跨链项目相比,PalletOne是一种更加轻量型的跨链技术,通过对各公链的接口进行抽象和统一,从而提供了支持多种编程语言的智能合约运行环境,将底层链和智能合约完全解耦,实现跨链的图灵完备的智能合约通用区块链平台。PalletOne不仅可以实现跨链,其本身更是一种高性能的“超级公链”,在性能、通证设计、开发者友好性上都做过很多优化,从而使程序设计人员可以更容易的建立优良的区块链应用。
这张图就是PalletOne的整体架构图。原图的配色有些问题,我给调成自己喜欢的颜色了,哈哈哈!
2、PalletOne的跨链交易流程
跨链交易可以说是PalletOne的核心特色之一,下面我们举个例子,来分析下PalletOne在进行币币跨链交易时,都有那些流程吧!
实例:王大爷想用1个BTC换16个ETH,而李大爷则想用16个ETH 换1个BTC,但是他俩相互不认识,因此并不信任对方,所以他俩选择在PalletOne上通过BTC和ETH互换合约进行币币交易。交易过程一般有两种情况:互换合约正常完成和合约异常终止。由于篇幅限制,咱们只以正常完成合约为例,进行阐述,其他情况可以参照黄皮书哈!
如上图所示,一般来讲,币币正常交易的过程需要通过合约创建、向跨链合约转账、申请收币和申请合约终止这四个主要流程,而每个流程中,又有很多的细节。
(一)王大爷在PalletOne的合约市场找到“BTC和ETH互换”合约,填写好要兑换的BTC数1,ETH数16,违约押金数10,合约超时时间24小时,签名创建该合约,并将该合约发送给李大爷。李大爷收到合约后,认可王大爷的合约,在检查无误后,在合约上签名。此时合约才算正式激活,并请求双方各提供4个公钥,以及支付合约押金。
(二)王大爷在自己的钱包中生成4个BTC的公私钥对和4个ETH的公私钥对,并将公钥和10个PalletOne Token发送给合约。李大爷也是同样的操作。合约在收到两位大爷发来的公钥后,会连同合约对于4个陪审员提供的公钥,生成1个BTC的7/12多签地址和1个ETH的7/12多签地址,并将这两个地址发送给王大爷和李大爷。接下来双方和系统进行了如下操作:王大爷将1个BTC转账到合约生成的多签地址中,李大爷则将16个ETH转账到合约生成的多钱地址中。
(三)李大爷检查多签地址发现王大爷已经转了1BTC,所以他发起收BTC申请,从多签地址转账到李大爷钱包的交易请求,并用自己的4个BTC私钥签名。陪审团在收到李大爷的收BTC申请后,检查ETH多签地址,发现李大爷已经转了16ETH,王大爷也转了1BTC到多签地址,满足互换条件。每个陪审员在检查满足互换条件后,用自己的私钥在李大爷的收BTC交易申请上签名。当陪审团中的3个陪审员都签名后,满足了7/12的多签条件,多签地址的1BTC会转账到李大爷的钱包。王大爷在得知李大爷已经转了16个ETH到多签地址后,也进行同样的操作,将多签地址中的16ETH转移到自己的钱包。此时交易完成,但合约并没有结束。
(四)王大爷在收到16个ETH后,同时也看到李大爷也收取了1BTC,所以他可以向陪审团发起合约终止申请。陪审团检查两个多签地址,发现币已互换完成,将双方的合约押金各10个PalletOne Token则转回到各自的钱包,并将该合约状态改为终止,合约执行完毕。
虽然步骤看起来比较复杂,其实主要是为了阐述PalletOne在实现安全方面的技术细节。在真实的币币交易中,大量的技术细节都会被平台屏蔽掉。所以看似繁琐的步骤,很多都是由底层的软件自动完成的。所以不用太过担心,你一定能hold住的。
3、写在最后
PalletOne既是一个轻量级跨链协议,更是一个高性能的“超级公链”。PalletOne通过抽象将所有底层的区块链底层封装到适配器中,从而为上层应用提供了统一的接口。这与Java语言最初的设计初衷特别类似。
Java语言的宗旨是一次编译到处运行,通过JDK屏蔽了底层硬件系统的复杂性。而PalletOne的宗旨是开发一次应用,多链运行。
这使得开发人员不用再学习多种不同链上的不同技术,可以选择自己一种喜欢的开发语言编写跨链的区块链应用,同时使得一个应用可以同时在多个链上运行。
从程序员的角度来看,比较喜欢PalletOne的愿景,也希望PalletOne能更快成长起来,期待以后可以在PalletOne下开发自己喜欢的多链应用。