把市值3.5万的比特币按在地上爆锤,区块链才是究极王者!

前阵子股票、基金大涨,比特币也像打了鸡血一般狂涨,一度冲击4w大关。紧接着,各种凡学新闻扑面而来: 丢了2.4个亿的程序员、花10000比特币买pizza……

然而很多人不知道 比特币的底层应用——区块链 。在入币圈之前,建议别盲目投机,先把底层原理搞清楚,才不至于被人割韭菜。

关于区块链,这必须要请出我们的广贞老师了,目前国内TOP1教育科技集团区块链团队领队,带领团队获得国内区块链专利17项,教育部《区块链在教育领域中的应用》白皮书主要执笔人之一。

要学习区块链技术,首先要对区块链的概念和组成有基本的认识,这样学习才会有方向。以下内容是广贞老师《 区块链实战—从原理到应用 》的干货分享,话不多说,我们进入正题。

区块链的组成

  • 区块链存储是一种链式存储,区块链按生成的时间顺序前后链接( 时间戳 )。
  • 区块生成后会在区块链系统的各个节点做分布式同步,存在多个全量数据节点( 分布式一致性、CAP )。
  • 异地分布式同步,远程通信及协议。( 点对点通信
  • 严禁数据删改,登记一切数据操作历史。( 日志系统
  • 区块链上每一步操作、数据传输、状态转移,均须建立在可信计算的基础上。( 密码系统、安全计算

区块链的技术组件

  • 语言基础:JAVA/GO/C++
  • 分布式一致性工具:Kafka/Zookeeper/ETCD
  • 数据库:FS/Nosql/MemCache/SqlServer
  • HTTP协议:P2P/WebSocket/HTTP/RPC
  • Docker

区块链技术研发推荐用Go语言,也有用Java的。比如蚂蚁金服团队主要是招Java工程师,做业务端工作,安全方面的算法工作会用偏底层的C++。不过从大趋势来看,Go语言会是主流,比如腾讯云招人指定要求Go语言。

区块链的算法

  • CAP: Paxos/Raft/XBFT/PoW
  • Crypto: ECC/SHA-256/AES
  • Graph: DAG
  • P2P: Kademlia/DHT
  • 协议: P2P/GHOST/Gossip

其中前两项必需,后几项有的话加分。

区块链的价值

学习区块链技术自然要考虑区块链的价值。《资本论》有云: 使用价值是价值的前身。 所以在讨论区块链的价值之前,一定要看区块链的使用价值。我们说 链上数据的使用价值决定了区块链的使用价值,而区块链的使用价值,确保了链上数据的使用价值。

无论是自己使用,还是面试时考虑雇主情况,一定要首先想明白这个问题。

目前,2个经典公链(比特币和以太坊)和1个经典联盟链(超级账本Fabric),基本全面覆盖了区块链的技术体系,包括 系统架构、共识机制算法和区块数据结构 。区块链的体系结构是通过“层”的形式的。

来源:《区块链白皮书(2018)》

这里我们以比特币为例,来详细拆解区块链技术。

比特币的系统架构

1.存储层 :用于存储系统日志数据和元数据,主要使用文件系统和LevelDB。

  • 键值数据库,按键有序存储,可自定义键大小比较方法
  • 底层存储利用了 LSM 树的思想
  • 提供增删改查,相比 Redis 大量省内存,持久化存储
  • 支持数据快照,支持批处理,读写分离,可能看到脏数据
  • 支持数据压缩
  • 性能:写 40万/秒,读 6-10万/秒(LSM)

其中LSM解决传统硬盘读写机制,随机读写远逊于顺序读写的问题,相差至少三个数量级。

2.数据层

  • 将数据打包成为区块
  • 区块中内容的加密与散列计算
  • 区块内容的数字签名
  • 为区块打上时间戳印记
  • 将交易数据构建成为默克尔树,计算树根散列值
  • 将区块构建为链式结构

3.网络层 :构建动态点对点通信网络,支持实时网络节点的加入和离开。

4.共识层 :工作量证明的共识算法,本质是分布式锁。

5.通信层 :提供“远程过程调用”服务结构,提供JSON接口供客户端访问底层服务。

6.应用层

  • 远程过程调用客户端;
  • 比特币钱包管理钱包(地址)、查看余额、转账等操作;
  • 彩虹币,游戏充值等等

比特币共识机制——工作量证明

  1. 基于散列算法实现。
  2. 暴力攻击一个结构化的目标散列值(前导若干个零的目标值)。
  3. 基于1、2,除了暴力破解别无它法(即所谓的『电子计算机的工作量』)。
  4. 自动化检测暴力攻击效率,随着攻击效率提高,提高破解难度。
  5. 基于4,维持平均破解时间在十分钟左右,每两周(2016个块)调整一次难度。
  6. 是目前唯一一个,『可信时间戳』自建,不依赖外部授时的内建时间系统(生物钟)。

比特币数据结构

  • 上述六个字段里,nVersion、hashPrevBlock、nBits是全网统一的。
  • nBits每2016个区块链调整一次,调整算法固定。剩下的三个字段,则每个节点均有权自建。
  • nNonce是用于攻击SHA-256目标散列值的可调参数,但它不是唯一的可调参数,通过调整交易顺序,以及关联的手续费而决定的该区块的币基值,以及币基收益地址,hashMerkleRoot的值也会变化。
  • nTime用于区块竞争,同一高度的新生区块,该值最小的被全网采用,因此矿工会尽可能让该值取小。虽然由矿工自定,但受规则约束,该值不得早于前11个区块的时间戳中位数,否则视为非法区块。

另外关于 以太坊超级账本Fabric 的架构,广贞老师在《 区块链实战—从原理到应用 》都会有详细讲解,另外还会带你手把手实战3个区块链项目,首节课程目前免费开放中,想要从事区块链开发或者对区块链行业有兴趣的同学可以来看看。