纯理论,我都听睡着了。
第一天,通过视频来了解区块链原理,B站视频:传送门
1.从比特币到区块链
比特币是电子现金系统,不依赖于第三方而实现点对点的线上交易
区块链是保障比特币可以运行的底层技术
区块链解决的最重要的问题是交易各方之间的信任问题
2.区块链如何运行
2.1.区块与区块链
区块:一段时间的账单
区块链:账本
2.2.账户体系
公钥和私钥
私钥:只有用户知道的秘钥,用来签名交易
公钥:哈希处理后的用户标识符
2.3.多人竞争记账
为了决定谁有权记录新区块,许多区块链使用工作量证明(PoW)机制:
- 矿工们竞争解决复杂的数学难题(找到使区块头哈希值小于特定目标的随机数)
- 第一个解决问题的矿工获得奖励
2.4.UTXO模型
未花费交易输出(UTXO)模型是比特币等区块链使用的账户模型:
- 每笔交易都消耗之前交易的输出并创建新的输出
- 钱包余额是所有未花费输出的总和,而不是直接记录账户余额
- 交易输入必须完全消耗,多余部分作为找零返回
- 这种模型有助于提高隐私性和并行处理能力
2.5.”双花“和最长链原则
双花是指同一笔资金被花费两次的尝试:
- 区块链通过共识机制防止双花
- 链出现分叉的时候,网络认可最长的链作为权威版本
- 交易通常需要等待多个确认才会视为最终确认,防止短期分叉导致的双花
2.6.区块链分类
- 公有链:任何人都可以参与,完全去中心化,如比特币、以太坊
- 联盟链:由预选的组织共同维护,部分去中心化,如Hyperledger Fabric
- 私有链:由单一实体控制,中心化程度高,但提供更好的性能和隐私保护
3.区块链的骨骼与灵魂
3.1.非对称加密函数
RSA
原理:基于大数分解的困难性,使用两个大质数的乘积作为密钥的基础
ECC
原理:基于椭圆曲线上的离散对数问题
3.2.哈希函数
哈希函数特性:
- 单向性:无法从哈希值反推原始数据
- 确定性:相同输入产生相同输出
- 雪崩效应:输入微小变化导致输出显著不同
- 抗碰撞性:难以找到产生相同哈希值的两个不同输入
梅克尔树:
结构:二叉哈希树,叶节点是数据块的哈希值,非叶节点是其两个子节点哈希值的哈希
工作原理:
- 交易被哈希为叶节点
- 相邻的哈希值对被组合并再次哈希,形成上一层节点
- 此过程重复直到获得单一根哈希(梅克尔根)
优势:
- 快速验证:可以仅使用梅克尔根验证区块完整性
- 高效证明:轻节点可以通过梅克尔证明(约log₂(n)个哈希)验证交易包含在区块中
- 节省存储空间:轻节点无需存储完整区块数据
区块指针:
概念:每个区块通过存储前一个区块的哈希值形成链式结构
3.3.拜占庭容错问题
拜占庭将军问题:
问题描述:多个将军需要协调一致的进攻或撤退决策,但通信信道不可靠且将军中可能有叛徒
拜占庭容错(BFT):
定义:系统能够在部分节点出现任意故障(包括恶意行为)的情况下继续正常工作
理论限制:容忍f个拜占庭故障需要至少3f+1个节点
3.4.主流的共识机制
PoW(工作量证明):
原理:矿工通过解决计算难题(寻找特定哈希值)来获得创建新区块的权利
PoS(权益证明):
原理:节点根据持有代币的数量和时间获得创建新区块的概率
DPoS(委托权益证明):
原理:代币持有者投票选出有限数量的代表(通常21-101个)来验证交易和创建区块
PBFT(实用拜占庭容错):
原理:通过多轮投票达成共识,适用于已知验证者身份的系统