自顶向下的极简区块链设计——基于rust

讨论 我不是赌鬼
Lv5 宗师级炼丹师
发布在 综合   1809   0
讨论 我不是赌鬼   1809   0

    本文的一些内容来源于《Rust编程小项目:编写简单的区块链》,大家有时间可以看下这个视频。

    当今世界有各种各样的区块链,狗链,野鸡链,还有我正准备写的“屎链”,欢迎大家来挖。不管啥链,底层原理都差不多。

    先看下区块链的结构(单链):

    undefined

    需要明确的是,区块链是用来保存数据的,不是用来炒币的。一个矿工在一个时间将一些数据打包在一起,就 成了一个区块。上图的红色箭头方向不是区块链的发展方向,箭头均指向前一个区块,表示 某个区块(创世区块除外)总包含上一个区块的信息。依次类推,我们只要有最后一个区块,就能 推出所有的区块内容,即所有的交易信息。

    undefined

    上图就是区块链的简图,可以看出,每个区块头包含(pre hash,tx hash,time),为什么需要这3个呢? 因为

    • 交易总得记录时间吧,所以需要加时间戳time
    • 每个区块要指向上一个区块,所以必须要有pre hash
    • 每个区块的数据理论上是可以串改的,但是改了之后hash就对不上了,所以tx hash用来保证数据不被串改

    接着区块里面要有交易信息transaction,要是连交易信息都没有那区块链就废了。

    最后是整个区块的哈希值,该值相当于每个区块的标识,同样的,只要改了区块中的一个数据,哈希值就会 发生改变。

    好了,没了,理论知识就这些了。当然,本文讨论的是仅仅是在内存中运行的区块链本身,并不涉及web,挖矿等其他内容。

    标题上说了,自顶向下设计,那我们设计区块链的思路逻辑就是:

    1. 建立一个名为区块链的结构体,能够返回一个可扩张的向量,向量内均为区块。该结构体具有产生创世区块及其他区块的能力,并且可以求出一个区块的哈希值。
    2. 建立一个名为区块的结构体,该结构体包含区块头以及交易数据和整个区块的哈希值。
    3. 需要添加关于序列化,反序列化,哈希,时间戳的库。
    版权声明:作者保留权利,不代表意本站立场。如需转载请联系本站以及作者。

    参与讨论

    回复《 自顶向下的极简区块链设计——基于rust

    EditorJs 编辑器

    沙发,很寂寞~
    反馈
    to-top--btn