5

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

 3 years ago
source link: https://zhuanlan.zhihu.com/p/345332557
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前阵子股票、基金大涨,比特币也像打了鸡血一般狂涨,一度冲击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语言。

iqaMJbF.jpg!mobile

区块链的算法

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

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

区块链的价值

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

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

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

fEZ3amF.jpg!mobile

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

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

比特币的系统架构

iYZnuq7.jpg!mobile

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

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

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

aue6NnR.jpg!mobile

2.数据层

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

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

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

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

6.应用层

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

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

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

比特币数据结构

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK