区块链基础知识【二】

一。区块链实现的技术细节

  技术性细节之一:分布式账本和去中心网络

  所有用户持有比特币的相关记录都存放在一个分布式账本中,它可被认为同时存储在所有的全节点中。这个账本是一个不断增长的由数据 块组成的链条,数据块连接而成的链条就是狭义的“区块链”

       

 

    

 

 技术性细节之二:未花费的交易输出(UTXO)

  我们来看一个两个人进行转账交易的过程,以深入理解UTXO: 假设我有8枚比特币。这实际指的是,之前有一个交易把这些比特 币转入我的地址,而这个交易的输出(即8枚比特币)在我的地址中、 未被花费出去,因此我有这8枚比特币。 现在,我要发起一个新的转账交易,将这8枚比特币转账给你。新 转账交易的输入,是让我拥有这些比特币上一个交易的输出,我把这一 新转账交易的输出地址设为你的钱包地址,并用自己的私钥对新转账交 易进行签名。 这样,我就发起了一个转账交易。 等矿工将这一交易打包进新的区块,转账交易完成,这8枚比特币 就属于你了。类似地,你拥有的比特币是我向你转账的这个交易中的 UTXO。

  我们可以沿着这样的交易链条一直向上追溯。在源头,每一枚比特 币都是通过挖矿被创造出来的,在每一笔比特币的源头是一种特殊的交 易——比特币矿工因挖矿生成区块而获得奖励的币基交易(coinbase transaction)。假设我作为比特币矿工挖矿成功赢得了25枚比特币, 那么这个特殊交易是:它的输入是0,输出是25枚比特币进到矿工的钱 包地址中。25枚比特币是这个币基交易的UTXO

 技术性细节之三:比特币区块链的数据结构

  区块链之所以被称为blockchain,是因为它的区块(block)以链 (chain)的形式存储。从第一个区块(即所谓的创世区块)开始,新增的区块不断被连到上一个区块的后面,形成一个链条。 每个区块由两部分组成:区块头部和区块数据。其中,区块头部中 有一个哈希指针指向上一个区块,这个哈希指针包含前一个数据块的哈 希值。哈希值可以被看成数据块的指纹,即在后一个区块的头部中均存 储有上一个区块数据的指纹。那么,如果上一个区块中的数据被篡改 了,那么数据和指纹就对不上号,篡改行为就被发现了。要修改一个区 块中的数据,其后的每个区块都必须相应地进行修改。因此,时间越 久,一个区块就越难被篡改。 一个区块中的数据是被打包进这个区块的一系列交易,这些交易按 照既定的规则被打包形成特定的二叉树数据结构——梅克尔树(Merkle trees)。按目前比特币区块的大小,一个区块中能容纳的交易数量在 2000个左右,比如在第526 957个区块中容纳了1804个交易。 比特币区块链的数据结构中包括两种哈希指针,它们均是不可篡改 特性的数据结构的基础:一个是形成“区块+链”的链状数据结构,另 一个是哈希指针形成的梅克尔树(见图1-10)。链状数据结构使得对某 一区块内数据的修改很容易被发现;梅克尔树的结构起类似作用,使得 对二叉树型结构的任何交易数据的修改很容易被发现。

  

  技术性细节之四:比特币挖矿机制——代币生成机 制 节点计算机在挖矿时要做两个任务。第一个任务是把比特币网络中 未被确认的交易按梅克尔树组合成候选区块,未被纳入的交易往下顺 延。在创建候选区块时,除了普通的交易之外,矿工还增加了一个特殊 的交易——币基交易。如果它的候选区块成为正式区块即挖矿成功,币 基交易会凭空转出新区块奖励比特币到矿工的钱包地址中,从而实质上 将这些比特币凭空发行出来。这个特殊交易也被叫作“创币交易”,新 的比特币就是在这一交易中被创造出来的。 第二个任务是真正的算力竞争,即进行加密哈希计算,解决一个计 算难题。在众多争夺记账权的节点中,谁最先完成这个计算,谁打包的 区块就被加到区块链的最后面,成为最新的正式区块并获得奖励。最 初,成功挖出一个区块,矿工可以获得50个比特币的奖励,按规则,这 个挖矿奖励约每四年减半一次,奖励依次变成每个区块25个、12.5个, 以此类推。

  技术性细节之五:工作量证明共识机制

  比特币的去中心网络采用的是工作量证明共识机制。去中心网络之 所以需要共识机制,是因为这是一个非基于信任的网络,任何人无须许 可都可以接入这个网络。这些节点分散在网络条件差异非常大的全球互 联网之中。在完全无中心的情况下,这些节点也要保持各自存储的账本 数据能在共同认可的情况下添加新数据并同步一致,共识机制即为这些 节点达成一致的机制。 关于分布式网络的共识机制,有著名的“Fisher-Lynch-Paterson 不可能结果”,即在一定条件下达成共识在技术上是不可能的。但是, 比特币的工作量证明共识机制又在实践中被验证是有效的,这是因为它 采用了一个实用主义的解决方案:技术与经济的组合。 比特币的工作量证明的特点是,它巧妙地融合了技术和经济因素, 不是纯粹地试图通过技术本身来达到这一点,而是纳入了经济激励。这 是比特币作为一个电子现金系统的优势,它为节点提供所谓的挖矿奖 励。按《比特币:技术驱动金融》一书的分析,比特币的共识机制有两 个与过去不同的特点,我们在此略做引申讨论: 第一,它引入了奖励机制。在这样一个加密数字货币应用中引入了 经济激励,维护网络的节点就可以得到有价值的比特币作为奖励。 为什么比特币网络中的节点愿意打包交易、维护账本?它们并非出 于“善意”,而是因为,它们能因这些挖矿行为获得比特币形式的经济 激励。这是一个自行发行代币的电子现金系统的独特优势,如果所开发 的是其他没有自行发行代币的IT系统,我们就无法方便地引入矿工挖矿 奖励这样的经济激励机制。 激励挖矿节点参与挖矿的,除了与新区块相关的奖励之外,挖矿节 点还可以得到区块中包含的所有交易付出的交易费。到目前为止,这个 数值还较小,大概为新区块奖励的1%。 第二,它包含了随机性的概念。比特币系统形成的共识不是完全可靠的,但是在等待了6个区块约1个小时之后,出问题的概率呈指数下 降。在确认6个区块之后,一个交易发生双花情况的概率可被认为是 零。从纯理论上看,完美的共识不可能达成。但从实用的角度看,这个 共识是高度可信的

  

 

