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