跳到主要内容

区块链相关概念

区块链是什么?

区块链(BlockChain),是区块(Block)和链(Chain)的直译,区块链是由一个一个区块构成的有序链表,每一个区块都记录了一系列交易,并且,每个区块都指向前一个区块,从而形成一个链条:

20220706143200

如果我们观察某一个区块,就可以看到,每个区块都有一个唯一的哈希标识,被称为区块哈希,同时,区块通过记录上一个区块的哈希来指向上一个区块:

20220706143218

每一个区块还有一个Merkle哈希用来确保该区块的所有交易记录无法被篡改。

区块链中的主要数据就是一系列交易,第一条交易通常是 Coinbase 交易,也就是矿工的挖矿奖励,后续交易都是用户的交易。

提示

Coinbase 是没有输入,只有输出的铸币交易

区块链是很多现有技术交叉融合在一起的集成创新。因此,要了解区块链,首先要了解区块链到底集成了哪些技术。

P2P 网络

P2P(Peer-to-Peer)网络是一种端到端的网络。

P2P 网络分为结构化(例如基于 Chord 的 P2P 网络)和非结构化的 P2P 网络(例如 Gnutella)。比特币的区块链采用的是非结构化P2P网络,整个网络没有中心化的硬件或管理机构,任一节点既是服务端,也是客户端。任何节点只要安装相应的客户端软件,就能接入P2P网络(例如BT软件),参与区块链的记录和验证,不超过1/3节点的损坏、退出甚至被植入恶意代码,都不会影响整个系统的运作。

提示

Chord 是一种 P2P 协议,是主流 DHT 协议之一,其核心思想就是要解决在 P2P 应用中遇到的基本问题:如何在 P2P 网络中找到存有特定数据的节点。Chord 专门为 P2P 应用设计,因此考虑了在 P2P 应用中可能遇到的特殊问题。

加密算法和数字签名

非对称加密算法有 RSA、DSA 和 ECC 等种类,区块链使用的是基于椭圆曲线加密技术的数字签名(ECDSA),具体实现是 secp256k1。

提示

ECDSA 相当于是 DSA 和非对称加密 ECC 的结合。相比 RSA 算法,ECDSA 具有计算量小、存储空间小、带宽要求低等特点。

带宽(bandwidth)又可以称为频宽,是指在固定的时间可传输的资料数量,亦即在传输管道中可以传递数据的能力。

发送报文时,发送方用一个哈希函数从报文文本中生成文件摘要,然后用自己的私钥对摘要进行加密,加密后的摘要将作为报文的数字签名和报文一起发送给接收方。接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公钥来对报文附加的数字签名进行解密,如果得到的明文相同,那么接收方就能确认传输的文件并未受到篡改,是安全可信的。

提示

数字签名就相当于是 用自己的私钥对发布的内容进行加密后得到的密文(此处一般为了提高效率,一般会先对原文进行摘要加密,然后在对密文进行签名),然后再尝试用公钥去解密,如果成功则表示没有问题,否则就是伪造的(其实就是加密的逆过程)

梅克尔树

梅克尔(Merkle)树是区块链的基本组成部分。如果没有梅克尔树,区块链也是可以运转,但是要在区块头里包含所有交易记录,扩展性方面存在很大挑战。

20220706115540

如图所示,区块链中的每个区块,由区块头和区块体构成,区块头中含有一个 Merkle 根节点的字段,通过对区块体中所有交易记录,以二叉树的形式迭代地两两拼接 、进行哈希操作,可以得到一个最终的哈希值,我们称之为 Merkle 根哈希。

Merkle 根哈希相当于是对区块中所有交易记录进行了一个快照,区块中交易记录的任意改动都可以通过比较 Merkle 根哈希而很容易地察觉。Merkle 根哈希主要用于简单支付验证(SPV),在验证某个交易是否在区块中时,也能极大地减少网络传输成本。

工作量证明机制

区块链中有一个很重要的概念,工作量证明,矿工挖矿如何挖出一个新的区块,靠的就是工作量证明。

工作量证明(POW)从字面意思就知道,就是证明一个人干了这份活,得到大家认可之后,产生一个新区块,然后给干这份工作的人一定的比特币作为报酬。

数据存储在哪里?

学习 P2P 时有个最大的疑惑就是,没有中心数据库了数据存在哪里呢?

区块链的数据存在每一个节点上面,每一个节点都有一个公共的账本,数据库,在这个数据库里存着每一笔交易的数据

17年全球只有5000多个 full node (全量节点),也就是说只有这些节点的运营者有全部的记录,但所有人都能查询到 Bitcoin Block Explorer - Blockchain,即使不在本地。

什么是区块链浏览器?

区块链浏览器是所有区块链项目必备的基础设施

20220706102521

所谓区块链浏览器,是指提供用户浏览与查询区块链所有信息的工具。在这里,用户至少包括:开发者、持币者、DApp 使用者、矿工、监管、对该区块链感兴趣的人等等。这往往与该区块链所处的阶段相关。

ChainInfo:一般是该区块链的总体性概述,一般放置于浏览器页面首页,其功能在于能够快速了解该区块链的总体运行情况,某种意义上来说,区块链浏览器的总体信息也能够基本地展现该区块链的基本情况。

BlockInfo:是指区块链的区块维度信息,一般会包括区块列表页、区块详情页。在这里就涉及到区块链的数据结构的问题。

TransactionInfo:是指交易信息,一般有最新交易列表页,某一区块交易列表页,交易详情页等。

常用的几个区块链浏览器

Ethereum(以太坊)

BTC(Bitcoin)

References