区块链简介
区块链是什么?一句话,它是一种特殊的分布式数据库
区块链特点:去中心化,解决相互信任问题
区块:区块链由一个个区块(block)组成。区块很像数据库的记录,每次写入数据,就是创建一个区块
区块内容包括:
版本号:4 字节;
上一个区块头的 SHA256 hash 值:链接到一个合法的块上,32 字节;
包含的所有验证过的交易的 Merkle 树根的哈希值,32 字节;
时间戳timestamp:4 字节;
难度指标difficulty:4 字节;
Nonce:4 字节,PoW 问题的答案;10分钟内的所有交易内容
共识机制
解决分布式一致性问题
PoW:Proof of Work。计算一个hash值,小于一个特定的数值。当掌握超过51%的计算,即可控制区块链网络。缺点是慢
PoS:Proof of Stake。权益证明,解决Pow浪费资源问题。获得的权益越多,获得记账的概率越大
PBFT:实用拜占庭容错算法。至少4个节点,n为节点个数,F为可以出错的节点个数,当满足n>3F+1则PBFT算法可以保证节点达到共识。速度比较快
Paxos: 三类角色:proposer,acceptors,learners,也是通过二阶段提交的方式,prepare和accept两个阶段,如果一个proposal被大多数acceptors接受了,该proposal就表示被接受
Raft:简易版paxos,leader,follower,candidate。通过投票选举leader,超过一半的节点认同即可成为leader。follower通过log同步leader数据
区块链合并
如果同一个时刻有多个人在修改一个区块链,取长度最长的那个区块链
安全:通过加密SHA265算法保证
公有链,联盟链,私有链
智能合约:区块链触发器,一堆代码实现的业务逻辑
矿工收益:
- 手续费
- 奖励的比特币
比特币:
基于区块链的技术,通过PoW算法达成分布式一致性。通过挖矿产生新的区块记录交易信息
挖矿
目的:产生区块
方法:每个计算节点计算hash值,当hash值小于某个难度系数才有效。区块链保证平均每10分钟能够产生一个有效hash值。难度系数每两周(2016个区块)调整一次,使得能够保持平均每10分钟能够产生一个有效区块
区块链、以太坊
比特币使用了区块链技术,而以太坊是区块链技术的一个实现平台
从交易延伸到了智能合约
开放问题
为什么比特币要挖矿
比特币为什么使用PoW共识算法
简易版区块链
需求1:简单区块链
设计实现api增加区块(代替挖矿),查看区块链
区块定义:节点编号,生成时间,当前节点hash值,前一个节点hash值,自定义数据(int)
符合区块链的基本原理
- 当前节点hash=hash(previous_hash + index+timestamp+data)
- 检查区块引用的上一个区块是否存在且有效,即当前节点previoushash=前一个节点hash
- 当前节点的编号=前一个节点编号+1
方便起见,初始化第一个节点为
index=0
Timestamp=0
data=0
hash=”f78b037f6d1ecfc5a00bc7d96858bdc7af9ac8dbf95fdd5736d0f950ab279b9e”
previoushash=””
需求2:设计P2P区块链
- 在第一个需求基础上,增加P2P通讯接口(增加node,查看nodes)。
- 可以通过websocket远程通信多个节点,并同步区块链信息。同步规则为:
- 当节点A产生一个新的区块,A节点广播新增区块信息到所有节点。如果B节点收到新增区块并且验证可以增加到本地区块链中,则增加。如果不能,需要广播获取网络中最长的区块链并覆盖本地区块链
- 其他同上
需求3:Pow
- 在前两个基础上,增加Pow
开放问题答案
为什么比特币要挖矿
货币的本质是购买力,如果货币被不断增发,其所代表的购买力将不断下降,就会出现通货。比特币原本的目的是为了解决通货的问题。为了保证比特币的稀缺性,比特币作者使用算力来体现稀缺性,所以需要挖矿才能产生比特币
比特币为什么使用PoW共识算法
因为是公网环境,网络情况不稳定,安全性较差,所以PoW是一种相对公平可以达到一致性的算法,虽然效率较低。相比PoS,PBFT,Raft等算法性能会高很多。
参考资料:
http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html
https://medium.com/@lhartikk/a-blockchain-in-200-lines-of-code-963cc1cc0e54
https://medium.com/@mycoralhealth/code-your-own-blockchain-in-less-than-200-lines-of-go-e296282bcffc
http://www.infoq.com/cn/articles/bitcoin-and-block-chain-part02 Pow