关键字:区块链入门,区块链开发,区块链商业应用
标题略装逼哈
原文链接:https://blockgeeks.com/guides/what-is-cryptoeconomics/
什么是加密经济学?以太坊的开发者Vlad Zamfir认为:
一门研究如何生产、分发、消费商品和服务的去中心化数字经济学科,加密经济学是一门主要关注原则设计、原则特性的实践性学科。

区块链就是在加密经济学基础上运行的。
加密经济学分为两块:加密和经济学。人们往往会忽略”经济“这个使得区块链变得如此特殊的一个属性,区块链并不是第一个点对点的分布式系统,torrent(迅雷为代表)人们已经使用了很多年,但是从某种意义上来说,它是失败的。
为什么说p2p文件系统是失败的?
在torrent系统中,任何人都可以在分散的网络中分享文件,同样别人也可以通过网络来下载这些文件,问题的关键就是这种模式在有荣誉或者利益奖励机制的情况下可能会运作的很良好,你下载了一个文件,同样你应该作为seed来为别的人提供下载服务,但不是每个人都有分享的天性,假如没有一些经济上的激励的话,几乎很少有人会消耗他们的磁盘,网络开销等来持续做种分享,这样下去往往很多资源慢慢就无法下载了。(试问广大狼友,哦不对,广大网友,有谁下载小电影之后还持续做种的?有的话联系方式留下我给你打几个q币,你是一个好人)
中本聪和区块链技术
2008年十月,一个自称中本聪,不辨雌雄的人发布了比特币的paper,在社区引起了极大轰动,从某种意义上来说,这是第一个加密经济学模型,跟早期的p2p系统不同,在这个系统中有一个奖励机制来促使人们真的愿意来遵守规则,并且比特币中还有很多天才级的设计:比如巧妙的避免了拜占庭将军问题,使得完全分散的分布式系统变成一个可信系统。(简单的解释:分布式系统由于没有中心化主控节点,一些节点为了自身的利益可能会做出背叛的,与大众不一致的行动,如何在这种情况下保证分布式系统保持一致的状态,就是拜占庭将军问题)
比特币的加密经济
像比特币这种的加密货币有什么特性呢?下面我们一个个的列举:
- 每一个区块都包含上一个区块的hash,并且组织成链
- 交易事务分散的存储在区块中
- 事务的执行在区块中都有相对应的状态。比如:A有50个BTC(好有钱)并且想要发送给B,那么新的状态需要表明A剩余30个BTC,B拥有20个BTC。
- 可以新增区块,但是老的区块数据不能修改
- 只有合法认证过的交易才能存入区块
- 每个人都可以下载区块并且检查里面的交易事务
- 如果手续费给的足够高,本次事务应该优先被处理
加密经济学两个关键点:
- 加密
- 经济学
加密
区块链中广泛使用了加密技术,下面我们看一下一些主要的加密方法:
- Hashing 哈希
- Signatures 签名
- proof of work 工作量证明
- zero knowledge proofs 零知识证明
Hashing 哈希
哈希的意思是给定一个字符串作为输入,然后hash算法给出一个固定长度的结果,比特币采用SHA-256算法来加密,输出的结果是256位二进制。在加密货币中hash算法有哪些应用呢?
- Cryptographic hash functions 加密哈希算法
- Data structures 数据结构
- Mining 挖矿
Cryptographic hash functions 加密哈希算法
加密哈希算法有以下几点特性:
- Deterministic 确定性:给定一个输入A,不管重复执行几次,结果永远相同
- Quick Computation 快速计算:计算过程应该尽可能的快
- Collision resistance 冲突避免:给定两个输入A和B,哈希的结果h(A)不能等于h(B)
- Puzzle Friendly(不会翻译):对于一个哈希输入x和它的输出Y,不能存在一个K使得h(K)等于Y
加密哈希算法在区块链的安全和挖矿中起到了重要的作用。
Data structures 数据结构
有两个数据结构对理解区块链非常重要:Linked Lists 和 Hash Pointers
- Linked Lists:一个区块接着一个区块我们称之为Linked Lists。(突然想到一个段子:一群光子身子的汉子要过一条河,但是河里面有专门吃小JJ的吃J鱼,而且悲催的是他们只有一个碗能护住JJ,请问他们如何才能安全过河?聪明的小伙伴想必已经有了答案^ ^)

