基于Python实现一个PoW的仿真程序

1,作业内容 利用 Python 实现一个 PoW 的仿真程序,模拟一定数量的节点生成区块链的状态, 设置参数包括:节点数量和每个轮次出块的成功率

本文包含相关资料包-----> 点击直达获取<-------

1.作业内容

利用 Python 实现一个 PoW 的仿真程序,模拟一定数量的节点生成区块链的状态。

  • 设置参数包括:节点数量和每个轮次出块的成功率,测量区块链的增长速度。
  • 设置一定数量的恶意节点实施攻击。
  • 测量不同恶意节点比例(10%-40%)条件下,统计分叉攻击成功的长度测量
  • 不同恶意节点比例条件下,自私挖矿收益比例

2.代码解析

  • 程序入口是 simulate_pow.py,simulate_pow 函数参数为诚实节点数量,恶意节点数量和出块难度。默认参数设置如下:

  • 修改

  • 仿真结果保存在 log 目录下的日志中。
  • 令恶意节点攻击第一个区块(genesis 块)

3.实验内容

3.1第一轮仿真

  • 参数:honest node number = 10, evil node number = 0, difficulty = 000000
  • 仿真结果:

  • 平均出块时间: 66s,最短出块时间 3s,最长出块时间 202s

3.2第二轮仿真

  • 参数:honest node number = 10, evil node number = 0, difficulty = 00000
  • 仿真结果:

  • 平均出块时间: 3s,最短出块时间 0s(精确到个位),最长出块时间 7s

3.3第三轮仿真

  • 参数:honest node number = 10, evil node number = 1, difficulty = 00000
  • 仿真结果:

  • 恶意节点攻击失败

3.4第四轮仿真

  • 参数:honest node number = 10, evil node number = 4, difficulty = 00000
  • 1 到 10 号 miner 为 honest node,11 号到 14 号为 evil node

  • 可以看到,诚实节点在领先一个区块的情况下被恶意节点瞬间反超,我认为这和 python 多线程的机制有关。python 多线程并不是真正意义上的并行,并且会先调度后创建的线程。为了更真实地模拟分叉攻击,我决定让诚实节点领先一个区块后再让恶意节点开始攻击,并且提高出块难度。
  • 参数:honest node number = 10, evil node number = 4, difficulty = 000000
  • 0 到 9 号 miner 为 honest node,10 号到 13 号为 evil node

  • 可以看到,python 多线程优先调度后创建的线程,因此恶意节点攻击成功。

4.实验心得

由于 python 多线程的机制,本次仿真并不能很好地模拟分叉攻击。攻击成功与否极度依赖于线程调度顺序。通过本次实验,我理解了 Prove of Work 共识协议,与 Raft 和 Paxos 达成共识的方法完全不同,POW 用计算时间来达成共识,这令我感到非常新奇。

参考文献

  • 基于Web的信息发布与信息交流平台的设计与实现(吉林大学·许昭霞)
  • 战时运输任务演练系统设计与实现(大连理工大学·杨福君)
  • 基于Django框架的浮云笔记系统的设计与实现(华中科技大学·罗丹)
  • 无人机战术链仿真器的设计与实现(大连理工大学·孙云栋)
  • 基于Q-learning的系统集成与过程优化(青岛科技大学·魏晓彤)
  • 基于B/S架构的酷跑社区系统的设计与实现(内蒙古大学·张晓乐)
  • 物流设施选址系统的设计和实现(北京交通大学·黎宇彬)
  • 基于POEM平台的物流优化教学实验系统设计(吉林大学·何锐明)
  • 网上购物模拟系统(吉林大学·郭秋野)
  • POWAZI知识共享网站中用户管理和公共访问系统的设计与实现(北京邮电大学·安娜娜)
  • 基于Web的信息发布与信息交流平台的设计与实现(吉林大学·许昭霞)
  • POWAZI知识共享网站中用户管理和公共访问系统的设计与实现(北京邮电大学·安娜娜)
  • 仿真支撑平台数据管理和网络通信的设计与实现(武汉理工大学·骆彬)
  • 基于B/S架构的酷跑社区系统的设计与实现(内蒙古大学·张晓乐)
  • 无人机战术链仿真器的设计与实现(大连理工大学·孙云栋)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码客栈网 ,原文地址:https://m.bishedaima.com/yuanma/36139.html

