一种新的共识模型:基于概率的证明(PoP)
小饱1
post on 2023-1-10 13:45:30
13
0
0
交易ID是交易数据的哈希摘要,拥有无法预测的随机性,因此可以把它用作区块铸造的评选因子。交易的币权(币龄x币量)也很有价值,因此增加了二级筛选。评选需要最终唯一性,因此还有第三级筛选。
一级筛选:交易ID与目标区块哈希的相似性(相位差和)对比,低者胜。注:目标区块取动态的末端 -11号 区块。
二级筛选:交易的币权大小(输入中 币量x币龄 的合计),高者胜出。
三级筛选:仅为最终唯一性目的,取一级筛选中的某个哈希值简单比较即可。
这样的设计有如下优点:
与传统的PoS权益证明不同,交易ID只是一个数据哈希,与财富无关,币权仅作为次级因子,这使得富者越富的情况不再严重。
用交易ID实现铸造竞争会鼓励交易,大量的交易费能够保证矿工的收益,这创建了一个正向的良性回馈。
历史交易的数量巨大,如果每区块包含 64k笔 交易,则 20万 区块长度内竞争者规模可达百亿,51%攻击几乎不可能。
基本上,这是借助于交易ID和区块哈希的随机性来评选铸造者,因重在随机性,故名为概率证明。
对铸造者的约束
通常情况下,交易是自然需求的产物,用户仅在需要实际支付时才会创建交易。但交易可以参与铸造竞争,这为单纯获取竞争机会就创建交易提供了理由。另外,铸造是可以委托的(见后),应当让委托可以失效、现状可变,还用户用脚投票的机会。因此设计如下规则:
参与铸造竞争的交易必须处于区块链末端20万区块高度以内,取值范围:[-11, -200000]。负号表示从末端倒数。
交易包含的币权需要满足一个最低值(如 0.1币时),这可以提高构建大量小微交易的成本。综合兼顾,这个值不应太高。
交易需要是有效绑定本链的交易,历史标记(见后)为空或错误的交易无权参与铸造竞争。
为便于描述,这些有资格参与铸造竞争的交易称为「铸凭交易」,由其交易ID演生出来用于最终对比的哈希称为「铸凭哈希」。
一级筛选:哈希相似性
如果将两个哈希序列描绘成两条曲线,两条曲线的相似度称为哈希相似性。进行对比的两个哈希序列分别是铸凭哈希和由目标区块ID(-11号)演算而来的「对比哈希」,相似度采用「相位差和」(可想象成纵坐标上的点距之和)计算,小者胜出。算法如下。
算法伪代码:
Code:
// 铸凭哈希:
// 加入当前区块高度(4字节)获得定位约束。
// 双倍ID与下面单ID形成交错约束。
var h1 []byte = Hash512( 交易ID + 当前高度 + 交易ID )
// 对比哈希:
// 加入铸凭哈希(h1)获得关联性约束。
// 加入交易ID与前面形成嵌套的交错约束。
var h0 []byte = Hash512( -11号区块哈希 + h1 + 交易ID )
// 相位差和计算(哈希空间压缩)。
// 按4字节分段X坐标,4字节整数值为Y坐标,计算两条线Y坐标差距累积。
var sum int64
for n:=0; n
返回的相位差和即是铸造竞争的一级评选因子,也即哈希相似性的权重。
二级筛选:币权
交易包含的每一笔输入的币量乘以币龄的总和,即是交易的币权。它作为第二级筛选因子参与评选,高者胜出。这是在第一级筛选中评出的 2名 获胜者基础上进行的,因为评选的目标范围受限极大,所以纯PoS中富者越富的问题应该可以忽略。
币权是一个有价值的筛选因子,它可能促使用户优化自己交易的币权分配,比如尽量把古老的余额花掉(得到高的币权),以及尽量保留新的收款以存储币龄。这对系统的数据管理以及整体上的运行效率有益。
币权值的计算可采用「聪秒」精度,降低2名获胜者币权相等的概率。
三级筛选:最终唯一性
如果二级币权筛选不足以决出胜负(极为罕见),则简单地取一级筛选中的 h0 哈希序列按字节对比,小者胜出。这只是一个最终唯一性保证。
铸造委托
用交易ID作为铸造评选因子有广泛的普适性,概率基数庞大,但这要求无专业技能的普通用户参与进来。显然,专业技能和时间的花费是一个不小的壁垒。没有普通用户的参与,庞大的概率基数没有意义,因此让普通用户委托专业的铸造者行使铸造权十分必要。
为此,设计在交易的数据结构中添加了「铸造委托」的定义。结构为:铸造地址(32) + 分成定义(1) + 收益地址(32),长度65字节。其中:
铸造地址:定义签名区块的主人。这可能是用户自己的地址,也可能是专业铸造服务商的地址。
分成定义:定义铸造地址与收益地址的分成比例。
收益地址:接收铸造的收益分成。这使得铸造可以与收益相分离,也创建了一个外部委托铸造的机制。可选。
根据分成定义值的不同,收益分成实际上有三种模式:
值 0: 收益地址无收益,全部收益支付到铸造地址。因此收益地址可省略,节省32字节的空间。
值 255: 铸造收益全部支付到收益地址,铸造者无收入。可实现铸造与收益的完全分离,即冷挖矿。
值 1-254:按 n/255 的比例支付到收益地址,剩余的支付到铸造地址。这可实现外部委托铸造。
交易头
类似于区块头代表了区块数据,这里设计了交易头结构。铸造委托和历史标记被定义在交易头中,便于铸造者资格的验证。交易中的输入和输出序列被分别计算哈希,然后合并计算交易体的哈希,最后嵌入在交易头里。交易ID就是交易头数据的哈希摘要。
交易头伪代码(合计 97+32 字节):
Code: (go)
TxHeader {
Version int32 // 版本
Timestamp int64 // 交易时间戳。可设定为未来时间
BlockClue [20]byte // 历史标记
Minter Address // 铸造地址,32字节
Scale uint8 // 收益地址分成(x/255)
Staker Address // 收益地址,32字节,可选
HashBody Hash256 // 交易数据体哈希,由输入序列和输出序列合并而来
}
附:交易的末端区块与历史标记
本设计中无需工作量逻辑,区块的出块时间间隔为固定的值(如:6分钟)。交易的末端区块指交易时间戳所在时间的区块链最新已确认区块,高度 = (交易时间戳 - 创始块时间戳) / 6分钟。
在交易中嵌入主链上特定历史区块的标记,可以实现交易者对主链的认可。历史标记绑定的目标就是从交易的末端区块算起的 -11号 区块,值为目标区块哈希的前 20字节。
安全性
铸造委托创建了铸造市场化运行的机制:不同的钱包服务商在市场中竞争,创建专业的服务,获取用户的委托。委托是自由的,新的委托不断加入,过期的委托不断失效,这形成了流动性,也形成了市场的活力。
服务良好的钱包服务商会拥有大量的用户委托,这可能带来垄断。但委托存在有效期,用户可以选择用脚投票,改变新交易的委托目标。同时其它钱包服务商也是一个竞争威胁,因此知名服务商串谋攻击的可能性应该不高。
铸造者的预选与同步
因为哈希相似性对比是针对区块链末端 -11号 区块的哈希,所以一个铸造者可以提前 10个 区块时段得知对比目标。如果一个节点即时评估自己的铸凭交易并广播,则全网有充足的时间进行预先沟通。尽量多的参与者加入,可以使得尽可能优质的铸凭交易被发掘出来。
择优池
在铸造者的预先沟通中,各个节点会收集被广播出来的铸凭交易,构造出一个 100 容量的择优缓存池。当一个新的铸凭交易抵达时,计算它的哈希相似性,如果比池中最差的一个更优,则存储并转播,否则忽略。
广播的铸凭交易需要被验证,这由铸造者对目标区块(-11号)哈希的签名实现(同时也证明在线)。当出块时间到达时,择优池中位于前端的铸造者就可以铸造区块并广播了。
择优池的设计是一个必要的策略,用于发掘铸造者并有序化竞争,同时也约束全网广播的区块数量,避免造成网络拥堵。
避免分区
P2P网络是自由的,任何潜在的铸造者都可能离线,一个实际上拥有最优铸凭交易的用户也可能刚刚上线。如果刚刚上线的铸造者铸造了一个最优区块,但却因为处于出块时间边界而使得区块未能广泛送达,则全网范围内最新区块的评选就可能不一致,这会导致分区情况的发生(末端分叉)。或者,一个拥有最优铸凭交易的攻击者选择有意地延迟,也可能造成这种情况发生。
Bitcoin系统中是用最长链作为约束,但这里是固定的出块时间间隔,所有分叉(如果有)长度都一样。因此需要一种机制来约束主链的成长、竞争和选择,这就是下面的择优池的确定性同步,以及后面的竞争支链的纵向评估等规则。
择优池同步
为避免刚上线的优质竞争者的扰乱,各节点择优池中的铸造候选者应当被先期确定下来,而之后的铸造者就不再被认可。这需要在新区块创建时间之前对择优池进行同步。每一个区块都有此逻辑,针对相应的-11号区块有着自己的候选者择优池。
择优池中的成员需要不断收集、淘汰和更新,并在适当的时间结束更新并启动同步。时间规划如下:
在铸造对比的目标区块被创建后,到它成为 -10号 区块前(9个区块时段,54分钟):与它做相似性匹配的铸凭交易可以被任意广播和收集。
在目标区块成为 -10号 区块时,择优池的收集和更新结束,进入内部候选者的同步阶段。该阶段为 1个 区块时段(6分钟),至它成为 -11号 区块时结束。
当目标区块成为 -11号 区块后,它即正式成为当前区块时段将创建区块的评比参考目标。铸造者收集、验证、打包交易,在预定的时间创建区块并广播。
择优池的同步由择优池中的候选者签名并发起,出于利益无关性考虑,这仅由择优池中权重排序低于32位的成员执行,即第33-100名共 68位 候选者有权发起同步。这样设计的原因是:
在P2P环境下,时间是一个无法准确的值,系统需要容忍这种模糊性。如果没有这种限制,高权重的迟到竞争者可以随时把自己加入择优池然后启动同步,因为其高权重很可能最终获选,于是就会影响到最终的结果,让预先同步失去了意义。同时,这也会让同步工作很难正常结束。
有了这一限制后,一位后来的中低权重的池外竞争者没有动力去做这样的事(即便做了也无多少影响),而池内有权同步的候选者也没有动力去把那位高权重的后来者补上(注:同步的权利只有一次)。
择优池中权重低于32位是一个模糊的概念,因为择优池本身尚未同步,内部成员的序位并不确定。但这没有关系,同步是一个成员补充的逻辑,节点只需检查对方的择优池以及它自己的序位是否合法,然后合并按 100 的容量清理即可:如果对方集优,合并后肯定合法,如果己方集优,合并后只是淘汰掉质差的而已,不造成实质影响。一个同步者只有一次机会,随着越多同步的合并,择优池会越来越稳定。
铸造者的最终评选
当出块时间将要到达时,理论上择优池中的全部候选者都有权出块,但因为筛选的条件很明确,通常只需要处于前端的候选者出块就可以了。但实际上,这里还有一些潜在的隐患。
哈希塑造
哈希相似性要求铸造者用自己掌控的交易ID与目标区块的哈希进行对比筛选,这里存在两种攻击的可能(假设攻击者拥有极大的哈希算力):
攻击者可以通过在交易里添加随机数据来塑造交易的ID,使它与目标区块的哈希尽量相似(依照算法)。
对于已经能够创建最优区块的攻击者,可以通过变更交易ID来塑造当前区块的哈希,使得该哈希与自己拥有交易的ID有更好的相似性,从而为自己下一次的竞争获得优势。
这就是哈希塑造,一种不可接受的作弊行为。如果诱惑力足够,出现专业的作弊矿机是可以预期的。
解决办法:
对于第一种交易ID的塑造,仅仅适用于末端 10个 区块里的交易,所以简单的排除这10个区块参与铸造竞争即可。
对于第二种反向匹配交易ID的区块哈希塑造,虽然它的发生受限于 只能是那个已经胜出的区块的铸造者,但如果攻击者的哈希算力足够,他就可能从基础层面获得优势,持续胜出甚至锁定胜负。
因此需要设计更细致的规则来制约:
最低交易数量:区块包含的交易数量必须占到可进入区块总交易数的 70% 以上。这可以压缩攻击者塑造区块哈希的可用时间。
动态性和模糊性:择优池前 3位 不参与铸造竞争。攻击者会因此而失去塑造的趋近判断(不是最近就好),而择优池是动态的。
确定性的消减:在一级哈希相似性筛选中增加一个子级筛选:即时哈希。消减哈希相似性的「胜选确定性」,消磨作弊者的动力(见后)。
择优池凭证
择优池是一种局部的逻辑,为了可验证,可用择优池中 前3名 为代表,用它们的定位信息(3x36=108字节)作为择优池凭证。择优池凭证和铸造者签名信息会包含在 Coinbase 交易中,这大概会增加约300字节的数据量。
这样的设计可以提高攻击者的门槛:如果攻击者要构造一条竞争支链,除了自身需要有足够权重的哈希相似性外,还需要对每一个区块寻找3名权重更高的铸造候选者为凭证,而这显然是一个很高的门槛。
微调评选规则
择优池中 前3名 不参与铸造竞争,对于之后的 97位 候选者,取当前活跃的 前4名 作为初选结果。
这4名初选者按「即时哈希」进一步筛选,取值最小的 2位 为决胜者进入币权的二级评选,规则同前。
即时哈希算法伪代码:
Code:
// 当前确定的108字节。
var base = 择优池凭证
// 活跃的前4名是平等的,更优的哈希相似性没有意义。
var h1 []byte = Hash256( base + 活跃者1交易ID )
var h2 []byte = Hash256( base + 活跃者2交易ID )
var h3 []byte = Hash256( base + 活跃者3交易ID )
var h4 []byte = Hash256( base + 活跃者4交易ID )
queue := sort(h1, h2, h3, h4)
return queue[0], queue[1] // 选取两名值小者获胜
末端活跃区块
区块不能收录未来的交易(按时间戳计算),这是一个基本设计。铸造者没有理由等待,新区块通常会在预定的时间(6分钟的间隔时间点)开始创建。区块的创建、广播和验证都需要时间,这里作如下规定:新区块的创建和广播可延长至下一区块时段内的前 3分钟,之后节点不再接受新的区块。
在择优池中排前的候选者不一定持续活跃,虽然概率不高,但逻辑上这是动态的,因此新区块并不能在准确的时间点确定。随着变化,优胜者可能改变,新区块也会随之变更,这种动态的变化可称之为「活跃」。
区块的广播抵达和区块数据的同步完成不是同一个概念,只要可验证的区块证明抵达全网,区块的数据同步可延续到下一区块时段完整的6分钟。考虑可靠性冗余,同步的区块可以不止一个,候选的次优区块也应当伴随,如果最终发现最优区块里有无效交易,次优区块就可以被考虑了。
优势与不足
基于历史交易ID和区块的哈希随机性,用概率的方式评选区块,没有工作量证明(PoW)的能源浪费。
次级的币权筛选因子受到很大的限定,可以认为基本上不存在权益证明(PoS,起源于Peercoin)模式下富者越富的问题。
自由的直接筛选,不需要委托权益证明(DPoS,由BitShares发明) 的选举流程,更接近自然的去中心化形式。
固定的出块时间间隔使得区块拥有可预测性,时间因子的价值更容易被开发利用。
每一笔交易中需要包含铸造委托定义和主链绑定标记,会多出 53+32 字节与交易逻辑无关的额外数据。
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
Write the first review