主页 > imtoken钱包官网app下载 > 区块链技术驱动金融(二)18.5.22

区块链技术驱动金融(二)18.5.22

imtoken钱包官网app下载 2023-04-20 07:04:48

第二章比特币是如何去中心化的

本章的目的是让你全面了解去中心化,了解比特币的工作原理,以及最终为什么比特币确实是安全的。

2.1 中心化与去中心化

互联网是一个众所周知的去中心化系统。早期,它在围墙花园信息服务系统的竞争中越来越流行,比如 AOL Memory ComputerServe(美国最大的在线信息服务机构一))。

电子邮件的本质也是简单邮件传输协议STMP的去中心化系统。

中心化和去中心化并不是不相容的,没有一个系统是完全中心化或完全去中心化的。虽然比特币系统是去中心化的,但比特币交易所(将比特币转换为其他货币的平台)、钱包软件和用户管理比特币的软件,可以是去中心化的或去中心化的。

比特币如何实现去中心化?

问题一:谁在维护交易账本?

问题2:谁有权批准哪笔交易有效?

问题 3:谁在制造新的比特币?

问题 4:谁在制定系统变更的规则?

问题五:比特币如何获得交易价值?

2.2 分布式共识

共识:共识

分布式共识:分布式共识

比特币是一个点对点系统。

分布式共识协议:在有n个节点的系统中,每个节点都有一个输入值,其中一些是错误的,甚至是恶意的。分布式共识协议具有以下两个属性:

① 输入值的终止必须由所有诚实节点决定

②此输入值必须由城市节点生成

示例:当 Alice 向 Bob 付款时,Alice 需要向整个比特币点对点网络广播。

广播交易

注:Alice 广播时 Bob 不一定在上述网络中,但 Bob 是否运行节点并不影响他从 Alice 那里收到的比特币。

在比特币网络中,节点必须达成什么样的共识?

(1)在比特币系统中,在任何时间点,点对点网络上的所有节点都有一个账本,其中包含一系列区块,每个区块都包含一个所有节点都同意的交易列表.

(2) 但是,每个节点仍然有一堆交易没有被打包进区块(网络节点已经被通知,交易已经发生区块链包含比特币吗,但是还没有被写入区块)。网络节点尚未就这些交易达成共识,因此每个节点都有一个略有不同的交易池,尚待确认。在实践中,点对点网络并不完美,因此有些节点会听到交易而有些则不会。

所有节点如何就一个区块达成共识?

详见本书第 41 页。

有几个技术问题需要达成一致:

(1)达成共识一般是个难题,有的节点会崩溃或者根本就是恶意节点。

(2) 就比特币而言,点对点网络并不完美。并非所有对应的节点都成对连接。互联网连接不佳可能会导致网络问题。实现一个所有节点都参与的共识协议似乎是不现实的。

(3)由于交易信息分布在整个互联网上,信息传输会出现严重的延迟。

延迟和全局时间

比特币协议在达成共识时必须面对两个主要障碍:

①是一个不完善的网络,例如信息延迟和节点崩溃

②是一些故意破坏的节点。

严重网络延迟的一个后果是节点没有统一的全局时间概念。并非所有节点都能根据每笔交易的时间戳达成交易时间共识。

2.2.1 不可能的结论

全球时间的不一致给共识协议算法带来了诸多限制。

一个典型的案例是拜占庭将军问题:

拜占庭是东罗马帝国的首都,其军队被划分为多个师,每个师由一名将军率领。将军们通过信使进行沟通,以达成共同的作战计划。一些将军可能是叛徒,想要破坏这个过程,使忠诚的将军无法达成统一的作战计划。

如何解决这个问题呢?

其实就是为了让忠诚的将领,即使在可能被叛徒误导的情况下,也能达成统一的作战计划。然而事实证明,叛徒的数量超过了1/3,这个问题是不会被克服的。

Fisher-Lynch-Paterson 不可能结果表明,在某些条件下(包括节点行为的确定性特征),即使在只有一个缺陷的过程中,也不可能达成共识。(这是关于不可能的结论)