相关推荐

  • ssm架构

    dfhxtxtxr 更富有创意天大鱼大肉的v不管成功发行股份幸福感新股发行发光效果如下如果想让共享富贵下功夫的人地广人稀官方唱歌唱歌唱歌的一天的火锅吃瓜吃瓜他的烟台大樱桃一天到黑哥唱歌唱歌的泰国第一天衬托出同样的态度一天的太阳媳妇关心他人 参考文献 基于SSM框架的B2C电商平台的设计与实现(华东交通大学·卢庆胜) 基于SSVH框架的综合集中告警WEB系统的研究与实现(西南交通大学·蔚晓娟) 基于Struts和Hibernate的J2EE Web应用的研究与实现(华东师范大学·张国梁) 基于SSM框架的投资项目经济评价系统分析与实现(山东大学·白春强) 基于SSM的综合医养平台的设计与实现(吉林大学·宋恩旭) 基于轻量级J2EE架构的工程管理信息系统的设计与实现(暨南大学·谢运佳) 基于SSM的综合医养平台的设计与实现(吉林大学·宋恩旭) 基于B/S结构的汽车营销服务管理系统的研究与实现(武汉科技大学·王恒青) 基于SSM框架的资产证券化系统的设计与实现(西安电子科技大学·贾田田) 基于SSI框架的开发配置管理系统的设计与实现(山东大学·冯峰) 基于J2EE/UML的企业建模系统的研究(浙江大学·丁勇) 基于OAuth2
    2024年05月14日
    4 1 1
  • 基于SSM框架的医院电子病历管理系统源代码

    随着医院规模的不断扩大,传统的纸质病历已显不适应日益增长的患者需求与医疗信息化的发展趋势,基于SSM框架的医院电子病历管理系统应运而生,旨在解决这一问题,该系统以减轻医生负担
    2024年05月07日
    13 1 3
  • 基于SpringBoot框架的相亲网站

    这是一份采用🔥🔥SpringBoot为核心的婚恋交友平台源代码🔥🔥,主要编程语言为Java,并结合了SpringBoot和vue技术栈,开发工具为Idea或Eclipse
    2024年05月23日
    2 1 1
  • 基于jsp+servlet的人力资源管理系统

    在当今数字化时代,人力资源管理系统的重要性日益凸显,基于JSP(JavaServer Pages)和Servlet的人力资源管理系统作为一种主流技术方案,具有广泛的应用前景
    2024年05月07日
    5 1 3
  • python数据分析

    python数据分析(7)——挖掘建模(2)聚类分析 1, 常用聚类分析算法 聚类分析建模原理 常用聚类方法 常用聚类分析算法 2
    2024年05月14日
    4 1 1
  • 基于SpringBoot框架的汽车资讯网站

    这是一份采用🔥🔥SpringBoot为核心的汽车信息门户系统源代码🔥🔥,主要编程语言为Java,并结合了SpringBoot和Vue,js技术栈,开发工具包括Idea或Eclipse
    2024年05月23日
    2 1 1
  • 基于javaweb的酒店预订管理系统

    这是一个🔥🔥基于javaweb的酒店预订管理系统🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 酒店预订管理系统开发技术栈为JSP项目,可以作为毕业设计课程设计作业基于JSP+Servlet+Mysql实现一个酒店后台管理系统
    2024年05月23日
    4 1 3
  • Python实现的广度优先遍历搜索(BFS)算法

    广度优先遍历搜索(BFS) 1 算法介绍 2 实验代码 3 实验结果 4 实验总结 1 算法介绍 广度优先搜索算法(英语:Breadth-First-Search
    2024年05月14日
    2 1 1
  • 基于JSP和MySQL的网上零食销售系统的设计与实现

    基于JSP和MySQL的网上零食销售系统的设计与实现 摘 要 本文介绍了网上零食销售系统的整个开发过程,采用国内认准的B2C商城建站系统模式,并按照现有的购物系统的现状而设计开发的网络买卖平台
    2024年05月14日
    2 1 1
  • 基于Python的疫情数据爬虫及可视化

    基于Python的疫情数据爬虫及可视化 一,《企业实训》报告 《企业实训》报告填写要求 《企业实训》报告主要内容: 实训报告必须真实反映实训工作及完成的成果; 实训报告内容包括实训目标
    2024年05月14日
    2 1 2

发表回复

登录后才能评论