每一个区块通过指针来指向后面的区块
- Pointer:Pointer(指针)是指向变量地址的变量,它自身存放的是一个地址数据,该地址存放了真正需要访问的数据。(可以理解为point是一个坐标,比如坐标(1,1),而坐标为(1,1)的数据块中存放真正的数据)
- Hash Pointers:hash pointer(哈希指针)多了一个功能,它不止表示一个坐标,同时将指向的数据内容也进行了哈希,区块链中指针同时将数据也进行哈希有什么好处呢?
区块链指针实际是这样子的:

每一个区块都含有一个指针,这个指针不仅包含上一个区块的地址,同时也将上一个区块的数据的hash也进行了存储,这样好处就是:区块是不可变的。
区块链是如何保证不可篡改的?
试想一下,假如有人想非法修改之前的区块数据,根据hash算法的原则可知,一旦数据稍微进行变动,对应的hash值将发生巨大改变,假如有人修改了block1的数据,同时也会影响block2中的hash header,以此类推,block2的改变也会影响block3,这样将会改变后面所有的区块,所以任何试图修改一小块数据而不被发现的情况是不可能发生的。
另外从图中可以看出,每个区块都含有大量的交易数据,假如需要定位到某一条交易记录,直观上从头遍历该区块然后找到该交易记录,但是这种方式效率太低了,区块链针对这个问题做了优化:Merkle tree。
为什么要使用Merkle tree

Merkle tree中,每条记录都对应一个hash值,然后按图中的树形结构再组织在一起,方便能用快速的定位到指定的数据。(这里就不详细翻译了,Merkle tree的主要目的之一就是为了加快检索速度,交易如何认证、每笔交易都需要查找哪些记录等等,具体的细节笔者也没有想明白,有兴趣的同学可以自行查阅资料。)
挖矿
挖矿的时候矿工需要进行hash运算,并且系统也会设置根据出块的快慢来对hash运算的难度进行调整,保证出块的速率尽量保持恒定(比特币默认应该是10分钟左右出一个区块,随着越来越多的矿工不断涌入,算力也越来越大,所以需要不断的调整hash算法,也可以说是增加hash算的难度来来保证出块间隔。保证出块速度恒定的目的主要是为了保证系统的稳定性,具体可查阅资料)。由此可见,hash在区块链中的重要性。
数字签名
在数据货币中最重要的加密工具之一就是数字签名,比如现实生活中你写了一篇文章,并且加上了自己的签名,那一个设计良好的签名一般会有哪些特点呢?
- 首先它得有认证机制,能够确认你就是这篇文章的作者
- 其次是它不能被伪造,别人不能伪造或者使用你的签名
- 最后它应该是不可否认的,也就是说假如你在一件物品署上了你的签名,那你就不能够再撤回,也不能谎称是别人替你代签的
但是在现实生活中,不管签名设计的多么复杂,总是有办法来伪造,很难找到一个可靠可信的签名方案。
现在加密学给我们提供了一个解决方案:公钥和私钥。下面我们看一下它们是如何运作的,假设有两个人:Alan和Tyrone,Alan想要把一些重要的信息发送给Tyrone,而且Tyrone也需要确认这些信息真的就是Alan发送过来的,而不是别人冒充的,这里他们采用Alan的公钥和私钥来保证加密和认证。
首先有一点要注意:我们不能从对方的私钥来推出对方公钥(这句话有点多余),顾名思义,公钥的意思就是公开的钥匙,每个人都可以将自己的公钥公布与众,而私钥只能是自己保存,不能透漏给任何其他人。
假设Alan拥有私钥Ka-和公钥Ka+,假如他想要发送一个字母‘M’,首先他用私钥Ka-将‘M’加密成Ka-(M),然后发送给Tyrone,Tyrone收到Alan发送过来的数据后,使用Alan的公钥Ka+进行解密,得到字母‘M’,这个就是整个通讯的过程。(这里是利用了非对称加密,非对称加密的原理可自行查阅资料)

