矿工的博弈

这个比特币的记账权是由矿工通过算力来争夺的。谁的算力大,谁就有这个记账权。那么,是不是说,算力大的矿工说了算呢?矿工到底这个 “记账权” 是什么意思呢?有一个占 30% 的 “大矿工”,是不是可以说了算呢?还是说,如果有一个矿工拿到了记账权,就可以随意记录他认为合理的帐本?

矿工的 “记账权”,其实是一个误解。矿工并不是在记账,而是在使用自己的算力,“不间断的”,在自己认可的 “可能成为最长链的一部分” 的区块上投票。

要理解这个,我们要从比特币的本源开始说起。

首先,比特币是一个点对点的现金系统,这个点对点现金系统的点对点部分,是通过椭圆曲线签名的安全性来保障的。当你(发送方)把一笔交易(记载了比特币的转移,当然,也可以记载了其他信息),使用发送方的私钥签名之后,传递给了接收方。双方的清算已经完成,也只有你(发送方)拥有双花的可能性。

在交易多方都是诚实的情况下,这种签名认可的方式,构成了整个交易可追溯可查证的历史记录。(参见白皮书第二章)

如果,我们的每个参与方,都使用 “先到先得” 的方式来在自己的本地构建账本,那么也是完全可以实现点对点的现金系统的。

但是,我们其实并不能保证这个先到先得,因为网络状况复杂,也可能所有参与的用户先收到的,未必是完全一致的。因此比特币使用区块的方式,来明确交易的先后。这些区块前后通过哈希形成了链。(参见白皮书第三章)。

到这里,才引入了比特币很特别的创造,PoW。工作量证明。如果存在多种互相冲突的账本,那么我们应当通过工作量来确定,哪个账本最有可能是对的,最有可能是其他所有人看到的那个版本(也许自己是被欺骗的)。除了信赖最多工作量累计之外,我们并没有其他更好的参照标准。(参见白皮书第四章)

那么,重点来了,我们是不是应该看到区块上出了一个新块,就认为某个账本是真实的呢?

假设,矿工发现,自己的交易,和最新的区块有冲突,是否应该放弃手里的交易版本,去跟随最新的区块呢?

我们可以认为,在交易没有任何冲突的情况下,跟随一个区块高度更高,累计算力更大的链,是矿工的合理结果。

这个合理结果,是因为如果全网的所有算力都遵循同样的结果,即使少数算力不认可这个账本,也依然无法在累计工作量上超过多数算力。If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains.

但,矿工也有其他的选择。如果矿工认为这个区块并不符合自己和绝大多数同样矿工的利益,他更愿意在一条将来收益更高的链上工作,那么他可以选择直接拒绝掉这个他不认可的区块,回到上一个认可的区块继续工作。

有的时候,这个事情被认为是 “分叉”。矿工有能力根据自己和其他矿工的多次重复博弈的结果来选择某个区块,是关键结果。

PoW 下的孤块、其他矿工的接受程度,是一种无法被修改和伪造的,博弈信号。 具体可以参考 Wright 博士的 “铁与钢”。 https://medium.com/@craig_10243/iron-and-steel-f4898687f6b0

下面我举一些可能的博弈的点。

上面说的 Wright 博士文章里面提到的,矿工面对自己的有限投资,可能有很多种投资方向。

矿工可以选择:1. 增加算力,提高自己的收益占比;2. 提升连通性,降低自己的孤块率。

每部分投资,都需要考虑如何获得更大的综合收益。因此,矿工并不能仅仅投入在某一个方面,而是通过同时在算力和连通性上投资,获得更高的收益。

通过观察其他矿工拒绝 / 接受的情况,矿工应当可以知道当前的最佳策略是怎么样的。当矿工打了一个巨大的区块,并被网络所接受,你也没有观察到有人拒绝,那么可以认为这个区块代表了网络平均水平以上的处理能力。如果自己在这个更大区块上,孤块率显著提升,那么代表自己需要更多的投入在连通性上,而不是继续增加算力。

如果发现一个巨大的区块,被网络拒绝(发现了另外的分叉),那么就应该知道此时这个更大的区块,是超过了某些矿工的接受能力。这个时候需要考虑并猜测其他人的处理水平,去考虑自己的策略,选择在巨大区块上继续投票,还是选择分叉而拒绝这个区块。

往往,这个博弈需要进行多轮,直到我们可以很确信的知道某个巨大的区块已经远远落后了,才会选择放弃。

这是矿工在区块大小上的博弈,选择更大的区块,打包更多交易收取更多交易手续费,但是会提升自己的孤块率,孤块率升高又会降低自己的收益率。

