區塊鏈自問自答 day6

2022-09-11 03:21:13 字數 2043 閱讀 2798

位元幣將區塊間隔設計為10min,是在更快速的交易確認和更低的分叉概率間做出妥協。更短的區塊產生時間間隔讓交易清算更快地完成,也會導致更加頻繁的區塊鏈分叉。相對地,更長地間隔減少分叉數量,卻會導致更長地清算時間。

​ 20世紀90年代,美國海軍陸戰隊為了方便海外情報人員的聯絡,在海軍研究實驗室開始了基於網際網路的匿名網路通訊的研究。這項研究於2023年9月發布了乙個測試版,此專案被命名為「洋蔥路由專案」,簡稱tor專案。2023年12月,此專案開源,從此進入公眾的生活,並形成了之後的深網。

​ 深網建立在網際網路上,但又不能直接通過網際網路訪問,它裡面的服務是匿名的。那麼能否有匿名的現金系統?位元幣就是在這樣的乙個環境下應運而生,它解決了深網中**支付的匿名問題。正是因為洋蔥網路的重新整理時間是10min,位元幣打包區塊的時間也設定為10min。

以太坊採用了ethash演算法,使區塊的生成時間減少到平均15s。

由於以太坊產生區塊的速度比位元幣產生區塊的速度快很多,所以很容易產生合規但沒有被加入主鏈中的區塊,這種區塊就叫做叔伯塊。在以太坊中,產生叔伯塊的礦工和將叔伯塊包括在區塊鏈中的礦工都能得到獎勵。

礦工每包含乙個叔伯塊將獲得(1/32)*5的額外獎勵。

礦工產生叔伯塊會獲得(叔伯塊id+8-當前區塊id)*(5/8)的獎勵。

將產生廢塊的算力包括進來,有效地增加了安全性,也使攻擊者更不容易追上乙個帶有叔伯塊的主鏈。同時,通過給叔伯塊獎勵,也避免出現像位元幣那樣算力高度集中的礦池,因為礦池相對來說不像單個挖礦節點那樣容易產生廢塊。叔伯塊的包含也不是毫無限制的,嚴格來說,叔伯塊是在當前鏈結區塊往前推最多6個「祖先」廢塊,每個區塊最多能鏈結兩個「叔伯塊」。

以太坊採用乙個與位元幣不同的演算法——貪婪最重觀察樹(greedy he**iest observed subtree,ghost)來構建區塊鏈。因為加了叔伯塊的關係,嚴格來說,以太坊的區塊鏈不是乙個鏈條,更像是一棵樹,但是具體交易資料等資訊仍以主鏈為主。

與位元幣中的最長鏈原則不同,以太坊使用ghost協議,通過判斷最重子樹來決定主鏈。

簡單來說,ghost協議就是讓我們必須選擇乙個在其上完成計算最多的路徑。乙個方法確定路徑就是使用最近乙個區塊(葉子區塊)的區塊號,區塊號代表著當前路徑上總的區塊數(不包含創世紀區塊)。區塊號越大,路徑就會越長,就說明越多的挖礦算力被消耗在此路徑上以達到葉子區塊。使用這種推理就可以允許我們贊同當前狀態的權威版本。

與最長鏈規則相比, ghost的優點在於能夠在網路延遲較高時降低攻擊效率,同時最小化鏈重組的深度。原因是即使攻擊者能夠高效地在其分叉鏈上繼續產生區塊,嘗試使該鏈成為最長鏈,ghost也會選擇另一條票數更高的分叉鏈。

input: block tree t

set b ← genesis block

if childrent (b) = ∅ then return(b) and exit

else update b ← argmax |subtreet (c)|c∈childrent (b)

goto line 2

childrent (b) 返回b的子塊集合;subtreet(c)返回以c為根樹的重量

解決了快速生成區塊時區塊鏈安全方面的矛盾,因為在區塊生成速度過快時,由於網路延遲的原因會導致許多節點沒有收到新的區塊繼續在以前的舊的區塊上繼續挖礦,從而導致網路中的廢區塊增多,這就會導致中心化的問題。

如果a是乙個擁有全網30%算力的礦池而b擁有10%的算力,a將面臨70%的時間都在產生作廢區塊的風險而b在90%的時間裡都在產生作廢區塊。如果作廢率高,a將簡單地因為更高的算力份額而更有效率。因此,區塊產生速度快的區塊鏈很可能導致乙個礦池擁有實際上能夠控制挖礦過程的算力份額。

區塊鏈可能會突然跨深度任意切換分叉

eth1鏈應對這種情況的方式是讓使用者假設礦工的區塊需要多久才能被全網接收到,因此交易需要等待x個確認。

以太坊-ghost協議

前端知識自問自答

1.什麼是rfcs 並非所有的rfc文件都是網際網路標準,只有很少的rfc文件最後變成了網際網路標準。2.vue的雙向繫結的原理是什麼?vue.js是採用資料劫持結合發布者 訂閱者模式的方式,通過es5提供的object.defineproperty 方法來劫持 監視洛個屬性的setter,gett...

C語言自問自答

windows系統下,最好如何配置環境?notepad tdm gcc,powershell來進行!scanf函式的返回值,和不符合格式如何返回?1 include2 void main 3 輸入 1 2 3 返回1,2,3,3 輸入 1 a 3 返回1,1,0,1 其中,x為scanf的返回值,i...

spark 機制原理自問自答

本文主要收錄spark學習和工作中思考的問題。1 當spark task failed,什麼情況下task重計算,什麼情況下stage重計算?答 如果task失敗是因為shuffle output files lost,則dagscheduler會對stage重提交計算 如果不是因為shuffle ...