回想一下上面我们讲到好的签名需要具备的三个特点:
- 认证:假如Tyrone能够通过Alan的公钥成功解密信息的话,说明这个就是Alan发送过来的数据。
- 不可伪造:假如有另外一个人Bob,他使用自己的私钥加密了一串文字并发送给了Tyrone,但是Alan的公钥并不能够解密出Bob的加密的信息,因为公钥和私钥是1对1的,所以保证了不可伪造性。
- 不可否认的:同样的,假如Alan声称这个信息是Bob发送的,但是Tyrone确确实实是用了Alan的公钥解开了信息,那Alan此时是不能抵赖的。
加密货币中的应用:现在假设Alan准备给Tyrone发送一个交易事务M,首先他会将事务M做一次hash运算,然后将hash运算的结果用私钥加密发送给Tyrone,Tyrone此时也保留有交易事务M的信息,同时他也知道Alan正准备给他发送事务M的信息来验证交易的有效性,首先他接收Alan发送过来的信息,用Alan的公钥进行解密,然后用自己已经保存的交易事务M的hash值和从Alan处解密出来的hash值进行对比,如果一致的话,说明他们在处理的是同一个事务,并没有发生什么意外,交易确认成功。
简化一下流程:
- Alan有一个事务M,并且Tyrone知道他自己即将接受一个事务M
- Alan将事务M进行hash
- Alan将hash结果用自己的私钥进行加密
- Alan将加密结果发送给Tyrone
- Tyrone使用Alan的公钥进行解密,拿到Alan发送事务M的hash值
- Tyrone将自己保存的事务M进行hash
- 如果两个hash值相等,说明本次事务是正确的,并有经过篡改或者别的意外
工作量证明
当矿工创建一个区块并且将它放到链上时,共识系统认可并添加这个区块,这个过程也称作为矿工的:工作量证明。矿工花费了巨大的计算资源来计算加密hash值,这个是区块链中最具有开创性创新的机制之一,早期的点对点数字货币系统往往都已失败告终,因为它们当时无法解决一个难题:拜占庭将军问题(Byzantine General’s Problem)。工作量证明机制为解决这个问题提供了可能。
首先我们来看一下什么是拜占庭将军问题:

ok,想象一下有一个叫做拜占庭的地方,这个地方有很多将军和他们的军队,现在他们想进攻中心的那个城市,但是他们有两个特别棘手的问题需要解决:
- 因为每个将军离的都特别远,没有一个中心节点来保持他们的通信并让他们达到共识,这样很难保证他们能有效的合作进攻。
- 城市有很坚固的堡垒和守卫军,唯一能攻占的办法就是所有将军同时进攻。
为了成功达成一致的进攻共识,左边的将军派出了一个信使,信使携带信件交给右边的将军,信件里约定攻击的时间点,比如:周三进攻。但是有可能右边的将军还没有准备好周三进攻,并且通过信使回复了:不,改成周五进攻。这时候问题来了,可能会发生很多一系列不确定的问题使得信使无法将信息传达回去,比如中途被城市的守军捕获了,或者被收买了,又或者被杀了(可怜的小喽啰,吃着地沟油的命,操着中南海的心)。这样将军之间就无法达成进攻共识,进攻就会失败。
同样的问题在区块链中同样也存在,区块链本身就是一个巨大的分布式网络,你如何确保自己能够信任网络中的每一个节点?如果你给你的朋友发送了4个ETH,你如何确保网络中不会存在某些恶意节点将4改成40?
中本聪提出了采用工作量证明的方式来解决这个问题,下面我们详细解释一下他是如何解决的。假设左边的军队发送了“周一进攻”的信息,流程如下:
- 首先左边的将军会在原始的信息上加上一个“随机值”,可以是任意的一个16进制数值
- 然后左边的将军会计算原始信息+“随机值”的hash值,并且给结果限定一个条件:hash结果必须以5个0开头。
- 只有当上述结果满足的情况下,左边的将军才会将信息发送给右边的将军,为了满足上述条件,左边的将军就必须不停的变换“随机值”来进行尝试,直到找到满足条件的“随机值”为止,这个过程是特别耗时耗资源的,需要消耗巨大的算力。
- 如果信使被捕获,并且信息被篡改了,根据hash算法的原则,信息改动一点点,hash结果就会发生巨大的改变,如果右边的将军看到hash结果并不是以5个0开头的,那么他们可以拒绝信息上的攻击约定。
但是,这种方式还是有漏洞的。
没有一种hash算法是能够完全避免冲突的,也就是说很有可能存在两个不同的数据,hash的部分结果是一样的,假如城市的守军截获了信息,并且尝试变换“随机值”,最终计算出一个新的“随机值”+篡改后的信息满足hash结果开头有5个0,这样的话还是能成功篡改信息。为了避免这种情况,将军们只好在计算量上增加难度,比如这次不再是1个将军发送信息了,而是3个将军发送信息,首先他们将各自的信息合并到一块,并选取一个“随机值”进行hash,然后在这个hash的基础上再选取一个“随机值”进行hash,并要求这次的hash结果前缀必须要有6个0.
显然这次需要消耗更多时间和资源,假如信使被捕获了,这次想要篡改信息的话,解析并计算的时间大大增加,很有可能需要计算好多年。考虑到将军完全可以派出多个信使报信,可能在城市的守卫计算的过程中,左右的将军们已经达成共识并发动进攻了。
对于右边的将军来说,他们要做的就特别简单,他们只需要将接收到的信息和“随机值”做hash,查看hash值的格式是否满足提前定义好的规则。上述的步骤就是所谓的:工作量证明。
注意两点:
- 篡改信息后,找到另外一个能够满足hash格式的“随机值”是非常消耗资源和时间的
- 但是通过接收的信息和“随机值”来验证信息是否被篡改是非常高效和简单的
零知识证明-Zero Knowledge Proofs
零知识证明的意思是:A拥有一个数据,并且可以在不向B展示该数据的情况下,向B证明它拥有该数据(简单的理解就是我告诉你我有一块糖,但是我不能给你看,但是我必须让你确信我确实有一块糖,如何证明呢?采用零知识证明技术)。零知识证明在加密货币中起着至关重要的作用,为数据提供了额外的加密层。
零知识证明需要满足下面3点:
- Completeness:如果信息的提供者没有撒谎,确认者可以确认信息确实为提供者拥有
- Soundness: 如果提供者撒谎了,他们说服不了确认者相信他们
- Zero-Knowledge:如果数据是正确的,确认者也并不能获取数据具体的信息,也就是所谓的零知识
下面我们举一个阿里巴巴洞穴的例子,提供者P在不告诉确认者V密码的前提下,使确认者V相信P拥有密门的密码。

