当前位置:   金科网 > 区块链 > 正文

Qtum 量子链发布新共识机制白皮书

摘要

权益证明(Proof-of-Stake,简称 PoS)机制是区块链领域最常见的共识机制之一,其总市值仅次于采用工作量证明(Proof-of-Work)机制的项目。Staking 是 PoS 系统中用户参与共识获取奖励的方式,经过多年的发展,仍存在许多弊端:

· Staking 节点需要保持在线;
· 代理 Staking 中的超级节点数量有限,网络趋于中心化;
· 普通用户参与 Staking 的本金和收益无法由自己掌握,有资金安全的风险;
· 各类代理 Staking 的模式固定且单一,无法根据实际情况进行升级和迭代。

Qtum 量子链首次把智能合约引入到 PoS 共识过程,提出了一种基于智能合约的离线 Staking 机制,使用户可以在离线状态参与 Staking,且本金和收益都通过智能合约保证安全性,为冷钱包 Staking、去中心化 PoS 矿池等提供了新的解决方案。在 Qtum 离线 Staking 机制中,成为 Super Staker 可以代替普通节点进行 Staking,并获取收益,网络中 Super Staker 的数量没有上限,最大可能地保证了网络的去中心化程度。同时,由于智能合约的引入,Qtum 离线 Staking 机制的规则是可编程、可升级的,增加了 Staking 本身的灵活性。

1. 简介

背景与动机

Qtum 量子链是最早采用 PoS 共识机制的区块链项目之一。Qtum PoS 共识机制的基本原理是 Staker(即 PoS 系统中的“矿工”)竞争生成新区块,每个 Staker 产生符合共识要求的新区块的概率和他持有的 QTUM 数量(或称为 Stake)成正比,持币越多则成为区块生成者的概率越大。

PoS 共识机制要求参与共识的持币者保持在线,负责打包交易信息、生成新区块、维护网络运行,共同维护去中心化网络的安全。作为奖励,节点可以获得系统增发的 QTUM,这种收益的方式就是 Staking。

然而在现实中,大部分 Staker 无法保持在线:

· 对于普通 Staker,无法保证自己的设备 7*24 小时在线运行;
· 对于机构持有者等大户,不愿意承担热钱包在线导致的安全性隐患,如黑客攻击等。

因此,在大多数 PoS 系统中,参与共识的持币者比例不高。由于大部分持币者都无法进行 Staking,系统产生的代币将被少数大户获得,从而降低网络的去中心化程度和安全性。

由于在线权益证明机制存在上述弊端,业内逐渐出现了一些对离线权益证明机制(以下简称离线PoS)的探索,以满足大部分普通持币者在离线状态下参与PoS共识、获得区块奖励的需求。目前,行业内的离线PoS机制主要分为以下几种类型,都或多或少存在一些问题:

基于中心化代理的 Staking

基本原理是用户将代币转移给代理人,再由代理人进行在线Staking,获取的收益按照事先约定分发给用户。大部分中心化 PoS 矿池、交易所的Staking 服务等,都属于基于中心化代理的 PoS。

该机制本质上是用户把币的所有权转移给中心化机构,再间接参与 Staking,资金的安全性和收益的获取都完全依靠中心化机构的信用背书,有很大的资金安全隐患和网络中心化风险。

基于去中心化代理的离线 Staking

较常见的几种方式包括:

· DPoS(Delegated-Proof-of-Stake)共识机制,普通用户根据持币数投票给少数几个超级节点,再由超级用户参与共识获取奖励。虽然用户仍可以使用自己的代币,但没有任何机制可以保证超级节点会分配 Staking 所得的利益。

· Tezos 的共识机制中,普通用户仅把自己的收益权委托给代理节点,自己仍拥有代币的控制权。但整个代理模式比较单一,且代理节点仍需要手动分配 Staking 收益,没有共识机制保证普通用户的收益。

· 另外一些基于保证金的 PoS 系统中,存在 Slashing 的风险,即质押用于 Staking 的代币可能会由于各种原因被系统罚没,造成本金的损失。

Staking 领域仍有许多痛点需要解决,行业内亟需一种让所有持币者可以随时参与,同时可以保证持币者本金和收益安全的 Staking 机制。

主要贡献

