区块链重要基础知识6——匿名性以及如何去中心化

1. 匿名性

1.1 化名与匿名之间的区别

化名:在交易的时候不使用真实的姓名

匿名:或者在交易的时候完全不使用任何名字。

在计算机中的定义,匿名指的是具有无关联性(unlinkability)的化名。

1.2 更强的匿名性以及更有限度的匿名性

1.2.1 更强的匿名性

做到更强的匿名性,应该做到以下几点:

  1. 同一个用户的不同地址应该不易关联。
  2. 同一个用户的不同交易应该不易关联。
  3. 一个交易的交易双方应该不易关联。

时间以及实际的增加或者减少币的量所带来的的统计分析都可能暴露身份

1.2.2 更有限度的匿名性

努力地做到更有限度的匿名性:

  • 想象一个特定的攻击者的情况,你的交易匿名集(anonymity set)是指该攻击者无法把你的交易从其中分辨出来的交易集合。即使该攻击者知道你完成了一个交易,但是他也仅仅知道这个交易是某一个合集中的一个,但并不能确定是哪一个。

  • 努力去最大化这个匿名合集

1.3 区块链中的匿名性

交易记录被公开在区块链中,而身份信息是匿名的

2. 如何做到去中心化:

  • 电子邮件是一种去中心化的实现——主要就是用来实现人与人之间的邮件通信,但是有时候供应商却仅仅只有那么几个,这样就形成了垄断。所以有时候往往是交易所或者类似管理的软件形成了中心化。

将技术手段与一种明智的激励机制相结合,做到了去中心化

技术手段
明智的激励机制
结合
去中心化

2.1 技术手段

2.1.1 对中心化的问题进行拆解

比特币如何做到去中心化这个问题拆解如下:

完成了
谁在维护交易账本?
谁有权利批准哪个交易是正当有效的?
谁在制造新的比特币?
谁在制定系统变化规则?
比特币是如何取得交易价值的?
中心化的拆解
技术细节
共识

点对点是极好的去中心化的实现,任何一个人都可以运行一个比特币节点,不需要与一个核心机构进行认证,而且基本没有什么入门门槛,下载客户端→运行相关软件,但是存在的问题就是:挖矿需要极大的算力,并不是每一个人每一个机器都有很好的算法,所以算力依旧集中在每一个算力强大的中心里——这样就又有中心化倾向了,所以如何解决这样一个中心倾向就是很关键的问题了;

2.1.2分布式共识

直观的感觉
目的
意义
应具有的属性
理解比特币交易在分布式系统中的表示意义
与常识相悖的地方
不足
障碍

直观的感觉:将财奴币进行去中心化

目的:建立一个分布式的电子现金系统主要就是建立分布式共识

但是比特币发展到现在建立一个分布式的电子现金系统的关键技术问题,就在于要达成分布式共识

**意义:**建立了分布式共识的系统之后,我们可以使用key-value键值对的方式将一些重要的信息存储起来,

key value
开启键 身高
开启键 名字
开启键
IP 域名
公钥(当做用户的身份) 电子邮件

分布式协议具有的属性

  1. 输入值的中止须经所有诚实节点来确定。
  2. 这个输入值必须由诚实节点来生成。

理解比特币交易在分布式系统中的表示意义:

  1. 比特币是个点对点的系统;

  2. 当爱丽丝向鲍勃付款的时候,她其实是在向构成比特币网络上的所有节点广播其交易行为。

    点对点系统对分布式的意义

与常识相悖的地方:

  • 分布式共识系统与传统中心系统的区别导致了你向一个节点交易比特币,这个节点可以不在这个网络,这并不影响他收到这个比特币,主要只要大部分节点承认这个交易那这笔交易就是成功的。

对区块共识做出的设计以及不足的地方

针对于每一个节点而言
输入自己提议的区块
存在的内容
包含一系列区块
包含其总账本
所有节点达成共识的清单
未达成共识的交易
每个节点存在差异或者尚待确认的交易池
方案1
每隔十分钟将未被共识的交易形成区块
执行共识协议
未被共识的交易留到之后阶段进行共识
不足的地方,区块链中需要改进
1.存在死机与恶意节点的情况,造成达成共识难度增加
2.点对点网络并不完美,存在网络问题,要所有节点参加不现实
3.互联网信息存在严重的延迟
方案2

从上图可以直达,比特币协议达成共识时必须直面两大障碍:

  1. 是不完美网络,例如
    1. 信息延迟;
    2. 节点死机;
  2. 是某些故意搞破坏的节点。

不好的网络导致最明显的结果就是在各个节点的时间不同步,就像各个联网手表之间会有时间的差异,因为联网的时间有延时的原因,而随着科技的发达也使得差异越来越小,这也侧面验证了这个结论。

从时间不同步的角度就产生了不可能系统的结论,但是这种不可能共识是建立在一个通用的系统情况下。所以有人做出了在特定货币下使得共识机制做到可能。那么他引入了那些不一样的概念呢?

  • 答:有两个概念:
    1. 奖励
      1. 引进奖励的概念,这得益于比特币本身是一种货币,本身对于现实世界是能够等价交换的;
      2. 有了奖励人们自然而然地会为了金钱奖励而变得诚实起来;
    2. 随机性
      1. 不再纠结于规定共识的起点与终点,随着不断进行共识协议,使得共识程度不断增加,最后达成共识——这就是得益于随机性才能使得不断接近。

2.1.2 使用区块链实现没有身份的共识——也就是分布式共识的真正的实现

1. 问题的由来:非中心结构带来的难度

  1. 没有中心机构对身份的认证与发送,导致的后果就是身份可能会更加容易地被创造,容易产生女巫节点的现象。
  2. 并且区块链还不能做到真正的匿名,不同的身份去做不同的交易还是可能会被追踪到的。
  3. 没有真正身份的前提下,你去指定一个指令去做什么就相对麻烦很多,首先要考虑的问题就是别人应不应该信任你呢。

2. 从彩票那里受启发

如何相对解决这一问题呢?我们从生活中得出一点启发,就是比如你去买一个体育彩票,你会发现你需要身份证就可以买中奖了还能够去兑,那为什么能够这么做呢,可以试着回想一下买完体育彩票之后老板给了你什么,没错他给了你一个纸条上面就有一长串的特征码。

1发送彩票或者识别牌
彩票的印制过程与发放办法是足够聪明的
使得使得黑客造出很多女巫也只能拿到一个彩票
2抽奖
对应奖号
彩票站
每一个顾客
假设原理
假设内容
中奖

放到区块链中,我们为了防止女巫攻击的话,就需要采取一定的措施,在彩票或者区块确认发放的时候,固然黑客产生了很多女巫,但是这些女巫最终只能得到一个彩票或者区块。——关键看这个假设如何成立,如何聪明的设置交易确认发放过程

3. 具体方案的实现

对付恶意节点的隐形共识实现:

  1. 新的交易被广播到所有节点上。

  2. 每个节点都将新的交易放进一个区块。

  3. 在每个回合,一个随机的节点可以广播它的区块。

  4. 其他节点可以选择接受这个区块,前提是如果区块里的交易都是正当的(有真的签名)。

  5. 节点们可以把以上区块的哈希值放进自己的区块里,以此来表示它们对那个新区块的认可。

    实行隐性共识
    隐形共识实现
    回合开始:提议区块链下一区块
    恶意节点
    正常节点
    正常接收提议区块
    判别
    隐性地接受
    拒绝
    接受上一个签名选择的区块
    在这个区块接龙下去,然后进行一个统计
    统计已经确认的区块下一区块的接收度
    多个回合确认共识?

4. 验证有效性

