密碼學基礎
位元幣的資料結構
共識協議和系統實現
挖礦演算法和難度調整
位元幣的指令碼
軟分叉和硬分叉
匿名和隱私保護
概述:基於賬戶的分布式賬本
資料結構:狀態樹、交易樹、收據樹
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網路協議 ...