接下来我们说矿工在零确认交易上的博弈逻辑。

我们都说,矿工用自己的算力在保护比特币账本。但是,如果矿工受到外来的可能的攻击(都说有 30% 算力,都有可能攻击生效),也许运气好的时候,就会被小算力攻击生效。(举例,我们的小矿池,今天上午连续打出了三个块,如果按照累积工作量来看,发起攻击可能因为运气好就可以成功)。

在做空比特币的人眼里,只要能够成功发起攻击一次,可能就有丰富的回报。

那么,矿工应该如何应对这种行为呢?对矿工来说,面对的选择变成了:

选择一条工作量目前更高,但是存在明显双花的链; 选择一条工作量暂时更低,但是诚实的链。 矿工并不能百分百确定某条链是否算力可以保持最高,并且获得了其他矿工的支持。但是矿工肯定不愿意接受一条存在明显双花,破坏了比特币安全体系的链。

所以,矿工一旦检测出双花的区块,应该要能选择是接受,还是拒绝。诚实的矿工,会通过拒绝在双花的区块上工作,来保护比特币的账本安全。

我们都知道,比特币零确认,在我们假设矿工都使用先到先得的策略,且收款方对所有矿工都进行了双花查询得到矿工接受交易的反馈之后,是安全的。但我们无法排除 “矿工作恶” 的情况发生。

这个时候,我们怎么知道,矿工的交易,是被人愚弄了(故意给了一个双花交易给某个矿工),还是有矿工在作恶呢?

激励措施在这里发挥了作用。

矿工为了避免自己在遇到双花攻击的时候,会因为打包错误的交易而被孤立,需要主动的检测自己收到的交易是否和其他矿工一致。这里插播一个广告,我们的 bitsonar 项目(bitsonar.mempool.com)的初衷,就是帮助矿工去找到所有的 “其他矿工”。

矿工会在收到每一笔交易之后,都主动的和其他矿工进行查询确认,标记处可能可疑的双花交易。

如果矿工从每个其他矿工都得到了交易没问题的反馈,而在出块的时候却出现了一个双花的块,那么,这个区块是否更有可能是对诚实账本的攻击?那么,所有的诚实矿工的理性决策,就是主动孤立这个账本,用自己的算力投票来保障比特币账本的安全。

如果矿工从其他矿工中收到了交易有问题的反馈,那么这个反馈也会传递到收款方那里,收款方就可以检测到双花交易从而要求付款方等待。

在这个博弈下,最终产生了这样的结果:交易在矿工中传递,是矿工为了安全选择的主动行为,这又提升了交易的传播速度。同时矿工又会主动拒绝掉和自己通过其他矿工确认的交易有冲突的区块,来实现账本的安全。

那么,这个时候是否是一个 “预共识” 呢?并不是。矿工的拒绝 / 孤立行为,是每个矿工独立作出的,并不是在代码里面写死的。有的矿工可能会坚持 6 个区块,有的矿工可能会坚持 100 个区块。他们根据自己的钱包(笑)多少,来选择和其他的矿工保持一致。

矿工的博弈,还体现在对费率的竞争上。

我们的 1sat/byte 的限制,以后是完全可以拿掉的。只要矿工愿意,他可以打包任何合法的交易。但这个交易的费率可能对打包的矿工来说有利可图,对其他矿工来说无利可图。

这样的竞争博弈,就会促使矿工不断降低自己的费率,来争取在合理的成本范围打包尽可能多的交易,收取尽可能多的手续费。

矿工费,是一个完全竞争的 Fee Market,注意这并不是设定了区块上限后的竞价排名,而是为了争取更多交易,更高手续费而降低费率门槛的矿工之间的竞争。

这个手续费并不是无限低的,因为更大的区块,带来了更高的孤块率,又会降低矿工的收益。

但是随着网络的不断发展,传输速度不断提升,这部分带来的成本优势,也会让每个用户从更低的手续费上获益。

我们并不能将策略的决定权,死板的交给开发者去决定。而应该引入竞争,用博弈的方式,让矿工在收益和成本之间权衡。通过竞争,来达到整个系统的效率的最优。而正是这种自由竞争的机制,更加保护了比特币网络和账本的安全。

我们并不需要协商一致的社会共识,通过竞争和竞争所发出的惨烈的信号(孤块损失),来进行优胜劣汰,奖励在这个系统里面贡献更多的参与者,进而激励所有参与者加大投入和贡献。

我们要看,白皮书中很重要的内容,是第十二章的最后一句话:They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism.

