PalletOne高阶分布式共享帐本共治协议

n

文章分类

l

评论数

日期

08/13/2018

当前区块链技术在扩展性、跨链互操作性等方面面临着严峻的挑战,为应对这些挑战,分布式跨链协议 PalletOne(Protocol for Abstract-Level Ledger Ecosystem)应运而生。PalletOne 在共识机制方面采用了独有的、全网共识和局部共识相结合的陪审团共识机制,保证跨链合约执行的高效性和安全性。在合约设计方面,采用了合约模板和通证抽象的机制,降低了合约开发难度和复杂度,将支持多种开发语言的合约编写,对主流的底层链进行对接,实现跨链。

在 PalletOne 中,智能合约只需要一组验证人进行验证和执行,这些验证人被称为陪审员,并由他们组成陪审团。与 IP 协议将物理层、数据链路层与传输层、应用层解耦类似,通过陪审团共识协议,PalletOne 将智能合约同底层区块链完全解耦。

PalletOne 智能合约支持多链,通过陪审团共识以及适配层,PalletOne 智能合约可同时在不同的区块链上运行,用户在不同的区块链上通过调用一个 PalletOne 智能合约即可进行通证交易,保证了跨链通证交易的分布式、原子操作和不可篡改的特性。PalletOne 中的智能合约可以通过选择不同陪审团以多任务的方式执行,相较于全网共识的方式,将有效减少网络拥堵,提高了 PalletOne 的可扩展性。PalletOne VM 作为智能合约编译和执行的核心工具, 使得 PalletOne 可支持多种主流编程语言(Java、C 、JS 等)和多种类型的平台,也为智能合约的编译和执行提供了安全的沙盒环境。通证抽象层和合约模板的设计进一步的为 DApp(Decentralized Application,去中心化应用)的开发提供了便捷性和安全性。通过 DAG 分布式存储与陪审团共识算法相结合,在存储和计算上均突破了传统区块链的技术限制,PalletOne 在实现跨链的同时,自身也建立了一个高性能的分布式账本。

PalletOne 介绍

PalletOne(Protocol for Abstract-Level Ledger Ecosystem)提出了一种有效的方式来同时解决可扩展性、互操作性、用户友好性以及平台锁定的问题。

在 PalletOne 中,共识机制采用了陪审团共识机制,智能合约只需要一组验证人进行验证和执行,这些验证人被称为陪审员,并由他们组成陪审团。通过陪审团共识协议,PalletOne 将智能合约同底层区块链完全解耦,实现跨链价值交换。Mediator(调停中介)负责 PalletOne 网络的安全性,是 PalletOne 的核心构成部分。PalletOne VM 是智能合约编译和执行的核心工具,是 PalletOne 支持多平台和多语言的关键部分。为了提升智能合约对通证定义的安全性,PalletOne 通证抽象层定义了关于通证的定义集和操作集。PalletOne 的架构和各个组成部分如图 1 所示。

PalletOne高阶分布式共享帐本共治协议

SDK

PalletOne 为每个所支持的编程语言都提供了 SDK(Software Development Kit,软件开发工具包),智能合约开发人员基于 SDK 可以快速的完成跨链智能合约的开发。

PalletOne VM

作为智能合约编译和执行的核心工具,PalletOne VM 可以将主流编程语言(例如C 、Python)编写的智能合约编译成为可以在不同平台上高效执行的字节码,使得智能合约不仅和底层区块链解耦,同时和智能合约语言、执行平台解耦。

智能合约部署到 PalletOne 上后,将在 PalletOne VM 环境中运行,PalletOne VM 提供了一个对主机安全的沙盒环境,杜绝了恶意合约对主机或网络攻击的可能。

通证抽象层

PalletOne 通证抽象层定义了常用类型的通证的定义集和操作集,简化智能合约的编写难度和复杂度,降低发生错误的可能性,使得数字资产的定义更加敏捷。

PalletOne 在初期将内置以下的通证抽象模型:

(1)全预挖通证
类似于以太坊中的 ERC20 发行的通证,用户只需要在发行通证时指定通证的总额、精度、通证名称、缩写等信息即可。PalletOne 一次性将通证创建并发行出来。

(2)挖矿通证
类似于比特币的经济模型,用户在发行该通证时并不完全预挖或者不预挖,通证会随着时间和出块的高度而慢慢发行。

(3)固定面额通证
类似于现实生活中的纸币,用户可以定义 1,2,5,10,20,50,100 等面额的通证,并且一次发行出来,使用该通证时不可分割。

(4)非同质化通证
以上介绍的通证都是同质化的,也就是说你拥有的 1 个 Token 和我拥有的 1 个 Token没有任何区别。而现实世界中也存在着大量非同质化的 Token,比如将艺术品(比如字画)Token 化后,每一个 Token 都代表着独一无二的艺术品。在以太坊中 ERC721 定义了这种非同质化通证。PalletOne 原生支持非同质化通证。

调停中介

Mediator(调停中介)负责 PalletOne 网络的整体安全性。Mediator 的角色和传统区块链有些相似,都是信任机器,因此,Mediator 需要保证所有的决定都是正确的。Mediator使用代理权益证明(Delegated Proof of Stake,DPoS)来达成共识,为了防止 Mediator 成为PalletOne 的瓶颈,大部分工作只需要陪审团完成而不需要调用 Mediator。以下是 Mediator的主要工作:

1)持有 PalletOne 通证。PalletOne 通证是 PalletOne 原生通证,用于支付交易费
2)持有陪审员的保证金
3) 随机选择陪审员组建陪审团
4) 在陪审员无法达成共识时进行仲裁

陪审团

陪审团(Jury)是维护 PalletOne 安全性和完整性的基本单位。更具体的说,陪审团被委任运行智能合约和管理多重签名账户。为了实现安全和去中心化的设计,陪审团被设计为由许多参与者组成,这些参与者被称为陪审员。每位陪审员支付保证金以保证安全。陪审团内采用 BFT 的算法来实现共识。

分布式存储

在 PalletOne 中将使用有向无环图(Directed Acyclic Graph,简称 DAG)作为分布式存储。

DAG 相比于传统的链式存储方式有许多优点。首先,在 DAG 中没有区块的概念,所有交易都独立封装在一个存储单元(Unit)中,单元之间通过引用建立连接关系。其次,使用 DAG 作为分布式存储,交易可以并行写入。在传统区块链的区块中,区块生成是由矿工完成,而矿工需要在交易池中根据优先级和区块大小挑选交易,然后使用 Merkle 树的形式将交易进行关联。因此,在链式存储结构下,未打包进区块的交易都处于阻塞状态,而打包进区块的交易在区块未广播至全网之前都是属于未确定状态。相比于链式存储结构,DAG 的交易可以实时并行写入到全账本中,从而保证了交易的确认速度。再次,在DAG 中,通过确定主链,使各个交易达到有序的状态,从而有效地解决了双花的问题。最后,传统的链式存储结构,当交易量不断增加的时候,会出现网络拥堵、交易长久无法确认的情况。而在 DAG 中,参加的节点越多,交易量越多,交易的确认速度更快,因为交易之间是通过彼此引用的关系来进行确认。

在 PalletOne 分布式存储中,需要存储的具体信息主要包括交易信息、合约 ID、合约代码、合约状态、合约对应的陪审员列表和陪审团在执行合约过程中处理的状态信息等。

适配器

PalletOne 在适配器层中提供了良好的接口和库函数,一方面对接主流的区块链平台,另外一方面便于新的区块链底层平台对接 PalletOne,更好的实现 PalletOne 与底层链的信息交互。

PalletOne 工作机制


合约模板创建

在 PalletOne 中,所有类型的服务都是通过合约来创建。合约的创建是基于合约模板的,我们为常见的场景提供了合约模板供用户使用。用户也可以自己创建新的合约模板并部署到 PalletOne 上。合约模板的部署需要调停中介(Mediator)来完成。调停中介负责检查合约模板的语法、规范等,只有满足要求的合约模板才能部署成功。部署成功的合约模板将被保存在分布式存储中以备以后部署合约时使用。