Paxos 算法协议: ① Paxos 算法不会产生不一致的结果。② 但它的折衷是在一定条件下(虽然不常见),协议会崩溃,卡住,无法继续运行。(这是一些文献中提到的共识协议)

2.2.2 打破传统假设

不可能的结论只是在某些特定模式下才成立的,结论是对分布式数据库的研究。但对于比特币本身,它打破了原始分布式数据库所做的许多假设。目前对共识的研究,比特币实际上比理论上的情况要好得多。

比特币打破了经典模型的哪些假设?

(1) 比特币引入了奖励的概念。奖励是分布式共识协议的一个新概念,因此可以说比特币只解决了特定货币体系下的分布式共识问题。

(2) 比特币系统包含随机性的概念。比特币的共识算法严重依赖随机性。比特币并不执着于在共识中指定起点和终点,共识是在很长一段时间内达成的。

2.3 使用区块链实现无身份共识

与传统的分布式共识算法不同,比特币中的每个节点都没有一个稳定的、长期的身份。

缺少身份的原因:

①点对点网络,不存在随机创建节点即女巫攻击现象

②假名制度。(比特币依然不保证真实匿名,比特币特性不强制使用真实身份加入)

出于安全原因,拥有真实身份会使设计更容易。然而,没有。但它可以用一个理论假设来补偿。

2.3.1 隐式共识

任意节点选择的假设可以实现隐式共识。

共识协议有多个轮次,每一轮对应区块链中的一个区块。在每一轮中,都会选择一个随机节点来提议链的下一个块。

没有共识算法,为了避免随机选择节点是恶意的,采用隐式共识方式选择:其他节点隐式接受或拒绝之前随机选择的节点。如果被接受,则在此块之后继续;如果被拒绝,新的区块将被忽略,而先前接受的区块将被选中继续接龙。

节点选择哪一块继续接龙?比特币共识算法的简化版本

假设可以任意选择一个节点,这些节点都不会受到 Sybil 攻击的影响。

①新交易向所有节点广播

② 每个节点将新的交易放入区块

③ 每一轮,一个随机节点可以广播它的区块

④其他节点可以选择接受这个区块,前提是区块中的交易是合法的,有真实的签名

⑤ 节点可以将上述区块的哈希值放入自己的区块中,以表示对新区块的认可。

验证此共识算法是否有效

窃取比特币 Alice 无法从属于另一个用户且不受她控制的地址窃取比特币。因为如果数字签名机制是安全的,Alice 就无法伪造比特币所有者的签名。

拒绝服务攻击 Alice 不喜欢 Bob 并拒绝向 Bob 提供服务。虽然 Bob 的交易并没有被放入 Alice 提出的下一个区块,但它只需要等到下一个诚实节点发起区块,他的交易记录就会被放入这个区块。

双花攻击假设 Alice 是 Bob 在线商店的客户,并且已经通过诚实节点代表 Alice 发起了一个包含向 Bob 支付交易的区块。(交易是一个数据结构,包含 Alice 的数字签名 + 支付 Bob 的公钥的指令,也就是地址 + 一个哈希值)

注意:哈希值是指向上一笔交易输出的指针,是比特币的来源。

有关详细信息,请参阅本书的第 48 页,其中更复杂。

双花攻击

双花攻击成功了吗?取决于哪个区块最后包含在长期共识链中。

是什么决定了包含哪个块?诚实节点将遵循最长有效分支扩展规则,在哪个分支之后?没有明确的答案。(两个分支的长度相同,不同的是最后一个块,但两个块都是有效的,所以选择决定了双花攻击是否成功。)从技术上讲,两个交易是相同且有效的。

在实践中,节点对点对点网络中节点使用最早听到的区块的方式仍然存在网络延迟等问题,而且第一个听到的不一定是第一个创建的。假设包含 Alice-Bob 交易块的链如果完全被网络遗忘,则成为孤块。

在 Bob 看来区块链包含比特币吗,当 Alice 广播交易时,Bobby 很马虎,在互联网上完成了检查程序,并允许 Alice 下载软件,这被称为零确认交易。结果会更糟。为了保护自己免受双花攻击,您应该等待更长的时间。

Bob 对双重支出的看法