假设P和V约定:P进入洞穴必须随机选取一个条路径(A或者B),如果V能够在B这边看到P的话,那么V就确认P拥有密码。
本图中,P选择了A路径,并且打开了门在B处和V相遇,此时V可以确认P没有撒谎。但是P也有可能是因为运气好,P并不知道密码,但是它正好随机选取了B路径,虽然没有打开门,但是V还是在B处和P相遇。
解决这个问题一个比较好的办法就是:多次测试。选择路径这个必须是随机的,假如每次都能在B处和P会合的话,那么可以确认P是拥有密码的。
零知识证明在区块链中的应用
许多基于区块链的技术都采用了零知识证明,事实上以太坊也采用了(细节不翻译了,技术细节、名词不清楚)。零知识证明保证了不泄漏数据本身的同时,通过快照就可以验证每一笔交易。
它带来了两个好处:
- 保证了交易的完整和隐私
- 只提供抽象,并不需要获取实际的数据极大的简化了系统的维护
上述就是区块链中比较重要的技术,下面我们来看另一个点:经济学
经济学
就像我们之前提到的,区块链和之前的分布式点对点(p2p)系统不同的地方在于:区块链提供了经济上的激励。一个牢固的经济系统必须有对应的奖惩措施,对工作的人进行奖励,对恶意的人进行处罚。下面我们看一下区块链是如何结合这些经济学理论的。
区块链中有两种激励措施:
激励1:
- Token(通证):任何参与并对区块链有贡献的人将会获得加密货币(Token)
- Privileges(权利):参与者有一定的决策权,比如本次区块的矿工有权决定将哪些交易事务放在本次区块中,并且收取手续费。
激励2:
- Rewards(奖励):对优秀的参与者进行加密货币奖赏或者授予他们一定的决策权
- Punishments(惩罚):对恶意的参与者扣除他们的加密货币或者取消他们的决策权
加密货币如何才有价值?
就像法定货币一样,加密货币如果拥有价值的话,那么一定是因为一个原因:信任。当人们相信一个商品的时候就会赋予它价值,此时它可以做为货币,这也是为什么黄金最开始作为法定货币的原因。当商品有价值时,它的价格就会随着供需而波动。
什么是供需?