为何这样的共识算法是有效的?——通过模仿攻击去验证是否有效

  1. 窃取比特币

    1. 由于区块链实际保存的交易的数据,那么你现在是处在这一链条中,如果你想窃取比特币的话就需要拿到另外链条的签名或者去伪造他的签名,但是这样的情况在数字签名进制是安全的情况下是不可行的;
  2. 拒绝服务攻击

    1. 如果A想要一直拒绝对B服务,这是没有关系的,因为B可以寻求A的下一个诚实区块给他服务,主要由于这是分布式的而不是以某一个为中心;
  3. 双重支付攻击

    1. 产生的原因是:

      1. 对于爱丽丝来说上一次与本次发布权只相差两个A,并且爱丽丝肯定对自己的签名信息是已知的,所以他是可以对第一次做一个手脚的可以向其他地址发出区块,可以看出他们之间的长度是一样,正因为一样的长度才使得这一操作成功的。
      爱丽丝第一次
      爱丽丝地儿次
      第一次的区块
      第二次的区块
    2. 过程:

      1. 最新的一个区块由一个诚实节点产生,其中包含爱丽丝下载软件向鲍勃付费的交易记录。当看到这笔交易被放入区块链后,鲍勃认为爱丽丝已经向他付款,便允许爱丽丝下载软件。假设在下一个回合被随机选中的节点恰巧被爱丽丝所控制。现在因为爱丽丝可以提议下一个区块,她可以选择忽略掉前面那个包含她支付给鲍勃的那笔交易的区块,而产生一个包含指向之前区块指针的区块。不仅这样,在这个区块里,爱丽丝可以放进一笔交易,把她付给鲍勃的币转到一个被她所控制地址里去。
    3. 图示如下:

      双重支付攻击
    4. 增强双重支付攻击成功的概率的方式:

      1. 假设一个恶意黑客控制了发起下一个区块的节点。但如果鲍勃允许爱丽丝在没有收到区块链一条确认信息的情况下就下载软件,那么爱丽丝可以立刻广播一条双重支付交易,一个诚实节点就有可能把这个交易放进下一区块,而不是支付给鲍勃的那笔交易。

        从鲍勃立场来看双重支付

    5. 防止双重支付的一种方式:

      1. 一个谨慎的商家甚至在看到交易被爱丽丝被包含在一个区块后就不会允许爱丽丝下载软件,而是让其继续等待;恰巧下几个节点还是建立在爱丽丝向鲍勃支付交易的区块上,那鲍勃就相信这笔交易会被纳入长期共识链。
    6. 事实证明双重支付攻击成功的概率将随着确认的数目的增加而指数级降低

    7. 总结:

      1. 如果想放进一个密码学上不正当的交易,这个交易不会被纳入长期共识链的唯一原因是绝大多数的节点是诚实的,不会把一个不正当交易放进区块链。——依赖大多数诚实节点
      2. 防止双重支付攻击完全依赖于共识,密码学不起任何作用。从密码角度来看,这两个交易都是正当有效的。但共识可以能决定哪个被放进长期共识链

2.2 奖励机制与工作量证明

2.2.1为何是奖励机制而不是惩罚机制

因为在区块链中本身是没有身份的,当你确认他是恶意节点之后,想要对他做出惩罚,这时候你再想要去惩罚他这是不现实的因为找不到他。

而当他形成区块链时我们是可以将本身交易的比特币奖励一些给他的,所以之所以是奖励机制这是从可行性来看的

2.2.2 奖励机制

以这种货币为单位奖励那些表现诚实的节点。

1. 奖励方式之一——区块奖励

就像之前的双重支付攻击一样,不过那个是爱丽丝自己想偷偷多使用比特币一次,而这里的奖励则是官方拿出一部分额度允许节点去造币,然后指向自己的地址。最终所造的币就是属于自己的了。但是多少以及额度都是有规定的,规定如下:

  • 在写本书时,区块奖励金额定在25个比特币。但每生成210 000个区块,金额就会减半。根据区块生成的速度,我们可以看到,这个金额大概每4年减半一次

最终达到的目的:

  • 由于奖励只有当区块最终被纳入长期共识链才会实现。因为造币交易和其他每一笔交易一样,只有当它最终被纳入共识链,才会被其他节点接受;所以他尽量会在生成这个区块同时纳入;区块一般是伴着比特币的

  • 所以如果网络中大部分节点遵循去延展最长支链的规则,那这样的设计将激励所有节点去遵循这个规则。

    比特币的供应量

2. 交易费

任何交易的制造者都可以选择让交易输出值比输入值小。

比如:

  • 如果你是一个节点,正在创建一个包含200笔交易的区块,那么这200笔交易的交易费将会被付到你放在区块内的那个地址。这些交易费现在是完全自愿的
  • 这里一个区块就是包含很多的交易

2.2.3 工作量证明

