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
云计算能力是投资者实现双赢局面的一种方式。个人在采矿时,一般没有太多的时间管理采矿机,少量的采矿机计算能力不能满足需求,所以你可以加入云计算能力区块链采矿云,让投资者通过购买计算能力合同获得相应的计算能力。云计算能采矿源...
云计算能力是投资者实现双赢局面的一种方式。个人在采矿时,一般没有太多的时间管理采矿机,少量的采矿机计算能力不能满足需求,所以你可以加入云计算能力区块链采矿云,让投资者通过购买计算能力合同获得相应的计算能力。云计算能采矿源...
多币种钱包app系统开发、数字货币兑换系统源代码开发钱包APP自行发行的数字货币是一种独立于国家货币的代币,具有独立的流通、分配策略和独立的汇率,类似于比特币。可比较各种购物卡、消费卡数字货币系统的源代码销售,可避免复杂...
开发数字货币兑换系统,构建源代码数字货币交易所分为集中交易所和分散交易所。什么是集中交易所:在集中交易所,用户将数字资产存入交易所,由交易所集中保管和控制。当用户交易时,他们会向交易所提交交易订单,交易所会匹配交易,交易...