下图显示了整个项目的架构。在此,以下图片自下而上讲解:
一个
Crypto该模块与BTC链中使用的密码学相关,主要包括Base58、hash、椭圆加密等算法。我们知道,加密技术是区块链的核心,所以Crypto在整个技术架构中占有非常重要的地位,是整个区块链技术的基石,承载着整个区块链项目的顺利运行。
二
Net是区块链的对等网络部分,即P2P(Peer-to-Peer)网络。区块链技术是一种去中心化的技术,不同于传统的中心化技术架构。它不是B/S(浏览器/服务器)或者C/S(客户端/服务器)模式,它的节点是完全对等的,只是针对不同的链,或者比如有的节点是负责挖掘的矿工节点,有的节点是钱包轻节点spv,有的是全节点(存储完整的链数据)。因此,网络也是支撑区块链整个技术架构的底层技术。
三
存储,存储一定重要,不用说,大家都很清楚,但是这里还是要说很久。存储一直是一个非常重要的话题,无论是在传统的集中式互联网技术架构中,还是在传统的行业技术架构中,或者任何其他人类活动中。众所周知,人脑是最早的储存“装置”。当初人们没有发明会计工具的时候,人脑就在执行这个功能。随着人类社会的发展和进步,人们存储知识的方式和手段越来越丰富。到现在还是以电子设备为主。当然,在区块链的世界里,存储也是一个无法回避的话题。即使在分散式架构中,存储也是一个新的机遇和挑战。目前比特币链条中的数据量并不大,主要有几种主流的存储方式,比如内存存储、k-v数据库存储等等。近年来,随着区块链技术的发展以及更多数据的生成和上传,新的存储方案进入了大众的视野,其中IPFS最具代表性。
四
说完基础部分,我们最后就进入比特币的核心部分,因为前面部分是基础部分,也就是公开部分。首先,让我们从区块链开始。区块链,嗯,是的,这是我们整个技术架构的主角,因为区块链是区块链。(哈哈,什么废话)在比特币的白皮书描述中,为了达到脱媒的目的,也就是在没有第三方参与的情况下解决双付的问题,提出了两个非常重要的概念。一个是区块链,另一个是战俘。链的本质是数据结构中的一个链表,上一个节点指向下一个节点,但这个链表比较特殊。它的设置是不可更改的,是一个只能添加的链表,永远只识别最长的链。其他的链都是假的,只有最长的链是真的。如图所示,一条链包含了大量的信息。首先,一个链是由很多块组成的,也就是有很多块,对应的和链表是由很多节点组成的链表。每个节点都包含了大量的信息。最重要的四条信息是timestram(时间戳)、Hash(自身哈希值)、PrevHash(前一个块的哈希值)和Transactions(事务信息)。这些价值观非常重要,所以我们必须牢记在心。相信你也见过交易的复数。是的,一个区块可能包含很多交易信息,这也是比特币可以用于支付和交易的主要原因。在比特币中,交易主要由三条主要信息组成:1。输入2。产出3。交易信息和交易价值。好了,说到这里,我们暂停一下。我们来学习一下address,也就是地址。我们知道在传统金融领域,也就是我们目前使用的所有银行账户,或者支付宝账户,都是账户模式,也就是说一个人对应一个或者多个账户,以实名制的方式进行,其数据完全由第三方中介,也就是银行掌控。因为我们相信银行的信用,所以不怕把自己的个人信息泄露给银行,也不是特别担心银行会泄露我们的个人信息。当然,随着民众个人隐私意识的上升,以及银行等中介机构的过于强势,这种信任也出现了危机。现在让我们回到比特币,它使用前面提到的椭圆加密算法,生成公钥和私钥。也就是我们银行账号对应的账号和密码。密码由我们个人保管,公钥公开,所有流水都能查到,包括这个账户里的钱,转账记录等。谁都能找到。看到这里可能有人开始心里打鼓了,那么既然我的账户开了,我可以去东莞弄个嫩模吗?准确的说,是的,但是这里有一个相当微妙的设计,就是这个地址实际上并不对应人。也就是说,别人可以知道这个地址做了什么,但是不能知道你做了这个地址。(当然,如果你公开了地址,那你最好做好跪在搓板上的准备。)哈哈,我知道了,大部分人说完这个就放心了,那我们继续说上面的交易吧。事实上,每笔交易的产生都与地址直接相关。也可以说,交易信息自然涵盖了交易地址。当然,你可能在比特币交易信息中看不到,因为背后有密码学。这里就不展开了。简而言之,如你所知,你的每一笔交易都会与你的地址直接相关,并且当你进行交易时,会触发UTXO(比特币中唯一的交易模型)来验证是否有足够的余额,并确认交易的顺利进行。所有这些东西组合在一起就产生了一个比特币链。是不是觉得挺厉害的?更强大的还在后面。
五
重点来了。前面提到交易的时候要用UTXO,那么UTXO到底是什么?UTXO是比特币特有的交易模式。防止你的交易出错,验证你的账户余额等一系列事情,都是UTXO的机会。UTXO的官方解释是:未用事务输出。怎么翻译可以自己查字典。我觉得翻译的比较奇怪,就直接上了UTXO。那么UTXO是怎么理解的呢?如前所述,在一个事务中会有输入和输出。其实每一笔交易都会遍历整个链条,找到这个账户下的所有交易,然后比较所有的投入和产出。如果还有剩余投入,也就是你还有钱可以花,而你的交易金额刚好小于或等于你的剩余支出,那么ok,你可以进行这笔交易,也就是你还有钱可以交易。否则不能交易,就像没钱不能消费一样。当然,UTXO的设计非常漂亮,与我们日常使用的账号模型不同。它不再是一套资产和资产负债表,而是一个全新的概念,我认为这是相当惊人的。当然你可能会说,每笔交易都要重新检查我历史上所有的交易,太慢了。好吧,我告诉你,当数据量很大的时候,是很慢的。比特币也想到了这一点,于是采用了chainstate,我这里称之为状态机,来保存账户的历史交易状态,避免了每次遍历整个链条,大大提高了效率。
六
PoW前面提到,为了达到去中心化的目的,比特币提出了两个核心概念,一个是链,一个是工作证明算法(POW)。简单理解就是谁做的工作最多。先说记账,把区块的交易信息写在链上。POW算法是目前最成熟的算法。正是因为有了POW,才造就了矿产业,中国的半导体芯片产业才有了长足的发展。如果非要说我们在半导体领域的前沿是什么,我肯定会说矿机。
七
RPC作为一种分布式系统之间的通信方式,无话可说。
八
API层是整个系统暴露的部分,是系统对外沟通的窗口。
总结一个看似简单的图,说了半天还是觉得不完整。这里面还有很多内容需要阐述和挖掘,这也从侧面说明了整个比特币体系的威力。看似简单的系统,包含的东西太多了。我们需要慢慢地彻底地挖掘。建筑部分到此为止。由于这是一系列教程,代码会开源,所以有必要在这里贴出整个项目的代码组织结构。毕竟空谈是廉价的,给我看代码才是我们的合规。