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 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 【待更新】北京大学肖臻老师《区块链技术与应用》公开课笔记【04-BTC-协议】 -> 正文阅读

[区块链]【待更新】北京大学肖臻老师《区块链技术与应用》公开课笔记【04-BTC-协议】

北大肖臻老师《区块链技术与应用》课程链接:点击这里

全系列文章链接:点击这里

主要补充内容及图片来源:《区块链:技术驱动金融》

该系列文章如中有任何侵权内容,或者有链接无法打开、图片加载上传失败等情况,请及时与我个人联系删除或修改。


一、双花攻击(double spending attack)

怎么设计出一个加密货币出来?

假设央行发行数字货币。我们知道,央行发的人民币上有各种防伪标志。同样,央行发的数字货币上也要有央行的私钥签名。而央行公钥是公开的,我们用密码学中的公私钥原理,就可以验证数字货币是不是真的。

大家觉得上面这个方案怎么样?但其实这个例子根本没用到区块链。

而且问题在于:私钥容易泄露。如果央行私钥都发生泄露,那普通百姓的私钥更容易泄露,这样比特币就没法用。

数字货币其实就是个文件。虽然文件上有央行的签名,100元面值就是100元,但数字货币是可以复制的,它可以无限复制下去,这一点和人民币不一样。

A把人民币给B,A的那张钱就没了,没办法再花一次。但如果A花出去一个数字货币,他可以再复制第二次,再花一次,这就叫“双花攻击”。

数字货币主要挑战就是怎么防止双花攻击。

举例

央行发行的每个数字货币上都有一个编号,就和人民币一样,比如017、092等。此外,央行还要维护一个数据库,上面记录着每个编号的数字货币在谁手里。

比如017在A手里,A把017给B,B不仅需要验证这个数字货币有没有央行签名(即验证下币的真假),还要跟央行核实一下017这个数字货币,A之前有没有花出去过。

央行确认后说017之前确实是在A手里,所以A支付017给B是合法的,交易发生后,央行的数据库也需要改一下,将币改为017-B.

此时,如果A想再花一次017,想把它支付给C,C就能跟央行核实查到017已经花出去,已经在B手里了,此时这个交易就不能成立,这样就能防止017花两次。

以上交易方法,正确性没问题,实践中也可操作。但这是中心化的方案,由央行统一控制,而且每次交易都需要央行确认其合法性,这就太慢了。

我们需要一个去中性化的方案,让所有用户共同承担央行的职能,用一个数据结构来检测比特币交易,这个数据结构就是区块链。

区块链有两个核心问题:①数字货币的发行;②如何验证交易的有效性。

如何验证交易的有效性,实际就是怎么防范双花攻击。

举例

?(4.1?小型区块链,source:?课程截图)

比特币每个交易都包含输入和输出两部分。输入要说明币的来源,输出要给出收款人的公钥的哈希。

假设,A获得铸币权(CreateCoin),A发行10个比特币。

A把钱平均分给B和C,一人5个比特币,这个交易需要有A的签名,证明是经过A同意的。

同时这个交易还要说明花掉的10个比特币从哪儿来,这里A花掉的币是由铸币交易来的。

A转给B,要说明B公钥哈希是什么,B又把钱转给C和D,也要说明币的来源。

此时,C一共有7个比特币,C又决定把7个币给E。

...

这就是构成了一个小型的区块链。

这里有两种哈希指针,一种把区块串起来构成一个链表,另一种指向前面某个交易来说明币的来源。这样就能证明这个币不是凭空捏造,并且防止双花。

举例

现在B要转给F5个币,签名还是有B的签名。

单纯验证签名币好像合法,但还要知道B从哪儿来。

B的来源回溯一下,这时候就不对了,因为B的币之前已经花出去了,这就能证明不合法,防止双花。

转账交易。

A转给B,需要有A的签名,B的地址。

收款的地址是通过公钥推算出来的,B的公钥取哈希通过某些转换得来。

A怎样知道B的地址呢?

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:10:12  更:2021-08-20 15:10:50 
 
开发: 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年12日历 -2024/12/27 11:40:34-

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