合约部署

在 PalletOne 中,所有类型的服务都是通过合约来创建,合约的创建必须基于模板进行创建,如果合约模板没有部署在 PalletOne 中,则需要先创建对应的模板。一旦合约发行人希望部署该合约,PalletOne 将按照下图所示步骤进行部署。

PalletOne高阶分布式共享帐本共治协议

第一步:合约发行人将合约模板代码的哈希值和合约初始参数发送给调停中介。
第二步:调停中介将根据合约参数从候选陪审员中随机选定指定个数的陪审员,形成陪审员列表。
第三步:陪审员列表中的陪审员组成合约的陪审团。同时调停中介将初始参数发送给陪审团,陪审团从分布式存储中提取对应的合约模板代码。

第四步:陪审团成员接收到初始化参数和合约模板代码后形成新的合约,独立进行验证和执行。在验证和执行通过后,合约状态、合约 ID 和指定的陪审员列表将被保存在分布式存储中。

合约的执行分为锁定陪审团和不锁定陪审团两种情况,用户可以根据不同的应用场景在创建合约模板时进行选择。

合约调用

在合约部署后,其他参与者就可以调用该合约。合约调用流程如下图所示。

PalletOne高阶分布式共享帐本共治协议

第一步:调用者根据合约 ID 在分布式存储中进行查询。分布式存储返回合约执行文件,陪审员锁定模式下,将同时返回负责合约执行的陪审员列表;陪审员非锁定模式下,由 Mediator 选出新的陪审团。在获取完必要的数据之后,该合约将与参数一起打包到请求对象,并发送给陪审团。
第二步:当陪审员们接收到请求后,他们将独立地根据合约最新状态和调用参数执行合约。如果一切按预期运行,那么陪审员们的执行结果将是一样的,合同状态将转移到下一个。
第三步:如果一个跨链交易被触发,陪审团成员会根据合约的选择在对应的区块链上签署一个交易。

合约查询

在合约部署后,用户可以调用合约中的查询接口,查询合约的各个状态值。合约的查询不会更改 PalletOne 分布式存储,所以不涉及陪审团的共识。

合约终止

合约在执行完毕后,或者满足终止条件,合约发行人可以申请合约终止。在 PalletOne中合约终止流程如下图所示。

PalletOne高阶分布式共享帐本共治协议

第一步:合约发行人向调停中介申请终止合约。
第二步:在陪审团锁定模式下,调停中介从分布式存储中根据合约 ID 查询并获取合约对应的陪审团成员列表。在陪审团非锁定模式下,调停中介重新选出陪审团。
第三步:调停中介向合约陪审团发送终止合约的指令。
第四步:陪审团根据合约 ID 从分布存储中获取合约的执行文件、合约状态等信息。
第五步:陪审团检查合约的终止条件,满足条件后执行合约中定义的终止逻辑。
第六步:陪审团将合约终止状态记录到分布式存储中,同时将终止消息返回给调停中介。
第七步:调停中介验证合约终止状态,验证通过后解散陪审团。

通证经济


保证金

为了保证 PalletOne 系统的安全,陪审员们必须支付保证金以避免欺诈行为的发生。要成为陪审员赚取交易费,参与者需要遵循以下流程:
(1)支付保证金成为候选陪审员。
(2)陪审员通过执行合约赚取交易费。
(3)合约执行完毕后陪审团解散,候选陪审员可选择撤回保证金,退出候选陪审员列表。
(4)陪审员也可以通过调用 Mediator 选择新的替换陪审员来撤回保证金。

保证金数额可以通过一个包含不同属性的模型进行确定,这些属性包括合约价值、陪审团成员数、陪审员信用度和合约设计。陪审员必须保证具有良好的主机环境和网络环境,较差的主机环境可能导致智能合约不能在规定的时间内执行完成,而较差的网络环境可能导致陪审团内陪审员之间的通讯超时甚至离线,从而导致智能合约无法在该陪审员上进行共识。多次的共识失败将会被罚没保证金并移出候选陪审员列表。

