当前位置:首页 > 知识 >

分析200行Go语言区块链源代码

以下文章来源于飞雪无情,作者飞雪无情。

Github上有一个Repo,是一个使用Go语言(golang),不到200行代码写的区块链源代码,准确的说是174行。原作者起了个名字是Codeyourownblockchaininlessthan200linesofGo!而且作者也为此写了一篇文章。https://medium.com/@mycoralhealth/code-your-own-blockchain-in-less-than-200-lines-of-go-e296282bcffc

这篇文章是一个大概的思路和代码的实现,当然还有很多代码的逻辑没有涉及,所以我就针对这不到200行的代码进行一个分析,包含原文章里没有涉及到的知识点,对Go语言,区块链都会有一个更深的认识。

所有的源代码都在这里:https://github.com/nosequeldeebee/blockchain-tutorial/blob/master/main.go

在源代码的开头,是作者引入的一些包,有标准的,也有第三方的。像sha256,hex这些标准包是为了sha-256编码用的,其他还有启动http服务,打印日志的log,并发控制的sync,时间戳的time。

第三方包有三个,其中两个我都详细介绍过,相信大家不会陌生。

go-spew是一个变量结构体的调试利器,可以打印出变量结构体对应的数据和结构,调试非常方便。

gorilla/mux是一个web路由服务,可以很简单的帮我们构建web服务。

不过目前用gin的比较多,也推荐使用gin https://github.com/gin-gonic/gin。

godotenv是一个读取配置文章的库,可以让我们读取.env格式的配置文件,比如从配置文件里读取IP、PORT等。不过目前配置文件还是推荐YAML和TOML,对应的第三方库是:

gopkg.in/yaml.v21 https://github.com/BurntSushi/toml

既然要写一个区块链,那么肯定的有一个区块的实体,我们通过golang的struct来实现。

Block代表每个区块的实体类型

type Block struct { Index int Timestamp string BPM int Hash string PrevHash string }

Block里包含几个字段:

Index就是Block的顺序索引

Timestamp是生成Block

猜你喜欢

关注我们

微信二维码

微信