区块链简介

区块链简介

  1. 区块链是什么?一句话,它是一种特殊的分布式数据库

  2. 区块链特点:去中心化,解决相互信任问题

  3. 区块:区块链由一个个区块(block)组成。区块很像数据库的记录,每次写入数据,就是创建一个区块

    区块链

  4. 区块内容包括:

    版本号:4 字节;
    上一个区块头的 SHA256 hash 值:链接到一个合法的块上,32 字节;
    包含的所有验证过的交易的 Merkle 树根的哈希值,32 字节;
    时间戳timestamp:4 字节;
    难度指标difficulty:4 字节;
    Nonce:4 字节,PoW 问题的答案;

    10分钟内的所有交易内容

  5. 共识机制

    解决分布式一致性问题

    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数据

  6. 区块链合并

    如果同一个时刻有多个人在修改一个区块链,取长度最长的那个区块链

  7. 安全:通过加密SHA265算法保证

  8. 公有链,联盟链,私有链

  9. 智能合约:区块链触发器,一堆代码实现的业务逻辑

  10. 矿工收益:

    • 手续费
    • 奖励的比特币


比特币:

  1. 基于区块链的技术,通过PoW算法达成分布式一致性。通过挖矿产生新的区块记录交易信息

  2. 挖矿

    目的:产生区块

    方法:每个计算节点计算hash值,当hash值小于某个难度系数才有效。区块链保证平均每10分钟能够产生一个有效hash值。难度系数每两周(2016个区块)调整一次,使得能够保持平均每10分钟能够产生一个有效区块


区块链、以太坊

比特币使用了区块链技术,而以太坊是区块链技术的一个实现平台

从交易延伸到了智能合约


开放问题

为什么比特币要挖矿

比特币为什么使用PoW共识算法


简易版区块链

  • 需求1:简单区块链

    1. 设计实现api增加区块(代替挖矿),查看区块链

    2. 区块定义:节点编号,生成时间,当前节点hash值,前一个节点hash值,自定义数据(int)

    3. 符合区块链的基本原理

      • 当前节点hash=hash(previous_hash + index+timestamp+data)
      • 检查区块引用的上一个区块是否存在且有效,即当前节点previoushash=前一个节点hash
      • 当前节点的编号=前一个节点编号+1
    4. 方便起见,初始化第一个节点为

      index=0

      Timestamp=0

      data=0

      hash=”f78b037f6d1ecfc5a00bc7d96858bdc7af9ac8dbf95fdd5736d0f950ab279b9e”

      previoushash=””

  • 需求2:设计P2P区块链

    1. 在第一个需求基础上,增加P2P通讯接口(增加node,查看nodes)。
    2. 可以通过websocket远程通信多个节点,并同步区块链信息。同步规则为:
      • 当节点A产生一个新的区块,A节点广播新增区块信息到所有节点。如果B节点收到新增区块并且验证可以增加到本地区块链中,则增加。如果不能,需要广播获取网络中最长的区块链并覆盖本地区块链
    3. 其他同上
  • 需求3:Pow

    1. 在前两个基础上,增加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

https://blockchain.info/

http://www.ey.com/Publication/vwLUAssets/ey-blockchain-platform-research-and-analysis-cn/$FILE/ey-blockchain-platform-research-and-analysis-cn.pdf