本系列内容包含:基本概念及原理、密码学、共识算法、钱包及节点原理、挖矿原理及实现。
区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,或称之为公共账本,其每一个区块记录一段时间内产生的转账等一些其他信息。
与传统账本的区别是,无论有没有新的交易产生,有没有新的帐目产生,区块都会按照约定的时间去出块,这就是区块的产生。如果这段时间没有新的交易产生,那产生的就是我们所谓的空块。
同时,绝大多数区块链项目都会对区块加一个大小的限制,也就是说单个区块可以记录的最大信息的容量。
举个例子,比特币的区块大小是1M,所以BTC的每个区块中最多能记录大约3000笔的交易。如果矿工想打包更多的交易,那就不得不提高区块的上限。
第一个特点,匿名性。所有的数字货币都没有署名,大家可以看下下面这张图。
这是一张比特币的一个区块的交易信息,我们可以看左侧的都是转出的地址,以及对这个地址转出的金额。右侧是转入地址,以及这个地址接收到的比特币金额。
我们拿第1笔交易来看,这笔交易意思是:地址 bc1q…syad 转出了0.05718823个BTC,这些BTC分别转到了,右侧的两个地址,第一个地址 386U…8mg8 接收到了0.00005663个BTC;第二个地址 bc1q…mkuy 接收到了0.05706003个BTC。
大家可以看到,所有的记录信息中,只有地址和数量,不包含任何个人信息。也就是说从这个地址中无法找到地址所有者的任何信息,因此比特币也一直深受黑市和黑客们的欢迎。
数字资产的所有权,也就是地址对应的私钥,拥有了私钥就拥有了这个地址上的数字资产。反之,如果丢失了这个私钥,也就永远的无法找回这部分数字资产。
第二个特点,不可篡改。简单来说,就是说所有已经上链的交易不能被更改。
在生活中大家接触最多的是数据库,数据库最基本的操作是增删改查,其中删除和修改就是对数据库中已有记录的信息进行变更。为了避免数据损坏,防止数据库被恶意修改,运维经常需要对数据库进行一个备份。
而区块链的特点是其上面的数据是不可篡改的,这个不可篡改主要有两点来保证。
第一点,所有每个区块都通过区块头中的哈希,与前面的区块紧紧的绑定在一起。
在这样的设计下,单纯修改一个区块是没有意义的,因为所有区块都是连在一起的。假如第一个区块被修改了,那这个区块后面的所有区块都无法找到它的潜入区块。
因为把这个区块的一个交易修改以后,整个区块的哈希就改变了,要想后面的区块都连起来,就必须把后面所有的区块都重新再产生一遍,这是几乎不可能的。难度非常非常大,这个难度为什么大我们后面会展开来说。
第二点,所有的节点都保存了完整的区块数据。
如果仅仅更改其中一个节点,或者其中一部分节点的数据,也不能改变全网的状态。因为全网中还有其他更多的节点是不被控制的,任何人无法去修改这些节点的数据。
通过这两点,保证了链上数据的不可更改。
第三个特点,去中心化。去中心化就是没有中心,所有节点的功能都是一样的,都是平等的,里面的数据也是完全一样的。
即每个节点都有一个完整的账本,每个账本中都记录了从创始区块(高度为0的区块)到现在所有的信息。
而我们一般接触到的传统金融系统,是分级保管的,每级仅保管了本级以下的数据。例如,省级的分行不会保管其他省分行的数据。
假设北京的分行需要访问上海分行的数据,他必须向上级,例如总行,去申请数据访问的授权。
第四点,可追溯。可追溯的意思是,任何人可以很容易的查询每一笔交易的所有流向。因为每一个节点都有整个系统的全部数据,同时所有的交易和区块都是严格绑定在一起的
需要注意的是,这四个特点也不是完全绝对的。
首先说匿名性和可追溯性之间就有一定的矛盾性。因为现在数字货币的交易基本是通过中心化的交易所或者场外的一些OTC交易来完成的。而目前绝大多数的交易所都需要对用户进行实名认证,这就导致了匿名性的失效。
比如著名的门头沟事件,经过其中一些受损失的投资人的努力,他们丢失的BTC已经找回来了一部分。
虽然刚开始门头沟丢失的BTC中间经过不断的转换地址,但最终汇总到了后面的几个地址。受损人通过不断查询,最后通过这些地址成功找到了当时攻击交易所的这个人,也追回了当时丢失的BTC,这也体现了区块链的可追溯性。
第二,不可篡改的不绝对性。区块链项目中讲的最多的是共识,如果所有节点对某一件事都达成了共识,那么这件事就可以实施,比如说修改已经确认的数据。
比较典型的一个例子是以太坊的The DAO事件,当年The DAO使用以太币来众筹,结果超过1200万个以太币被黑客盗取,以太坊创始人提出设想,通过硬分叉使得黑客利用漏洞转出交易的区块失效,以此找回丢失的以太币。
当时有约450万以太币参与投票,超过90%的以太坊算力支持硬分叉,因此以太坊硬分叉成功。这样分叉产生的新链是以太坊ETH,旧链是以太经典ETC。
最后再说一下去中心化。其实现在越来越多的区块链项目开始推出超级节点,社区参与治理的模式,而超级节点比普通节点具有更多的权利和功能。
比如EOS的超级节点,经过超级节点间的集体仲裁可以锁定,某个用户的账户。
其它链中的一些超级节点,一般会作为矿工的一部分,参与区块链的共识。而普通节点仅仅只能作为账本的保管者,保管和验证区块的有效性和完整性。
下期预告:区块链进阶原理