区块链技术
区块链技术
区块链技术的内容包罗万象:分布式技术、密码学、金融等等内容
什么是区块链?
关于区块链的理解有很多:一种数据结构、一种交易数据库、一种分布式数据库技术
狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求。
广义上,区块链还指代基于区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等
基本原理
可以看看这个视频:Anders
- 交易(Transaction):一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录;
- 区块(Block):记录一段时间内所有交易和状态结果等,是对当前账本状态的一次共识;
- 链(Chain):由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。
特点:
1、 Chain类似于一个链表,每一个节点都是一个Block,每个Block上打包了多笔Transaction
2、 每个Block存放上一个Block的哈希值(数字摘要),如何查看交易是否合法,就是查看这个hash值是否变化
3、 每一笔Transaction都会改变一次账本的状态;每一个Block都是共识的结果
比特币的区块链构建流程
首先比特币网络的结构:用户及其客户端、网络中的多个节点(矿工)
- 客户使用client向网络中发布一笔Transaction
- Client向整个net中广播
- 每个Node接收到后,将该时间段所有的待确认的Transaction打包在一起,加上前一个Block的hash值,并试图寻找一个Nonce值(比如在Sha256算法中,规定前导零,运算次数越多的节点,算到Nonce的概率越大)
- 当有一个Node计算出Nonce值后,向Net内广播
- 其他Node值接收到消息后,验证是否合法,合法就将这个新的Block保存在自己本地的Chain上
- 继续下一笔交易
区块链的分类
按照参与者的范围来划分:
- 私有链:内部少数人使用(与传统的中心化记账方式区别不大)
- 联盟链:介于两者之间,由若干组织一起合作(如供应链机构或银行联盟等)维护一条区块链,使用该链必须有权限(超级账本)
- 公有链:任何人都可以参与和维护的(比特币、以太坊)
三者的可信任程度依次上升:因为节点数越多,作恶的难度会成倍上升
按照使用场景来划分:
- 货币链:以太币、比特币、狗狗币
- 产权链:各种产权证明等等
- 众筹链:众筹相关
- 通用链:没有具体的场景的区块链
区块链关键问题与挑战
- 隐私保护:平衡共享协同信息和隐私保护
- 分布式共识:共识机制——Paxos、拜占庭算法、PoW、PoS
- 交易性能:比特币大约每秒7笔、以太坊每秒几十笔,之前基于区块链的游戏CryptoKitties造成网络拥堵
- 提升单个节点性能
- 将交易处理放在链下,只用区块链存储最后结果
- 扩展性:与传统分布式系统只需增加节点不同,区块链对单个节点的性能具有一定的要求
- 网络中每个参与维护的核心节点都要保持一份完整的存储,并且进行智能合约的处理
- 安全防护:区块链首先要考虑传统的网络安全(认证、过滤、攻防)、信息安全(密码配置、密钥管理)、管理安全(审计、风险分析控制)、新场景下的安全挑战
- 数据库和存储系统:区块链有大量的读写操作、Hash 计算和验证操作,甲骨文、AWS已经开始做针对于区块链特性的“账本数据库”
- 互操作与运营治理:
- 互操作:指现有的商业流程和信息系统集成时的平滑度
- 运营治理:如何维护好区块链的运行
核心内容
- 分布式技术
- 密码学
- 比特币
- 以太坊
- 超级账本