总结:一笔交易获得的确认越多,被纳入长期共识链的概率就越高。因为诚实节点总是选择最长的共识链。事实证明,成功的双花攻击的概率随着确认次数的增加呈指数下降。比特币生态系统中的一种常见方法是等待 6 次确认。密码学方法用于防止非法交易,并通过共识得到加强。防止双花攻击完全取决于共识。密码学没有影响,因为共识可以决定将哪个放入长期共识链。

区分两个哈希指针

块中使用的哈希指针,用于指示要跟随哪个块

交易中使用的一个或多个哈希指针指向上一笔交易中比特币的来源。

2.4 奖励机制和工作量证明

奖励那些以货币单位诚实行事的节点。

2.4.1 奖励1:区块奖励

比特币有两种不同的奖励机制:区块奖励和交易费用。

根据比特币规则,创建区块的节点可以在区块中添加一个特殊的交易(该交易是类似于Scrooge Coin中的造币的造币交易,并且节点可以指定该交易的接收地址,通常选择一个属于自己的地址,可以看作是节点在共识链上创建区块服务的奖励)。

在撰写本文时,区块奖励金额设置为 25 个比特币。每生成 210,000 个区块,数量就会减半。最终的数字是 2100 万,大约在 2140 年分发。但系统仍然有效,因为区块奖励只是比特币的奖励机制之一。

注意:只有最终将区块链纳入长期共识链,才能实现奖励。这是允许创建新比特币的唯一方法。

2.4.1 奖励2:交易手续费

比特币的第二种奖励机制。

任何交易的制造者都可以选择使交易输出值小于输入值。第一个创建区块并将交易放入区块链的人可以将差额作为交易费用索取。

如果您是一个节点,创建一个包含 200 笔交易的区块,那么这 200 笔交易的交易费用将支付到您放入区块的地址。

2.4.2 挖矿和工作量证明

在描述共识机制时有一个悬而未决的问题。

(1) 我们希望您相信我们可以随机选择一个节点的假设

(2)奖励那些节点带来的新问题:每个人都分到一份蛋糕,成为一个节点来获得这些奖励,那么系统就会不稳定

(3) 基于第二个问题,攻击者可能会创建大量巫婆节点,试图颠覆整个共识过程。

解决方案:工作量证明:将节点的随机选择改为根据节点占用某种资源的比例来选择节点,希望没有人可以垄断这个资源。例如,这种资源就是计算能力,称为权益证明。

虽然不使用比特币,但权益证明是其他加密货币使用的另一种合格模型。

Proof of Work:允许节点利用自己的算力相互竞争,算力的比例决定了一个节点被自动选中的概率。

未完待续 2018.5.22 19:53 跑了,回来继续

继续更新2018.5.23 21:50

比特币使用哈希函数谜题来证明工作量证明。

继续更新2018.5.24 9:11

任何提出并创建区块的节点都想创建下一个区块,该节点必须找到一个临时的随机数。临时随机数需要满足:

H(nonce || prev_hash||tx||tx||...||tx) < 目标

一个块通常包含:

① 节点提出的一系列交易。

②指向预购区块的哈希指针。(指针只是文本中的一个字符串,hash值作为ID请求网络上的其他节点寻找区块,得到区块后让区块进行验证)。

③ 一个临时随机数。(为了提高找到满足要求的临时随机数的难度,将包括临时随机数在内的整个区块的哈希值组合起来,输出结果为特定形式。如果哈希函数满足解谜友好的特性,唯一的解决办法是尝试足够多的临时随机数直到成功)

比特币系统是完全去中心化的:哈希函数解决了难题和工作量证明的方法,可以完全摒弃随机选择节点的方法。这些节点在解决竞争哈希函数之谜的过程中总是相互独立的。如果一个节点碰巧找到了一个满足要求的临时随机数,它可以提议创建下一个块。

2.4.3 Hash Puzzle Feature:难以计算

哈希谜题具有三个重要属性:难以计算、可参数化成本和易于证明。

特点一:要有一定的难度。难度实际上会随着时间而变化。

注:不断尝试解决哈希难题的过程,即比特币挖矿,参与挖矿的节点称为矿工。从技术上讲,每个人都可以称为矿工,但高昂的挖矿成本导致挖矿生态系统消耗大量能源。

