简单来说,区块链就是一个以链式结构组织而成的去中心化的账本。其最本质的作用是用于记账,区块链上面任何项目都是基于记账这个概念衍生而来的。
要想开发一个钱包项目,首先要理解一些区块链的基本概念。
简单来说,区块链就是一个以链式结构组织而成的去中心化的账本。其最本质的作用是用于记账,区块链上面任何项目都是基于记账这个概念衍生而来的。
区块链的结构从宏观来看,非常简单,就是链表的结构。其区块内有两个最核心的属性 Hash 和 Parent Hash,其中 Hash 可以理解为这个区块的唯一标识,Parent Hash
记录了上一个区块的 Hash
。正是因为每个区块都记录了上一个区块的 Hash
,从而使得每个区块都是以链式的结构组织起来。
既然区块链是一个账本,那他的账单,记录在哪里?毫无疑问,账肯定记录在每一个区块中。它是以一个二叉默克尔树的树状结构组织起来的。(默克尔树是什么,见默克尔树详解跳转链接)我们以区块 2
为例,拆解下交易的组织结构:
从上图,我们可看出,区块链中的交易账单,记录树状结构的最外层。在默克尔树中,叶子节点记录了交易的
Hash
,非叶子结构记录了它的两个叶子节点的二次 hash
( father = H(son1, son2)
)。一直追溯到最顶层的 hash
,就作为区块的 hash
。这样的结构,保证了一个区块出现后,其交易账单的不可变性。因为哪怕有一个交易被篡改了,最顶层的 hash
都不可能正确。
Hash
函数成为单向散列函数。简单理解就是,随便给定一个输入,得到一个不可倒推的固定输出。其有几种特性:
hash
碰撞:hash 碰撞指的是,不同输入得到相同的输出。有这个可能,但很难找到不同的输入得出相同的输出,可以理解为近似于不可能。在比特币中的默克尔树构建,正是使用了Sha-256
这个 Hash
函数来构建。比特币中为了更安全,使用的是双重 hash
,即:H1 = SHA256(SHA256(tx1))
。
创建的 Hash 算法有:
hash
算法。hash
函数。了解共识算法之前,我们先来看区块链中一笔交易的大致生命周期。
RPC
节点, RPC
节点收到后会把交易广播出去。共识算法正是作用在这一阶段
。有了上述概念,我们可以得知:共识算法是决定谁能打包交易进行出块的一种算法,用于决定哪个矿工节点获得出块权利。
如果没有共识算法,那么交易谁都能进行打包出块,那便破坏了区块链的 “链” 的结构了(链只能单向下去,不会分叉成树,哪怕有短期分叉,最终也会选取最长的一条路径走下去)。 并且,如果没有共识算法,有两个矿工同时出块,某笔交易会出现被打包两次(或更多次)的情况。那一笔资金就会被消耗两次(双花攻击),这显然是不可容忍的。
下面我们来看两种最常见的共识算法:
PoW
是比特币采用的共识算法,工作量证明的核心是,通过 CPU
的计算一个数学上的难题,谁先算出来谁就能记账出块。
其核心由一个公式组成:
Hash(nonce + data) <= target
data
是固定的,target
为计算的难度,可以调整。比特币节点正是通过计算在这个范围内的 nonce
来获取出块的权利,谁先算出来,谁就有用这个出块记账的权利。
PoS
是以太坊2.0采用的共识算法,它的核心思想是:通过质押代币而非消耗算力去决定记账权。它的运作流程是:
ETH
来成为验证者(矿工)节点ETH
。好了,区块链的基础核心我们暂时先讲到这,下一章我们将会来讨论区块链中使用到的一些加密、签名算法。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!