区块链基础介绍

这一切的缘起都要从中本聪(Satoshi Nakamoto)的9页论文《比特币:点对点电子现金系统》(Nakamoto 2008)的发布开始说起。继雷曼兄弟(Lehman Brothers)倒闭并全面爆发全球性的金融海啸后,它于2008年10月31日释出。然而,主流的金融界由于忙于防范和处理金融危机,所以当时并没有特别注意这一点。

时间来到了2021年,比特币的牛市来让走势冲到了54,467.12 美元,加上以太坊在去中心化金融(Decentralized Finance, 简称DeFi)的崛起,各大金融机构不得不开始重视区块链的影响力。

常常听到区块链科技跟去中心化(Decentralized)、DLT 分布式账本(distributed ledger technology)、挖矿(Bitcoin Mining)等等关键字有关系,而且对于金融与科技带来深厚的影响,因此我们得需要从什么是区块链开始谈起

区块链是什么?

区块链是一种去中心化的分布式数据库即透过集体维护数据,区块链里面的数据更可靠。

去中心化分布式数据库

去中心化分布式数据库(Decentralized Distributed Database)一共有三个面向切入

  1. 数据结构的特性: Timestamped append-only log
  2. 数据库安全性:Auditable database
  3. 共识协议:Network consensus protocol

1.- 数据结构特性:Timestamped append-only log

我们以比特币为例,出现过就不会改变的记录(Append-only log)的概念事实上就是一种我们只能写入的一种数据结构。所以那表示当我们已经写入一个数据到区块里,它将永远无法篡改。此外,它还有一个提交时间注记(timestamp)的概念。因此,我们可以判断数据是什么时候写入和数据所属的区块(block)。

2.- 数据库安全性:Auditable Database

了解了数据无法篡改的概念后,那该如何提高数据库的安全性。以下会详细解区块链使用的加密技术。

哈希Hash

哈希(Hash)算法在资工的领域,是一种用在数据编码中的技术,最主要分为Hash Function(哈希函数)和Hash Table(哈希表)两个部份,

Hash Function:是一种将任意数据映射成为固定长度的技术

Hash Table:则是储存(Key,Value)对应关系的数据结构。

有些Hash Function有可能会发生一种情况:不同输入,结果输出相同,这样放到Hash Table上,就等于有多个Key都可以指到同一个Value,这样今天如果我得到这个Value,我就会分不出来是用哪把Key去呼叫数据的,这种情况称为“冲突Collision”

但是在区块链的世界里,是不能允许有这种冲突的情况的,原因有许多例如:没办法作为电子签名的辨别之用,因此区块链比较常用的是密码哈希函数(Cryptographic Hash Function)

密码哈希函数(Cryptographic Hash Function)

密码哈希函数Hash Function的一种类型,也具有hash function所有的性质,但密码哈希函数得出的输出不会发生冲突(collision)的情况。以比特币为例,它所使用的是安全哈希算法(Secure Hash Algorithm)家族的SHA-256,因此当输入相同的原始讯息,它就会生成256位的随机序列(1,0),因此密码哈希函数Hash Function也具有「碰撞抵抗性」(Collision-Resistant)。

其实在日常中也会使用SHA-256

Apache OpenOffice 的安装程序是一个经常性下载的文件。结果,它可能不是放在Apache网站上,而是托管在外部(不安全的FTP或HTTP服务器上,因为从那里下载可能更便宜和/或更快)。但是,由于FTP和HTTP服务器并不安全,那表示着当用户下载档案时,骇客可能会恶意修改它!例如,他可能用病毒替换了文件。

Apache 为了应对此类攻击,Apache的HTTPS 网站允许用户首先下载透过SHA-256加密过的OpenOffice的Hash。换句话说,用户可以透过Hash 而获得正确的OpenOffice的安装档案。

Merkle Tree 的威力

理解了Hash的应用后,我们来谈谈什么是Merkle Tree。

它是算法里头的一种二元树(Binary Tree),主要有两个用途

  1. 透过两两计算Hash值的方法验证数据的正确性跟完整性
  2. 大幅减少验证交易所需要的资讯量

