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

基于go-restful实现的PoW算力池模型的更多相关文章

  1. xPool - 基于mysqlclient的mysql的c++连接池 - xnhcx的个人空间 - 开源中国社区

    xPool - 基于mysqlclient的mysql的c++连接池 - xnhcx的个人空间 - 开源中国社区 xPool - 基于mysqlclient的mysql的c++连接池

  2. 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)

    前言: 本章介绍自己写的基于java.util.logging的轻量级日志记录库(baseLog). 该版本的日志记录库犹如其名,baseLog,是个实现日志记录基本功能的小库,适合小型项目使用,方便 ...

  3. 基于RYU restful api实现的VLAN网络虚拟化

    基于RYU restful api实现的VLAN网络虚拟化 前言 本次实验是基于OVS的VLAN虚拟化简易实践方案的进一步的实验,采用RYU restful api进行配置.本质上和上次实验没什么差, ...

  4. 基于 HTML5 的 WebGL 自定义 3D 摄像头监控模型

    前言 随着视频监控联网系统的不断普及和发展, 网络摄像机更多的应用于监控系统中,尤其是高清时代的来临,更加快了网络摄像机的发展和应用. 在监控摄像机数量的不断庞大的同时,在监控系统中面临着严峻的现状问 ...

  5. 阅读基于sketch的软件定义网络测量数据平面硬件模型

    概要 硬件实现 基于sketch 功能:采集包数.流长数据,恢复五元组 重点:高速条件下性能较好,节省硬件资源 摘要: 提出一种基于sketch 数据结构的软件定义测量数据平面硬件模型,并在以现场可编 ...

  6. 目标检测-基于Pytorch实现Yolov3(1)- 搭建模型

    原文地址:https://www.cnblogs.com/jacklu/p/9853599.html 本人前段时间在T厂做了目标检测的项目,对一些目标检测框架也有了一定理解.其中Yolov3速度非常快 ...

  7. c++之初级的消息队列及线程池模型

    1.最近项目不是很忙,结合之前看的一些开源代码(skynet及其他github代码)及项目代码,抽空写了一个简单的任务队列当做练习. 2.介绍: 1)全局队列中锁的使用:多线程下,全局队列需要加锁,本 ...

  8. 没想到吧!关于Dubbo的『消费端线程池模型』官网也写错了。

    这是why的第 63 篇原创文章 荒腔走板 大家好,我是 why,欢迎来到我连续周更优质原创文章的第 63 篇.老规矩,先荒腔走板聊聊其他的. 上面这张图片是我前几天整理相册的时候看到的.拍摄于 20 ...

  9. 【探索】无形验证码 —— PoW 算力验证

    先来思考一个问题:如何写一个能消耗对方时间的程序? 消耗时间还不简单,休眠一下就可以了: Sleep(1000) 这确实消耗了时间,但并没有消耗 CPU.如果对方开了变速齿轮,这瞬间就能完成. 不过要 ...

  10. 构建基于WCF Restful Service的服务

    前言 传统的Asmx服务,由于遵循SOAP协议,所以返回内容以xml方式组织.并且客户端需要添加服务端引用才能使用(虽然看到网络上已经提供了这方面的Dynamic Proxy,但是没有这种方式简便), ...

随机推荐

  1. 火山引擎A/B测试:MAB智能调优实验,企业活动效果提升新利器

      618临近,各大电商APP的预热活动已然拉开序幕.对企业而言,一场活动从策划到上线,中间经过效果验证,其业务成本很高.一个好的活动创意从策划.开发.到最终发布,至少会经历几周实践,如果中间还经历A ...

  2. Spring Boot Admin 查看 Client 日志

    日志配置如下:如何将不同业务模块产生的日志 分多文件记录 此时 Spring Boot Admin 中看不了 Client 的日志 Logfile ViewerBy default the logfi ...

  3. 谣言粉碎机?Python验证股市操盘口诀

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 经常炒股的朋友,应该都听说过这段操盘口诀: 早上大跌要买,早上大涨要卖 下午大涨不追,下午大跌次日买 早 ...

  4. 【辅助工具】Maven使用

    Maven使用 错误排查 查看对应依赖在仓库中的路径,jar文件有没有下载成功,如果不成功直接把外部文件夹删除重新加载 导包错误 找到对应的路径,丛正常导入的同事直接复制过来. Maven启动项目 导 ...

  5. 在 macOS 通过 SSH 访问 Windows 的 WSL2 Ubuntu

    配置 Windows 和 WSL2,使得能通过其他电脑远程 SSH 到 WSL2 Ubuntu. 一.Win10 安装 WSL2 Ubuntu 注意,是安装 WSL2,方法参考这个 WSL2 配置 C ...

  6. 【驱动】以太网扫盲(四)phy驱动link up流程分析

    1. 简介 在调试网口驱动的过程中发现phy芯片的驱动框架结构还有点复杂,不仔细研究的话还不好搞懂,另外百度到的资料也不够全面,这篇就总结梳理一下这方面的知识. 我们知道一个 phy 驱动的原理是非常 ...

  7. S3C2440移植uboot之支持NAND启动

      上一节S3C2440移植uboot之新建单板_时钟_SDRAM_串口移植uboot初始化了时钟,配置了支持串口,这一节我们继续修改uboot支持NAND启动. 目录 1.去掉 "-pie ...

  8. zznu 1632

    表达式求值 递归求解~~ #include<cstdio> #include<cstring> #include<cstdlib> #include<cmat ...

  9. 玩转 Helm

    0. 前言 在 kubernetes 的系列文章中,我们介绍了 kubernetes 的种种概念,特性.不过对于如何部署并没有介绍,想象下如果 kubernetes 中 pod 的数量达到成百,上千, ...

  10. 如何在 Photoshop 中制作 GIF 动画

    您可能已经使用过一些在线 gif 生成器来快速生成 gif 图像,但这些在线生成器无法提供与 Photoshop 相同的灵活性和结果. gif 就像您可以在 Photoshop 中创建的迷你动画.当你 ...