区块链技术理论基础
引用: https://zhuanlan.zhihu.com/p/555096578
1、基本概念
(1)区块链
从技术层面来看,区块链是由包含交易信息的区块按照时间顺序从后向前有序链接起来的数据结构。
从应用层面来说,区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、集体维护、公开透明等特点。基于这些特点,区块链技术可以开发出自带信任体系特征的系统,实现多个主体之间的协作信任与一致行动。
区块是区块链中的最小组成单位,主要有包含元数据的区块头和存放一条或者多条交易信息的区块体两部分组成,每个区块都记录着当前区块的哈希和上一个区块的哈希,通过两个哈希值的关联,让所有的区块以链式结构串起来,就形成了一个完整的区块链。
区块链中的第一个区块被称作为创世区块,无需关联上一个区块。以BTC网络为例,每个区块主要包含如下信息字段:
- 区块大小:用字节表示的区块数据大小
- 区块头:组成区块头的包括以下几个字段:
\1. 区块头hash值2. 父区块头hash值3. 时间戳:区块产生的近似时间4. Merkle根:该区块中交易的merkle树根的哈希值5. 难度目标:该区块工作量证明算法的难度目标6. Nonce:用于工作量证明算法的计数器 - 交易计数器:交易的数量
- 交易:记录在区块里的交易信息
区块链结构的简易模型,如下图所示:

区块中的交易集合记录的是一些特定的信息,在BTC网络中主要记录的是交易信息,在其他区块链网络中可以按照业务逻辑来保存相应的业务数据,如审计信息、版权信息、票据信息等,这也是区块链经常用来当做共享账本的原因。
打个比方,可以把区块链当做一个用来记账的笔记本,一个区块就相当于一页纸,上面记录了某一时间段內所有的账务信息,从第一页到最后一页,按照页码顺序排列起来就是一个完整的账本。
(2)区块链网络
实际的区块链系统由多个区块链节点组成,每个节点都运行着相同一套区块链主干网络的副本,且各个节点间通过P2P网络进行交互,并最终形成一个完整的区块链网络系统。
P2P网络具有可靠性、去中心化,以及开放性,各个节点之间交互运作、协同处理,每个节点在对外提供服务的同时也使用网络中其他节点所提供的服务。当某一个区块链节点产生新的区块时,会通过广播的方式告诉其他节点,其他节点通过网络接收到该区块信息时,会对这个区块信息进行验证,当有一定数量的节点都验证通过后,各个节点会把该区块更新到各自现有的区块链上,最终使得整个区块链网络中的各个节点信息保持一致,这也是区块链去中心化、可信任特性的体现。
区块链网络简易模型,如下图所示:

