区块链定义
区块链作为一个分布式数据库。主要做的还是信息存储的工作,只是通过其各类机制,在不需要第三方机构介入的前提下让有共同需求但并不互相信任的实体之间也能以相对较低的代价达成一致,从而满足需求,除此之外,系统还有加密认证、高透明度等特性,能够满足一些业务需求。
- 只有增加和查询两种操作
- 共识机制来共同记账
- 容易追溯历史记录
- 历史记录几乎不可篡改
- 每个节点要永久保存历史记录
区块链类型
私有链
应用于某一个特定领域或者只是在某一个企业运行的区块链
主要是用于解决信任问题,如跨部门协作等场景,一般不需要外部机构来访问数据。
公有链
- 公开的交易
公开的交易,往往用于一些需要交易/数据公开的业务,如认证、溯源、金融等场景,比如比特币、以太坊和EOS等。SSS
联盟链
- 节点需要验证权限才能参与到区块链网络
最大的特征是节点需要验证权限才能参与到区块链网络中,而认证一般都是与其现实角色所关联的,因此,联盟链也具有中心化的属性,但效率、拓展性和交 易隐私则大大提升了。值得一提的是,联盟链往往不需要代币来作为激励,而是将参与的各个节点作为记账节点,通过区块链机制实现跨部门之间的业务协同 所带来的经济效益作为内部激励,是一种更健康、更符合企业应用的方式。
区块链系统组成基本框架
数据层 -> 网络层 -> 共识层 -> 激励层 -> 合约层 -> 应用层

数据层
底层物理存储结构,通过哈希指纹和密码学将交易数据打包成块并首尾相连。并且运用了密码学中的非对称加密和哈希算法,确保数据难以被篡改。
- 区块(Block): 数据的载体。包含区块头(记录前一区块哈希、时间戳、随机数等元数据)和区块体(记录具体的交易明细)


1 | Q:数据为何不可篡改? |
网络层
基于 P2P(点对点)协议,负责全网节点间的数据广播与组网,实现了分布式网络中各节点之间的信息传输与沟通
- P2P 网络
区块链网络架构一般采用的是基于互联网的P2P(peer-to-peer)架构,在P2P网络中,每台计算机每个节点都是对等的,它们共同为全网提供服务。而且, 没有任何中心化的服务端,每台主机都可以作为服务端响应请求,也可以作为客户端使用其他节点所提供的服务
中心化网络是所有人都连接至一个(或一组)中心化网络;
去中心化网络是有多个这样的中心网络,但没有一个单点网络可以拥有所有的信息。
下图很好地解释了它们之间的区别:

