星球日报
搜索
手机客户端
iPhone · Android
微信公众号
微信公众号

iPhone · Android

微信公众号

Cosmos Hub 里的“再委托”是什么?

2019-06-05

本文详细分析了(再)委托机制,以及执行这些委托时要注意哪些要求和限制。

本文来自 Cosmos,原文作者:Aleksandr Bezobchuk

Odaily 星球日报译者 | Moni

Cosmos Hub 里的“再委托”是什么?

在 Cosmos Hub 里将 ATOM 代币委托给验证人,是 Hub 底层安全的关键及重要组成部分,也鼓励每个 ATOM 代币持有人参与其中。作为委托人,将你的 ATOM 代币抵押在一系列验证人那里之后便会赋予你很多网络权利,比如参与共识机制、网络治理、赚取通胀回报等。本文不是对 Cosmos Hub 或 BPoS 协议进行深入审查讨论,而是会详细分析一下(再)委托机制,以及执行这些委托时要注意哪些要求和限制。

________________________________________

首先,什么是委托呢?

Cosmos Hub 利用 Tendermint 作为底层 BFT 共识引擎,并使用 BPoS 协议进行区块提议人选举,其中每个提议人(验证人)会根据自己所持有的总绑定权益进行加权,验证人总绑定权益与其在网络上获得的机会(比如提出一个区块或接收激励金额)直接相关,该协议支持一个固定数量的绑定验证人。

这些验证人也可以自我绑定,这意味着他们可以将自己的 ATOM 代币委托给自己,并且也可以接收来自任何其他 ATOM 代币持有人的委托。这些绑定的 ATOM 代币将充当抵押品,并使得每个委托人参与到网络之中。如果验证人出现任何模棱两可、不当行为或拜占庭行为,那么该验证人及其委托人绑定权益在总权益内的比例将会被削减。

委托人可能有很多理由将自己持有的 ATOM 代币委托给委托人:首先,委托人和验证人都会收到奖励,这些奖励是按照他们所绑定的每个验证人持有总权益内所占比例进行分配的;其次,委托人可以直接为整个网络的安全做贡献,当然他们和验证人也可能出于各种原因选择解绑自己的 ATOM 代币。

但是有一点非常重要,ATOM 代币持有人需要注意所有代币解绑时会有一个“UnbondingPeriod”的限制,这是一个链上参数化的时间段,所有委托人(包括验证人)必须等待他们的 ATOM 代币完全解绑之后,这个参数才会发生变化。也就是说,在“UnbondingPeriod”通过之前,ATOM 代币基本上仍然是被锁定的。另外需要提醒的是,在此期间这些 ATOM 代币仍然可能因为任何拜占庭行为而被削减。“UnbondingPeriod”限制是一种网络保护安全措施,可以防止 Cosmos Hub 出现各种问题,比如网络同步假设、提供远程攻击长度下限、以及解决“nothing-at-stake”问题。

在我们深入研究委托细节和限制之前,我们还需要给“再委托”(redelegation)一个比较明确的定义。再委托是一种简单的“再绑定”行为,或是将一部分(或是全部)你抵押的 ATOM 代币从一个验证人那里转移到另一个验证人。出于多种原因,再委托对整个网络来说是较为有益的。举个例子,如果一个委托人不再对验证人提供的服务或收取的佣金率感到满意,那么他们就会将绑定在这个验证人那里的 ATOM 代币转移到另一个验证人那里,此时该委托人可以不用等待解绑时段完全结束就可以进行切换。

不过,在执行“再委托”操作的时候会有一些限制条件。

“再委托”约束条件

现在,我们已经对“再委托”和 “UnbondingPeriod” 在网络中所扮演的角色有了一定了解,下面就让我们看一下在执行这些活动之前需要考虑哪些细节。

正如我们之前所提到的,与验证人绑定的 ATOM 代币如果想要解绑,会受到“UnbondingPeriod”限制。除此之外,还有另一个重要的链上参数也需要考虑在内,它就是“MaxEntries”,该参数与下面两个要素相关:

1、唯一委托人和验证人绑定对之间的解绑(Unbondings)总数;

2、唯一委托人、源验证人和目标验证人元组之间的再委托总数。

