区块链是什么?
其实,区块链的本质就是一项去中心化的分布式账本技术,这项技术拥有去中心化、不可篡改、透明性、安全性、分布式账本、共识机制、可追溯性等等特性。
区块链的组成
如果实现一条区块链,只有 P2P网络层模块,这是不够的。因为 P2P 网络层只是让所有节点平等地参与网络,不依赖中心服务器,每个节点既是客户端,又是服务器,负责数据传播。 但是它还不能防止恶意节点篡改数据,并且没有数据一致性。于是再加入一个共识算法层让整个网络中的节点达成一致,确保链的唯一性。但是光有这两个模块也不够,共识只保证数据一致,不能提供存储,并且也不保证数据的安全。于是再增加两个模块,数据存储层,记录区块数据,允许所有节点都能验证数据,不可篡改。加密算法层 确保数据安全,防止伪造,确保交易签名,防止身份被盗,确保哈希不可篡改,保证数据完整性。
比特币公链组成 = P2P网络层 + 共识算法层(POW) + 数据存储层(LevelDB 等) + 加密算法层 (哈希算法、非对称加密算法等等)+ 激励层 (BTC)
以太坊公链组成 = P2P网络层 + 共识算法层(POW + POS) + 数据存储层( Merkle Trie ,LevelDB等) + 加密算法层 + 激励层 (ETH)+ 智能合约
所以你会发现,实现一条基本的区块链,至少需要包含 P2P网络层、共识算法层 、数据存储层 、加密算法层 四大模块。只要实现这四大模块就能够称为区块链。也就是说,只要你实现了这四个思想那你就能够实现一个最基本的区块链了。也正因为实现了这四个模块,所以区块链才会具有去中心化、不可篡改、透明性、安全性等等特性。
那实现这些模块都有哪些具体的方法呢?
P2P网络层:Kademlia DHT + Gossip 等。
共识算法层:PoW、PoS、DPoS、PBFT等等实现。
数据存储层:Merkle Tree、LevelDB、RocksDB 等等实现。
加密算法层:哈希算法、对称加密算法、非对称加密算法、零知识证明等等实现。
这里用咖啡来举个例子吧,一杯咖啡的最小组成是 容器 + 咖啡液,只要你用一个容器装着咖啡液,那这就是一杯咖啡,不管你是用纸杯还是玻璃杯还是陶瓷杯,它就是一杯咖啡。但是当你再往里面增加一些其他的佐料的时候,就会有不一样的叫法了,比如:
容器 + 咖啡液 = 一杯浓缩
容器 + 咖啡液 + 水 = 一杯美式
容器 + 咖啡液 + 水 + 奶(燕麦奶|纯牛奶)= 一杯拿铁
容器 + 咖啡液 + 奶(燕麦奶|纯牛奶)+ 奶泡= 一杯卡布奇诺
区块链也是一样。
所以我们可以看到,不管比特币公链,以太坊公链还是其他的区块链也好,它的底层都是实现 P2P网络层 + 共识算法层 + 数据存储层 + 加密算法层 的区块链,然后在此基础上增加多其它模块去实现它的个性化。
那有人就问了,我看到以太坊是用 Go 语言写的,我可以使用其他语言去实现区块链吗,那当然可以,不管你是C++还是Java还是Go,只要你实现了区块链所需的最小模块,那你就是实现了区块链。
就好比你要做咖啡,你选意大利的咖啡豆也好,选云南的咖啡豆也罢,你能做出咖啡液在里面就行。
那有人可能会有疑问了,既然有了比特币公链为啥还要实现以太坊公链还有其他一大堆的公链呢?
尽管比特币公链已经实现了交易的功能,但是不具备灵活性和可编程性,于是以太坊进行实现了智能合约,使区块链变得更加灵活和可编程。但是随着时间的推移,这些公链也会出现一些新的问题,比如交易量大,速度慢等问题,导致交易阻塞,于是又有人提出了进一步的优化,就又出现了其他的公链。
其实和咖啡一个道理,单纯一杯浓缩你觉得太苦,于是你想解决苦这个问题,你加了水,可是你发现加了水也有点苦,于是你加了纯牛奶,但是纯牛奶你觉得口感还是差了些,于是你加了燕麦奶,总之不管如何,你总是能想出更不一样的做法去优化之前存在的问题。
为什么说区块链是透明的、开放的,但又是匿名的,保护隐私的?
我们来看一下以下数据
转账发起者 | 转账接收者 | 金额 | 时间 |
---|---|---|---|
A | B | 10RMB | 2025年03月10日 |
B | C | 12RMB | 2025年03月10日 |
C | A | 15RMB | 2025年03月10日 |
你是不是发现,谁给谁转账,其实你都能看到,其他人也能看到,这就是它的透明性、开放性,数据大家都可以看到。
但是当问起 ABC 是分别是谁的时候,我们并不能够知道它是谁。这就是它的匿名性,保护隐私。
什么是私有链、联盟链、公链呢?
当你这条链都归属一个人或者机构的时候,这就是私有链。
当你这条链只有一些经过允许的机器加入到该条区块链的网络中的时候,并不是完全公开的区块链,这就是联盟链。
当你这条链都允许大家(任何机器)加入到这条链的开放网络中的时候,这就是公链。
区块链就像咖啡的进化史,最开始只有浓缩咖啡(比特币),后来人们希望它更有风味和功能,于是加了牛奶(智能合约),然后又优化口感(交易速度),不断演变出新的公链。这就是区块链世界的多样性!
关于以区块链为底层技术,在上层开发的应用层又有什么呢?可以看 👇