基于go-restful实现的PoW算力池模型

最开始知道区块链是在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)进行许可,使用时请注明出处。