PBFT -Golang实现详解

首相需要知道,PBFT算法的实现并不是听起来那么简单,我们通常听的这个算法的实现的的最为主要的,只是这种算法中的一个协议-----一致性协议。
另外还有检查点协议和视图更换协议。有兴趣的可以找材料看看。也可以留言。

1. 局限性

但是正如前面提到的那样,大多数的人更加在乎的也是论文中主要讲述的大多是第一个阶段也就是第一个协议:一致性协议。这也不怪,毕竟,这是大家普遍认为重要的点。但是相反,如果加以改进的将是其他的两个阶段。

2. 关于整个背景知识就不多说,自己找,我们进入正题

2.1 如何通过Golang语言实现这样一个PBFT?

一致性协议:

还是熟悉的配方,还是熟悉的味道。
同样,强调,这个文章不适合新手,毕竟涉及到golang的相关语法。当然你有,就忽略。

1. 为什么选择golang实现

  1. 第一个人爱好,喜欢这门语言,比较熟
  2. 第二,真的好用,毕竟可以实现协程。
  3. 第三,当然考虑到实现这个程序,一方面需要client,一方面需要node,所协程之间互相发送消息,更加合理。
  4. net/http比较好用,可以代替P2P协议。

2.实现的程序图

代码实现与分析(稍等…整理中)

在众多的代码中,我认为能够较为好的实现的代码是这位老哥写的:
https://github.com/corgi-kx/blockchain_consensus_algorithm/tree/master/pbft
其中对于数据的请求以及客户端的请求处理操作,还是很好的。本文主要基于此代码基础上进行解读,如何感兴趣,可以直接,看这位大哥的源码,很精彩。

PBFT -Golang实现详解相关推荐

  1. Golang Append()详解

    append函数的使用: append可以向一个slice中追加一个元素.多个元素.新的切片 var x []intx = append(x, 1) // 追加一个元素 x = append(x,2, ...

  2. golang安装详解

    1.首先安装golang的类似java的windows安装包,即sdk1.9.2.可以从这里进行下载点击我进行go安装包下载 2.然后安装集成开发环境,goland如下图所示 点击我进行goland下 ...

  3. Golang iota详解

    iota是go语言的常量计数器,只能在常量表达式中使用 iota在const关键字出现时将被重置为0,const中每新增一行常量声明将使iota计数一次 可理解为const语句块中的行索引. 1.在常 ...

  4. golang slice 详解

    一.数组切片的使用: func main() {//1.基于数组创建数组切片var array [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}var ...

  5. Golang GORM 详解

    学习目标: 1. GORM 介绍 2. GORM 使用 学习内容: 1 GORM介绍 GORM 是基于 Go 语言的 ORM 库,可使开发者对数据库使用更为方便,支持多种数据库. 它提供了许多功能,例 ...

  6. [Golang]defer详解

    数据结构 defer的数据结构定义在$GOROOT/src/runtime/runtime2.go // 大体定义如下,忽略少部分字段 type _defer struct {sp uintptr / ...

  7. golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法详解...

    Golang 实现 PHP里的 serialize() . unserialize() 安装 go get -u github.com/techleeone/gophp/serialize 用法 pa ...

  8. Golang map源码详解

    Golang的map是用哈希表实现的,在实现性能上非常优秀,这里会主要对map创建.插入.查询.删除以及删除全部的源码做详解,刻意避开了扩容以及迭代相关的代码,后续会用一个新的文章去讲述.Golang ...

  9. viper4android io错误,golang常用库之配置文件解析库-viper使用详解

    一.viper简介 viper 配置管理解析库,是由大神 Steve Francia 开发,他在google领导着 golang 的产品开发,他也是 gohugo.io 的创始人之一,命令行解析库 c ...

最新文章

  1. 公开课 | 人脸识别的最新进展以及工业级大规模人脸识别实践探讨
  2. Web 数据存储总结
  3. OS X 下在代码中枚举所有进程的方法
  4. C++ - A Simple Calculator Program
  5. 几款开源的数据挖掘工具
  6. python网络爬虫(14)使用Scrapy搭建爬虫框架
  7. C++ IO类(3) 文件流
  8. 回调函数总结(个人见解)
  9. Python 代码优化常见技巧
  10. linux 终端与shell输出大小不匹配
  11. java 平均分配算法_java 分配算法
  12. iphone9发布_【60秒半导体新闻】消息称国外疫情爆发让苹果取消发布会 iPhone 9跳票/华为P40全家福:7种配色、陶瓷尊享版配豪华五摄...
  13. Android学习总结(3)——Handler深入详解
  14. FusionCharts 技术文档-Jsp画图例子
  15. 人工智能领域的会议和期刊的出版社和地址
  16. Thinkphp 批量更新方法 saveALL
  17. mysql中的rman备份与恢复_使用RMAN备份与恢复数据库
  18. centos pptp client 配置
  19. 麒麟810处理器_华为携7nm麒麟810处理器 剑指高通
  20. jQuery 的表单验证之提交验证

热门文章

  1. 高通骁龙765/骁龙765G芯片参数分析介绍
  2. 小学计算机打字基础知识教案绿色圃,小学信息技术《键盘操作再加强—认识特殊键》教案...
  3. 非常实用FPGA实现CRC校验介绍和代码生成工具
  4. Python @装饰器
  5. Windows11、10,安装最新版ENSP和最新版HCL模拟器教程、无脑下一步!带下载链接
  6. python缩进可以用在任何语句之后_Python程序中,缩进表达所属关系,在缩进的前一行最后,需要使用符号 Python 语句中增...
  7. 性能调优(一)----Amdahl定律及木桶原理
  8. 机器学习之逻辑回归(对数几率回归)
  9. HTML5+CSS大作业——汽车自驾游(10页) 自驾游主题HTM5网页设计作业成品
  10. 中学-综合素质【8】