这是经济学中最常见的供需图,从图中可以看出供给和需求是成反比的,中间交汇的点即为纳什均衡点,下面我们根据这幅图的思想来看下比特币。
比特币的总量固定为2100万,所以需要考虑一个供给的问题,首先要逐渐增加挖矿的难度来防止矿工很快将所有比特币都挖光并且投入市场,降低比特币的价值。
为了确保比特币不被一次性的挖完,比特币设计的时候采用了以下两种限制措施:
- 区块以固定的时间间隔(10分钟)产生一个
- 因为随着矿机的算力增加,为了保证区块产生的时间间隔始终维持在10分钟,比特币会不断的调整挖矿难度,保证区块产生时间固定在10分钟。
通过以上两个限制,挖矿成为一个特定的流程,并且需要大量的投资,挖矿即工作量证明,也为系统提供新的比特币。
一个加密货币的需求(或者热度)取决于以下因素:
- 这个货币的历史情况如何?
- 最近是否被黑客入侵?
- 它如何持续运作?
- 它的团队是否优秀?
- 是否还有上升的潜力?
- 夸大的报导有多少?
以上的属性决定了这个货币有多火,越火需求也就越大,当然价值也随着需求波动(这个评判标准貌似放到哪都比较通用哈)。
区块链中的博弈论
因为矿工拥有很大权利,他们能提交错误的数据并且逃避惩罚,如何保证一个不受管制的,去中心化的点对点系统始终保持正确的状态?这也是之前很多在去中心化上尝试的系统失败的原因,犯罪成本为0时,往往不能指望他们是圣人(人性如此,be bad always easier than be good)。so如何保证去中心化系统的正确性呢(大家都是过4级的人,英文拽起来):博弈论
关于数字经济中运用的博弈论,参考上篇文章:博弈论:数字货币
博弈论是一门研究决策的基础学科,博弈论中最主要的思想是:在你选择你认为的最优解的时候,请考虑对手可能会做的决定。博弈论中一个很重要的概念就是:纳什均衡
什么是纳什均衡?
简单的说纳什均衡是一个状态:一个人在做决策时始终会以别人的决策为参考,然后选择他认为最优的决策。下面我们看一个例子:

上图通常称为收益矩阵,图中的数字代表对应的收益。
假如A Takes Action时:
此时如果B Doesn't Takes Action的话,它的收益为0,如果B Takes Action的话,它的收益为4,所以对B来说,最好的决策就是Takes Action。
假如A Doesn't Takes Action时:
同样的,如果B Doesn't Takes Action的话,它的收益为0,如果B Takes Action的话,它的收益为4。
所以对B来说,无论A做什么决定,B都应该Takes Action。
假如B Takes Action时:
如果A Doesn't Takes Action的话,收益为0,如果Takes Action的话,收益为4,所以A最好选择Takes Action。
假如B Doesn't Takes Action时:
同样的,如果A Doesn't Takes Action的话,收益为0,如果Takes Action的话,收益为4。
所以同样的对A来说,无论B做什么决定,它都应该Takes Action。
(总感觉上面的都是废话。。。)
这里我们总结一下:对A和B来说最好的选择都是Takes Action。
那么纳什均衡在区块链中又起着什么作用呢?

观察上面的区块链,蓝色是主链产生的区块,假设有一个恶毒的矿工企图分叉出来一个2A块,并且尝试给自己分配很多财富,那此时如何阻止别的矿工也跟随他的区块呢?
区块链有一个硬性规则:在一个非法块后面挖出来的任何区块都是非法的,所以别的矿工就会忽略这个非法的区块而紧跟着主链进行挖矿。永远要记住:所有货币的价值都是依托在信任和认可的基础上的(比如美元),所以非法创建的区块在别的矿工看来并不是有价值的。同样要记住:挖矿是一个非常消耗资源的行为,没有理由为了一个很有可能毫无价值的区块而浪费自己的算力。
当然了,可能你也会有疑问:假如很多矿工同时作弊呢(比如51%攻击,也就是超过一半的矿工被攻击,并且同时篡改了数据)?
区块链本身是一个巨大的分布式网络,假如节点够多,够分散,几乎没有可能有人能够同时控制超过半数的矿工,而一小撮矿工产生的非法区块又不会被大众认可,所以从纳什均衡的理论来看,区块链还是很安全的。
区块链中的惩罚措施
和别的经济系统类似,好的行为应该被奖赏,坏的行为应该被惩罚。奖惩措施如何运用在博弈论模型中呢?假想存在这样一个收益矩阵,参与的人会获得很高的收益,但是会对社会造成不好的影响。比如下图(crime翻译为“犯罪”):

假设有A、B两个人都准备谋划犯罪,根据这个矩阵来看,他们两个都犯罪的收益是最高的。但是从社会的角度来看,这肯定是很糟糕的现象。考虑到人都有贪婪和惰性,不是每个人都是圣人,怀着兼济天下的胸怀,如果上述矩阵的假设成立,那么社会上将充斥着犯罪,如何解决这个问题呢?这时候就引入了惩罚机制。
假如我们添加一个规则,任何犯罪的人都会受到-5的惩罚,下面我们看一下矩阵现在变成什么样子了:

