本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別是一種區(qū)塊鏈與鏈外數(shù)據(jù)對接、驗證、共識的方法及使用該方法的裝置。
背景技術(shù):
2008年,化名為“中本聰”(satoshinakamoto)的學(xué)者,發(fā)表了《比特幣:一種點對點電子現(xiàn)金系統(tǒng)》的論文,奠定了區(qū)塊鏈技術(shù)的基礎(chǔ)。狹義來講,區(qū)塊鏈?zhǔn)且环N按照時間順序?qū)?shù)據(jù)區(qū)塊以順序相連的方式組合成的一種鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),并以密碼學(xué)方式保證不可篡改不可偽造的分布式賬本。廣義上來講,區(qū)塊鏈技術(shù)是利用塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)來驗證與存儲數(shù)據(jù),利用分布式節(jié)點共識算法來生成更新數(shù)據(jù),利用密碼學(xué)的方式保證數(shù)據(jù)傳輸和方問安全,利用由自動化腳本代碼組成的智能合約來編程和操作數(shù)據(jù)的一種全新的分布式基礎(chǔ)架構(gòu)與計算范式。
特別是智能合約,它是區(qū)塊鏈最重要的特性,也是區(qū)塊鏈能夠被稱為顛覆性技術(shù)的主要原因。區(qū)塊鏈中,只有合約雙(多)方能動用資金;一旦合約確定了,其中的資金就由區(qū)塊鏈按照合約條款來分配,并且只有合約到期后,才可以使用這筆資金。但是合約有時是需要外部情況不同,來執(zhí)行不同的條款的。比如,以農(nóng)業(yè)保險為例,只有在保險其間發(fā)生大旱或大澇時,保險公司需要賠償農(nóng)民,如果沒有發(fā)生大旱或大澇則無需賠償。我們把保險合同以智能合約寫在區(qū)塊鏈上,并以是否發(fā)生大旱或大澇作為條件,執(zhí)行合約。這時,是否發(fā)生大旱或大澇是一種鏈外的數(shù)據(jù)。如何把大旱或大澇這種外部產(chǎn)生的數(shù)據(jù),作為條件對接到區(qū)塊鏈的智能合約,而且還要保證這些數(shù)據(jù)是真實有效不能作假的。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明目的在于提供一種區(qū)塊鏈與鏈外數(shù)據(jù)對接、驗證、共識的方法及裝置。
為解決上述技術(shù)問題,本發(fā)明提供一種區(qū)塊鏈與鏈外數(shù)據(jù)對接、驗證、共識的方法,包括:
s1,發(fā)起者發(fā)起預(yù)言機(jī);
s2,發(fā)起者設(shè)置問題;
s3,發(fā)起者回答問題或其他人回答問題;
s4,對發(fā)起者或其他人的答案進(jìn)行反證;
s5,對反證進(jìn)行驗證;
s6,將驗證的結(jié)果錄入?yún)^(qū)塊鏈。
優(yōu)選的,步驟s3中,如發(fā)起者回答問題,進(jìn)入步驟s4;
如發(fā)起者不回答問題,則由其他人進(jìn)行回答,進(jìn)入步驟s4;
優(yōu)選的,步驟s3中還包括:如發(fā)起者和其他人都不回答問題,則預(yù)言機(jī)失效。
優(yōu)選的,步驟s5包括:
步驟s5.1,選擇驗證者;
步驟s5.2,由驗證者對反證進(jìn)行驗證。
優(yōu)選的,步驟s5.1中,通過工作量證明、權(quán)益證明、委托投票、網(wǎng)絡(luò)貢獻(xiàn)值證明選擇驗證者。
優(yōu)選的,步驟s5.1中驗證者的數(shù)量為奇數(shù)。
優(yōu)選的,步驟s5.2中,以驗證者中超過半數(shù)人的判斷作為驗證的結(jié)果。
一種區(qū)塊鏈與鏈外數(shù)據(jù)對接、驗證、共識的方法的裝置,包括區(qū)塊鏈與鏈外數(shù)據(jù)對接、驗證、共識的方法。
與現(xiàn)有技術(shù)相比,本發(fā)明區(qū)塊鏈與鏈外數(shù)據(jù)對接、驗證、共識的方法及裝置具有以下優(yōu)點:無需依賴于第三方的數(shù)據(jù),以一種去中心化的,自洽的方式對接、驗證、共識的鏈外數(shù)據(jù)。
附圖說明
通過閱讀參照以下附圖對非限制性實施例所作的詳細(xì)描述,本發(fā)明的其它特征.目的和優(yōu)點將會變得更明顯。
圖1為本發(fā)明區(qū)塊鏈與鏈外數(shù)據(jù)對接、驗證、共識的方法流程圖。
具體實施方式
下面結(jié)合具體實施例對本發(fā)明進(jìn)行詳細(xì)說明。以下實施例將有助于本領(lǐng)域的技術(shù)人員進(jìn)一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變化和改。
區(qū)塊鏈智能合約鏈外數(shù)據(jù)作為合約的條件,是目前區(qū)塊鏈技術(shù)一個比較難的問題?,F(xiàn)有的技術(shù)一般是接入第三方機(jī)構(gòu)的數(shù)據(jù),作為解決方案的。這種解決方案有很大的不確定性,我們很難保證,第三方是否能夠提供這樣的數(shù)據(jù),即使提供了這樣的數(shù)據(jù),是否有串通造假等等,因此數(shù)據(jù)的真實有效性也難以確定。而且,第三方提供數(shù)據(jù)的服務(wù)器是否穩(wěn)定,是否安全,是否可能被黑客篡改數(shù)據(jù)等等。這種解決方案,數(shù)據(jù)很難被有效驗證??傊皇呛芎玫慕鉀Q方案。為此,我們發(fā)明了一種區(qū)塊鏈與鏈外數(shù)據(jù)對接、驗證、共識的方法與機(jī)制。
用戶在區(qū)塊鏈上發(fā)起一個合約,這是一種特殊的合約,叫預(yù)言機(jī)。其它的合約,可以基于預(yù)言機(jī)的答案,得到相應(yīng)的條件,觸發(fā)不同的程序得到相應(yīng)的結(jié)果。
預(yù)言機(jī)由以下幾部份組成:
1、生成預(yù)言機(jī)的人的地址。
預(yù)言機(jī)需要有一個發(fā)起者。
2、生成預(yù)言機(jī)所存的代幣數(shù)量。
發(fā)起者發(fā)起預(yù)言機(jī)的時候,需要存入一定的代幣,用于保證發(fā)起者在回答時間內(nèi)提供答案。當(dāng)其不提供答案,或者提供答案不證確的情況下,對其它提供證確答案的人,提供獎勵。而對發(fā)起者提供一個負(fù)激勵。
3、預(yù)言-問題。
對未來發(fā)生的某事情的判斷,或者對某一問題的描述。
例:某年某月某日某場公牛隊vs火箭隊,火箭隊勝。
例:某年某日某場英國隊vs巴西隊2:3。
例:a公司發(fā)貨給b公司。
問題的答案只能是“是”或“否”
4、結(jié)果-答案。
答案是對之前預(yù)言-問題,所定義的內(nèi)容作出的回答。
回答可以由包括由預(yù)言機(jī)發(fā)起者在內(nèi)的所有人回答。答案可以有多個,可以是互相矛盾的。如果一個預(yù)言或問題出現(xiàn)兩個相互矛盾的答案。就會啟動共識機(jī)制。
預(yù)言機(jī)定義者回答不需要存入代幣保證金。其它人回答需要與預(yù)言機(jī)定義者在創(chuàng)建預(yù)言機(jī)時存入的保證金相等的代幣。
5、回答時間。
回答時間規(guī)定在某一時間內(nèi)需要得到答案。
回答時間有三個階段:
a、第一階段,預(yù)言機(jī)定義者回答時間。這個階段只能由預(yù)言機(jī)定義者提供答案。此階段,預(yù)言機(jī)定義者不提供答案;則進(jìn)入第二階段,其在創(chuàng)建預(yù)言機(jī)時存入的代被將不會被返還,而是作為獎勵,給其它提供正確答案的人。如果預(yù)言機(jī)定義者提供了答案,則進(jìn)入第三階段,用戶反證階段。
b、第二階段。當(dāng)預(yù)言機(jī)定義者沒有提供答案時。其它任何用戶都可以提供答案??赡軙泻芏嗳颂峁┐鸢?。但我們只認(rèn)定第一個提供答案的人。提供答案的人,在提供答案時需要存入一筆與預(yù)言機(jī)定義者在定義此預(yù)言機(jī)時存入的代幣數(shù)量相等的代幣。這些代幣是對提供答案的人一個負(fù)激勵的制約。如果,他提供的答案是證確的,且無人提出相反答案,他存入的代幣將會返還,并且還會或得預(yù)言機(jī)定義者在定義預(yù)言機(jī)時存入的代幣作為獎勵。如果他提供的答案是假的,他將失去這筆代幣。這筆代幣將用來獎勵對他答案提出質(zhì)相反答案的人以及驗證者。
如果預(yù)言機(jī)定義者沒有提供答案。而且在第二階段也沒有人提供答案。則此預(yù)言機(jī)為無答案,標(biāo)識無答案標(biāo)志,最終狀態(tài)為無答案狀態(tài),使用預(yù)言機(jī)的智能合約,可以根據(jù)此種狀態(tài)進(jìn)行邏輯判斷。(與之相對的是一種有答案狀態(tài),如果是有答案狀態(tài),預(yù)言機(jī)則根據(jù)提供的答案進(jìn)行邏輯判斷)預(yù)言機(jī)定義者存入的代幣,將會被消毀。在第二階段,如果有用戶提供答案,則將進(jìn)入第三階段。
c、第三階段。第三階段為反證階段。此階段為對前兩階段提供的答案提出相反的答案。作何人都可以提出相反答案。可能有很多人會提出相反答案,但只認(rèn)定第一個提出相反答案的人。提出相反答案的人,需存入一筆與預(yù)言機(jī)定義者定義時存入的代幣數(shù)額相等的代幣。如果反證成功,則反證者存入的代幣將會返回。對預(yù)言機(jī)定義者的答案的反證成功,將會獲預(yù)言機(jī)定義者存在預(yù)言機(jī)里的代幣除去驗證費(fèi)后的剩余代幣用作為獎勵。如果反證失敗,反證者存入的代幣,將除去支付給驗證者的費(fèi)用外,其余將被扣除消毀。
如果是對其它人在第二階段提出的答案提出反證。成功,反證者存入的代幣將會被退還,另外,第二階段提供答案時存入的代幣將被作為獎勵給反證者,而且預(yù)言機(jī)定義者在定義預(yù)言機(jī)時存入的代幣也將作為獎勵給反證者,當(dāng)然要除去驗證者費(fèi)用。如果反證失敗,反證者存入的代幣及預(yù)言機(jī)定義者得到的存入的代幣都將作為獎勵給答案提供者。
6、共識機(jī)制。
如果發(fā)生反證。系統(tǒng)將由選擇奇數(shù)位,通過工作量證明或權(quán)益證明或委托投票或網(wǎng)絡(luò)貢獻(xiàn)值證明等方式產(chǎn)生的驗證者對其答案進(jìn)行驗證。這些驗證者如果對答案的看法一致,則驗證費(fèi)用由所有驗證者平分。如果不一致。則人數(shù)占多數(shù)的答案被認(rèn)定為有效答案。驗證費(fèi)被認(rèn)定為有效答案的投票者平分。投認(rèn)定為無效答案的驗證者沒有驗證費(fèi)。驗證完成后將驗證結(jié)果寫入預(yù)言機(jī),并記錄在區(qū)塊鏈。
7、預(yù)言機(jī)狀態(tài)。
一、未到回答時間狀態(tài):此時預(yù)言機(jī)還沒有到回答時間,不能回答。舉一個明顯的例子,比如球賽還沒結(jié)束,不可以有關(guān)于球賽的結(jié)果。因而球賽結(jié)束之前的任何回答都是無效的。為了杜絕這種無效回答。設(shè)定一個問題回答時間。在這個時間之前都不能這該問題回答。
二、待預(yù)言機(jī)定義者回答:此時間段長短可由預(yù)言機(jī)定義者在設(shè)定預(yù)言機(jī)時決定。在這個時間段內(nèi),只能由預(yù)言機(jī)定義者回答,非他任何人皆不能回答。
三、預(yù)言機(jī)定義者未回答,等其他人回答。此時,其作任何人都可以提供答案。
四、答案由預(yù)言機(jī)定義者提供,等待反證。此時,作何人都可以提出反證。
五、答案已由其它人提供,等待反證。此時,任何人都可以提出反證。
六、答案反證驗證狀態(tài)。
七、待驗證狀態(tài)。
八、預(yù)言機(jī)最終狀態(tài)。
8、預(yù)言機(jī)的標(biāo)識符。
預(yù)言機(jī)標(biāo)識符是唯一的,它由預(yù)言機(jī)定義者公鑰,預(yù)言機(jī)問題,預(yù)言機(jī)回答時間等數(shù)據(jù)hash后生成的一串字符串。用于標(biāo)識預(yù)言機(jī)。之后,通過它查找使用該預(yù)言機(jī)。
使用場景舉例:
配合智能合約使用:
1、定義預(yù)言機(jī);
2、將預(yù)言機(jī)的答案作為智能合約的判斷條件寫入智能合約;
3、執(zhí)行智能合約的時候,以預(yù)言機(jī)的狀態(tài)與答案為基礎(chǔ),執(zhí)行。
實施例一
在a國的b公司向在c國的d公司采購一批價值100萬的貨物。如果b公司先打錢給d公司的話,擔(dān)心d公司收到錢后不發(fā)貨。如果d公司先發(fā)貨給b公司的話,擔(dān)心b公司收到貨后,不打錢給d公司。于是雙方簽署一個智能合約,b公司把貨款存入智能合約,d公司把相應(yīng)的違約金也存入智能合約。該智能合約以d公司發(fā)貨的貨運(yùn)單為條件,如果d公司在規(guī)定的時間前,提供了有效的貨運(yùn)單,則該智能合約會將b公司存入的貨款以及d公司存入的違約金都轉(zhuǎn)給d公司,否則的話將全部轉(zhuǎn)給b公司。
那么這是怎么執(zhí)行的呢?
首先d公司要定義一個預(yù)言機(jī)。為什么要d公司定義貨運(yùn)單呢?這是因為,貨運(yùn)單是由d公司提供的。所以答案由d提供比較合理。
預(yù)言機(jī)問題定義為:d公司將于某年某日前,將一批價值100萬的貨物發(fā)貨給b公司,證明文件為某貨運(yùn)公司的貨運(yùn)單。答案:為是或否,然后附加一個證明文件。
預(yù)言機(jī)定義者回答時間:某年某月某日至某年某月某日
定義者未回答其它人回答時間:某年某月某日至某年某月某日
反證時間:某年某月某日至某年某月某日
存入代幣為:xxx
然后,雙方簽署智能合約,把預(yù)言機(jī)標(biāo)識寫入智能合約,智能合約的執(zhí)行,以預(yù)言機(jī)的答案和狀態(tài)為條件。答案分為三種,一種是“是”,一種是“否”。還有一種是“未提供答案”。如果預(yù)言機(jī)過了答案提供時間,沒有提供答案。這時就是第三種“未提供答案”。未提供答案,則視為d公司未發(fā)貨,判定d公司違約。b公司存在智能合約里的貨款與d公司存在智能合約里的違約金,將全部發(fā)送給b。
實施例例二
a與b,周日,nba公牛隊對火箭隊的一場比賽結(jié)束進(jìn)行下賭注。如果公牛隊贏則a需要支付1000給b,否則b將支付1000給a。
1、a或b作何一個人,發(fā)起一個預(yù)言機(jī)。
2、預(yù)言機(jī)定義的問題:周日公牛隊與火箭隊的比賽,公牛隊會贏。
3、預(yù)言機(jī)定義者回答時間:周日20點至周一10點。
4、預(yù)主機(jī)定義者未回答其它人回答時間:周一10至周一15點。
5、反證時間:有提供答案后24小時內(nèi)。
6、存入代幣:xxx
7、然后,雙方簽署智能合約,每人存1000到智能合約里面。把預(yù)言機(jī)標(biāo)識寫入智能合約,智能合約的執(zhí)行,以預(yù)言機(jī)的答案和狀態(tài)為條件。答案分為三種,一種是“是”,一種是“否”。還有一種是“未提供答案”。如果預(yù)言機(jī)過了答案提供時間,沒有提供答案。這時就是第三種“未提供答案”。如果答案是“是”,則將合約里的2000全部轉(zhuǎn)給b,如果答案是否,則轉(zhuǎn)給a。如果未提供答案,我們假設(shè)他們約定未提供答案則需將合約里的錢轉(zhuǎn)給a。那么在此邏輯處理塊中,將合約里的2000轉(zhuǎn)給a。
本發(fā)明還提供一種區(qū)塊鏈與鏈外數(shù)據(jù)對接、驗證、共識的方法的裝置。
以上對本發(fā)明的具體實施例進(jìn)行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變化或修改,這并不影響本發(fā)明的實質(zhì)內(nèi)容。在不沖突的情況下,本申請的實施例和實施例中的特征可以任意相互組合。