交易费

为给陪审团执行合约提供激励,在 PalletOne 中,陪审员通过作为智能合约执行者,通过执行合约获得交易费。合约参与者需要向陪审员支付一些 PalletOne 通证作为交易费。该交易费比其它区块链的低很多,因为只有与之相关的陪审团中的陪审员会执行合约。陪审团只有在确定 PalletOne 通证被转移到 Mediator 中后才会执行合约。

陪审员奖励

为了 PalletOne 全网的高效运行和鼓励参与共识,除了交易费,将由 Mediator 基于智能合约对陪审员的参与共识进行 PalletOne 通证激励,因此,每年因共识奖励产生的PalletOne 通证上限将基于通胀因子进行确定,通胀因子假定为 2%。

PalletOne 中的交易费和奖励会分发给参与验证和执行合约的每一个陪审员。由于陪审团是随机选出的,所以每个人都有机会成为陪审团成员并参与到通证经济中来。

合约押金

有些合约(比如币币交易合约)需要参与的双方缴纳一定的合约押金到合约中,避免某合约方恶意单方违约的情况发生。如果合约正常完成,合约押金会退回给合约双方,而如果某方违约,另一方可以申请罚没违约方的合约押金来补偿履约方的损失。

小结

基于上述的 PalletOne 框架,陪审团既可以执行合约也可以和底层区块链进行交互。陪审团中的陪审员达成共识来履行可信任合约的执行。这种设计使得合约执行具有高效性和可扩展性,因为共识是由该个人合约的陪审团而不是由网络中的所有陪审员达成的。为减少交易费并降低时延,只有合约状态会提交给合约参与者所在的底层链。我们也真正设计了一个稳健的通证经济生态模型。

PalletOne 技术特性


多链

PalletOne 智能合约支持多链。通过陪审团共识以及适配层,PalletOne 智能合约可同时在不同的区块链上运行,用户在不同的区块链上通过调用一个 PalletOne 智能合约即可进行通证交易,保证了跨链通证交易的分布式、原子操作和不可篡改的特性。

同时,为某个区块链开发的智能合约(比如比特币)可以在其他的区块链(比如莱特币)上进行复用,大大减少智能合约的开发成本。

多任务

PalletOne 智能合约的验证、执行等工作可以由为其专门生成的陪审团完成。陪审团是从候选陪审员中随机选择一定数量的陪审员组成。PalletOne 中的智能合约可以通过选择不同陪审团以多任务的方式执行,相较于全网共识的方式,将有效减少网络拥堵。

多语言

PalletOne 支持多语言。开发者可以使用主流的开发语言(比如 Java、C 、JS 等)开发智能合约,而不需要专门去学习一门新的合约开发语言,比如像以太坊的 Solidity 语言。PalletOne 支持多语言可以使更多的开发者加入区块链的应用生态。

多平台

PalletOne VM 作为智能合约编译和执行的核心工具, 和底层的操作系统完全解耦,使得PalletOne 智能合约适用于 windows、Linux、Mac 等多种平台类型。

安全性

PalletOne 的安全性体现在两个方面,一是开发的安全性,二是合约执行的安全性。

开发安全性体现在两个方面:
(1)由于在 PalletOne 中,我们会针对常用或者特定场景提供合约模板,用户在开发对应场景的时候,调用合约模板,只需很少的步骤即可完成 DAPP 开发,在降低用户开发难度的同时也降低了因为开发考虑不全所引起的风险。
(2)PalletOne 提供了完备的通证定义和操作集,使得用户的通证发布过程简单易操作。同时由于 PalletOne 具备完备的通证定义和操作集,使得每个通证都是可追溯的、安全的。
在合约执行方面,PalletOne VM 技术使 PalletOne 智能合约的执行更加安全。

PalletOne 不是采用面向智能合约的编程语言,而是允许开发者使用他们熟悉的编程语言,并使用编译时分析工具和运行时分析工具、以及基于规则的验证技术来检测在合约中是否存在错误或安全威胁。