(3)核心技术
共识机制
共识机制,其实就是我们之前所说的挖矿原理,因为区块链的分布式网络中,没有中央权威。因此,网络需要一个决策机制来促成参与者达成一致。而共识机制就是一种协调大家处理数据的机制。因为每个人都可以参与的话,记录下来的数据这么多,到底该用谁的呢?所以,共识机制就决定了这些数据中,谁获得数据的记账权。共识机制主要起到了数据的维护作用。目前比较常见的共识机制有:工作量证明 PoW(Proof of Work)、权益证明(Proof of Stake)以及委托权益证明(Delegated Proof ofStake)。
分布式存储
分布式储存,简单来说,就是一种将数据分散存储到多个地方的数据储存技术,而且存储的数据可在多个参与者之间共享,人人可以参与,并具有相同的权力,一起记录数据,主要起到了数据储存的功能。
分布式存储是一种数据存储技术,通过网络使用每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在网络中的各个角落。所以,分布式存储技术并不是每台电脑都存放完整的数据,而是把数据切割后存放在不同的电脑里。就像存放 100 个鸡蛋,不是放在同一个篮子里,而是分开放在不同的地方,加起来的总和是 100 个。对于比特币来说,它的交易记录必须要有地方存放,不然没人知道今天有哪些人做了交易,同时根据去中心化的思想,这些交易记录不能够只存在一台电脑里面,那么就只能存放在世界上所有的电脑里面(前提是电脑里面安装了比特币软件)。这样做的好处是:虽然每个人的电脑硬盘容量有限,但是所有人的电脑硬盘加起来容量几乎是无限的,而且就算你通过黑客手段修改了自己计算机里面的交易记录,但是你没法修改全世界每台电脑的交易记录。
从表面上理解,上面说的这种存储方式很粗暴——每台电脑都存放世界上所有人的交易数据。但其实对于比特币来说,只有一些节点才会存放世界上所有人的交易记录,这些节点往往是那些挖矿的矿工,只有他们的电脑才能完整的记录下世界上所有的交易记录,大家不用担心矿工修改记录,因为世界上的矿工有很多,而且几乎相互都不认识。同时他们修改记录需要付出的代价非常大,几乎没有人能承担这个成本。
智能合约
1994年,计算机科学家和密码学家Nick Szabo首次提出“智能合约”概念。它早于区块链概念的诞生。Szabo描述了什么是“以数字形式指定的一系列承诺,包括各方履行这些承诺的协议”。虽然有它的好处,但智能合约的想法一直未取得进展——主要是缺乏可以让它发挥出作用的区块链。
直到2008年,第一个加密货币比特币才出现,同时引入了现代区块链技术。区块链最初是以比特币的底层技术出现的,各种区块链分叉导致发生很大的变化。智能合约在2008年依然无法融入比特币区块链网络,但在五年后,以太坊让它浮出水面。从此,涌现出了各种不同形式的智能合约,其中以太坊智能合约使用最广。
智能合约的概念可以追溯到1994年,由Nick Szabo提出,但直到2008年才出现采用智能合约所需的区块链技术,而最终于2013年,作为以太坊智能合约系统的一部分,智能合约首次出现。
上面提到了历史背景,下面从多个角度继续探讨。智能合约是一种特殊协议,旨在提供、验证及执行合约。具体来说,智能合约是区块链被称之为“去中心化的”重要原因,它允许我们在不需要第三方的情况下,执行可追溯、不可逆转和安全的交易。
智能合约包含了有关交易的所有信息,只有在满足要求后才会执行结果操作。智能合约和传统纸质合约的区别在于智能合约是由计算机生成的。因此,代码本身解释了参与方的相关义务。
事实上,智能合约的参与方通常是互联网上的陌生人,受制于有约束力的数字化协议。本质上,智能合约是一个数字合约,除非满足要求,否则不会产生结果。
智能合约的特点
1.去中心化
智能合约使用分布式计算和存储,不存在中心化的硬件或管理机构。它的执行无需依赖第三方机构,合约的监督和仲裁都由计算机完成。
2.公开透明
智能合约部署在区块链上,合约内容公开透明。除交易各方的私有信息被加密外,任何人都可以通过公开的接口查询区块链数据和开发相关应用。
3.不可篡改
智能合约一旦部署之后其代码就不能被更改,只有预先实现特定功能才能执行“删除”,更改智能合约的唯一办法就是重新部署。
4.自动执行
智能合约的协议条款存储在代码中,在触发设定规则之后自动强制执行各种任务。
5.无需信任
由于节点之间的交换遵循固定的算法,区块链中的程序规则自行判断活动是否有效,其数据交互是无需信任的,因此交易对手也无须通过公开身份的方式让对方自己产生信任。
密码学
密码学,是一种特殊的加密和解密技术,区块链系统中,应用了多种多样的密码学技术,包括哈希算法、公钥私钥、数字签名等等,以此来保证整个系统的数据安全,并且证明了数据的归属。有了它我们才能在网络中证明“我是我”,才能证明这是我的比特币而不是你的比特币。
四大核心技术间的关系
1、分布式存储构建了区块链的基本初步框架
它相当于是一个分布式数据库,当一笔数据产生后,经大家处理,就会储存在这个数据库里面,所以分布式存储在区块链中起到了数据储存的作用。
2、共识机制在区块链中统筹节点行为、明确数据处理
因为分布式存储有着去中心化的特点,决定了区块链网络的结构呈现出分布式的状态,所以每个用户都可以自由地加入其中,共同参与数据的增删改查。但与此同时,就衍生出来了令人头疼的一个问题,即网络中参与的人数越多,全网就越难以保持相同诉求。
这样就需要另一套机制来协调全节点账目保持一致了。这时共识机制就出现了,制定一套规则来明确每个人处理数据的过程,并通过争夺管理权的方式来完成节点间的意见统一,最后谁最终取得管理权,全网就用谁处理的数据进行统一。所以共识机制在区块链中起到了统筹节点行为、明确数据处理的作用。
3、密码学决定底层数据架构
数据进入分布式数据库中,并不是单纯地打包进来,底层的数据构架却是由区块链密码学来决定的。
由数据库打包好的数据块,会通过密码学中的哈希函数处理成一个链式的结构,但因为哈希算法具备单向性、抗篡改等特点,所以只要在区块链网络中,数据一旦上链就不可篡改、且可追溯。
另外账户也会通过非对称加密的方式进行加密,进而保证了数据的安全,验证了数据的归属。
4、智能合约负责数据的执行与应用
最后,可以在分布式存储的客观条件上,搭建起智能合约,当我们需要解决“信任危机”的时候,通过智能合约,能将用户之间的约定由代码的形式进行条件筛选,并通过程序执行,而区块链中的数据,则可以通过智能合约进行调用、分解。所以智能合约在区块链中起到了数据的执行与应用的功能。