網(wǎng)上有很多關(guān)于pos機的未來,POS公鏈 未來的路更安全的知識,也有很多人為大家解答關(guān)于pos機的未來的問題,今天pos機之家(m.afbey.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
1、pos機的未來
pos機的未來
安全度主要包括兩方面,一是出塊者選擇的隨機程度,二是區(qū)塊驗證的參與度。雖然DPoS機制及隨機數(shù)算法部分解決了隨機問題,但真隨機數(shù)生成依然是一個幾乎不可能完成的挑戰(zhàn),因此現(xiàn)有的隨機選擇節(jié)點依然常被質(zhì)疑是偽隨機而存在安全隱患。
在復(fù)雜美開源的Chain33區(qū)塊鏈底層架構(gòu)中,有一個共識模塊叫作SPOS(safe pos),它通過Ticket實現(xiàn)POS的挖礦邏輯。
在這篇文章中,我將詳細講解SPOS模塊的實現(xiàn)原理,以及其解決隨機數(shù)漏洞的方式。
在Chain33的公鏈案例比特元中,用戶使用錢包賬戶中BTY余額購票(挖礦權(quán),目前10000個BTY可購買一票),一票對應(yīng)一個唯一的TicketID,同時擁有一份挖礦權(quán);一個區(qū)塊只能由一票挖出,實際的挖礦幾率各票均分(如全網(wǎng)有N張票,則一張票挖到礦的幾率為1/N)。
Ticket挖礦流程如下所示:
錢包:定期檢查賬戶中的BTY余額來購買票, 當(dāng)滿足購票條件后構(gòu)造一條買票交易發(fā)往區(qū)塊鏈。共識:它會一直嘗試使用本地持有的票去打包區(qū)塊,一旦打包成功,是表示對應(yīng)的Ticket持有人挖礦成功,并獲得對應(yīng)的區(qū)塊獎勵。智能合約:智能合約會把地址對應(yīng)的票信息寫入到區(qū)塊鏈數(shù)據(jù)庫,每一張Ticket都對應(yīng)有一個唯一的TicketID,也會有一條數(shù)據(jù)記錄在數(shù)據(jù)庫。在區(qū)塊鏈上為了體現(xiàn)公平性(針對游戲等應(yīng)用場景),就需要一個不能被預(yù)測的隨機數(shù)。
目前的區(qū)塊鏈大體有如下實現(xiàn)方案:
1. 合約中調(diào)用外部中心化的隨機數(shù)發(fā)生器獲取隨機數(shù);
2. 使用區(qū)塊hash中的某些值作為隨機數(shù)。
但是這兩種方案都有非常明顯的弊端,原因在于:
1. 區(qū)塊鏈多節(jié)點之間智能合約執(zhí)行結(jié)果是要求強一致的,如果合約從外部讀取數(shù)據(jù),是很有可能獲取到不同結(jié)果的(比如網(wǎng)絡(luò)原因?qū)е掠械墓?jié)點讀取正常,有的返回錯誤)進而導(dǎo)致分叉。
2. 區(qū)塊的哈希可以被控制,導(dǎo)致隨機數(shù)被控制。比如EOS,沒有提供很好的隨機數(shù)算法,所以很多Dapp開發(fā)者會自己封裝自認為完美的隨機數(shù)算法導(dǎo)致隨機數(shù)被預(yù)知。
例如以下兩個例子:
Eosbet第一次隨機數(shù)攻擊:這個游戲在開獎時使用了EOS中一個名為ref_block_num的隨機數(shù)因子,但是在游戲開獎時合約中還是讀取了老區(qū)塊中的值,導(dǎo)致隨機數(shù)被預(yù)知,進而被攻擊。Eosbet第二次隨機數(shù)攻擊:在修改了上一次的問題后,開發(fā)者再引入了一個新的參數(shù):用戶余額作為隨機數(shù)因子。然而攻擊者利用這一點,模擬完全一樣的DApp代碼,然后不停修改余額去嘗試開獎邏輯,直到碰撞出開獎結(jié)果,進而又遭到攻擊。還有其它很多EOS上的游戲遭受了類似手段的攻擊,造成大量的損失。
下面,我們就來著重講講如何實現(xiàn)在隨機數(shù)上的優(yōu)化。
首先,用戶使用錢包賬戶中的BTY購買票(Ticket),10000BTY對應(yīng)一票。錢包同時生成一個randNum,哈希過后再結(jié)合錢包挖礦地址的私鑰,票對應(yīng)的index(一次可以買多張票)等元素再做兩次哈希,得到一個公開哈希參數(shù)(pubHash):
pubHash =
hash(hash(privateKey:index:hash(randNum)))
然后,新購買的票中包含這個pubHash以及randNum并存入?yún)^(qū)塊鏈,這張票有12小時的成熟期,過了12小時才可以參與挖礦。
接著共識算法從區(qū)塊鏈中找到已經(jīng)成熟的票(Ticket)開始打包,由于共識打包區(qū)塊操作只在節(jié)點本地執(zhí)行,所以它可以讀取本地存儲的私鑰,算出一個私密哈希(privHash)并將這個參數(shù)放入到挖礦交易中:
privHash =
hash(privateKey:index:hash(randNum))
最后,智能合約收到挖礦交易,對比hash(privHash)和pubHash的值,兩者一致挖礦交易成功,對應(yīng)的節(jié)點獲得挖礦獎勵。否則挖礦交易執(zhí)行失敗。
最后總結(jié)一下,SPOS共識的實現(xiàn)結(jié)合了隨機數(shù),由于一般情況下是無法預(yù)測其它節(jié)點的共識信息,所以也無法獲取到它的共識隨機數(shù)。
并且系統(tǒng)設(shè)定私密哈希(privHash)不能提前泄露,就算有惡意礦工自己提前暴露,它對應(yīng)的票也會被作廢,同時本金會被凍結(jié)較長時間(2天以上)。
再加上系統(tǒng)設(shè)定票需要經(jīng)過12小時的成熟期后才可以參與挖礦。這些條件組合起來,系統(tǒng)的隨機數(shù)幾乎是無法被操控的。這樣當(dāng)開發(fā)者實現(xiàn)的DApp中需要保證公平隨機時,就可以直接使用系統(tǒng)提供的這個安全的隨機數(shù)了。
復(fù)雜美區(qū)塊鏈(www.33.cn)成立于2008年,累計申請200多項區(qū)塊鏈發(fā)明專利,全球排名前10。擁有自主研發(fā)的區(qū)塊鏈底層架構(gòu)Chain33,從2018年11月開源至今,其首創(chuàng)的平行鏈架構(gòu)被百度、阿里、360等機構(gòu)認可與研究,并登錄微軟azure市場。
以上就是關(guān)于pos機的未來,POS公鏈 未來的路更安全的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機的未來的知識,希望能夠幫助到大家!