- 传输与验证机制:
- 传输:当某个节点发起交易或挖出新区块时,生成该数据的节点会将其广播到全网的其他节点以供验证。
- 验证:验证新交易or新区块的有效性。
- 具体验证形式:在接收到相邻节点发来的数据后,会首先验证该数据的有效性,若数据有效则按接收顺序为新数据建立存储池来暂存这些数据,并且继续向临近节点转发;若数据无效则立即废弃该数据,从而保证无效数据不会在区块链网络中继续传播。验证有效性的方法是根据预定义好的标准,从数据结构、语法规范性、输入输出和数字签名等各方面进行校验。
共识层
共识层是区块链的决策机制(被称为区块链的“灵魂”),作用就是在不同的应用场景下通过使用不同的共识算法,在决策权高度分散的去中心化系统中使得各个节点高效地达成共识。
常用的共识机制有PoW(Proof of Work)工作量证明,PoS(Proof of Stake)权益证明,DPoS(Delegated Proof of Stake委任权益证明,DBFT(Delegated Byzantine Fault Tolerance)等。
PoW 工作量证明 Proof of Work
谁算得快、消耗的算力多,谁就获得记账权
通过算力比拼来增加恶意节点的作恶成本。通过动态调整挖矿的难度来让一笔交易时间控制在 10 分钟左右(6 个确认),但随着比特币挖矿越来越火热,消耗资源越来越多,对环境造成破坏;有些矿池拥有大量资源,也会造成一些中心化的风险。
PoS 权益证明 Proof of Stake
通过权益(一般是代币)持有者进行投票来达成共识,这种机制不需要像工作量证明一样进行大量的算力比拼,但是也有一些风险,称为
Nothing at Stake问题,很多权益持有者会在所有区块都投注并从中获利。为了解决这个问题,系统设置了一些规则,如对同时在多个链创建区块的用户/在错误链上创建区块的用户设置一些惩罚机制。目前以太坊正在向这种共识机制转变。DPoS 委托权益证明 Delegrated Proof of Stake
选举出超级代表(Super Representative,简称 SR),即网络的指定区块生产者(或出块节点/Block Producer)。这些 SR 负责验证交易数据并将其记录到账本中,随后将包含新账目的区块广播至全网,并获得其他节点的认可。
维度 PoS(权益证明) DPoS(委托权益证明) 治理模式 直接民主(类似于股东大会) 间接/代议民主(类似于选举董事会) 记账权限 所有满足质押门槛的节点直接参与出块/验证 仅有被选出的少数超级节点(如 21/101 个)有权出块 出块节点规模 极其庞大(以太坊有数十万个活跃验证节点) 非常少且固定(通常为 21 ~ 101 个) 性能 (TPS) 中等~较高(受限于全网海量节点的同步效率) 极高(几千 TPS,秒级甚至毫秒级出块) 去中心化程度 较高,抗审查和抗单点故障能力强 较低,节点容易合谋或形成资本寡头 节点硬件要求 普通服务器或家用节点即可参与 对超级节点的计算能力与带宽要求极高 代表应用 以太坊(Ethereum)、Cardano(ADA) EOS、波场(TRON) PBFT 实用拜占庭容错算法 Practical Byzantine Fault Tolerance
PBFT 不依靠“挖矿算力”,而是依靠已知身份的节点之间进行多轮明名投票表决。假设系统中有 N 个节点,最多允许 f 个节点作恶或故障,系统必须满足
$$
N \ge 3f + 1
$$
(例如:允许 1 个节点作恶,全网至少需要如下个节点)。$$
3 \times 1 + 1 = 4
$$
预准备阶段(Pre-Prepare):主节点(Primary)将收集到的交易打包成区块,生成编号并广播给所有从节点。
准备阶段(Prepare):
从节点收到区块并校验无误后,向全网其他所有节点广播“Prepare 消息”。当任意节点收到了包括自己在内的 ≥2f + 1 个节点发送的 Prepare 消息时,说明全网多数节点已对该区块的顺序达成一致,进入 Prepared 状态。
提交阶段(Commit):
节点继续向全网广播“Commit 消息”。当任意节点再次收到如下个**≥ 2f + 1** Commit 消息时,该区块即被正式写入本地账本,完成最终确认。
激励层
经济系统:通过发行代币(Token)或手续费机制奖励贡献算力或资源的节点。
良性循环:鼓励更多节点参与维护网络安全和记账。
合约层
- 合约层封装了各类脚本、算法和智能合约,是区块链可编程性的体现。如果说数据、网络和共识三个层次作为区块链底层“虚拟机”,分别承担数据表示、数据传播和数据验证功能,合约层则是建立在区块链虚拟机之上的商业逻辑和算法,是实现区块链系统灵活编程和操作数据的基础。
- 智能合约作为区块链技术的关键特性之一,是运行在区块链上的模块化、可重用、自动执行的脚本,能够实现数据处理、价值转移、资产管理等一系列功能。
应用层
- 具体场景:直接面向用户的各种终端应用。
交易流程
学完上述的基础知识,你可能很懵逼,但是了解完整个交易的流程是什么,可能有些东西就明了
使用BTC的交易流程为例:
- 创建交易
- 广播交易
- 验证交易
- 矿工选择交易构造候选区块
- PoW 竞争
- 新区块广播
- 区块验证
- 区块被接受
- 确认增加
钱包(Wallet)基础
定义
钱包(Wallet)是一个管理私钥的工具,数字货币钱包形式多样,但它通常包含一个软件客户端,允许使用者通过钱包检查、存储、交易其持有的数字货币。它是进入区块链世界的基础设施和重要入口。
钱包 Wallet
│
├── ① 私钥 Private Key 控制账户并用于签名
│
├── ② 公钥 Public Key 公钥由私钥通过密码学算法生成。
│
├── ③ 地址 Address 账户的公开标识
│
├── ④ 助记词 Mnemonic
[^部分钱包用于恢复和派生密钥的机制,并非“钱包必然组成部分。助记词是利用固定算法,将私钥转换成十多个常见的英文单词。可以简单认为助记词和私钥功能是类似的,它只是作为区块链数字钱包私钥的友好格式。所以在此强调:助记词同私钥一样重要!由于它的明文性,不建议它以电子方式保存,而是抄写在物理介质上保管好,它和 Keystore 作为双重备份互为补充。]:
│
├── ⑤ 签名功能
│
└── ⑥ 钱包软件/硬件
类型
Cold Wallet
长期处于离线的钱包
- 私钥与网络隔离
- 降低私钥被网络攻击窃取的风险
- 使用相对不方便
- 更适合长期保存资产
常见形式:
- 硬件钱包
- 离线钱包
- 离线签名设备
Hot Wallet
需要网络连接的在线钱包
- 浏览器钱包
- 手机钱包
- 桌面钱包
常见形式:
- 浏览器钱包
- 手机钱包
- 桌面钱包