2.4.3 哈希拼图功能:可参数化成本

特点2:希望cost可以通过参数来改变,而不是固定的值。

在比特币的点对点网络中:每产生 2016 个区块后,所有节点都会自动重新计算目标区域相对于整个输出范围的比例,使得后续区块之间的时间间隔约为 10 分钟。区间太小,造成很多效率低下,失去很多优化收益,所以区间是一个固定值,虽然理想区间还是不统一一)

注:对于任何矿工来说,找到下一个区块的概率是其控制的算力占全球算力的比例。

总结:只要以算力为权重的大多数矿工都遵循比特币协议(老实说),那么比特币的大规模攻击是不可能的。

矿工行为的两种行为模式:博弈论观点认为,最大的问题是矿工的默认行为是否是“纳什均衡”(Nash Equilibrium)

伯努利试验 伯努利试验:解决哈希难题是概率性的,通过一个一个地尝试临时随机数。只有两个结果,在连续试验下,每个结果发生的概率是固定的。

泊松过程泊松过程:一个节点多次尝试一个临时随机数的伯努利试验是一个离散概率过程,可以近似为泊松过程的一个连续概率过程。

找到下一个块所需时间的概率密度函数

对于特定矿工:平均找到下一个区块的时间 = 10min/占总算力的百分比

2.4.3 哈希拼图功能:易于验证

第三个特点:很容易验证节点是否正确计算了工作量证明。任何节点或矿工都可以快速验证其他矿工发现的区块是否符合工作量证明的要求。

本章结束:

挖矿成本:如何计算挖矿是否有利可图。

如果:挖矿成本>挖矿成本  则:矿工赚钱
条件:
挖矿奖励=区块奖励+交易费 
挖矿成本=硬件成本+运营成本(电费、空调费等)

复杂性分析:

①硬件投资固定,电费随时间变化。

②矿工的奖励取决于出块速度=硬件容量+算力占全球算力的百分比。

③ 挖矿成本通常以美元等货币为单位,涉及比特币的汇率。

④ 假设矿工诚实地遵循协议,但矿工也可以采用其他策略。

1比特币不存在

比特币没有固定面额,也没有“1比特币”的说法。比特币是一种交易输出。目前,它可以精确到小数点后 8 位。可能的最小值是 0.000 000 01 BTC,称为 Nakamoto Cong。

一笔交易被放入区块链

一笔交易放入区块链,表示该笔交易已被多次确认(次数不固定,常用次数为6,确认次数越多越容易被说服)。但是经常有孤立的块(由于该块可能包含不正确的交易或双花的尝试或网络延迟的事实而导致)或没有进入共识链的块。

哈希拼图和挖掘

矿工是一种特殊类型的节点,它决定参与竞争以创建新区块。如果其他矿工继续在他们的区块上构建,他们努力的回报是新铸造的比特币(新区块奖励)+现有比特币(交易费)。

比特币深度使用分布式共识的概念

传统上,有一个共识过程来确定一种货币的汇率。

在比特币中,账本情况的共识是由区块链完成的,即你拥有多少比特币的算法取决于共识。比特币点对点网络,记录在区块链中的所有 Alice 地址上持有的比特币总量。拥有比特币是给定一方拥有这些比特币的其他节点的共识。

比特币规则变更有两种类型:软分叉和硬分叉。

启动加密货币

自举过程

比特币系统中存在三个理念:区块链的安全性、挖矿生态系统的健康性、货币交互的价值。

51% 攻击

如果共识失败,并且有一个 51% 的攻击者实际上控制了比特币网络中的大部分挖矿算力。

攻击者可以从现有地址窃取硬币吗?不,除非有办法覆盖加密。这里可能会出现分叉情况。

51% 的攻击者可以抑制其他交易吗?不,就算成功了,所有人都知道发生了攻击。

攻击者可以改变区块奖励吗?不,这是对系统规则的改变,其他节点不会轻易识别区块奖励增加,所以他不能使用这些区块。

攻击者会摧毁每个人对比特币的信心吗?如果一方控制了 51% 的算力,即使没有攻击,每个人都可能对比特币失去信心。

结束 2018.5.24 10:37