曾经的PRESSone

【霍炬文章转发】PRESSone采用的混合架构分析和解释

2018-09-27  本文已影响49人  06e759cdb698

原文作者霍炬,复制文章过来仅作个人记录及帮助传播,如本文产生任何收入,都将全数转付给霍炬本人。

原文链接如下所示:
https://bbs.onedev.club/topic/10/prs%E9%87%87%E7%94%A8%E7%9A%84%E6%B7%B7%E5%90%88%E6%9E%B6%E6%9E%84%E5%88%86%E6%9E%90%E5%92%8C%E8%A7%A3%E9%87%8A

为什么基于XIN

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

合约和共识

如果仔细观察以太坊近年来的发展,会发现以太坊上大部分所谓安全问题,是出在用户编写的智能合约上,而不是出在以太坊本身系统上。到目前为止,使用一种图灵完全的通用语言编写业务逻辑,仍然是非常困难的,即使是专业程序员也经常出现意想不到的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个节点独立验证交易和脚本执行正确之后,这笔交易就成为不可篡改的公开数据。

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

上一篇下一篇

猜你喜欢

热点阅读