最开始知道区块链是在17年初,当时因为项目压力不大,开始研究比特币源码。对于比特币中提到的Proof of Work,当时只是一眼带过,并没有详细查看过相关的代码。在最近的项目中,考虑到性能的要求,需要接入算力池来提高性能,因此实现了一个简单的算力池模型。
下面是使用这个模型简单实现的PoW:
文件结构
- calculatepool:
- calculatepool.proto:定义用到的结构
- server.go:算力池模型的具体实现
- center.go:算力池的控制中心
- computenode.go:算力池的计算节点
- client.go:请求发起方
server
server.go中提供了如下的方法:
- NewServer():创建一个Server的实例,用于之后的操作
- Start():启动RESTful服务
- RegisterRoutes():注册RESTful提供的接口
- SetHard():设置计算难度
- GetHard():获取当前的计算难度
- Hello():用于判断节点是否存活的接口
- Register():计算节点向中心节点注册
- PoW():Proof of Work的简单实现
- DoWork():中心节点接收PoW请求的接口
center
算力池的控制中心,调用server.go中的方法,对外提供PoW计算接口,以及算力池内部计算节点的注册。
computenode
向控制中心注册本节点信息,并提供PoW计算服务。
源码可以从这里获取。
本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
请发表评论