| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> Distributed System 基础(二)比特币(Bitcoin) -> 正文阅读 |
|
[区块链]Distributed System 基础(二)比特币(Bitcoin) |
1 简介Bitcoin发明与2009年,由Satoshi Nakamoto(大概率是个假的名字)创建,它的特征有:
比特币从本质上来说还是一个分布式系统
2 简单的加密(crypto)知识
hash function:hash 函数是指一个函数h:
A
→ B?使得
3 Bitcion 和共识问题
一个比特币可以看成是一个有写入信息的文件。比特币的拥有者可以由一个公钥表示。如果你想将你的比特币交易给某人,你可以将新的拥有者写入文件,并签上签名。从某种角度说,我们是创造了一个新的比特币文件。这个过程被称为
事务(transaction).问题是,有可能有人会把比特别复制很多份,然后签给多人,这个被称为
重复付款(double spending)为了避免这种事情发生我们必须知道什么样的事务是能做的,什么是不能做的。因为比特币是一个去中心化的系统,所以涉及共识问题。
在比特币系统中,我们每个节点必须要对是否批准有相同的知识,为了实现这一点,我们通常会在一批事务中开启一个共识协议,这个也称为
block(即:区块)共识协议的使得每个人都同意区块中的事务是被批准的事务。每一个区块都由自己本区块的hash,上一个区块的hash和很多的事务组成,于是根据hash值,一个一个区块就像是被穿了起来,即区块链。
如果出现重复付款问题,接受者会在区块链中发现相同的事务。
4 Bitcoin 和 miner
一个区块存储事务,前一个块的哈希,它自己的哈希,然后保留一些空间(
nonce),这是一个任意的数字。块的哈希必须将最后一个k位设置为零才能有效,但我们不能保证它会是这样的。因此,矿工(miner)可以改变nonce,重新做散列,并希望它能匹配最后k位为0的特点。世界上生成一个新块的时间是10分钟。例如,使用k=32,平均你必须做
次哈希,实际上是k>32。一旦你找到了nonce,你就可以发送新块,每个人都在链中加入新块。
问:当两个矿工同时找到一个好的区块时会发生什么?
答:两个矿工都向每个人发送信息,有可能一个区块被一部分矿工接受,另一个区块被另一部分接受。我们相当于创建了区块链的两个分支,矿工们在两个部分分别试图扩展。通常发生的情况是,只有一个区块“获胜”,于是每个人都停止在另一个分支扩展,使它成为一个死分支。如果一个交易是在一个死分支上,它将不会被批准。如何才能确定我们的交易是在一个好的分支上进行的呢?有一个“规则”表示我们必须等待至少6个block才能确保我们的交易将得到批准。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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:44:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |