跟我一起学习区块链技术 (1)
接着去年挖的坑, 继续科普.
为了老少咸宜, 这篇文章涉及的知识点比较杂, 如有疑惑, 欢迎在评论区互动.
1. 什么叫做区块链?
首先我们来说一下什么叫做区块链. 不要小看这三个字, 这可能是我觉得是区块链世界里的第一个劝退概念. 要理解这个概念, 需要有一些列的前置知识需要了解. 我来依次介绍一下
1.1 分布式数据库
说到区块链, 我们通常说这是一个去中心化的系统. 去中心化的, 分布式的系统.
比如比特币, 就是一个分布式的账本, 记录着运行于系统上的交易数据. 而每一组交易数据, 就是我们所说的区块. 每一个区块都包含了上一个区块的哈希值, 从创始区块开始连接到当前区块,这也是区块链的名称的由来. 这里面又提到了几个概念, 我们马上来说.
1.2 加密, 哈希, 公钥, 私钥
区块链的每一个区块都是由加密算法得来的. 主要的加密算法包括哈希和非对称加密.
哈希勉强可以算作是一种单向加密算法, 但是因为无法逆向, 所以更多看做一种签名算法. 这里不做过多的深究. 只要理解一段数据被哈希过, 你就没有办法从结果推算出被加密数据即可.
非对称加密涉及到公钥和私钥的概念.
我们先来说一下对称加密, 所谓对称加密就是有一把密钥, 用它加密后, 如果你知道这组密钥, 你就可以从结果还原被加密数据.
那么非对称加密呢? 非对称加密有两组密钥, 私钥用于自己对被加密数据进行加密, 而把公钥公开, 大家可以用公钥解密. 由于私钥加密只可以公钥解密, 同时公钥加密也只有私钥可解, 这样可以保证加密时, 数据防止篡改, 而且保证加密者身份唯一.
区块链怎么样应用这两种加密算法呢, 首先之前说了, 交易数据都写在区块里, 全系统第一个区块我们叫做创世区块, 写什么都行, 重要是后面的区块. 从第二个区块开始,每个区块的第一部分有前一区块的哈希值. 此外,区块里的每一笔交易数据,都有发起人的私钥加密保证安全性和合法性.
知道了区块的加密算法, 那么似乎大家都可以往这个链上增加区块了, 这没错, 但是如何保证分布式系统内每个节点所增加的区块的一致性, 即所有人对新增区块的认可, 这就需要了解共识算法.
1.3 如何达成去中心化的共识, pow, dpos, 挖矿, 见证人
什么叫去中心化的共识? 就是决定要不要在这个去中心化系统的总账上加一个块.
在中心化的系统里很容易, 中心说了算. 而在去中心化的系统里作决定, 其实非常复杂. 很早之前的系统里通常使用 bft 和它的诸多优化算法, 如 pbft, 而在区块链出现后, 又有了新的算法. 现在比较流行的区块链共识算法, 包括: pow, pos 和 dpos. 我认为这些概念是相当劝退的.
比特币采用的共识算法是 pow, proof of work, 即工作证明. 这个就是所谓的挖矿. 具体的挖矿过程实际上很复杂, 具体可以读一下<精通比特币>的第八章.
steem, bts 采用的共识算法是 dpos, delegated proof of stake,委任权益证明. 在 dpos 里的矿工叫做见证人(witness), 他们可以创建新的区块. 其中 steem 采用的是 20 + 1 名见证人, 具体可见: https://steemit.com/~witnesses 为什么你看到了 50 人? 读一下 steem 的白皮书就明白了.
所以再提到区块链为什么需要矿工? 什么叫挖矿? 见证人是什么鬼? 希望你能第一时间冒出因为去中心化系统需要共识算法, 需要人来创建区块(记账), 就好了.
1.4 小结
这一部分主要介绍了什么是区块链和区块链里的一部分核心概念, 算作入门, 希望读完能有些收获. 由于区块链相关概念确实比较多, 所以打算拿出两个章节来做概念整理, 后面开始敲代码.
#bitcoin
why people talk about bitcoin