当前位置: 首页 > web >正文

学习笔记《区块链技术与应用》第三天 网络 难度

比特币网络工作原理 The BitCoin Network

application layer: BitCoin BlockChain
network layer: P2P Overlay Network

simple, robust, but not efficient

flooding 洪泛

每个节点维护一个等待上链的集合。如果区块链已经包含某个交易,就可以从集合里删除这个交易。
越大的区块越慢,比特币有1MB大小的限制,带宽是瓶颈。
best effort

如何通过nonce调整挖矿速度

H(blockheader)<=targetH(block header)<=targetH(blockheader)<=target
比特币使用的哈希算法为SHA-256,整个22562^{256}2256

difficulty={difficult_1_target}/{target} 挖矿难度与target成反比,系统内算力越来越强,出块速度越来越快。

51% attack:假设有很多个分叉,善意节点的算力会被分散,恶意节点就可以集中攻击一个分叉。

以太坊的出块时间为15秒,因此设计一个新的协议ghost。
orphan block也给予奖励uncle reward

2016个区块调整难度。
2016 *10min / 60min / 24h = 14days
target = target * (actual time / expected time)
expected time = 2 weeks
actual time = time spent mining the last 2016 blocks
每次最大调整范围为4倍:比如2weeks之后 最大8weeks 最小0.5week

  • 如何让所有矿工同时调整阈值?写在代码里,自动调整。

挖矿难度 Hash Rate
在这里插入图片描述

全节点

  • 一直在线
  • 完整信息
  • 内存维护UTXO集合
  • 监听交易 验证每个交易合法性
  • 决定哪些交易会被打包到区块
  • 监听其他矿工挖出来的区块,验证其合法性
  • 挖矿
    • 决定沿着哪条链,默认最长
    • 当出现等长分叉,选择哪个,默认最先

轻节点

  • 不是一直在线
  • 不用保存整个区块链信息,只保存每个header。 大小相差1000倍
  • 不用保存全部交易,只保存自己相关交易
  • 无法验证大多数合法性,只能检验与自己相关的合法性
  • 无法检测网上发布的区块正确性
  • 可以验证挖矿难度只是用header信息
  • 只能检测哪个是最长链,步子回到哪个是最长合法链

挖矿

CPU -> GPU -> ASIC(Application Specific Integrated Circuit)
mining puzzle
merge mining:
单个矿工 -> 矿池
miner(ASIC)只负责计算hash,pool manager负责其他全节点工作
矿池为了解决收入不稳定。
on demand computing 按需计算
on demand mining 按需挖矿

http://www.xdnf.cn/news/16849.html

相关文章:

  • 【01】大恒相机SDK C++开发 —— 初始化相机,采集第一帧图像、回调采集、关闭相机
  • TGD第九篇:三维应用——视频边缘检测
  • Excel 知识点汇总
  • 爱普生002墨水与004墨水基本参数及支持机型
  • 行业热点丨仿真历史数据难以使用?如何利用几何深度学习破局,加速汽车工程创新
  • Java 17 新特性解析与代码示例
  • Linux的库制作与原理
  • Haproxy调度算法 - 静态算法介绍与使用
  • 为什么Android主线程与java主线程不同,不会退出?
  • 全栈:怎么把IDEA和Maven集成一下?
  • 前端框架Vue3(四)——组件通信及其他API
  • 分布内侧内嗅皮层的层Ⅱ或层Ⅲ的网格细胞(grid cells)对NLP中的深层语义分析的积极影响和启示
  • 一万字讲解Java中的IO流——包含底层原理
  • QtConcurrent::run函数
  • Nginx反向代理负载均衡
  • 常用设计模式系列(十六)—策略模式
  • Ubuntu 24.04 LTS 保姆级教程:安装 NVIDIA 显卡驱动、CUDA 12.5 及 Docker 容器工具包
  • 【YOLOv1】
  • 云服务器数据库
  • 【龙泽科技】汽车维护与底盘拆装检修仿真教学软件【风光580】
  • 机器学习①【机器学习的定义以及核心思想、数据集:机器学习的“燃料”(组成和获取)】
  • [Broken IOS] 配置CLI | 终端用户界面TUI
  • sqli-labs:Less-12关卡详细解析
  • C++异常处理的成本:理解与优化
  • Golang 调试技巧:在 Goland 中查看 Beego 控制器接收的前端字段参数
  • 文法中的间接左递归
  • Java【代码 21】将word、excel文件转换为pdf格式和将pdf文档转换为image格式工具类分享(Gitee源码)aspose转换中文乱码问题处理
  • 量子测量的物理场景与理论
  • sqoop从pg导出数据到hadoop上
  • 【数据结构初阶】--二叉树选择题专辑