IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 如何设计一个数字货币? 《区块链技术与应用》Lesson4学习笔记(BTC-协议) -> 正文阅读

[区块链]如何设计一个数字货币? 《区块链技术与应用》Lesson4学习笔记(BTC-协议)


如何设计一个数字货币? 《区块链技术与应用》Lesson4

注:本文为北京大学肖臻老师《区块链技术与应用》公开课学习笔记,不构成任何投资建议,特此告知


1. BTC协议

数字货币与纸质货币的不同:

  • 纸质货币花出去了是一个实体,只存在一张
  • 数字货币虽然不能修改面值(没有私钥签名),但是能够复制
  • 所以造成了我可以用多次的问题

这种情况称为double spending attack

1.1 解决方法1

中心化方法:维护一个大型数据库,每一笔交易都要在里面更改记录

1.2 解决方法2

去中心化方法:区块链

  • 铸币交易
  • 输入部分:币的来源
  • 输出部分:给出公钥证明是B认可的

一个区中心化的货币系统,需要考虑以下两个问题

  1. 谁有权发行货币?
  2. 怎么验证交易的合法性

有两个Hash指针

  • 连接各个区块之间的
  • 指向前面的某个交易的(说明币从哪里来)

证明这个钱不是凭空捏造的,防止Double Spending

在比特币中,地址是通过公钥得到的(Hash映射)

注意:

  • 比特币系统中没有提供所有用户的账户信息
  • 如果两个人要交易,必须知道公钥

在交易中,主要有两个部分

  • 输入部分:说明币的来源
  • 输出部分:说明收款人的Hash

2. 如何验证交易的正确性?

交易及验证的比特币系统截图如下所示(默克尔树Merkle Tree)

1

在挖币初始阶段,会产生一个公钥,说明挖出来的币是谁的,随着交易记录溯源,能够说明这个币是否属于A

在比特币系统中我们通常使用脚本来进行检测,我们使用一个脚本来验证

将当前交易的输入脚本,拼接前面交易的输出脚本,合在一起运行,如果没有错误,就证明这个交易是合法的


3. 区块链中的信息

  • Block Header
    • version(使用哪个版本的协议)
    • hash of previous block header(指向前一个区块的指针)
    • Merkel root hash(根哈希值)
    • target(挖矿的难度目标值)
      • nBits
      • 目标阈值的编码
      • H(block header) <= target
    • nonce(随机数)

只有block header 才有串起来的区块指针

取hash的时候,只会对header取,因为header中的阈值已经保证了block body中的数据是没有被串改的了

  • Block body
    • transaction list(交易链表)

full node:节点全部信息

  • fully validating node

light node: 轻节点(系统中大多数)


4. 如何写入区块链?

每个节点都可以发布交易,哪谁来决定哪些交易能被写道区块中呢?

(我记的账本和你记的账本不太一样?)

为此,我们提出了分布式的共识(distribution consensus)

  • distributed hash table

4.1 不可能言论 impossible result :

在分布式系统中,通常有以下几个言论

  1. (FLP):在一个异步系统中,假设网络传输时延没有上限,那么即使只有一个成员是有问题的,那么这个系统也不可能取得共识

  2. CAP Theorem

其中CAP指:

  • C: Consistency(一致性)
  • A: Availability(可用性)
  • P: Partition tolerance( 分区容忍性)

是指在分布式系统中,这三个性质,只能满足其中的两个,不可能三个都满足

在分布式协议(distributed consensus)中,有这样一个协议:

  • Paxos:能够保证一致性
    • 只要达成一致性,就一定是共识的
    • 但是也有可能达不成一致性

4.2 比特币中的共识协议

Q:在比特币系统中,绝大多数的节点都是好的,只有少部分节点是有恶意的,那么我们应该怎么去设计这个系统呢?

Answer1:投票决定区块是否合法

  • 但是出现了投票的Membership的问题(谁有投票权)
  • 但是比特币系统中产生一个公私是很容易的
  • 那就可以有一个超算,不断产生账户,使得总人数超过其他账户的总和(sybil attack(女巫攻击))

Answer2:使用算力投票

  • 每个节点都可以在本地组装一个可选区快
  • 然后放到大区块里面
  • 如果某个节点找到了符合的随机数(获得记账权),看哪一个满足不等式的要求,求hash
  • 只有获得记账权的节点才能够发布block

但是如果仍然发一个block,往前验证,这是正确的

那应该怎么规定去避免的情况?

2

应该发在区块的最长合法链

所以区块链只区块的最长合法链上的区块才会被接收

4.3 冲突区块

即使是这样还是会出现一种情况两个矿工同时找到了一个合法的区块,就会在链子上出现分叉的情况
3

相当于带领了两班人,互相用算力(也有可能是运气)竞争,最后接的长的那个区块会被命名为最终的正确区块

但是不应该只有记账权作为奖励,我们是希望凡是合法的交易都应该写入到区块链中

4.4 出块奖励

比特币规定,获得记账权的那个节点在发布区块的时候会有铸币的权利,可以发送一定数量的比特币

(block reward)

coinbase transaction(发行比特币的唯一方法)

哪能造多少呢?(21w个区块以后就要减半):

  1. 刚上线的时候 每一个block 50BTC
  2. 210 000区块以后,数量减半25BTC
  3. 再过210 000区块以后,数量再减半12.5BTC

puzzle friendly:保证了只能通过算力来求解这个问题 (不停地去试随机数)

算力可以折射为(hash rate),这就解决了之前的sybil attack的问题,因为创建多个账户并不会使你拥有更多的算力


写在最后

各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟!
注: 文中图片以及知识点主要参考了北京大学肖臻老师《区块链技术与应用》的公开课
视频链接《区块链技术与应用》
<(^-^)>
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:10:19  更:2021-11-25 08:10:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:58:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码