任何规则和激励,都可以通过这种基于最长链 CPU 竞争的共识机制来引入。矿工在自由竞争环境下,是根据自身的策略选择,找到最适合的发展路径,对长远最有利的,有更高收益的路径。这并不代表矿工可以肆意修改竞争协议,或者通过联盟的方式来共同实现任何破坏这种竞争激励的规则。

矿工的为所欲为,是可以在尊重目前所有点对点交易的情况下,使用拒绝和接受任意块的方式,使用自己的算力来进行投票。

好了我的分享就到这里,全都是手打(除了复制的白皮书部分),大家来猛烈的提问吧。

问答环节:

XIAOTU: 大哥的矿工是指矿池吧?

哲亮:有算力可以打包出块的任何,目前主要是矿池节点。

邱少:在这样的机制下 51 攻击出现的可能性及影响如何?

哲亮:我认为,不会有 51 攻击。因为 51% 的算力应该持续诚实挖矿才有更高的收益。如果是短时间的 51 攻击,因为我刚才说的矿工自己设置的拒绝 / 接受的策略,并不能很有效的借助 “诚实” 的矿工的力量来反对 “死硬” 的矿工,攻击的难度高了很多。所以,如 Wright 博士所说,其实是 51% 防御,而不是 51% 攻击。是所有诚实的矿工团结在一起,持续的反对大算力的短时间的攻击。所有交易所和账本使用者,会发现诚实的链会一直存在,不会有任何攻击,那么他们会跟随诚实的链,而不是段时间双花攻击的链。

刘晔律师:一聪一字节是硬编码入底层协议的么?

哲亮:不是,参数设置。我们目前只是没有动力去改,因为改动这个需要配套很多其他的内容。第二内存池、交易优先级等策略,会在矿工中首先实施。并且很重要的可能会没有默认值,完全让矿工自主控制费率和优先级策略。比如,我说的多次的,给免费交易开空间。我们可能可以允许几兆的空间来放免费交易,高币天的交易,是大部分用户转账需要的,他们可以近乎零成本的使用。但是开多少,这个完全矿工自己决定。

满船:请问大哥:在用户,矿工,开发者之间,bitcoin 系统里占强势地位的是矿工?或者简单粗暴理解,矿工决定一切?

哲亮 : 我认为矿工应该决定一切。并且,其实矿工本身也是用户,也是开发者。我不相信在这个体系里面没有沉没成本的开发者做的贡献。

D5:我可否简单的理解为,在正常运行过程中,主角是矿工,几乎没有开发者什么事。那么请问,锁死底层协议之后,假如今后运行过程中大家发现,确实有需要修改底层协议某个地方的时候,如何提请操作,由谁来界定、怎么界定哪些属于可优化的,哪些属于不能动的?

哲亮:我觉得除非出现巨大的安全漏洞 协议不应该改了。

文帅:对于未来手续费作为主要收入时,是否可能有矿工为了积攒手续费,而不乐意传播自己收到的交易?

哲亮:不太可能。我刚才说了,收款方和矿工都有动力去传播交易。好处大于坏处。

文帅: 跟矿工单独签订交易,应该属于矿工倾向独占交易的一种。

哲亮:但是依然需要广播确认,以及,这个排除在双花之外的。

吉泽:我认为市场会改变一切,当 BSV 大范围使用,确实发现协议无法满足市场需求时,市场的力量或许会促成协议改变。 你怎么看?

工会评估,成本和收益。协议的实现存在成本。

一切都是竞争。

在极限情况下,时间是终极货币。

去中心化并不是目标。它是一个用于实现特定目标的工具。没有理由,我真的认为没有理由为了去中心化而去中心化。实现一个去中心化的系统是需要付出代价的。

问自己,你想要达到一个什么目标?

为何你要让这个系统没那么中心化?

是为了更强韧吗?多强韧才算足够呢? 是为了安全性吗?那是需要平衡的——过于去中心化比中心化更不安全。你要在保密性与更强的安全性和强韧性之间找到一个平衡。 每个新增系统都会增加整个系统的成本。如果你的节点数增长了1000倍,那么你花费这些成本的收益是多少? 比特币是在罗马共和国的方式上实现的民主。在区块投票时,有时候100人有1票,但他们有更多的利害关系,他们有更多的投资。而那些投资较少的人可能30,000人才有1票。

并不存在一个简单的能让所有人都平等的体系。投资是一个很好的向导——而股权证明(PoS)不是,股权证明(PoS)是你拥有并想留存的东西,而投资是你愿意拿去承担风险的东西。


results matching ""

    No results matching ""