在介绍tangle 的系列文章中,我们提出一个影响 random walk算法随机性的理论参数 α。因此,本文将深入探讨 α 是具体如何影响 tip 选择的,并且在具体的代码实现上需要考虑到的一些问题。
在阅读本文前,请确保对Tangle 有了基础的了解特别的 认证 以及 累积权重的概念。除此之外,还需要了解指数函数 以及一些概率论相关的知识。
为什么我们需要随机性?
为了更好的理解α的作用,我们首先需要记住为什么要random walk。基于需要tip 选择:每一笔新到来的交易都需要选择tangle 中已有的两笔交易进行认证。而选择的方式是决定tangle 形态的关键。
tip 选择算法最好能支持以下两个特性:
1.如果一笔交易累积了大量的认证者即该交易被大量选择并认证成功,那么,它所在的分支不大可能被抛弃。
2.诚实的交易应该被快速选定并认证。
为了支持上述第一个特性,我们决定以创世交易作为起点,然后选择累积权重较大的交易作为移动目标,直至选定tip。然而,这会与特性2相违背,因为 如果仅按照累积权重较大的方式作为选择依据,那么最终会只有一个相对中心分支链获得认证,而别的交易将会被抛弃。
为了在上述两个特性达到一个平衡,我们引入随机性。即在整体的路径选择中,我们偏向权重交易的认证者,但仍然会为之加上一些概率因素。
数学定义
我们定义了一个转换函数,通过该函数,可以计算出从一个被认证者移动到认证者的概率。当然,正如我们所描述的,对于累积权重较大的交易,其计算出的概率值需要偏大,反之偏小。
转换函数的具体定义如下:
我们来详细解读一下上述公式,首先是Pxy,代表 从交易[x] 移动到 交易[y] 的概率值,Hy 代表 交易[y] 的累积权重值, z ~> x 代表 直接认证 交易[x] 的 交易[z]。e则为自然对数的底数。而公式中的分母则是 所有 直接认证交易 [x] 的 e^αHz 之和。其实就是一个算术平均值。我们在用一个用例来阐述整个公式的实际效果以及参数α 的具体作用。
用例
在图1-3的用例中,walker 在transaction[x] 开始,有3个 直接认证的交易,分别是[A]、[b]、[C],我们来根据转换公式来算一下它移动到这三个交易各自的概率。更具累积权重定义。[A]、[b]、[C] 三个累积的权重值分别为2、3、1。
我们假设α=1,然后更具转换公式,可以分别计算出三者的概率:
根据上述的计算结果,PXB的概率最大,PXA 于PXB还在同一个量级,PXC最小了。
我们在假设α=0.1,这时候,计算结果如下:
可以看到,在α 较小时,三者的概率基本接近。如果α 设定为0,那么,三者的概率就会一致,算法直接退化成完全随机选择。
当然,如果α非常大,可以明显看出PXB的值会无限接近1,而PXA 以及PXC则变成0,在该种情况下,tangle 会退化成一条链。
到这里,本文完毕。