每一个比特币其实都是UTXO,它是比特币的最为核心的概念之 一。 比特币就是UXTO 比特币的挖矿节点获得新区块的挖矿奖励,比如12.5枚比特币,这 时它的钱包地址得到的就是一个UTXO,即这个新区块的币基交易(也 称“创币交易”)的输出。币基交易是一种特殊的交易,它没有输入, 只有输出。 当甲把一笔比特币转给乙时,这个过程就是把甲的钱包地址中之前 的一个UTXO,用私钥进行签名,然后发送到乙的钱包地址。这是一个 新的交易,乙得到的是这个新交易的UTXO。 详看从甲转账给乙的过程 假设甲(Alice)向乙(Bob)转账,转账过程可以分成三个阶段 (见图1-14)。

  

 

   (1)假设Alice之前通过挖矿获得了12.5枚比特币,在她的钱包地址 中,这些比特币是某个币基交易的UTXO。

  (2)Alice发起一个交易,输入是自己的上一个交易,输出是Bob的 钱包地址,数量是12.5枚比特币, Alice用自己的私钥对交易进行签 名。

  (3)当交易被确认后,Alice的UTXO就变成了0,而Bob的钱包地 址中就多了一个UTXO,数量是12.5。 存在Bob的钱包地址中的这些比特币,只有用Bob的私钥签名才可 以动用。Bob要将这些比特币转账给其他人,则重复上述过程。

 

posted @ 2022-10-20 20:48  fairytables  阅读(412)  评论(0)    收藏  举报