基于对 PoS 和智能合约的深入理解,Qtum 量子链提出一种基于智能合约的离线 Staking 机制。与现有 Staking 机制相比,其具有以下特点:

· 持币用户离线参与就有可能获取收益,且没有任何门槛;
· 成为 Super Staker 没有任何门槛,且 Super Staker 的数量也没有任何限制,鼓励充分竞争和去中心化;
· Staking 过程和收益的分配过程都由智能合约控制,通过底层共识机制保证安全性,避免中心化风险;
· 智能合约可以指定不同的代理规则,改变规则或引入新规则只需要部署新的合约,不需要硬分叉;
· 锁定在智能合约中的代币也可用于 Staking,这是其它 PoS 系统中都无法实现的。

目前 Qtum 离线 Staking 机制已经在 Qtum 主网上线,属业界首创。

2. 技术原理

本章介绍 Qtum 离线 Staking 机制的技术实现原理。

委托证明

Qtum 离线 Staking 协议允许用户将自己持有的代币的 Staking 权益委托给 Super Staker,获取区块奖励,但同时保留 QTUM 代币的所有权。在 Qtum 去中心化网络中,这种委托关系必须通过共识机制保证其真实性,因此代币持有者需要提供可被验证的委托证明。

委托证明(Proof of Delegation,简称 PoD),是由地址私钥持有者对委托信息进行数字签名后生成的消息。委托证明中被签名的信息即被委托的 Super Staker 的地址。PoD 将被记录到代理合约中,被 Super Staker 用于创建新区块。Super Staker 必须将 PoD 包含到新区块的区块头中,用于证明 Super Staker 有权利使用委托人地址的 UTXO 建立新区块。

PoD = SignMessage( Delegator’s priv key, Super Staker’s Address)

任何用户都可以通过委托人地址、Super Staker 地址验证 PoD 的有效性。验证 PoD 的有效性相当于验证委托的有效性。

Verify(委托人地址,Super Staker 地址,PoD) -> (True | False)。

代理合约

代理合约是用于管理 Qtum 离线 Staking 代理信息的预编译智能合约,部署在 Qtum 区块链上。代理合约主要实现以下几个功能:

· 委托人通过代理合约添加/删除/更新委托信息;
· Super Staker 通过代理合约获取相关委托信息;
· 所有节点通过代理合约获取委托信息,用于验证区块。

预编译合约的优势在于可以极大地降低 Gas 费用,且获取任何节点都可以无成本地获取合约状态信息。

委托信息

Qtum 区块链上 Staking 的基本单位是 UTXO(Unspent-Transaction-Output,未花费交易输出),但离线 Staking 的委托单位无法精确到 UTXO。一方面,每个地址往往有多个 UTXO,普通用户无法管理每个 UTXO 的委托,这会极大提高用户使用 Offline Staking 的门槛。另一方面,UTXO 在获得区块奖励后会生成新的 UTXO,如果以 UTXO 为单位,旧的委托会自动失效,用户需要继续对新的 UTXO 进行委托,这无论从经济性还是实际操作性上都存在问题。因此,Qtum 离线 Staking 需要以地址为单位进行委托。

代理合约将会管理所有以地址为单位的委托信息。这些委托信息的标准形式如下:

<委托人地址 A>
<对应的代理人地址 B>
<委托人愿意支付的手续费率>
<委托区块高度>
<委托证明 PoD>

其中,PoD 中包含的委托人和代理人地址需要和委托信息中地址相符,即 PoD 是委托人地址 A 对应的私钥对代理人地址 B 的数字签名。

委托人

代理合约中所有委托信息均由委托人发布和修改。通过 Solidity 智能合约的权限管理,仅有委托人私钥的持有者可以对其委托信息进行添加、修改和移除。所有操作都需要通过调用代理合约相关函数来实现。可供委托人调用的接口包括:

addDelegation() : 用于添加/修改委托信息
removeDelegation() : 删除代理信息

合约的调用者地址默认为委托人地址,委托区块高度默认为当前区块高度。在成功添加委托信息前,代理合约需要做一系列检查:

· 委托人地址和代理人地址必须不同,即委托人无法委托给自己;
· 手续费率需要在 0% - 100% 之间,即奖励的分配无法超出区块奖励本身;
· PoD 中包含的委托人和代理人地址需要和委托信息中地址相符,即委托人需要在合约中记录对应的委托证明,供其他节点验证。