概要
区块链是去年比较火的概念, 而让它这么出名的一个经典应用就是比特币. 区块链并不是指一种特殊的新技术, 而是一系列技术方案的集合, 通过这些技术方案的结合, 解决了去中心化的信用问题.
区块链是概念, 比特币则是区块链落地的一个实例.
区块链包含的技术
- 去中心化 区块链本质是一个 分布式的数据库 , 没有中央服务器, 所有的内容分布式的缓存在各个客户端.
- 信息编码: 目的是防止信息被篡改 信息编码采用 SHA 算法, 因为它有以下特点:
- 原始信息编码后成 固定长度的字符串, 也就是 指纹
- 无法从指纹反推出原始信息
- 原始信息修改一点点, 指纹就发生很大的变化
- 加密: 目的是验证信息的真实性 一般采用非对称加密算法, 比如 ECC(椭圆曲线算法)
区块链的传输过程
- 发送方
- 原文 –> SHA 算法 –> 指纹
- 指纹 –> ECC 算法 + 私钥 –> 密文
- 原文 + 密文 + ECC 公钥 –> 发送广播
- 接收方
- ECC 公钥 + 密文 –> 指纹 1
- 原文 –> SHA 算法 –> 指纹 2
- 指纹 1 == 指纹 2 –> 接受成功; 否则信息非法
区块链的问题
-
客户端的信息如何同步? 当某个客户端 A 要改变自己的信息的时候, 比如 A 向 B 进行了付款.
这时 A 会广播交易信息, 所有接受到交易信息的客户端会同步自己的账本. -
区块链分叉如何处理? 比如, 以比特币为例:
- 客户端 A, B 账本是同步的, 最新的节点都是 x
- A 基于当前账本挖到了新的比特币, A 的账本变成 x –> y, 并且广播
- 同时, B 也基于当前账本挖到了新的比特币 z, B 的账本变成 x –> z, 并且广播
- 同步之后, 账本就发生了分叉, x –> y/z
如何解决分叉并不是区块链定义的范畴, 而是具体区块链应用自己定,
以 比特币 来说: 如果出现分叉, 那么分叉之后, 先达到 6 个区块的那个分支, 被认为是主链, 另一个分叉被废弃.
对于上面那个例子, y 和 z 之后, 谁先到 6 个区块, 谁就是主链, 另一个分叉会被废弃.