摘要:安全性不可更改性排序結(jié)果不能被壞人的攻擊更改。這也是很嚴(yán)重的公鏈安全事故。總而言之,通過設(shè)計安全的拓?fù)渑判蛩惴ǎ鉀Q交易順序問題。區(qū)塊排序的一致可以保證無效交易標(biāo)記的一致。樞軸鏈和分叉鏈的區(qū)塊獎勵計算規(guī)則是一致的。
12月27日,Conflux受邀參與TokenGazer舉辦的在線問答活動,Conflux CTO伍鳴博士與參與活動的百余名研究員進行了深度問答、科學(xué)辨析。此次活動讓大家深刻的了解到Conflux的技術(shù)優(yōu)勢和發(fā)展?jié)摿Γ沧尭嗳藢onflux的未來發(fā)展堅定了積極的信念。
(以下為此次活動的文字整理版)
問題1:Conflux使用的有向無環(huán)圖(DAG)跟比特幣、以太坊的區(qū)塊鏈結(jié)構(gòu)有什么具體不同,優(yōu)勢是什么?伍鳴@Conflux: 這個問題是一個非常本質(zhì)的問題,我愿意展開來談一談,這要從比特幣的效率局限性談起。根據(jù)一些論文,在比特幣協(xié)議中,無論如何調(diào)整出塊速度和區(qū)塊大小這兩個參數(shù),速度與安全不可兼得。
這其中的原理是什么呢?我們想象一下,如果兩個區(qū)塊都是由誠實節(jié)點生成的,但是因為網(wǎng)絡(luò)延遲,他們在生成的時候互相沒有看到對方,那么在兩個不同的分叉上,那么它們就會在不同的分叉上。一旦進入到不同的分叉上,二者便是你死我活的競爭關(guān)系,最終有一個區(qū)塊被丟棄。誠實節(jié)點的區(qū)塊被丟棄,損失的誠實節(jié)點的總算力。
分叉越多,好人區(qū)塊的內(nèi)訌越多,壞人的攻擊門檻越低,比特幣越不安全。為了安全,比特幣必須維持一個低的吞吐量。
Conflux使用有向無環(huán)圖結(jié)構(gòu) (DAG),我們允許每個區(qū)塊引用多個區(qū)塊作為自己的祖先區(qū)塊,可以避免好人之間的這種競爭,從而打破比特幣的矛盾,在提高效率的前提下不犧牲安全性。
以太坊與比特幣相比特殊一些,以太坊其實有了DAG的雛形。關(guān)注區(qū)塊鏈技術(shù)的朋友可能知道,以太坊中有叔塊的概念。一些區(qū)塊選一個父塊,幾個叔塊,看似也構(gòu)成了一個DAG。但是,以太坊的叔塊只是為了給沒有進主鏈的區(qū)塊發(fā)一點鼓勵安慰的系統(tǒng)獎勵,叔塊中的交易依然會被丟棄。如果將以太坊的出塊速度提高,導(dǎo)致分叉過多,其有效吞吐率依然很低。
下面有圖可以更好地展示優(yōu)勢,這張圖展示了4MB大小區(qū)塊下不同出塊時間下被保留區(qū)塊的數(shù)量。Conflux保留了所有區(qū)塊,比特幣和Ghost (以太坊協(xié)議改自這個協(xié)議) 則由于分叉丟失了大量的區(qū)塊。
總結(jié)一下:
①Conflux是和比特幣、以太坊類似的PoW公鏈,但允許一個區(qū)塊引用多個區(qū)塊作為祖先,從而構(gòu)成一個DAG。
②比特幣、以太坊的實際吞吐率很低,即使你嘗試減少出塊間隔或者增加區(qū)塊大小,也無法得到一個安全性和效率兼得的公鏈。
③和比特幣、以太坊相比,Conflux可以在不犧牲去中心化和安全性的情況下,提高吞吐率。
問題2:基于DAG的智能合約會遇到“交易順序問題”,比如誰先預(yù)定到某航班的座位跟交易順序有關(guān),Conflux有沒有比較好的設(shè)計解決這個問題?伍鳴@Conflux: “預(yù)定航班座位”是一個很好的例子,從這個例子可以看到,在DAG中,如果不同的交易需要競爭合約中的資源(比如航班座位),區(qū)塊排序與交易排序是一件十分必要的事情。這將決定誰的交易在前,誰的交易在后,誰最終得到了這個座位。
也是因為這一點,我們需要對DAG中的區(qū)塊設(shè)計一個拓?fù)渑判蛩惴ǎ瑢⑺袇^(qū)塊排一個順序,然后根據(jù)區(qū)塊的順序決定交易的執(zhí)行順序。而且這個拓?fù)渑判蛐枰獫M足以下幾點:
· 一致性:不同礦工節(jié)點排的結(jié)果是一致的。如果一些礦工告訴你選座成功,一些礦工告訴你選座失敗,你就會很困惑。
· 安全性(不可更改性):排序結(jié)果不能被壞人的攻擊更改。比如說,你選了一個座位,5分鐘后,這筆交易確認(rèn)成功了,你很開心。三天后你登機的時候,發(fā)現(xiàn)排序發(fā)生了更改,你的座位沒了。這也是很嚴(yán)重的公鏈安全事故。
Conflux設(shè)計了一個滿足上述要求的安全拓?fù)渑判蛩惴ǎ惴ㄝ斎胍粋€DAG,輸出DAG中區(qū)塊的一個拓?fù)渑判颉C總€礦工(全節(jié)點)將本地機器的DAG上輸入這個算法,就可以得到區(qū)塊排序,根據(jù)這個結(jié)果,就知道了應(yīng)該先執(zhí)行誰,后執(zhí)行誰。
“一致性與安全性”可能比較抽象,我們舉個例子。今天,這個DAG中有10000個區(qū)塊,9900個區(qū)塊里的交易已經(jīng)被確認(rèn)。明天,這個DAG有20000 個區(qū)塊,那么把明天的DAG和今天的DAG分別作為算法的輸入,前9900個區(qū)塊應(yīng)當(dāng)是一樣的,哪怕有壞人在做雙花攻擊。這就是一致性與安全性。
Conflux 的算法設(shè)計可以保證一致性與安全性。關(guān)于這個排序算法具體是如何設(shè)計的,感興趣的伙伴們可以閱讀我們的論文或者科普文章。
總而言之,Conflux通過設(shè)計安全的拓?fù)渑判蛩惴ǎ鉀Q“交易順序問題”。
問題3:如何解決不同區(qū)塊內(nèi)的打包交易的交易沖突問題,了解到當(dāng)交易沖突時時間稍后的沖突交易會被“discard”掉,這個被丟棄的交易是怎樣和有效交易進行狀態(tài)區(qū)分的?伍鳴@Conflux: 在問題2中,我們已經(jīng)解決了交易順序問題。那么當(dāng)所有節(jié)點對DAG得到一個一致的區(qū)塊排序時,只要遵循一個規(guī)則:“發(fā)生重復(fù)或沖突者,排序居后的交易無效”,就可以判斷哪些交易是無效的交易,然后自己在本地標(biāo)記一下就行。區(qū)塊排序的一致可以保證“無效交易標(biāo)記”的一致。
額外說一點,由于每筆交易是否有效是每個礦工自己做出的判斷,而沒有持久化寫在區(qū)塊中,所以無法實現(xiàn)像比特幣那樣,通過Merkle Path向輕節(jié)點證明一個交易在區(qū)塊中,因為你無法通過Merkle Path知道它是有效的還是無效的。但是,Conflux采用賬本模型,每個區(qū)塊頭會存儲當(dāng)前賬本狀態(tài)的哈希值。通過這個哈希值,很容易向輕節(jié)點證明指定地址的余額等。
總結(jié)一下:
①被丟棄的交易由全節(jié)點本地進行標(biāo)記,一致的排序結(jié)果保證一致的標(biāo)記。
②基于這一點,Conflux輕節(jié)點的交易驗證與比特幣有所不同。
問題4:那無效的交易會被追加一個狀態(tài)么,或者說我在區(qū)塊瀏覽器只查看交易哈希時,能否看出這兩筆交易(有效和無效)的區(qū)別?伍鳴@Conflux: 交易是否無效可以看成是交易執(zhí)行的某種結(jié)果,這種結(jié)果狀態(tài)是可以記錄在區(qū)塊中的,這樣,在區(qū)塊瀏覽器中就可以查到這種狀態(tài)。
問題5:這個交易執(zhí)行結(jié)果是標(biāo)記在本地還是在鏈上?伍鳴@Conflux: 標(biāo)記是在本地,但鏈上也會有所提現(xiàn)。之前的回答中其實提到,每個區(qū)塊頭會存儲當(dāng)前賬本狀態(tài)的哈希值,通過主鏈區(qū)塊的賬本狀態(tài),會體現(xiàn)歷史區(qū)塊中每筆交易是否有效。
問題6:跟其他鏈不同,無效的交易不會記錄在鏈上,Conflux是需要對無效交易本地打標(biāo),這是否可能對不了解的用戶有學(xué)習(xí)成本,以及利用這一點來混淆用戶的可能?伍鳴@Conflux: 通過瀏覽器提供標(biāo)記,可以幫助普通用戶判斷一筆交易是否有效。
問題7: DAG結(jié)構(gòu)中不存在“叔塊”問題,網(wǎng)絡(luò)中是否會存在過多的空塊或者區(qū)塊中的交易重復(fù)導(dǎo)致區(qū)塊數(shù)據(jù)冗余,從而對節(jié)點的網(wǎng)絡(luò)和硬件配置帶來壓力?伍鳴@Conflux: 首先,DAG中每一個區(qū)塊都是需要消耗算力才能生成的,所以網(wǎng)絡(luò)中各種區(qū)塊,無論是正常的區(qū)塊還是空塊,其數(shù)量受挖礦難度的制約,是有一個上界的。所以,對節(jié)點的網(wǎng)絡(luò)和硬件不會帶來額外的壓力。
其次,空塊或重復(fù)交易過多確實會影響利用率和實際的交易吞吐率。所以我們需要為礦工們設(shè)計一個交易選擇算法,從交易等待池中,根據(jù)交易費加權(quán)隨機抽取交易,以最大限度避免交易重復(fù)。這個算法的設(shè)計應(yīng)當(dāng)考慮激勵兼容性 (Incentive Compatible),以從經(jīng)濟激勵上鼓勵礦工遵守這個算法。
問題8: 這個算法是否已經(jīng)完成?伍鳴@Conflux: 這個算法的設(shè)計和理論分析已經(jīng)有了,現(xiàn)在在我們的系統(tǒng)中開發(fā)實現(xiàn),還沒有完成。
問題9:理論基礎(chǔ)就是姚教授的新論文?伍鳴@Conflux: 姚老師的論文是基于比特幣進行分析的,對我們這個算法的理論基礎(chǔ)有一定的啟發(fā)。
問題10:項目是否會進行預(yù)挖?主網(wǎng)啟動后礦工獎勵是否會有變化,樞軸鏈和分叉鏈上的區(qū)塊的區(qū)塊獎勵是否一樣。伍鳴@Conflux: 和以太坊一樣,創(chuàng)始塊會分配一定比例的代幣。每個區(qū)塊的基礎(chǔ)系統(tǒng)獎勵開始比較多,時間長了以后會逐漸減少。
在 Conflux 中,每個區(qū)塊的系統(tǒng)獎勵不是一個固定值,是根據(jù)一個規(guī)則算出來的。樞軸鏈和分叉鏈的區(qū)塊獎勵計算規(guī)則是一致的。
(小編注釋:在介紹這個規(guī)則之前,我們先來考慮一下一種情形。在Conflux 規(guī)則里,每個新的區(qū)塊應(yīng)該選擇一些引用邊,使所有已經(jīng)存在的區(qū)塊成為它的祖先。(具體的選邊規(guī)則參見我們的文章)。但是一個壞人可能會出于某種目的,在挖出一個新的區(qū)塊時,假裝沒收到或沒看見一些區(qū)塊,以獲取更多的交易費。我們就要懲罰壞人這種行為,假裝沒看到的區(qū)塊越多,這個區(qū)塊的區(qū)塊獎勵越少。)
如果要具體地描述這個規(guī)則,就要先講一個概念:“光錐外區(qū)塊”(anticone-block)。什么是“光錐外區(qū)塊”呢?在DAG中,如果兩個區(qū)塊之間沒有一條路徑,這兩個區(qū)塊的互為對方的 “光錐外區(qū)塊”, 比如在下圖中,B和C互為對方的光錐外區(qū)塊。
一個區(qū)塊的系統(tǒng)獎勵會與基礎(chǔ)系統(tǒng)獎勵和它的光錐外區(qū)塊的數(shù)量有關(guān),光錐外區(qū)塊越多,其獎勵越少。(小編注釋:當(dāng)壞人挖出一個新區(qū)塊時,那些假裝沒收到?jīng)]看見的區(qū)塊,都會成為新區(qū)塊的“光錐外區(qū)塊”。)如此設(shè)計,是為了鼓勵每個礦工遵守選擇引用邊的協(xié)議。
問題11:項目預(yù)挖的比例是多少呢。還有區(qū)塊減少的規(guī)則(比如比特幣每隔4年減半)?伍鳴@Conflux: 這些具體的數(shù)據(jù)會在我們主網(wǎng)上線之前公布,大家可以關(guān)注我們的公眾號。
問題12:這個設(shè)計的會讓區(qū)塊內(nèi)的獎勵會有不同,礦工要額外技術(shù)要挖快的預(yù)計獎勵對吧?那這樣的話,幣的數(shù)量是否會有不確定性?因為區(qū)塊的獎勵不確定,導(dǎo)致一年之后挖的幣的數(shù)量不可控?伍鳴@Conflux: 這個設(shè)計會讓區(qū)塊內(nèi)的獎勵有不同,但是,在正常情況下,這個差異不會很大。我們希望用這個差異,來鼓勵礦工們遵守協(xié)議。
問題13:Conflux預(yù)計主網(wǎng)上線是什么時間,TPS能達(dá)到多少。伍鳴@Conflux: 我們的測試網(wǎng)預(yù)計在明年3月份上線,主網(wǎng)上線預(yù)計在明年Q3或Q4。
---
小編:
在這次在線問答中,我們發(fā)現(xiàn)很多關(guān)心區(qū)塊鏈的小伙伴對獎勵機制和挖礦規(guī)則很感興趣,我們會在后期特別推出一篇關(guān)于此話題的技術(shù)文章,歡迎小伙伴們關(guān)注我們的公眾號來隨時掌握更新狀態(tài)!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/11960.html
摘要:安全性不可更改性排序結(jié)果不能被壞人的攻擊更改。這也是很嚴(yán)重的公鏈安全事故。總而言之,通過設(shè)計安全的拓?fù)渑判蛩惴ǎ鉀Q交易順序問題。區(qū)塊排序的一致可以保證無效交易標(biāo)記的一致。樞軸鏈和分叉鏈的區(qū)塊獎勵計算規(guī)則是一致的。 showImg(https://segmentfault.com/img/remote/1460000017710155?w=893&h=380); 12月27日,Conf...
摘要:安全性不可更改性排序結(jié)果不能被壞人的攻擊更改。這也是很嚴(yán)重的公鏈安全事故。總而言之,通過設(shè)計安全的拓?fù)渑判蛩惴ǎ鉀Q交易順序問題。區(qū)塊排序的一致可以保證無效交易標(biāo)記的一致。樞軸鏈和分叉鏈的區(qū)塊獎勵計算規(guī)則是一致的。 showImg(https://segmentfault.com/img/remote/1460000017710155?w=893&h=380); 12月27日,Conf...
摘要:第二十二期掘金團隊請來了進階解密作者劉望舒做了為期三天的活動活動已結(jié)束。我們在此精選了一些來自用戶的提問及劉望舒的回答。提醒本期分布式微服務(wù)主題的正在進行,歡迎前去提問,傳送門關(guān)于劉望舒進階之光進階解密的作者,安卓巴士等技術(shù)大會特邀講師。第二十二期 AMA 掘金團隊請來了《Android進階解密》作者-- 劉望舒做了為期三天的 Ask Me Anything (AMA) 活動(活動已結(jié)束)。...
閱讀 720·2021-11-24 10:30
閱讀 1254·2021-09-24 09:48
閱讀 3074·2021-09-24 09:47
閱讀 3585·2019-08-29 17:11
閱讀 2875·2019-08-29 15:38
閱讀 2270·2019-08-29 11:03
閱讀 3594·2019-08-26 12:15
閱讀 1008·2019-08-26 10:45