如何透过Merkle Tree 验证交易

目标:我们想要确认Tx D是否存在这个区块中

前置作业:我们需下载这个区块的Hash(C)、Hash(AB)、跟Hash(ABCD)三个值

验证的步骤如下:

  1. 计算Tx D的哈希值Hash(D)
  2. 计算Hash(D)与Hash(C)的哈希值Hash(CD)
  3. 计算Hash(AB)与Hash(CD)的哈希值Hash(ABCD)
  4. 比对计算出来的Hash(ABCD)跟区块里的Merkle Root或Hash(ABCD)有没有一致
  5. 若一致→该笔交易的确存在这个区块,
    若不一致→该笔交易不存在于这个区块

以Bitcoin而言,通常平均会有3–500笔交易。为了方便计算,假设区块中有

实际上一个区块平均会有3–500笔交易在里头,为了方便计算我们假定这个区块中有512笔交易。根据二元树的特性(2^n)表示512笔交易有8层。因此它的上一层有256个点,再上去即是128个点以此类推。因此透过Merkle Tree的机制,我们只需要取得Merkle Root和8个Hash就可以验证交易是否为真。

Merkle Tree 聪明的使用了8 笔Hash 数据取代512 笔交易,整整少了64倍的数据量。这就是Merkle Tree 的强大之处!

区块链里的区块(Block)所包含的数据

数据范围通常包含,

  • 该区块编号(The block number),也表示区块高度(block height)
  • 该区块的Hash 值
  • 前一个区块的Hash 值
  • Merkle tree 树根的Hash值
  • 时间注记(timestamp)
  • 该区块大小(Block size)
  • 随机数(nonce)值,由挖矿节点操纵以解决散列难题的数字,赋予其发布块的权利
  • 该区块中包含的交易清单

3.- 共识协议的机制: Network Consensus Protocol

Proof of Work

工作量证明是一种可保护许多加密货币(包括比特币和以太坊)的算法。大多数数字货币都有一个中央实体或领导者来跟踪每个用户以及他们拥有多少钱。但是没有像比特币这样的加密货币领导者。需要工作量证明才能在没有公司或政府运营节目的情况下使在线货币正常工作。by Coindesk

简单而言就是网络上的节点可以简单地透过工作量证明,快速验证彼此是否拥有记帐权。例如,许多采矿节点正在同时竞争以解决难题,最先解开的人就能获得下一个区块的记帐权并获得比特币作为奖励。

优点

  • 全民皆可加入,节点可自由进入,去中心化程度高。
  • 破坏系统需要投入极大的成本(例如,51% attack),安全性极高。

缺点

  • 为了保证去中心化程度,区块的确认时间难以缩短。
  • 透过矿工的计算能力以及硬体成本确保矿工立意良善,挖矿过程中过多的能源消耗,使得这个机制非常不环保

区块链特性整理

最后整理一些区块必知的关键字

  1. 去中心化:没有一个中央管理者可以全权掌控区块链
  2. 不可篡改:数据一旦上传到区块链,就非常难更改
  3. 可追溯性:区块链上的数据按时间排序,难以窜改,方便追踪任何资产转移的历史纪录
  4. 公开透明:数据经过密码学加密,公开在网络上,任何人都可以查看
  5. 财务自主权:钱包中的「私钥」用来保护资产拥有权,用户只要保管好私钥,无需银行等中介就能自主掌控资产
  6. 24小时运作:系统全天候运转,不同于银行会打烊、股市会休市
  7. 即时跨国交易:区块链网络是全球的,不管人在哪都可以随时进行点对点的交易

小结和额外分享:

  1. 结合上面提到的三个要素,可以理解比特币的特性即是将数字记录依照时间先后发生的顺序记载在数据库(timestamp append-only log),并在通过参与者同意的规则或是获得一定数量的赞成票(network consensus protocol)后,并加密保存在数据库(auditable database)
  2. 最大宗的区块链为比特币和以太坊这些都是公有链。但是在区块链的世界里,还有私有链和联盟链。

本文链接地址:https://www.wwsww.cn/qkl/7990.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。