明显的可以看到,最优解从右下角转移到了左上角。所以引入惩罚措施能够有效的对公众做正确的引导。区块链中就强制加入了惩罚措施来保证矿工的诚信。
更多的激励
当一个矿工成功挖出来一个区块后,他们就对这个区块有一个临时的决定权,具体要将哪些交易事务放进这个区块完全由他们决定,对于放进区块的交易事务,他们可以收取一定的手续费作为奖励,这是除了挖出来一个区块获得的奖励之外的额外的奖励。(比特币中挖出来一个区块奖励25个BTC,以太坊中则是奖励5个ETH,数据不准确,比特币的奖励应该是递减的)
同时为了保证挖矿的公平性,防止区块都由某一个或少部分矿工挖走,比特币会阶段性的调整挖矿难度,保证区块产生的速度固定为一个稳定的时间间隔,并且保证出块随机性。从长远的角度来看,挖矿是一个零和收益,挖出新区快的收益可能会被挖矿的成本消耗掉。
P+Epsilon Attack
工作量证明系统(比特币既是)会被一种叫做 “P+ epsilon attack”的手段攻击。为了解释什么是 “P+ epsilon attack”,我们需要先引入一些概念。
Un-Coordinated choice model(不合作模型): 这个模型意思是所有参与者都不愿意和别人达成共识,几乎没有可能形成一个超过半数的拥有统一决策的群体。
Coordinated choice model(合作模型):这个模型表示所有的参与者为了共同的利益,而倾向于达成共识。
假设区块链是一个不合作模型,可能会有利益引诱矿工破坏区块链数据的一致性,下面介绍bribing attacker model (贿赂攻击者模型,原谅我的poor English吧^ ^........)
什么是贿赂攻击者模型?
假设现在有一个不合作系统,一个攻击者入侵系统,并且通过贿赂矿工,促使他们达成入侵者想要的结果。这就是所谓的贿赂攻击者模型,下面我们再深入了解一下,首先引入两个条件:
预算:攻击者声明将要付给矿工的贿赂。
花销:攻击者最终支持给矿工的贿赂。
首先参看下图:

(图片来源 Vitalik Buterin的演讲)
假设现在的是一个选举的场景,假如投票者投了other投票者都投的候选人的话,投票者将会获得P收益,反之他们收益为0。此时攻击者入侵系统,并且告诉某个矿工假如他投了1,别人都投0的话,他不仅会获得P收益,而且还会获得多余的E收益。

对于该矿工来说现在收益矩阵就变成上图的样子,假想一下:矿工认为他投1的话会获得一定的收益,投0的话,他们只有50%的可能会获得收益。这时候你认为他会怎么做?当然是投1了,有趣的事情开始了,首先收到贿赂的矿工倾向于投1,而只有在别人都投0,该矿工投的1时候攻击者才必须给该矿工额外的奖励,而根据纳什均衡的原理,一部分人投1时系统整体会偏向于1,造成的结果就是:整体的决策变成了攻击者想要的结果,并且攻击者甚至不用给那些被贿赂的矿工任何收益了,因为大家投的都是1。(这里理解的不是很透彻,有兴趣的自行查资料吧)
简化一下流程:
- 首先说服一小部分矿工投1
- 然后就能达到攻击者预期的结果,而且不用花费任何代价
这种攻击会对proof-of-work 系统造成巨大破坏:

如果攻击者想要制造一个硬分叉,并且声称任何追随这个新分叉的矿工都会获取E收益,这就会激励所有的矿工跟随,但是根据上面的模型可以得出,最终攻击者其实并不需要向矿工支付任何的费用。根据Vitalik Buterin所描述的,这是proof-of-work系统所面临的最大的问题。
解决方案:proof of stake
可以采用proof of stake来解决这个问题,在proof of stake系统中,矿工首先必须抵押他们的一部分资产或财富,用来投资到未来的区块上,从金融系统的角度来看这无疑是更好的,因为这增加了惩罚的力度,比起只是剥夺矿工的某些权力,剥夺他们抵押的财富来的更严重些。
详细的说就是假设你是一个矿工,你的一部分财产已经被抵押用来投资主链未来产生的区块上,即使现在有攻击者告诉你跟随一个非法的硬分叉会得到一定的收益,那你也不一定会跟随,因为需要冒着可能会丢失所有抵押的财产的风险。
总结
如你所见,加密学和经济学优雅的组合形成了区块链技术,近些年区块链已经经历了巨大的发展,并且会越来越好,应用也会越来越广泛。
网友评论