1.依旧存在的问题:

  1. 主要问题是我们要你相信这样的假设:我们能随机选取一个节点。
  2. 是因奖励那些节点参与而产生的新问题:如果大家都想来分一杯羹成为一个节点来获得这些奖励的话,整个系统会变得不稳定。
  3. 是第二个问题的复杂版,就是可能会有攻击者创建大量的女巫节点来尝试颠覆整个共识过程。

2.解决问题

启用工作证明的目的:

  • 把随机选取节点改为根据节点占有某种资源的比例来选取节点,我们最终希望这种资源是没有人可以垄断的

两种证明方式:

  1. 如果这个资源是计算能力,那我们称之为工作量证明系统。
  2. 这个资源可以是某种币的拥有量,我们称之为权益证明 (proof of stake)

这里我们主要讲工作量证明系统,该系统允许节点用它们的计算能力来互相竞争,导致的结果是计算能力的比例决定了节点被自动选中的概率。所以对女巫来说当他分出很多身份的时候每一个分身就没那么强的计算力了,从而解决了女巫的事情。

3. 实现:

哈希函数解谜来证明工作量的。

把这个临时随机数、前序块的哈希值还有要填进这个区块的交易列表连接起来,组成一整串字符,计算出它的hash值,使之能够落在某一个目标之内。在目标之内就说明成功了。
H ( n o n c e p r e v _ h a s h t x t x t x ) < t a r g e t H(nonce‖prev\_hash‖tx‖tx‖…‖tx)<target
hash指针:

  • 哈希指针是一个宽泛的概念。这个指针只是文本中的字符串,它并不需要告诉我们去哪里找到这个区块。我们可以通过在网上询问其他的节点找到区块。重要的是,这个哈希值既作为我们在网络上请求其他节点寻找区块的ID,又能够让获取这个区块后验证它

这样的hash计算具有的特点:

  1. 难于计算;
    1. 因为范围的一步步变小就会导致难度变得越来越大;
  2. 可参数化成本;
    1. 目标区域就是参数,
    2. 每产生2 016个区块之后,所有的节点都会自动重新计算目标区域相对于整个输出范围的比例大小,使得后续的区块产生的时间间隔约为10分钟。两个区块之间的平均间隔是10分钟,2 016个区块就需要两个星期。所以大约每两个星期,目标区域的大小会被重新计算一次。
    3. 为什么是10分钟产生区块:
      1. 区块产生的间隔太小,就会造成很多低效率,我们还会失去许多优化上的好处,比如在一个区块内放入大量的交易。
      2. 但是10分钟并没有神奇之处,如果把10分钟下调到5分钟大概也可以。重点找到理想合理的间隔。

4.相关策略计算

在一个博弈过程中,无论对方的策略选择如何,当事人一方都会选择某个确定的策略,则该策略被称作支配性策略。如果任意一位参与者在其他所有参与者的策略确定的情况下,其选择的策略是最优的,那么这个组合就被定义为纳什平衡

我们默认矿工挖矿是满足纳什平衡的,不过并没有定论

对于某个特定的矿工:

发现下一区块的平均时间=10分钟/占全部计算能力的比例

2.2.3 几个有趣的计算

1. 挖矿是否赚钱

如果:

挖矿奖励>挖矿成本

那么:

矿工赚钱

条件是:

挖矿奖励=区块奖励+ 交易费

挖矿成本=硬件成本+ 运营成本(电费、空调费等)

有两个成分还是难以确定的:

  1. 电费是个变量,随时间变化;
  2. 矿工得到的奖励取决于他们发现区块的速度,这不仅取决于他们硬件的能力,还取决于他们的计算能力占全球计算能力的比例。
  3. 比特币与现实货币汇率计算
  4. 我们都假设矿工会诚实地遵守协议。但矿工有可能选择用一些其他的挖矿策略,而不总是试图延展最长的有效分支。

2. 不存在所谓“1比特币”这样的东西

具体来说,没有“1比特币”这样的特别名称。比特币只不过是交易输出,在现在的规则里,它们可以是精确到小数点后8位的任意值。可能的最小价值是0.000 000 01 BTC(比特币),我们称之为1个中本聪(比特币的发明人)

事实上是按照发放的比例分割

3. 51%攻击

猜你喜欢

转载自blog.csdn.net/weixin_42295969/article/details/106866939
今日推荐