区块链技术

引言:区块链技术——内容繁杂,拆成多个文章

区块链技术

区块链技术的内容包罗万象:分布式技术、密码学、金融等等内容

什么是区块链?

关于区块链的理解有很多:一种数据结构、一种交易数据库、一种分布式数据库技术

狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求。

广义上,区块链还指代基于区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等

基本原理

可以看看这个视频:Anders

  • 交易(Transaction):一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录;
  • 区块(Block):记录一段时间内所有交易和状态结果等,是对当前账本状态的一次共识;
  • 链(Chain):由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。

特点:

1、 Chain类似于一个链表,每一个节点都是一个Block,每个Block上打包了多笔Transaction

2、 每个Block存放上一个Block的哈希值(数字摘要),如何查看交易是否合法,就是查看这个hash值是否变化

3、 每一笔Transaction都会改变一次账本的状态;每一个Block都是共识的结果

比特币的区块链构建流程

首先比特币网络的结构:用户及其客户端、网络中的多个节点(矿工)

  1. 客户使用client向网络中发布一笔Transaction
  2. Client向整个net中广播
  3. 每个Node接收到后,将该时间段所有的待确认的Transaction打包在一起,加上前一个Block的hash值,并试图寻找一个Nonce值(比如在Sha256算法中,规定前导零,运算次数越多的节点,算到Nonce的概率越大)
  4. 当有一个Node计算出Nonce值后,向Net内广播
  5. 其他Node值接收到消息后,验证是否合法,合法就将这个新的Block保存在自己本地的Chain上
  6. 继续下一笔交易

区块链的分类

按照参与者的范围来划分:

  • 私有链:内部少数人使用(与传统的中心化记账方式区别不大)
  • 联盟链:介于两者之间,由若干组织一起合作(如供应链机构或银行联盟等)维护一条区块链,使用该链必须有权限(超级账本)
  • 公有链:任何人都可以参与和维护的(比特币、以太坊)

三者的可信任程度依次上升:因为节点数越多,作恶的难度会成倍上升

按照使用场景来划分:

  • 货币链:以太币、比特币、狗狗币
  • 产权链:各种产权证明等等
  • 众筹链:众筹相关
  • 通用链:没有具体的场景的区块链

区块链关键问题与挑战

  • 隐私保护:平衡共享协同信息和隐私保护
  • 分布式共识:共识机制——Paxos、拜占庭算法、PoW、PoS
  • 交易性能:比特币大约每秒7笔、以太坊每秒几十笔,之前基于区块链的游戏CryptoKitties造成网络拥堵
    • 提升单个节点性能
    • 将交易处理放在链下,只用区块链存储最后结果
  • 扩展性:与传统分布式系统只需增加节点不同,区块链对单个节点的性能具有一定的要求
    • 网络中每个参与维护的核心节点都要保持一份完整的存储,并且进行智能合约的处理
  • 安全防护:区块链首先要考虑传统的网络安全(认证、过滤、攻防)、信息安全(密码配置、密钥管理)、管理安全(审计、风险分析控制)、新场景下的安全挑战
  • 数据库和存储系统:区块链有大量的读写操作、Hash 计算和验证操作,甲骨文、AWS已经开始做针对于区块链特性的“账本数据库”
  • 互操作与运营治理
    • 互操作:指现有的商业流程和信息系统集成时的平滑度
    • 运营治理:如何维护好区块链的运行

核心内容

  • 分布式技术
  • 密码学
  • 比特币
  • 以太坊
  • 超级账本