Introduction to Cryto Crptocurrencies Lecture 1
Lecture 1.2 Hash Pointer & Data Structure
Use Case 1. 什么是Block Chain呢?
想象一個像鏈表一樣的結構,只不過與通常的指向下一塊地址的指針不同的是,這里用的是Hash指針。
如圖:
如果黑客篡改了block 0,那么他也必須篡改Block 1的H1,Block 2的H2等,會給他帶來一定困難。
?
Use Case 2: Merkle Tree
Block Chain固然具有防止篡改的能力,但是每次驗證某條記錄沒被篡改,就需要O(n)的時間來一一核對。比如看第i個block有沒有被篡改,就要去查block i + 1, block i + 2...
Merkle Tree則使用Hash Pointer + 二叉樹結合,將核對驗證的代價降到了O(logn)。
具體格式見下圖。
現在如果要驗證L3沒被篡改,那么就只要看Hash 1-0,Hash 1, Top Hash沒算錯就行了。
所以,如果一個客戶端只用到L3,那么它只需要獲取用于計算的Hash 1-1, Hash 0,用于對比的Hash 1-0, Hash 1和Top Hash這幾個值,而不需要存儲整個交易歷史。
?
?Lecture 1.4
Decentralized Identity Management 去中心化身份管理
用公鑰作為身份,方便隨時生成和丟棄。用私鑰來發消息。
?
Lecture 1.5 A Simple Cryptocurrency
?Case 1: Goofy?Coin
Goofy學會了區塊鏈,Goofy想要發行自己的比特幣Goofy Coin。
一枚虛擬硬幣至少有兩種行為:
1. 被創建
2. 被交易
所以Goofy給自己創造的這枚硬幣一個獨一無二的CoinID,并且留下自己的數字簽名。
?
接著Goofy要交易給Alice,于是他建立一個新的交易記錄區塊,并且留下自己的數字簽名
到這里為止,如果使用了強大的數字簽名算法和Hash算法,一切看起來似乎井然有序地開始了,不過還存在一個致命問題Double-Spending Attack:
如果Alice已經把這枚硬幣給了Bob,但她又想再花一次-給Chuck,怎么辦?
由于Chuck去驗證的時候認為這枚比特幣和自己的Hash值都是合法的,所以Chuck被騙了。
如何解決這個問題呢?
1. 交易的同時,發行這枚比特幣的全部歷史交易
2. 歷史記錄唯一
3. 在每個操作上添加會話號
?
Case 2: Scrooge Coin:
Scrooge吸取了Groofy的教訓,決定自己來發行新硬幣。
硬幣有兩種操作:
1. Create
2. Pay
Scrooge引入了面額這一概念,一枚硬幣對應一個面額,就像紙幣一樣,方便拆分。
?
?
?
如果面額對不上,比如Scrooge有一枚5元錢的硬幣,但是他要付3元,那么Scrooge就可以把這枚5元拆分為2元和3元兩枚硬幣,實際操作是通過Destroy&Recreation完成的。
每次操作、交易的原則是:價值守恒-比如Scrooge的5圓硬幣拆給Groofy3元,自己剩下2元,現在Scooge+Groofy有2枚硬幣了,但是整體價值還是5元。
?
?現在還存在一個問題:歷史由Scrooge維護,這違反了去中心化原則。
?BTW: priceton的課程真的令人吐槽
轉載于:https://www.cnblogs.com/xuesu/p/10421308.html
總結
以上是生活随笔為你收集整理的Introduction to Cryto Crptocurrencies Lecture 1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转载--html显示当前时间
- 下一篇: 做一个登入页面