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

学习笔记《区块链技术与应用》第二天 共识机制

如何发行一个一个虚拟币?

人民币如何发行?
人民银行印制——防伪(密钥)——发布(公钥)——使用(没法花两次——双花攻击 double spending attack)
数字货币就是文件,可以复制,可以双花。
改进:1. 唯一编号,2. 所属检查

去中心化:

  1. 谁来发布货币
  2. 怎么防范double spending attack

Create Coin -> A(10) 铸币交易(Coinbase tx)(凭空发行)
↑ A -> B(5) signed by A
↑ A -> C(5) signed by A

输入部分:说明来源+公钥
输出部分:验证Hash+收款人的公钥Hash地址

B->C(2) singed by B
B->D(3) singed by B

C->E(1) singed by C

两种Hash point: 1. Linked block 2. coin from(防止双花)

在这里插入图片描述
一次交易:(私钥签名,公钥验证,我收到交易我验证)
A的签名+B的地址(account)
A需要B的地址,B需要A的公钥

再谈Block header, Block body

Block header:

  1. version
  2. hash of previous block header (只取header不管body)
  3. Merkle root hash
  4. target
  5. nonce
    H(block header) <= target

Block body:

  1. transaction list
  • full node (fully validating node): 全节点(保存所有信息,可以验证交易)
  • light node (无法独立验证交易合法性)(系统中大多数是轻节点)

每个账户都可以发起交易并广播给所有节点,谁来决定哪些交易可以写入区块?按照什么顺序?唯一性如何保证?

  • distributed consensus 分布式共识
  • distributed hash table 分布式hash表
  • impossibility result 不可能结论
    • FLP asynchronous, faulty,异步系统中一个成员有问题就不能取得共识。
    • CAP theorem, 最多只能同时满足两个
      • consistency 一致性
      • availability 可用性
      • Partition tolerance 容错

比特币中的共识协议

Consensus in BitCoin
任何基于投票的方案首先确认谁有投票权membership。
基于节点投票问题:sybil attach女巫攻击,大量产生可投票的攻击节点。
基于算例投票:
H(block header) <= target
不停的尝试nonce,找到符合要求nonce,整个节点获得记账权,写入下一个区块的权利(记账权),其他节点收到后验证合法性(验证block header nBits是否正确,查nonce是否符合<target, 所有header都符合要求,验证body交易偶读合法1 签名,2无双花问题)

  • 最长合法链longest valid chain
  • forking attack 分叉攻击
  • 等长的临时分叉会存在一段时间,直到其中一个抢先一步找到下一个区块则变为合法。短的链会被丢弃orphan block在这里插入图片描述

比特币系统两个问题

谁有权发行货币

如何验证合法性

mining 挖矿

http://www.dtcms.com/a/298679.html

相关文章:

  • 亚马逊阿联酋推“Amazon Bazaar”:解码中东电商市场的本地化突围
  • 线程安全的单例模式
  • 基于米尔瑞芯微RK3576开发板部署运行TinyMaix:超轻量级推理框架
  • 2025年高防IP全景解读:从流量清洗到智能防御的核心跃迁
  • mib2c --生成标量数据对应c文件
  • NOIP普及组系列【2015】 P2669 [NOIP 2015 普及组] 金币题解
  • GPU 驱动安装升级测试
  • 避开算力坑!无人机桥梁检测场景下YOLO模型选型指南
  • Minio Docker 集群部署
  • 【阅读整理】野火ADC_AD7192模块资料
  • haproxy七层代理(超详细)
  • 算法讲解--查找总价值为目标值的两个商品
  • MyBatisPlus简介与基本CRUD
  • 域名服务器的作用是什么
  • 【js(7)创建对象的三种写法】
  • Node.js(三)之Express
  • Three.js 动画系统入门:Tween.js 与 AnimationMixer 的使用
  • 习题5.6 “数学黑洞“
  • Java研学-RabbitMQ(二)
  • 亚德诺半导体AD8612ARUZ-REEL双通道精密运算放大器,0.5μV超低失调电压+0.02μV/°C温漂!
  • 老龄化浪潮下的破局者:智慧养老重塑银发经济格局
  • ptmalloc(glibc-2.12.1)源码解析2
  • 深入理解 UDP 协议:从原理到实战的技术解析
  • 开源语音TTS与ASR大模型选型指南(2025最新版)(疯聊AI提供)
  • Paimon主键表的合并机制
  • 模糊综合评估法简单示例
  • MySQL的认识与基本操作
  • NaVILA源码解析——从其VLA部分到其low-level部分:涵盖legged-loco、rsl_rl
  • AMD推出Radeon AI Pro R9700:32GB显存加持,发力AI推理与专业图形双场景
  • 13.使用C连接mysql