在上篇文章中,我們介紹了Vitalik原始論文中的CasperFFG,其借助PoS對PoW產生的區塊進行確認來提高系統的安全性,但這只是一種過渡的方案,在以太坊2.0中會使用一個純PoS的Casper協議,這篇文章中將為大家介紹在以太坊2.0中將要使用的Casper協議。如何成為Validator
首先我們看看以太坊2.0的架構是什么樣子,如圖1所示,在以太坊2.0中會有一條稱之為Beaconchain的主鏈,其通過PoS的Casper產生。在beaconchain下,存在1024個分片,每個分片可以獨立地處理數據。
圖1以太坊2.0架構從圖1可以看出,以太坊2.0和以太坊1.0將會是兩條鏈,在2.0分片實現之后,1.0將作為以太坊2.0的一個分片繼續運行。在上一篇文章中,我們介紹過可以通過抵押stake成為Validator參與到PoS共識中,為了使以太坊平穩得過度到2.0,如何通過抵押以太坊1.0中的stake成為以太坊2.0中的Validator是Casper需要解決的一個重要問題。在以太坊2.0中,原有的用戶可以通過抵押以太坊1.0中的ETH成為Validator,參與到2.0的PoS中,并且可以通過贖回操作,在2.0的以太坊中取回代幣。這里需要注意的是,以太坊1.0和2.0中的代幣并不相同,用戶抵押的是1.0中的ETH,贖回的是2.0中的代幣。用戶想要成為Validator,首先要向以太坊1.0中的一個特殊合約發送一筆交易抵押一定數量的ETH,然后用戶會得到關于這筆交易的一個證明。用戶通過向以太坊2.0展示這個證明,在驗證通過后成為Validator,如圖2所示:
Ethscriptions V2正式上線:7月25日消息,Ethscriptions協議創建者Middlemarch發推宣布,Ethscriptions V2正式上線,推出了一個新的面向以太坊訂閱市場的協議ESIP-2。此外,上線Pillars和mfpurrs兩個Collections。[2023/7/25 15:57:08]
圖2抵押以太坊1.0中的ETH成為以太坊2.0中的Validator過程為了驗證用戶抵押交易的正確性,以太坊2.0中需要保存當前以太坊1.0中的區塊信息、抵押合約中當前所有交易構成的Merkle的根哈希<root>,用戶向以太坊2.0展示其抵押交易,以及該抵押交易到<root>完整的Merkle樹的證明,就可以驗證這幣交易的合法性。通過驗證的用戶成為以太坊2.0中的Validator。以太坊2.0中Capser的出塊過程
在上一篇文章中,我們介紹的Casper是通過PoW進行出塊,使用PoS對區塊進行最終的確定。因此,純PoS的Casper一個需要解決的問題是如何產生區塊。在正式介紹協議過程前,我們先明確幾個定義:Validators集合:V=V1…Vn,假設每個Validator擁有相同的stake;slot:基本的時間單位,目前設定為6s;epoch:64個slot組成一個epoch;隨機數生成器:根據需要產生一個隨機數;在明確了上述的定義之后我們來進一步描述以太坊2.0中的Capser出塊過程,如圖3所示。
數據:StarkNet橋接存儲TVL突破6000枚ETH,過去7天增長超20%:金色財經報道,據Dune Analytics最新數據顯示,以太坊Layer2擴容解決方案StarkNet跨鏈橋接存儲總價值已突破6000枚ETH,本文撰寫時達到6,119枚ETH,按照當前價格計算超過780萬美元,參與橋接交易的用戶數量為79,842。
歷史數據顯示,StarkNet跨鏈橋接存儲總價值于11月28日突破5,000枚ETH,這意味著該指標在過去7天增長超20%;在其他L2跨鏈橋方面,當前Arbitrum跨鏈橋接存儲總價值為2,035,835枚ETH、Optimism為445,407枚ETH、zkSync為190,185枚ETH。[2022/12/5 21:22:25]
圖3以太坊2.0中Casper共識過程1、每一個epoch開始,通過隨機數生成器產生隨機數,將Validator集合V平均分為64份,得到S1、S2,…,S64。2、在一個epoch中,每一個sloti根據步驟1中產生的隨機數,選取Si中的一個Validator提交一個候選區塊,在sloti中提交候選區塊的Validator寫作proposer_i,提交的候選區塊寫作B_i。3、對于每一個sloti,Si中除proposer_i外的剩余Validator對B_i進行投票,該投票寫作attestation。4、在每一個sloti中,proposer_i負責將上一個slot中的attestation信息打包到當前slot的候選區塊中。即
最近5分鐘合約市場爆倉567萬美元 ETH爆倉432萬美元:據合約帝行情統計報告顯示:最近5分鐘合約市場全網總計爆倉567萬美元,其中BTC爆倉70.73萬美元,ETH爆倉432萬美元。[2020/10/28]
5、對于每一個sloti,Si中除proposer_i外的剩余Validator在收到了sloti的block或等待了3s后,其公布一個在他看來的當前鏈的頭部。
LMDGHOST
至此,我們介紹了Casper如何進行出塊以及Validator對于候選區塊的投票過程。需要注意的是,上文中提及到Validator需要對在它看來為鏈的頭部進行投票,以太坊2.0使用了一種新的最優鏈選擇算法來選擇鏈的頭部。在介紹這種新的最優鏈選擇算法之前,讓我們回憶一下以太坊1.0的最優鏈選擇算法——GHOST。GHOST算法的主要思想是,對于一條區塊鏈因為時間延遲和惡意節點的存在會產生許多的分叉,當發現分叉時,選擇子樹的總Difficulty最大作為最優鏈,如圖4所示:
圖4GHOST協議鏈在紅色的點產生分叉,假設每個區塊的Difficulty相同為1,藍色子樹的總Difficulty為8,紫色子樹的總Difficulty為4,因此選擇藍色作為最優鏈上的點。GHOST協議在在PoW協議中是沒有問題,但是PoS協議天然受到LangRange攻擊的影響,即攻擊者可以通過少量資金購買曾經擁有大量stake但是目前為空的賬戶,回到過去,在過去的位置進行分叉產生大量的非法的區塊,GHOST協議將無法保證系統的安全性。如圖5所示:
行情丨ETH在5分鐘內跌幅超過1.00%:據火幣全球站數據顯示,ETH/USDT在5分鐘內出現劇烈波動,跌超1.00%,達到-1.10%。當前報價為 172.38 美元,行情波動較大,請注意風險控制。[2019/9/5]
圖5:LangRange攻擊攻擊者通過在過去位置產生黃色的區塊,子樹B的總Difficulty為10,紫色區塊將成為最優鏈上的點。雖然在投票前需要抵押token,但是在贖回自己的token后,攻擊者就可以在其還是Validator的epoch中肆意妄為,不擔心token會被罰沒。因此,為了解決這個問題,以太坊2.0設計了一個新的算法——LMDGHOST。LMDGHOST的主要思想是,對一條存在分叉的鏈,在找尋鏈的頭部過程中,當其遇到分叉點時,選擇當前epoch中Validator支持多的那棵子樹。協議的主要過程為:對于一條存在分叉的鏈:1、H等于創世區塊;2、M=是Validator的最新消息;3、選擇M中支持率最多的孩子節點,將其設置為H;4、重復步驟直到沒有孩子節點;雖然LMDGHOST的使用是為了解決LongRange攻擊,但是筆者認為,購買曾經的賬戶相當于時光倒流,形成了一個新的平行宇宙,當一個新用戶進入時,面對兩條分叉鏈在不借助額外信息的情況下很難判斷哪個是攻擊者構造的鏈,因此LMDGHOST無法徹底抵御LongRange攻擊。至此我們已經介紹鏈以太坊2.0中的Casper如何進行出塊,接下來將是最后一個部分,如何對候選區塊進行最終的確認。區塊確認
行情 | ETH 15分鐘漲幅超過1.00%:據Bitfinex數據顯示,ETH 15分鐘內漲幅超過1.00%,現報價285.73美元,價格波動較大,請密切關注行情走勢,注意風險控制。[2018/8/31]
在上一篇文章中,我們解釋了justified和finalized的checkpoint,finalized的checkpoint之前的節點被最終確認。概括的說,以太坊2.0中的Casper將每個epoch當成一個checkpoint,attestation對checkpoint進行投票,進而確定checkpoint的justified和finalized狀態,確定justified和finalized的核心邏輯和上文中描述的類似。接下來,來說明一下block如何進入到justified和finalized狀態。如何justifyblock現在Casper將一個epoch分成64個slot,最后一個slot稱之為epoch_boundary_slot,用它的hash寫作epoch_boundary_hash代表一個epoch,將一個epoch看作一個checkpoint。讓鏈維護一個map,我們叫他justified_hashes,存儲的格式是<slot,hash>。為Validator的attestation增加兩個字段epoch_boundary_hash和latest_justified_hash,只有當attestation中的latest_justified_hash等于justified_hashes中的slot最新的hash,這個attestation才合法。鏈會跟蹤最新的justifiedhash,因此選擇相同epoch_boundary_hash會投票給相同的latest_justified_hash。現在我們來看看在一個epochboundary中,狀態是如何轉變的。假設對于一條鏈,最近的4個epoch的epoch_boundary_blockB1,B2,B3,B4其中B4是epoch最新的epoch_boundary_block,他們的slot寫作B1_slot,B2_slot,B3_slot,B4_slot,B3_slot=B4_slot-64,etc。如果有超過2/3的Validator選擇B4作為epoch_boundary_block,那么把<B4_slot,hash(B4)>加入justified_hashes。一個epoch_boundary_block成為justified的條件是超過2/3的Validator在其attestation中epoch_boundary_hash指向該block,當一個block被含在justified_hashes中表示,該block是justified,并且證明該block已經是justified的狀態被記錄到了鏈上。如何finalizeblock在確認了justified的狀態后,下一步需要確定如何讓block進入finalize狀態。如果B4和B3在justified_hashes中,投票給B4作為epoch_boundary_block的attestation選擇B3作為latest_justified_hash,finalizeB3。如果B4、B3、B2在justified_hashes中,投票給B4作為epoch_boundary_block的attestation選擇B2作為latest_justified_hash,finalizeB2。如果B3、B2、B1在justified_hashes中,投票給B3作為epoch_boundary_block的attestation選擇B1作為latest_justified_hash,finalizeB1。可以類比上一篇文章,Validator的投票為<v,s,t,h(s),h(t)>,可以將epoch_boundary_block看成h(t),latest_justified_hash看成h(s),這樣能更方便的理解block的確認過程。其他的一些小事
為了Casper完整的運行,還有一些小事需要解決,由于篇幅比較短小我們放在一起來說吧。懲罰條件為了抵御notingatstake攻擊,用戶通過抵押token成為Validator進行PoS,當Validator非法操作時,沒收其抵押的token,來防止壞人作惡。Validator的懲罰條件為:1、同一個Validator不能在相同的epoch中發出兩個不同的attestation。2、同一個Validator不能發出兩個attestation,他們的epoch_boundary_block分別為t1和t2,latest_justified_hash為s1和s2,且s1<s2<t2<t1。這個懲罰條件和上一篇文章中的懲罰條件是相同的。Validator更換條件dynasty(B)表示從blockB開始到創世區塊之間,finalizedepoch的個數。兩個dynasty之間可以更換1/64的Validator。分叉選擇條件從最新的finalizedblock開始,進行LMDGHOST。《求真區塊鏈》本系列關于Casper的文章到此為止就結束了,如果大家覺得有疑惑的地方可以搜索FractalPlatform公眾號加入社區討論,Fractal的技工們在線解疑。
編者按:本文來自區塊鏈大本營,作者:thenextweb,Odaily星球日報經授權轉載。雖然區塊鏈已經在不斷發展,但在應用層面,依舊值得我們持續關注.
1900/1/1 0:00:00文|M君編輯|畢彤彤Tong來源|PANews從下半年市場出現“一超多強”的穩定幣新格局,到今年Libra問世,再次喚起加密朋克們對支付場景的重視.
1900/1/1 0:00:00一、頭號“富二代”Bakkt交易平臺上線北京時間9月23日早8點,Bakkt交易平臺正式上線,這件事對于整個數字貨幣領域來講,絕對是萬眾矚目的,甚至很多人認為.
1900/1/1 0:00:00“最好的故事割最多的人。”今日凌晨,以BTC為首的主流幣集體跳水出現暴跌,“比特幣暴跌”時隔倆月再次登上微博熱搜榜.
1900/1/1 0:00:00隨便打開一個數字資產相關的網站,經常可以看到各種負面消息:某創始人跑路、某空氣破發、某軟件出BUG、某大會鬧丑聞、某國領導大肆抨擊……如此種種.
1900/1/1 0:00:00前幾年一起進入幣圈的朋友問我近況如何,我說不好不壞,朋友說他準備退出幣圈了,忙活了好幾年,沒賺到錢不說,反而回本之路遙遙無期,不會再拿新錢投進去了。聊天過后,深有感觸,又一位老朋友退出幣圈了.
1900/1/1 0:00:00