區塊鏈(肖臻筆記)

2021-10-09 13:36:10 字數 3844 閱讀 8737

密碼學基礎

位元幣的資料結構

共識協議和系統實現

挖礦演算法和難度調整

位元幣的指令碼

軟分叉和硬分叉

匿名和隱私保護

概述:基於賬戶的分布式賬本

資料結構:狀態樹、交易樹、收據樹

ghost協議

挖礦:memory-hard mining puzzle

挖礦難度調整

權益證明

gasper the friendly finality gadget(ffg)

-智慧型合約

總結與展望

cyypto-currency

cyyptographic hash function

理論上並沒有證明出來,靠的是實踐 collsion free(不建議使用) brute-force(暴力破解) hash碰撞 應用於h(m)篡改內容後找不出h(m·)與之相等 h()是對應用資訊求hash值

md5(可以製造hash碰撞了)

x-h(x) 反向不可退 要足夠大,比較均勻

digital equivalent of a sealed envelope **結果不能公開 (封存在紙上)將h(x)放出來 可以拼接隨機數一起取hash

是無法**的hash值是哪個 nonce h(block header)<=target proff of work

difficult to solve,but easy to vertify

secure hash algorithm

(public key,private key) 非對稱加密 簽名用的是私鑰,驗證簽名用的是公鑰 加密用的是公鑰,解密用的是私鑰

公鑰相當於銀行賬號,私鑰相當於密碼

asymmetric encryption algorithm

encryption key

a good source of randiomness 生成好的隨機元

tamper-evident log 防篡改日誌 保留最後乙個hash值,就可以知道篡改了 保留最近的區塊

merkle proff 輕節點

sorted merkle tree

bernoulli trial:a random experiment with binary outcome

bernoulli process:a sequence of independent bernoulli trials memoryless

poisson process 泊松 服從指數分布

network layer: p2p overlay network

設計算則:簡單,魯棒,沒有高效性

h(block header)<=target sha-256 2的256次方

difficult=(difficulty_1_target)/target

target=target*actual time/expected time

state fork

forking attack

deliberate fork

protical fork 協議不同造成分叉

hard fork block size limit

soft fork

新節點 不認老節點,導致老節點白挖

coinbase extra nonce 4byte

2 (32

)2^(32)

2(32)2(96

)2^ (96)

2(96

)p2sh

soft fork hard fork

超過半數的節點更新了軟體,不會導致永久分叉 只有全部更新,才不會導致分叉

hide your identity from whom?

提高匿名性

network layer

零知識證明:一方向另一方證明乙個陳述是正確的,而無需透露除該陳述是正確的外的任何資訊

hash指標怎樣通過網路傳播

hash指標只有hash並不是有指標 leveldb

不要用截斷私鑰的方法,用多重簽名(保護安全性)

為什麼位元幣系統能夠繞過分布式共識中的那些不可能結論

並沒有達成一定的共識

位元幣的稀缺性

量子計算

ethereum:decentralized contract 去中心化合約

replay attack 重放攻擊 nonce 加乙個計數器防止

financial derivative 金融衍生品 不至於找不到人 賬戶保持穩定

單純的hash樹不行,查詢比較高效,但是更新繁瑣

單純的merkle tree 查詢低效率

sorted merkle tree

patricial tree(trie)

mpt merkle patricia tree 根節點(防篡改) merkle proff(賬戶有多少錢,證明有沒有賬戶 )

bloom filter false positive(誤報沒喲漏報)

-300w 收益由5調到3 調整難度,保證相對公平 保證貨幣量的穩定

virtual mining 虛擬挖礦

權益證明---------比實體高在不會造成直接的影響,得先買幣 工作量證明 直接買礦機攻擊 altcoin infanticide

類似於股份制 大量買進會及時引起注意 投入的幣會被鎖定一段時間,不會造成難易的衝擊

nothing at stake 押注多條分支鏈

casper the friendly finality gadget(ffg)需與一定量工作性相結合 validator(投入保證金)

錯誤處理

具有原子性

汽油費-可剩退回 中途沒有汽油費直接消耗掉汽油費,並回滾 防止攻擊

assert:條件不滿足:用於內部

require:輸入或者外部

巢狀呼叫:

直接呼叫,連鎖式回滾

先執行-再挖礦 挖不到-補償(得不到補償,還需要驗證)

交易成功 recceipt資料結構 有收據

不支援多執行緒 --------以太坊確定性狀態機 多執行緒多個核對記憶體訪問順序不同執行結果可能不同 產生隨機數就是多執行緒

拍賣合約-錢鎖住如何取出來-沒辦法 code is law 智慧型合約鎖倉 irrevocable trust 不可撤銷的信託 應對方法 測試測試再測試 預留後門(超級管理員)-達不成共識-與去中心化的理念違背

重新設計拍賣合約-withdraw solidity** pay2beneficiary 重入攻擊 收到eth未呼叫函式,會立即執行fallback()函式 不停的呼叫 沒有錢,沒有汽油費了 先清零再轉賬 不用call.value呼叫轉賬使用send

用來編寫控制邏輯-互不信任建立共識才寫在只能合約裡

the dao

dac: corporation

splitdao childdao 拆分 代幣投票 先轉賬再清零 方向錯誤

硬分叉1.智慧型合約-自動合約

智慧型合約-不可篡改性 irrevocability is a double sward

2.私鑰洩露-轉換賬戶 阻止智慧型合約的呼叫,禁止賬戶交易,軟分叉,用黑客漏洞發動攻擊

3.nothing is irrevocability

4.is solidity the right programming language?

函式式語言-比較慢 formal verification 形式化

5.開源 many eyeball fallacy

6.去中心化 去中心化的改法也是通過去中心化的規則修改 分叉也是去中心化的體現 可以分叉選擇原有的體制

攻擊 乘除變為很大的數,溢位變為很小的數 減去很小的數,每個人給很多的數 憑空多了很多代幣 solidity safemath庫檢測 solidity不存在精度損失 都是整數

位元幣和區塊鏈技術原理 肖臻公開課

hash函式有一類基於密碼學,稱為cryptographic hash function.crypto hash有兩個很重要的性質 1.collision resistance x y h x h y x neq y h x h y x y,h x h y 這個性質帶來了乙個好處。當輸入為m mm時...

北大肖甄《區塊鏈技術與應用》

三棵樹 全節點 狀態樹 交易數 收據樹 先執行再挖礦。挖礦中需要三棵樹的資訊。汽油費只是給執行智慧型合約,執行交易的礦工。會不會礦工不驗證交易的合法性 驗證沒有費用 如果不驗證,就不能更新本地的三棵樹,就無法進行下一步的挖礦。發生錯誤的交易是否需要發布到區塊鏈上?同樣會發布到區塊鏈上,因為不發布不能...

區塊鏈筆記

1.區塊鏈 開發文件。其他資料 基礎 精通位元幣 行業知識 從區塊鏈到信用社會 技術高階 區塊鏈原理設計與應用 除了 精通位元幣 可以從網路獲得,其他是實體書籍。還有github本身就是乙個豐富的資料庫,位元幣和以太坊的開發者文件可以也可以作為技術高階 2.區塊鏈的核心技術組成 1 p2p網路協議 ...