PalletOne 技术优势


高性能

在计算机体系中,数据 算法(计算)就代表了程序。而具体到区块链世界,数据是存储在区块中的,计算是在挖矿节点完成的。而区块的出块速度和区块大小就决定了该链的处理速度。以采用了“串行存储 串行计算”模式的比特币和以太坊的交易处理为例,比特币为 7 笔/秒,以太坊为 20 笔/秒。

而 DAG 不同于传统的“区块 链”的结构,改变了单链的串行性,通过并行写入解决了数据存储的瓶颈。而作为智能合约的区块链平台,计算节点的串行就成为了区块链新的瓶颈。而 PalletOne 自主创新的陪审团共识机制,打破了传统共识机制的串行性,由多个陪审团以多任务的并行方式进行共识计算,从而提升了计算性能。

通过 DAG 分布式存储与陪审团共识算法相结合,在存储和计算上均突破了传统区块链的技术限制,由此 PalletOne 形成了一个高性能的分布式账本。

高通用

PalletOne 旨在建立区块链行业的“IP 协议”,让价值在不同的区块链之间无障碍流通。在互联网技术中,物理层可以是电缆或光纤;数据链路层同时包括 ATM、SDH 和以太网;但是由于 IP 协议的存在,使得上层互联网应用不仅可以忽略物理层、数据链路层的技术和物理设施的演进变化,并且一直保留历史积累数据,持续性的存在和发展。

PalletOne 同样起到了这个作用,DApp(Decentralized Application,去中心化应用)可以在各种链上同时部署,不再受底层链的限制。

PalletOne 通过抽象数字货币链(以比特币为例)和智能合约链(以以太坊为例)接口,在适配器层中为各链提供接口的实现和库函数,智能合约直接面向抽象接口,而不面向具体的链,使得智能合约与区块链底层解耦;底层链在无须做任何要求、约束或限制的情况下,通过 PalletOne 的适配层即可实现同其他区块链的信息或价值的互换。

安全便捷的通证模型

PalletOne 内置了市场和经济学上通用了通证抽象模型。用户直接基于现有的模型可以简单、安全、快捷的创建属于自己的通证。PalletOne 在底层数据结构上为通证模型提供了支持,使得通证的数据与合约数据隔离。

PalletOne 使用 UTXO 模型,并提供了与比特币类似的 P2PH、P2SH 等支付方式,从而使得用户在通证支付的体验上与比特币一样简单。

在 PalletOne 的通证抽象模型中会提供完整的通证操作,因此用户进行通证发行时不需要编写任何代码,只需要配置相关参数即可,从而避免了发行通证时出现合约漏洞。

稳健的生态系统

PalletOne 旨在建立一个完整的智能合约生态,让开发者、用户和“矿工”都能在PalletOne 平台中各取所需,营造一个健康的生态。

对于开发者而言,一方面,为智能合约提供了主流开发语言的支持,开发者不需要专门学习一门新的合约开发语言,而只需要使用主流的开发语言即可进行智能合约的开发,降低了合约开发的难度。另一方面,通过合约商店为开发者提供了智能合约售卖的平台,类似于苹果的 AppStore,开发者可以对智能合约自由定价,用户通过有偿使用合约,使得开发者受益,从而进一步提高开发者的积极性和智能合约的质量。

对于用户来讲,用户通过 PalletOne 提供的智能合约商店,选择满足自己需求的智能合约,只需要通过支付开发者一定的合约使用费即可实现自己的需求,省去了智能合约开发和调试的繁琐过程。另外 PalletOne 也会提供功能强大的合约模板集给用户免费使用。

对于“矿工节点”,其可通过申请成为陪审员,为智能合约的运行提供良好的硬件环境,从中收取一定的手续费。由于采用了 DPoS 共识和陪审团共识,“矿工”不需要使用大量的矿机竞争挖矿,避免了能源的极度浪费,提高了硬件的使用率。

应用场景

PalletOne 是一个令人激动的跨链项目,它将致力于实现不同链网之间的信息跨链、价值跨链和功能跨链。PalletOne 的终极愿景是链接所有的链网,使这些链网中原本封闭孤立的信息、价值以及应用可以跨链自由流转和跨链广泛使用,从而构建出一个没有边界的全球互链网。

跨链支付

我们可以设想以下一些场景:比如,比特币网络中的用户想享受以太坊中的加密猫的游戏乐趣,但他手头并没有以太币,最可行的解决方法是将自己钱包里的部分比特币兑换成以太币,但这需要经过复杂的交易所操作。而 PalletOne 能够使这个场景变得简单,用户可以利用 PalletOne 的跨链功能直接使用比特币支付这笔费用,从而避免繁冗的币种兑换和充值提取等操作。

为了更好的理解该场景,下面我们将使用一个示例来展示如何通过 PalletOne 实现BTC 和 ETH 之间的链接交换。

(1)如果 A 和 B 想交换他们的 BTC 和 ETH,他们将新建交易合约,选择陪审员J1、J2、J3 和 J4 作为执行他们交易合约的陪审团。然后陪审员每人持有一个公私钥对,A和 B 各持有 4 个公私钥对,这样将分别在比特币和以太坊网络中建立 7/12 的多重签名账户作为合约账户。
(2)A 和 B 需要将各自的代币发送到相应的账户中。A 将 BTC 发送比特币网络中的到合约账户,B 将 ETH 发送到以太坊网络中的合约账户。
(3)A 用户发起收取 ETH 的申请,并用他持有的 4 个私钥签名;B 用户也可发起收取 BTC 的申请,并用他持有的 4 个私钥签名。
(4)陪审团检查合约账户的状态后,将分别签名允许 A 和 B 根据合约状态从合约账户中提取 BTC 和 ETH。由于是 7/12 多签,所以允许某个陪审员(J4)不在线的情况。

金融工具


共同基金

共同基金是一个专业管理投资基金,汇集许多投资者购买证券的资产。PalletOne 是共享投资策略的最佳平台。换言之,用户可以创建共同基金,并在合同中定义回报。每个人都有按照自己意愿使用 PalletOne 的权利,因此每个人都有机会创造自己的共同基金。他们可以把资金分成不同的加密货币。

交易所交易基金

金融工具是当事人之间的货币契约。它们可以被创造、交易、修改和结算。当前,全球的加密货币 ETF 数量很少,并且都被大型金融机构控制。用户可以使用 PalletOne 来创建自己的 ETF,持有如加密货币,商品,或债券等资产,从而为全世界的投资者创造更多的机会。

金融衍生工具

对于金融应用,PalletOne 也提供了便捷的服务,PalletOne 中的通证(Token)具有高度的灵活性,任何一个用户都可以利用通证工具设计一个由比特币、以太币、莱特币甚至股票、债券等多种资产组合而成的通证,这个通证的价值将由组成该通证的所有资产的实时行情所决定,以规避单个币种或证券涨跌幅度过大的风险。

此外,基于通证抽象层用户也可以为他持有的资产发行不同功能的通证,比如,一栋房屋可以分别发行所有权通证和使用权通证,购买了所有权通证的用户将拥有这栋房屋,而购买了使用权通证的用户将可在该通证生命周期内使用这栋房屋。PalletOne 提供了完备的通证定义和通证操作集,可以完成以上操作并确保安全。

支持多支付类型的 DApp


基于 PalletOne,开发者可以部署各种类型的 DApp,与以太坊上的 DApp 只支持ETH 支付的情况不同,用户使用构建在 PalletOne 上的 DApp 时,付费方式更加自由灵活:既可以通过 PalletOne 上支持的通证,又可以选择 BTC、ETH,甚至是几种方式的组合。同时,免除了通过交易所进行兑换的繁琐过程。付费方式的灵活性将从一定程度上激发用户的多样性,从而进一步推动 PalletOne 生态的发展壮大。

关于更多PalletOne信息:https://pallet.one/