区块链起源于比特币,2008年11月1日,一位自称中本聪(Satoshi Nakamoto)的人发表了《比特币:一种点对点的电子现金系统》一文 ,阐述了基于P2P网络技术、加密技术、时间戳技术、区块链技术等的电子现金系统的构架理念,这标志着比特币的诞生。两个月后理论步入实践,2009年1月3日第一个序号为0的创世区块诞生。几天后2009年1月9日出现序号为1的区块,并与序号为0的创世区块相连接形成了链,标志着区块链的诞生 。
讲述比特币之前,我们先看下区块链存储接口,或者说是比特币存储结构,如下图所示:
区块可以大体分为块头(header)和块身(body)两部分。块头一般包括前一个区块的哈希值(父哈希)、时间戳以及其他信息。哈希是一类密码算法,将任意一段信息都可以通过某种加密算法表现为一串“乱码”,也就是哈希值。父哈希指向上一个区块的地址(头哈希),如此递推可以帮我们一直回溯到区块链的第一个头部区块,也就是创世区块(genesis block)。
每个特定区块的块头都具有唯一的识别符,即头哈希值。任何节点都可以简单地对区块头进行哈希计算独立地获取该区块的哈希值。区块高度是区块的另一个标识符,作用与区块头哈希类似。创世区块高度为0,然后依次类推。
一、比特币基础简介
就如比特币2009年第一块创世块出世,然后一直活跃到今天,无论是炒币还是挖矿而言,比特币都是对区块链技术应用到巅峰的(插句题外话,2019年中国青年富豪榜前十中,有几个就是玩比特币的,还有就是教育或者房地产,可见其潜力很大)。比特币区块结构如下图所示:
以上图的比特币#515056区块为例,其块头中除了包含头哈希、父哈希及默克尔根以外,还包含了以下重要信息:
奖励(Block Reward):系统发放给发现正确哈希值并创建新区块的矿工的奖励,这部分为内置代币系统的区块链独有。其实我的理解,每个挖矿的人都是区块的发现者,然后系统会奖励一下比特币,就比特币而言,目前比特币区块链奖励为12.5个比特币,该数字每四年减半(比特币总量设定为2100万个),简单算一下今年为止,区块奖励的话为1.5个。
二、区块链三大关键机制:密码学原理
1.密码学原理
密码学原理之一:哈希算法
哈希算法就是输入字符串,通过指定的加密规则,然后输出定长的加密字符一种算法结构。它计算中的hash值,其实就是为了标识当前区块的全球唯一性。就好比我们工作中需要对用户信息进行标识,或者对用户购买订单信息进行标识等。
密码学原理之二:非对称加密
非对称加密是指加密和解密使用不同密钥的加密算法,也称为公私钥加密。区块链网络中,每个节点都拥有唯一的一对私钥和公钥。公钥是密钥对中公开的部分,就像银行的账户可以被公开,私钥是非公开的部分,就像账户密码。使用这个密钥对时,如果用其中一个密钥加密一段数据,则必须用另一个密钥解密。
在比特币区块链中,私钥代表了对比特币的控制权。交易发起方用私钥对交易(包括转账金额和转账地址)签名并将签名后的交易和公钥广播,各节点接收到交易后可以用公钥验证交易是否合法。在这个过程中交易发起方无须暴露自己的私钥,从而实现保密目的。
二、 区块链三大关键机制:数据存储结构(默克尔树)
默克尔树(Merkle Tree)就是一种树状结构。这种树状数据结构在快速归纳和检验大规模数据完整性方面效率很高。在时间复杂度上,树结构是优于其他结构的。在比特币网络中,默克尔树被用来归纳一个区块中的所有交易,其树根就是整个交易集合的哈希值,最底层的叶子节点是数据块的哈希值,非叶节点是其对应子节点串联字符串的哈希。我们只需要记住根节点哈希,只要树中的任何一个节点被篡改,根节点哈希就不会匹配,从而可以达到校验目的。
二、 区块链三大关键机制:共识机制
共识机制是区块链网络最核心的秘密。简单来说,共识机制是区块链节点就区块信息达成全网一致共识的机制,可以保证最新区块被准确添加至区块链、节点存储的区块链信息一致不分叉甚至可以抵御恶意攻击。实践中要达到这样的效果需要满足两方面条件:一是选择一个独特的节点来产生一个区块,二是使分布式数据记录不可逆。
当前主流的共识机制包括:工作量证明/POW(Proof of Work)、权益证明/POS(Proof of Stake)、工作量证明与权益证明混合(POS+POW)、股份授权证明/DPOS(Delegated Proof-of-Stake)、实用拜占庭容错(PBFT)、瑞波共识协议等。其中比特币使用的是工作量证明机制。
工作量证明/POW(比特币就是基于此种共识机制)
工作量证明机制的基本步骤如下:
1) 节点监听全网数据记录,通过基本合法性验证的数据记录将进行暂存;
2) 节点消耗自身算力尝试不同的随机数(nonce),进行指定的哈希计算,并不断重复该过程直到找到合理的随机数,这一过程也被称为“挖矿”,因此这个过程运算速度要求惊人,并且耗电量及其巨大;
3) 找到合理的随机数后,生成区块信息(块头+块身);
4) 节点对外部广播出新产生的区块,其他节点验证通过后,连接至区块链中,主链高度加一,然后所有节点切换至新区块后继续进行下一轮挖矿。
比特币区块链就是通过足够大的工作量来求解数学难题来就“谁有权记账”达成共识。“矿工”在挖矿过程中会得到两种类型的奖励:创建新区块的新币奖励,以及区块中所包含交易的交易费用(交易双方为了交易被区块链尽早记录会提供给矿工一笔交易费用作为激励)。这种算法的竞争机制以及获胜者有权在区块链上进行交易记录的机制实际上分别解决了分布式记账以及记账权归属的问题。在比特币区块链中,这一过程还起到了货币发行的作用——目前每隔10分钟,就会有挖到新区块的矿工收到奖励。
尽管工作量证明机制解决了记账权归属问题,那么获得记账权的矿工有没有可能“作弊”,在构造的新区块中添加一些并不存在的交易呢?实际上,比特币区块链共识机制的重要环节是网络中的每个节点都会独立校验新区块,其中最重要的就是校验新区块中每一笔交易是否合法。如果没有通过验证,那么这个新区块将被拒绝,该矿工也就白白浪费了所有的电力和努力。