“MaxEntries”里面的“entries”,其概念总是被用于 Cosmos Hub 状态机里,在委托人、解绑数量、以及相应的验证人之间保存信息。然而从用户的角度来看,“entries”概念其实被抽象化了。

为了更好地说明这一点,我们使用以下示例。假设委托人 D 在验证人 X 那里绑定了 N个 ATOM 代币,当然委托人 D 也可以将自己的代币委托给其他不同的验证人,但是为了更好地进行解释,我们在这个例子里面假设委托人 D 只把自己的代币绑定给一个验证人。现在,委托人 D 希望从验证人 X 中撤销一些他/她放置的 ATOM 代币,因此 D 发送了一笔 MsgUndelegate 交易,试图解绑 M 个 ATOM 代币。此时,在委托人 D 和验证人 X 之间的分类账状态机中便创建了一个“entry”(星球君 o-daily 注:entries 是 entry 的复数形式)。如果委托人 D 想要进一步从验证人 X 那里取回更多抵押的 ATOM 代币,那么 D 可以再发送另一个 MsgUndelegate 交易,但是这个交易并不被允许频繁发送,MsgUndelegate 交易数量有一个上限——即“Maxentries”次!如果委托人 D 发送的 MsgUndelegate 交易数量达到了这个上限,任何进一步的尝试都会报错,如下:

“在这对委托人/验证人中有太多解绑委托申请 entry,请等待其他申请条目处理完成。”

因此,委托人 D 必须要等待完整之前解绑交易的“UnbondingPeriod”完成之后,才能尝试将更多抵押的 ATOM 代币从验证人 X 那里解除委托关系。

对于“再委托”来说,这一概念同样适用。换句话说,如果委托人 D 希望将自己一些抵押的 ATOM 代币从验证人 X 那里重新委托给验证人 Y,那么同样会受到“MaxEntries”参数的约束,即会有 “entry” 次数限制。注意,对于“再委托”这种情况,“MaxEntries”约束适用于每一个独立的委托人、源验证人和目标验证人元组。

关于“再委托”还有另一个比较重要的因素,那就是禁止“过渡性再委托”。“过渡性再委托”可以被视作为从一个验证人到另一个验证人的“跳跃”(hop)。举个例子,如果委托人 D “再委托”给验证人 X,接着又想从验证人 X “再委托”给另一个验证人 Y。那么,委托人 D 就必须要等待 UnbondingPeriodperiod 交易全部完成之后才能进行。但是,建议不要仅委托给单个验证人,因为一旦这么操作的话,“过渡性再委托”限制就会覆盖更多场景。当然,这并不是说“过渡性再委托”总是会被禁止,委托人可以多次启动这个操作,但是“跳跃”次数会有一个总数上线,也许未来可以通过治理提案来解决此问题。

削减抵押的权益代币

执行“再委托”时需要记住的另一个关键要素是“削减”(slashing)。

作为委托人,如果给定验证人执行了模棱两可的、非法的、或是其他任何可被处罚的拜占庭行为,那么委托人在验证人中已绑定的权益代币、或是正在解绑过程中的权益代币有可能会被削减。有关削减的更多详细信息,可以查看具体规范。

关于“再委托”,还有一些其他重要的事情需要牢记。鉴于我们之前举的例子,委托人 D 将其权益代币从验证人 X “再委托”给另一个验证人 Y 的时候,委托人需要对两个验证人负责!

让我们把上述例子再延伸一下,假设验证人 X(原始/源验证人)在高度 H1 处发生了一些违规行为,后来这些行为被发现了并在高度 H2 处提交,那么当以下两个条件满足的时候,委托人 D 的权益代币就有可能会被削减:

1、在高度 H1 的“再委托”是在违规行为侵入之后创建的;

2、“再委托”还没有完成(比如,完成时间在高度 H2 之后)

如果目标验证人(在上述例子中为 Y)在相同条件下提交了违规行为,那么其处理方式与上述常规委托削减的处理方式没有任何区别。

现在,你应该已经对“再委托”在 Cosmos Hub BPoS 网络中扮演的角色、以及执行此操作的条件和限制有了一定理解,要不要亲自去试试呢?

参与讨论

登录后参与讨论

Moni

新锐作者

Moni

这个作者有点忙,还没写简介

总文章数: 268


分享至

微信扫一扫分享

0