PRS采用的混合架构分析和解释


  • administrators

    为什么基于XIN

    0_1543969205630_PRS_arch.png

    在PRS整个系统里面,基于规则-合约的交易是核心功能之一,这使得我们必须寻找一个稳定可靠、吞吐容量巨大,又足够灵活的P2P网络来满足交易需求。Mixin Network是一个基于DAG的交易处理链,它的特点是交易处理速度极快,能满足大容量的需求,并且XIN可以处理跨链资产交易,这让PRS未来发展具有足够弹性,这种弹性包括:

    • PRS从ERC-20 token转换到其他链的可能性。比如映射到自己的区块链系统?或者ERC-20出现严重问题时候全部迁移到下一代主流公链?我们不打算预测未来如何发展,但是从技术上说,一个安全、可靠的架构,需要保留足够的弹性应对未来的变化。MIXIN的设计充分提供了这种弹性,在未来一旦有必要的迁移需求时,可以使得整个迁移过程非常平滑,甚至绝大多数用户无需进行任何操作就可以完成转换。
    • 安全性和交易速度。PRS的核心是基于合约的交易(交易数字内容),但除此之外,还存在各种日常交易,比如用户A转移给用户币一定量的PRS token,而没有任何需要合约确认的理由(举个例子:发红包)。在目前的混合架构下,这种交易可以100%由XIN完成,PRS网络不承担负载,甚至不关心这笔交易的存在。这种设计兼顾了安全性,负载和交易速度,以及保护用户的隐私。
    • 使得PRS合约有可能支持其他关联token,甚至更复杂的应用。Mixin domain的设计可以让各种不同的资产接入Mixin network,基于这种特性,PRS可以设立某些token和PRS token的映射关系,帮助Dapp开发者提供更好的服务。

    合约和共识

    如果仔细观察以太坊近年来的发展,会发现以太坊上大部分所谓安全问题,是出在用户编写的智能合约上,而不是出在以太坊本身系统上。到目前为止,使用一种图灵完全的通用语言编写业务逻辑,仍然是非常困难的,即使是专业程序员也经常出现意想不到的bug。在传统软件世界里,这类bug通常不会造成太大损失,而且容易修补。在区块链世界里面,修补它很困难,造成的损失往往很大。

    PRS正在开发的合约功能,是基于一种自己设计的DSL(领域专用语言)。和以太坊自创solidity以及EOS直接使用C++不同,PRS短期内不会提供图灵完全语言进行合约开发,而是专注于提供基于PRSC(PRS Contract DSL)的合约脚本。和其他系统内的DSL一样,PRSC不是通用语言,不打算提供一个万能的编程解决方案,而是专门用来描述业务逻辑,在PRS系统里面,就是数字内容的交易,引用,销售分成等基本业务逻辑。在这种应用场景下,DSL提供了更简单的语法和更可靠的安全性,使得编写合约的门槛下降,安全性提高。同时DSL一般采用近似应用自然语言的声明式语法,这也让非程序员有机会编写自己的合约脚本。同时,我们会不断丰富PRSC脚本功能,提供更多的命令和功能,包装更多操作,使得这种简单的脚本可以适合更多业务模式。

    一个区块链系统还包括网络层和共识层。在PRS系统里面,有相当多数据需要达成各方共识变成不可篡改的数据,比如合约是否成立,各方是否按照合约运行结果履行合约,交易支付是否完成等操作。考虑到业务逻辑本身的复杂,将来还有进一步引入链外资源或者其他链上资源的需求,这些外部引入的数据更需要在PRS系统内达成各方共识。

    各种共识比起单纯的财产交易复杂得多,因此PRS应该基于一种由少量可信社区节点做为代理人,依次确认各种数据是否正确,并且形成最终共识的共识协议。这才能同时保准效率,安全以及权力的分散。在目前所有共识算法中,Tendermint BFT 和 EOS DPOS都是符合需求的共识算法。其中EOS DPOS有更长的历史和应用经验,尤其在社区和可信节点如何选出方面有更多社区/社会实验成果,非常值得关注。

    这里特别应该注意,不同群体提起的EOS代表的是完全不同的意思。EOS可以是:

    1. 一种代币资产
    2. 一条具有21个BP(超级节点)的共有区块链网络
    3. 一套区块链基础操作系统开源代码

    我们这里所指的EOS系统是以上几种可能中的第3条,一套区块链基础操作系统开源代码。为了节约开发时间和成本,PRS会使用部分EOS开源的代码完成PRS的DPOS链,这些代码主要集中在网络层和共识层。如前文所述,自合约层以上都是自己开发的,更符合PRS业务需求的系统。这种使用方式是符合EOS开源协议的。请特别注意这种使用方式和EOS代币,EOS主链都没有关系,它只是按照开源协议使用一部分EOS的开源代码而已,当然在此基础上,我们会密切关注在EOS世界发生的一切,包括安全问题和应对方案,社区选举过程和疑虑,治理模型等,这些对PRS系统未来的发展都有参考作用。

    简单描述PRS系统的工作模式:使用PRSC合约脚本描述业务逻辑建立合约,在MIXIN network上按照合约运行结果完成交易,把交易结果和合约脚本交给验证节点验证,按照DPOS共识,n个节点独立验证交易和脚本执行正确之后,这笔交易就成为不可篡改的公开数据。

    0_1537851721700_Screenshot 2018-09-17 22.24.11.png

    对了,我们很快会开源PRSC解释器的代码(虽然它还很简单)。另外如果你对Lisp/Scheme/Clojure有兴趣,或者对设计DLS有兴趣,或者对通过这样的DSL包装区块链功能和逻辑有兴趣,都可以和我们联系,大家可以基于PRSC来讨论未来需要增加的特性甚至参与开发。

    0_1537851699700_Screenshot 2018-09-17 22.23.52.png



  • @huoju said in PRS采用的混合架构分析和解释:

    DSL提供了更简单的语法和更可靠的安全性,使得编写合约的门槛下降,安全性提高。同时DSL一般采用近似应用自然语言的声明式语法,这也让非程序员有机会编写自己的合约脚本。

    看霍炬大大的文章俨然是一种享受。期待PRESSONE的合约功能,让我等一种小白,也踏入智能合约的世界。

    在这种应用场景下,DSL提供了更简单的语法和更可靠的安全性,使得编写合约的门槛下降,安全性提高。同时DSL一般采用近似应用自然语言的声明式语法,这也让非程序员有机会编写自己的合约脚本。