本發(fā)明涉及互聯(lián)網(wǎng)軟件領(lǐng)域,尤其涉及一種區(qū)塊鏈的分組共識(shí)方法及系統(tǒng)。
背景技術(shù):
區(qū)塊鏈?zhǔn)且环N新型去中心化分布式系統(tǒng)協(xié)議。信息不可偽造和篡改,無(wú)需任何中心化機(jī)構(gòu)的審核。區(qū)塊鏈技術(shù)解決了拜占庭將軍問題,大大降低了現(xiàn)實(shí)社會(huì)的信任成本,重新定義互聯(lián)網(wǎng)時(shí)代的信任機(jī)制。區(qū)塊鏈本質(zhì)上是一個(gè)去中心化,開放的數(shù)據(jù)庫(kù),同時(shí)作為比特幣的底層技術(shù)。區(qū)塊鏈?zhǔn)且淮褂妹艽a學(xué)方法相關(guān)聯(lián)產(chǎn)生的數(shù)據(jù)塊鏈,每一個(gè)區(qū)塊中包含了一定數(shù)量的比特幣網(wǎng)絡(luò)交易信息。通過將需要信任背書的數(shù)據(jù)存入比特幣交易賬本中,實(shí)現(xiàn)可信的,去中心化的信用背書。
在去中心化的情況下,區(qū)塊鏈并不是一個(gè)中心機(jī)構(gòu)創(chuàng)造的,而是由比特幣網(wǎng)絡(luò)中的所有節(jié)點(diǎn)各自競(jìng)爭(zhēng)完成的。比特幣網(wǎng)絡(luò)依靠去中心化的自發(fā)共識(shí)機(jī)制來保證區(qū)塊鏈?zhǔn)艿礁鱾€(gè)節(jié)點(diǎn)的認(rèn)可。比特幣的去中心化共識(shí)包括以下部分:每個(gè)節(jié)點(diǎn)對(duì)每個(gè)交易進(jìn)行獨(dú)立驗(yàn)證;通過完成工作量證明算法的驗(yàn)算,挖礦節(jié)點(diǎn)將交易記錄獨(dú)立打包進(jìn)新區(qū)塊;每個(gè)節(jié)點(diǎn)獨(dú)立對(duì)新區(qū)塊進(jìn)行校驗(yàn)并組裝進(jìn)區(qū)塊鏈;每個(gè)節(jié)點(diǎn)對(duì)區(qū)塊鏈進(jìn)行獨(dú)立選擇,在工作量證明機(jī)制下選擇累計(jì)工作量最大的區(qū)塊鏈。目前的共識(shí)機(jī)制下,每個(gè)節(jié)點(diǎn)都可以對(duì)交易進(jìn)行驗(yàn)證和打包,缺少了權(quán)限控制。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的發(fā)明目的是針對(duì)現(xiàn)有技術(shù)的缺陷,提供了一種區(qū)塊鏈的分組共識(shí)方法及系統(tǒng),用于解決現(xiàn)有技術(shù)中節(jié)點(diǎn)缺失權(quán)限控制等問題。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種區(qū)塊鏈的分組共識(shí)方法,包括:
交易驗(yàn)證節(jié)點(diǎn)接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證交易合法后,對(duì)交易進(jìn)行簽名并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中;
由指定的交易打包節(jié)點(diǎn)接收簽名后的交易,驗(yàn)證交易的簽名是否為交易驗(yàn)證節(jié)點(diǎn)的簽名,若是,將交易與簽名關(guān)聯(lián)存儲(chǔ);
交易打包節(jié)點(diǎn)將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊;將區(qū)塊加入交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,并對(duì)區(qū)塊進(jìn)行簽名,在區(qū)塊鏈網(wǎng)絡(luò)中廣播簽名后的區(qū)塊;
除交易打包節(jié)點(diǎn)外的其他節(jié)點(diǎn)在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入其他節(jié)點(diǎn)自身的區(qū)塊鏈副本中;其中,其他節(jié)點(diǎn)包括交易驗(yàn)證節(jié)點(diǎn)、未被指定的交易打包節(jié)點(diǎn)和常規(guī)節(jié)點(diǎn)。
根據(jù)本發(fā)明的另一個(gè)方面,還提供了一種區(qū)塊鏈的分組共識(shí)系統(tǒng),包括:多個(gè)交易驗(yàn)證節(jié)點(diǎn)、多個(gè)交易打包節(jié)點(diǎn)以及多個(gè)常規(guī)節(jié)點(diǎn);
交易驗(yàn)證節(jié)點(diǎn)用于接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證交易合法后,對(duì)交易進(jìn)行簽名并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中;
交易打包節(jié)點(diǎn)用于接收簽名后的交易,驗(yàn)證交易的簽名是否為交易驗(yàn)證節(jié)點(diǎn)的簽名,若是,將交易與簽名關(guān)聯(lián)存儲(chǔ);
交易打包節(jié)點(diǎn)還用于將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊;將區(qū)塊加入交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,并對(duì)區(qū)塊進(jìn)行簽名,在區(qū)塊鏈網(wǎng)絡(luò)中廣播簽名后的區(qū)塊;
常規(guī)節(jié)點(diǎn)用于在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入常規(guī)節(jié)點(diǎn)自身的區(qū)塊鏈副本中;
交易驗(yàn)證節(jié)點(diǎn)還用于在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入交易驗(yàn)證節(jié)點(diǎn)自身的區(qū)塊鏈副本中;
未被指定的交易打包節(jié)點(diǎn)還用于在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入未被指定的交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中。
根據(jù)本發(fā)明提供的區(qū)塊鏈的分組共識(shí)方法及系統(tǒng),交易驗(yàn)證節(jié)點(diǎn)接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證交易合法后,對(duì)交易進(jìn)行簽名并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。由指定的交易打包節(jié)點(diǎn)接收簽名后的交易,驗(yàn)證交易的簽名是否為交易驗(yàn)證節(jié)點(diǎn)的簽名,若是,將交易與簽名關(guān)聯(lián)存儲(chǔ)。交易打包節(jié)點(diǎn)將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊,將區(qū)塊加入交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,并對(duì)區(qū)塊進(jìn)行簽名,在區(qū)塊鏈網(wǎng)絡(luò)中廣播簽名后的區(qū)塊。除交易打包節(jié)點(diǎn)外的其他節(jié)點(diǎn)在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入其他節(jié)點(diǎn)自身的區(qū)塊鏈副本中。對(duì)區(qū)塊鏈中各不同功能節(jié)點(diǎn)進(jìn)行分類,處理不同的操作,實(shí)現(xiàn)對(duì)不同節(jié)點(diǎn)的權(quán)限控制。將操作委托給可信賴的節(jié)點(diǎn)如交易驗(yàn)證節(jié)點(diǎn)、交易打包節(jié)點(diǎn),由于這些節(jié)點(diǎn)是受信任的節(jié)點(diǎn),無(wú)需通過工作量證明對(duì)交易進(jìn)行打包,減少了交易打包的時(shí)間,提高了區(qū)塊形成速度。
附圖說明
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的區(qū)塊鏈的分組共識(shí)方法的流程示意圖;
圖2示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的區(qū)塊鏈的分組共識(shí)方法的流程示意圖;
圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的區(qū)塊鏈的分組共識(shí)系統(tǒng)的功能結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
對(duì)區(qū)塊鏈網(wǎng)絡(luò)中存在的多個(gè)節(jié)點(diǎn),進(jìn)行分組。不同組的節(jié)點(diǎn)用于實(shí)現(xiàn)不同的功能,如交易驗(yàn)證節(jié)點(diǎn)用于對(duì)在區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易進(jìn)行驗(yàn)證,將驗(yàn)證通過的交易加入自身的交易池并且再次廣播到區(qū)塊鏈;交易打包節(jié)點(diǎn)用于將驗(yàn)證通過的交易加入自身的交易池,將交易池中的交易打包進(jìn)區(qū)塊并在區(qū)塊鏈網(wǎng)絡(luò)中廣播區(qū)塊等。這些節(jié)點(diǎn)都是受信任的節(jié)點(diǎn)。除此之外,還有普通節(jié)點(diǎn),用于廣播交易。其中,可以通過如硬編碼的方式對(duì)節(jié)點(diǎn)進(jìn)行分組,每個(gè)節(jié)點(diǎn)都知道自己為哪種節(jié)點(diǎn),也知道其他節(jié)點(diǎn)為哪種節(jié)點(diǎn),以及節(jié)點(diǎn)的公鑰,以便對(duì)節(jié)點(diǎn)的簽名進(jìn)行驗(yàn)證。所有的節(jié)點(diǎn)都可以廣播交易,對(duì)廣播的區(qū)塊進(jìn)行驗(yàn)證,將驗(yàn)證通過的區(qū)塊加入自身的區(qū)塊鏈副本。
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的區(qū)塊鏈的分組共識(shí)方法的流程示意圖。如圖1所示,本方法具體包括如下步驟:
步驟S101,交易驗(yàn)證節(jié)點(diǎn)接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證交易合法后,對(duì)交易進(jìn)行簽名并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。
通過如硬編碼等方式設(shè)置區(qū)塊鏈網(wǎng)絡(luò)中的某些節(jié)點(diǎn)為交易驗(yàn)證節(jié)點(diǎn)。交易驗(yàn)證節(jié)點(diǎn)在接收到區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易后,對(duì)交易進(jìn)行驗(yàn)證。驗(yàn)證時(shí),交易驗(yàn)證節(jié)點(diǎn)通過對(duì)交易的格式、交易是否雙重花費(fèi)等多個(gè)方面驗(yàn)證交易是否為合法交易。交易的格式、交易是否雙重花費(fèi)等驗(yàn)證條件的設(shè)置可采用現(xiàn)有的交易驗(yàn)證條件,此處不做具體限定。
交易驗(yàn)證節(jié)點(diǎn)通過多方面的驗(yàn)證條件驗(yàn)證交易為合法交易后,利用其本身的私鑰對(duì)交易進(jìn)行簽名,將簽名后的交易發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。
步驟S102,由指定的交易打包節(jié)點(diǎn)接收簽名后的交易,驗(yàn)證所述交易的簽名是否為所述交易驗(yàn)證節(jié)點(diǎn)的簽名。
通過如硬編碼等方式設(shè)置區(qū)塊鏈網(wǎng)絡(luò)中的某些節(jié)點(diǎn)為交易打包節(jié)點(diǎn)。存在多個(gè)交易打包節(jié)點(diǎn)時(shí),指定其中一個(gè)節(jié)點(diǎn)為本次的交易打包節(jié)點(diǎn)。
由指定的交易打包節(jié)點(diǎn)接收簽名后的交易,利用簽名的交易驗(yàn)證節(jié)點(diǎn)的公鑰對(duì)交易的簽名進(jìn)行驗(yàn)證,驗(yàn)證交易的簽名是否為交易驗(yàn)證節(jié)點(diǎn)的簽名。若是,執(zhí)行步驟S103。
步驟S103,若是,將交易與簽名關(guān)聯(lián)存儲(chǔ)。
在將交易與簽名關(guān)聯(lián)存儲(chǔ)時(shí),可選地,還可用在將交易與簽名關(guān)聯(lián)存儲(chǔ)之前,判斷交易是否已保存在交易池中。若交易未保存在交易池中,將交易保存在交易池中,并將交易的簽名與交易關(guān)聯(lián)存儲(chǔ);若交易已經(jīng)保存在交易池中,進(jìn)一步判斷交易的簽名是否與交易已關(guān)聯(lián)存儲(chǔ)的簽名一致。若一致,不再再次保存。若不一致,將交易的簽名與交易進(jìn)行關(guān)聯(lián)存儲(chǔ),即將交易當(dāng)前與已關(guān)聯(lián)存儲(chǔ)的簽名不一致的簽名進(jìn)行存儲(chǔ),存儲(chǔ)時(shí),將交易的簽名與交易需關(guān)聯(lián)存儲(chǔ)。
步驟S104,交易打包節(jié)點(diǎn)將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊。
預(yù)設(shè)標(biāo)準(zhǔn)為拜占庭容錯(cuò)標(biāo)準(zhǔn)。拜占庭容錯(cuò)標(biāo)準(zhǔn)為交易池中保存的交易關(guān)聯(lián)的交易驗(yàn)證節(jié)點(diǎn)簽名數(shù)量大于交易驗(yàn)證節(jié)點(diǎn)數(shù)量的三分之二。如交易驗(yàn)證節(jié)點(diǎn)的數(shù)量為10,交易打包節(jié)點(diǎn)的交易池中的某一交易關(guān)聯(lián)的交易驗(yàn)證節(jié)點(diǎn)簽名數(shù)量大于等于7,則該交易滿足拜占庭容錯(cuò)標(biāo)準(zhǔn)。交易打包節(jié)點(diǎn)將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊。
可選地,交易打包節(jié)點(diǎn)可以在某預(yù)設(shè)條件時(shí),將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊。預(yù)設(shè)條件可以為如上述的交易打包節(jié)點(diǎn)的交易池中保存有一定數(shù)量的滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易;或預(yù)設(shè)條件為時(shí)間達(dá)到預(yù)設(shè)的時(shí)間間隔,即距離上次打包時(shí)間已過去預(yù)設(shè)的時(shí)間間隔時(shí),交易打包節(jié)點(diǎn)將交易池中滿足上述拜占庭容錯(cuò)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊。具體的數(shù)量或時(shí)間間隔數(shù)值可根據(jù)實(shí)施情況進(jìn)行設(shè)定,此處不做具體限定。
步驟S105,將區(qū)塊加入交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,并對(duì)區(qū)塊進(jìn)行簽名,在區(qū)塊鏈網(wǎng)絡(luò)中廣播簽名后的區(qū)塊。
將步驟S104打包的區(qū)塊加入到交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,形成新的區(qū)塊鏈副本。同時(shí),對(duì)打包的區(qū)塊進(jìn)行簽名,如利用交易打包節(jié)點(diǎn)本身的私鑰進(jìn)行簽名等。簽名后,將簽名后的區(qū)塊在區(qū)塊鏈網(wǎng)絡(luò)中進(jìn)行廣播。
步驟S106,除交易打包節(jié)點(diǎn)外的其他節(jié)點(diǎn)在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入其他節(jié)點(diǎn)自身的區(qū)塊鏈副本中。
其他節(jié)點(diǎn)包括了交易驗(yàn)證節(jié)點(diǎn)、本次未被指定的交易打包節(jié)點(diǎn)和區(qū)塊鏈網(wǎng)絡(luò)中存在的常規(guī)節(jié)點(diǎn)。這些節(jié)點(diǎn)在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入到其自身的區(qū)塊鏈副本中,從而整個(gè)區(qū)塊鏈網(wǎng)絡(luò)中所有節(jié)點(diǎn)都完成了將該區(qū)塊組裝至區(qū)塊鏈的過程。
根據(jù)本發(fā)明提供的區(qū)塊鏈的分組共識(shí)方法,交易驗(yàn)證節(jié)點(diǎn)接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證交易合法后,對(duì)交易進(jìn)行簽名并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。由指定的交易打包節(jié)點(diǎn)接收簽名后的交易,驗(yàn)證所述交易的簽名是否為所述交易驗(yàn)證節(jié)點(diǎn)的簽名;若是,將交易的簽名與交易關(guān)聯(lián)存儲(chǔ)。交易打包節(jié)點(diǎn)將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊,將區(qū)塊加入交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,并對(duì)區(qū)塊進(jìn)行簽名,在區(qū)塊鏈網(wǎng)絡(luò)中廣播簽名后的區(qū)塊。除交易打包節(jié)點(diǎn)外的其他節(jié)點(diǎn)在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入其他節(jié)點(diǎn)自身的區(qū)塊鏈副本中。對(duì)區(qū)塊鏈中各不同功能節(jié)點(diǎn)進(jìn)行分類,處理不同的操作,實(shí)現(xiàn)對(duì)不同節(jié)點(diǎn)的權(quán)限控制。將操作委托給可信賴的節(jié)點(diǎn)如交易驗(yàn)證節(jié)點(diǎn)、交易打包節(jié)點(diǎn),由于這些節(jié)點(diǎn)是受信任的節(jié)點(diǎn),無(wú)需通過工作量證明對(duì)交易進(jìn)行打包,減少了交易打包的時(shí)間,提高了區(qū)塊形成速度。
圖2示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的區(qū)塊鏈的分組共識(shí)方法的流程示意圖。如圖2所示,本方法包括如下步驟:
步驟S201,交易驗(yàn)證節(jié)點(diǎn)接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易。
步驟S202,判斷交易是否為其他交易驗(yàn)證節(jié)點(diǎn)簽名后的交易。
在交易驗(yàn)證節(jié)點(diǎn)接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易后,判斷交易是否已經(jīng)被其他交易驗(yàn)證節(jié)點(diǎn)簽名,即交易是否為已經(jīng)驗(yàn)證后合法的交易,并被其他交易驗(yàn)證節(jié)點(diǎn)簽名后的交易。若是,即交易為合法交易,且被其他交易驗(yàn)證節(jié)點(diǎn)簽名,執(zhí)行步驟S203,否則,即交易還沒有被驗(yàn)證,執(zhí)行步驟S204。
步驟S203,若交易為其他交易驗(yàn)證節(jié)點(diǎn)簽名后的交易,交易驗(yàn)證節(jié)點(diǎn)對(duì)交易進(jìn)行簽名并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。
交易驗(yàn)證節(jié)點(diǎn)可以直接利用自身的私鑰對(duì)交易進(jìn)行簽名,簽名時(shí),可以在交易原有簽名的基礎(chǔ)上,再增加本次交易驗(yàn)證節(jié)點(diǎn)的簽名,也可以將其他交易驗(yàn)證節(jié)點(diǎn)的簽名替換為本次交易驗(yàn)證節(jié)點(diǎn)的簽名,具體實(shí)施時(shí),可根據(jù)實(shí)施情況進(jìn)行設(shè)置,此處不做具體限定。
簽名后,將簽名后的交易發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中,繼續(xù)執(zhí)行步驟S207。
步驟S204,交易驗(yàn)證節(jié)點(diǎn)驗(yàn)證交易是否合法。
因交易未經(jīng)驗(yàn)證,交易驗(yàn)證節(jié)點(diǎn)通過對(duì)交易的格式、交易是否雙重花費(fèi)等多個(gè)方面驗(yàn)證交易是否為合法交易。交易的格式、交易是否雙重花費(fèi)等驗(yàn)證條件的設(shè)置可采用現(xiàn)有的交易驗(yàn)證條件,此處不做具體限定。
若交易為合法交易,執(zhí)行步驟S206,否則執(zhí)行步驟S205。
步驟S205,若驗(yàn)證交易不合法,將交易直接發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。
若交易為不合法交易,對(duì)交易不做任何處理,將交易直接發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中,執(zhí)行步驟S217,本次方法的執(zhí)行結(jié)束。
步驟S206,驗(yàn)證交易合法后,對(duì)交易進(jìn)行簽名并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。
交易驗(yàn)證節(jié)點(diǎn)通過多方面的驗(yàn)證條件驗(yàn)證交易為合法交易后,利用其本身的私鑰對(duì)交易進(jìn)行簽名,將簽名后的交易發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。
步驟S207,在多個(gè)交易打包節(jié)點(diǎn)中利用預(yù)設(shè)選舉算法選舉出一個(gè)交易打包節(jié)點(diǎn)作為指定的交易打包節(jié)點(diǎn)。
通過如硬編碼等方式設(shè)置區(qū)塊鏈網(wǎng)絡(luò)中的某些節(jié)點(diǎn)為交易打包節(jié)點(diǎn)。存在多個(gè)交易打包節(jié)點(diǎn)時(shí),指定其中一個(gè)節(jié)點(diǎn)為本次的交易打包節(jié)點(diǎn)。指定時(shí)利用預(yù)設(shè)選舉算法選舉出一個(gè)交易打包節(jié)點(diǎn)。每一次執(zhí)行前選舉出一個(gè)交易打包節(jié)點(diǎn)對(duì)交易執(zhí)行打包,預(yù)設(shè)選舉算法僅在交易打包節(jié)點(diǎn)中執(zhí)行,選舉出的交易打包節(jié)點(diǎn)為唯一一個(gè)指定的交易打包節(jié)點(diǎn)。具體的選舉算法可采用如隨機(jī)法、比重法、輪序法等等算法,此處不做具體限定。
步驟S208,由指定的交易打包節(jié)點(diǎn)接收簽名后的交易,利用公鑰驗(yàn)證交易的簽名是否為交易驗(yàn)證節(jié)點(diǎn)的簽名。
指定的交易打包節(jié)點(diǎn)接收簽名后的交易后,利用簽名的交易驗(yàn)證節(jié)點(diǎn)的公鑰對(duì)交易的簽名進(jìn)行驗(yàn)證,驗(yàn)證交易的簽名是否為交易驗(yàn)證節(jié)點(diǎn)的簽名。若是,執(zhí)行步驟S209,否則執(zhí)行步驟S217,本次方法的執(zhí)行結(jié)束。
步驟S209,判斷交易是否已保存在交易池中。
驗(yàn)證交易的簽名為交易驗(yàn)證節(jié)點(diǎn)的簽名后,進(jìn)一步判斷交易是否已保存在交易打包節(jié)點(diǎn)的交易池中。若已保存,執(zhí)行步驟S211,若未保存,執(zhí)行步驟S210。
步驟S210,將交易保存在交易池中,并將交易的簽名與交易關(guān)聯(lián)存儲(chǔ)。
將該交易保存在交易打包節(jié)點(diǎn)的交易池中,并將交易的簽名和交易本身進(jìn)行關(guān)聯(lián)存儲(chǔ)。存儲(chǔ)后,執(zhí)行步驟S213。
步驟S211,若交易已保存在交易池中,判斷交易的簽名是否與交易已關(guān)聯(lián)存儲(chǔ)的簽名一致。
若交易已保存在交易打包節(jié)點(diǎn)的交易池中,還需要判斷保存的交易已關(guān)聯(lián)存儲(chǔ)的簽名與交易當(dāng)前的簽名是否一致,若不一致,執(zhí)行步驟S212,若一致,執(zhí)行步驟S213。
步驟S212,若不一致,將交易的簽名與交易關(guān)聯(lián)存儲(chǔ)。
將交易的簽名與交易進(jìn)行關(guān)聯(lián)存儲(chǔ),即將交易當(dāng)前與已關(guān)聯(lián)存儲(chǔ)的簽名不一致的簽名進(jìn)行存儲(chǔ),存儲(chǔ)時(shí),交易的簽名與交易需關(guān)聯(lián)存儲(chǔ)。
步驟S213,交易打包節(jié)點(diǎn)將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊。
預(yù)設(shè)標(biāo)準(zhǔn)為拜占庭容錯(cuò)標(biāo)準(zhǔn)。拜占庭容錯(cuò)標(biāo)準(zhǔn)為交易池中保存的交易關(guān)聯(lián)的交易驗(yàn)證節(jié)點(diǎn)簽名數(shù)量大于交易驗(yàn)證節(jié)點(diǎn)數(shù)量的三分之二。如交易驗(yàn)證節(jié)點(diǎn)的數(shù)量為10,交易打包節(jié)點(diǎn)的交易池中的某一交易關(guān)聯(lián)的交易驗(yàn)證節(jié)點(diǎn)簽名數(shù)量大于等于7,則該交易滿足拜占庭容錯(cuò)標(biāo)準(zhǔn)。交易打包節(jié)點(diǎn)將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊。
可選地,交易打包節(jié)點(diǎn)可以在某預(yù)設(shè)條件時(shí),將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊。預(yù)設(shè)條件可以為如上述的交易打包節(jié)點(diǎn)的交易池中保存有一定數(shù)量的滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易;或預(yù)設(shè)條件為時(shí)間達(dá)到預(yù)設(shè)的時(shí)間間隔,即距離上次打包時(shí)間已過去預(yù)設(shè)的時(shí)間間隔時(shí),交易打包節(jié)點(diǎn)將交易池中滿足拜占庭容錯(cuò)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊。具體的數(shù)量或時(shí)間間隔數(shù)值可根據(jù)實(shí)施情況進(jìn)行設(shè)定,此處不做具體限定。
步驟S214,將區(qū)塊加入交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,并對(duì)區(qū)塊進(jìn)行簽名,在區(qū)塊鏈網(wǎng)絡(luò)中廣播簽名后的區(qū)塊。
將步驟S213打包的區(qū)塊加入到交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,形成新的區(qū)塊鏈副本。同時(shí),對(duì)打包的區(qū)塊進(jìn)行簽名,如利用交易打包節(jié)點(diǎn)本身的私鑰進(jìn)行簽名等。簽名后,將簽名后的區(qū)塊在區(qū)塊鏈網(wǎng)絡(luò)中進(jìn)行廣播。
步驟S215,除交易打包節(jié)點(diǎn)外的其他節(jié)點(diǎn)在接收廣播的簽名后的區(qū)塊后,其他節(jié)點(diǎn)利用公鑰驗(yàn)證區(qū)塊的簽名是否為交易打包節(jié)點(diǎn)的簽名。
其他節(jié)點(diǎn)包括了交易驗(yàn)證節(jié)點(diǎn)、本次未被指定的交易打包節(jié)點(diǎn)和區(qū)塊鏈網(wǎng)絡(luò)中存在的常規(guī)節(jié)點(diǎn)。這些節(jié)點(diǎn)在接收廣播的簽名后的區(qū)塊后,利用公鑰來驗(yàn)證區(qū)塊的簽名是否為交易打包節(jié)點(diǎn)的簽名,若是,執(zhí)行步驟S216,否則執(zhí)行步驟S217,本次方法的執(zhí)行結(jié)束。
步驟S216,將區(qū)塊加入其他節(jié)點(diǎn)自身的區(qū)塊鏈副本中。
將驗(yàn)證后的區(qū)塊加入到其他節(jié)點(diǎn)自身的區(qū)塊鏈副本中,從而整個(gè)區(qū)塊鏈網(wǎng)絡(luò)中所有節(jié)點(diǎn)都完成了將該區(qū)塊組裝至區(qū)塊鏈的過程。
步驟S217,方法結(jié)束。
根據(jù)本發(fā)明提供的區(qū)塊鏈的分組共識(shí)方法,交易驗(yàn)證節(jié)點(diǎn)驗(yàn)證交易合法性并對(duì)交易進(jìn)行簽名后發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。指定的交易打包節(jié)點(diǎn)接收簽名后的交易,保存在交易池中,并將交易的簽名與交易關(guān)聯(lián)存儲(chǔ)。當(dāng)滿足預(yù)設(shè)條件時(shí),交易打包節(jié)點(diǎn)將交易池中的交易打包進(jìn)區(qū)塊,將區(qū)塊加入交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,并對(duì)區(qū)塊進(jìn)行簽名,在區(qū)塊鏈網(wǎng)絡(luò)中廣播簽名后的區(qū)塊。除交易打包節(jié)點(diǎn)外的其他節(jié)點(diǎn)在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入其他節(jié)點(diǎn)自身的區(qū)塊鏈副本中。通過對(duì)區(qū)塊鏈中各不同功能節(jié)點(diǎn)進(jìn)行分類,使其專門的處理不同的操作,實(shí)現(xiàn)了對(duì)節(jié)點(diǎn)不同的權(quán)限控制。將需要驗(yàn)證合法性、打包等操作委托給可信賴的節(jié)點(diǎn)如交易驗(yàn)證節(jié)點(diǎn)、交易打包節(jié)點(diǎn),由于這些節(jié)點(diǎn)是受信任的節(jié)點(diǎn),無(wú)需通過工作量證明對(duì)交易進(jìn)行驗(yàn)證、打包等,減少了交易打包的時(shí)間,提高了區(qū)塊形成速度。
圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的區(qū)塊鏈的分組共識(shí)系統(tǒng)的功能結(jié)構(gòu)示意圖。如圖3所示,本系統(tǒng)包括如下各種節(jié)點(diǎn):多個(gè)交易驗(yàn)證節(jié)點(diǎn)310、多個(gè)交易打包節(jié)點(diǎn)320以及多個(gè)常規(guī)節(jié)點(diǎn)330。
交易驗(yàn)證節(jié)點(diǎn)310用于接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證交易合法后,對(duì)交易進(jìn)行簽名并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。
交易驗(yàn)證節(jié)點(diǎn)310進(jìn)一步用于:通過對(duì)交易的格式和/或驗(yàn)證交易是否雙重花費(fèi)驗(yàn)證交易是否為合法交易。
交易驗(yàn)證節(jié)點(diǎn)310進(jìn)一步用于:若驗(yàn)證交易不合法,將交易直接發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。
交易驗(yàn)證節(jié)點(diǎn)310進(jìn)一步用于:若交易為其他交易驗(yàn)證節(jié)點(diǎn)簽名后的交易,對(duì)交易進(jìn)行簽名并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。
交易驗(yàn)證節(jié)點(diǎn)310進(jìn)一步用于:將其他交易驗(yàn)證節(jié)點(diǎn)的簽名替換為該交易驗(yàn)證節(jié)點(diǎn)的簽名并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。
交易驗(yàn)證節(jié)點(diǎn)310還用于在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入交易驗(yàn)證節(jié)點(diǎn)自身的區(qū)塊鏈副本中。
交易驗(yàn)證節(jié)點(diǎn)310進(jìn)一步用于:利用公鑰驗(yàn)證區(qū)塊的簽名是否為交易打包節(jié)點(diǎn)的簽名;若否,系統(tǒng)執(zhí)行結(jié)束。
交易打包節(jié)點(diǎn)320用于接收簽名后的交易,驗(yàn)證交易的簽名是否為交易驗(yàn)證節(jié)點(diǎn)的簽名,若是,將交易與簽名關(guān)聯(lián)存儲(chǔ)。
交易打包節(jié)點(diǎn)320進(jìn)一步用于:在多個(gè)交易打包節(jié)點(diǎn)中利用預(yù)設(shè)選舉算法選舉出一個(gè)交易打包節(jié)點(diǎn)作為指定的交易打包節(jié)點(diǎn)。
交易打包節(jié)點(diǎn)320進(jìn)一步用于:判斷交易是否已保存在交易打包節(jié)點(diǎn)的交易池中;若否,將交易保存在交易池中,并將交易的簽名與交易關(guān)聯(lián)存儲(chǔ);若是,判斷交易的簽名是否與交易已關(guān)聯(lián)存儲(chǔ)的簽名一致,若不一致,將交易的簽名與交易關(guān)聯(lián)存儲(chǔ)。
交易打包節(jié)點(diǎn)320還用于將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊;將區(qū)塊加入交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,并對(duì)區(qū)塊進(jìn)行簽名,在區(qū)塊鏈網(wǎng)絡(luò)中廣播簽名后的區(qū)塊。
未被指定的交易打包節(jié)點(diǎn)320還用于在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入未被指定的交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中。
未被指定的交易打包節(jié)點(diǎn)320進(jìn)一步用于:利用公鑰驗(yàn)證區(qū)塊的簽名是否為交易打包節(jié)點(diǎn)的簽名;若否,系統(tǒng)執(zhí)行結(jié)束。
常規(guī)節(jié)點(diǎn)330用于在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入常規(guī)節(jié)點(diǎn)自身的區(qū)塊鏈副本中。
常規(guī)節(jié)點(diǎn)330進(jìn)一步用于:利用公鑰驗(yàn)證區(qū)塊的簽名是否為交易打包節(jié)點(diǎn)的簽名;若否,系統(tǒng)執(zhí)行結(jié)束。
以上各節(jié)點(diǎn)的具體描述可參考各方法實(shí)施例中對(duì)應(yīng)的步驟的具體描述,在此不再贅述。
根據(jù)本發(fā)明提供的區(qū)塊鏈的分組共識(shí)系統(tǒng),交易驗(yàn)證節(jié)點(diǎn)接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證交易合法后,對(duì)交易進(jìn)行簽名并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中。由指定的交易打包節(jié)點(diǎn)接收簽名后的交易,判斷交易是否已保存在交易池中,若否,將交易保存在交易池中,并將交易的簽名與交易關(guān)聯(lián)存儲(chǔ)。當(dāng)滿足預(yù)設(shè)條件時(shí),交易打包節(jié)點(diǎn)將交易池中的交易打包進(jìn)區(qū)塊,將區(qū)塊加入交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,并對(duì)區(qū)塊進(jìn)行簽名,在區(qū)塊鏈網(wǎng)絡(luò)中廣播簽名后的區(qū)塊。除交易打包節(jié)點(diǎn)外的其他節(jié)點(diǎn)在接收廣播的簽名后的區(qū)塊后,將區(qū)塊加入其他節(jié)點(diǎn)自身的區(qū)塊鏈副本中。對(duì)區(qū)塊鏈中各不同功能節(jié)點(diǎn)進(jìn)行分類,處理不同的操作,實(shí)現(xiàn)對(duì)不同節(jié)點(diǎn)的權(quán)限控制。將操作委托給可信賴的節(jié)點(diǎn)如交易驗(yàn)證節(jié)點(diǎn)、交易打包節(jié)點(diǎn),由于這些節(jié)點(diǎn)是受信任的節(jié)點(diǎn),無(wú)需通過工作量證明對(duì)交易進(jìn)行打包,減少了交易打包的時(shí)間,提高了區(qū)塊形成速度。
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
本發(fā)明公開了:A1、一種區(qū)塊鏈的分組共識(shí)方法,其中,包括:
交易驗(yàn)證節(jié)點(diǎn)接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證所述交易合法后,對(duì)所述交易進(jìn)行簽名并發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中;
由指定的交易打包節(jié)點(diǎn)接收簽名后的交易,驗(yàn)證所述交易的簽名是否為所述交易驗(yàn)證節(jié)點(diǎn)的簽名,若是,將交易與簽名關(guān)聯(lián)存儲(chǔ);
所述交易打包節(jié)點(diǎn)將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊;將所述區(qū)塊加入所述交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,并對(duì)區(qū)塊進(jìn)行簽名,在區(qū)塊鏈網(wǎng)絡(luò)中廣播簽名后的區(qū)塊;
除所述交易打包節(jié)點(diǎn)外的其他節(jié)點(diǎn)在接收廣播的簽名后的區(qū)塊后,將所述區(qū)塊加入所述其他節(jié)點(diǎn)自身的區(qū)塊鏈副本中;其中,所述其他節(jié)點(diǎn)包括交易驗(yàn)證節(jié)點(diǎn)、未被指定的交易打包節(jié)點(diǎn)和常規(guī)節(jié)點(diǎn)。
A2、根據(jù)A1所述的方法,其中,所述交易驗(yàn)證節(jié)點(diǎn)接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證所述交易合法后,對(duì)所述交易進(jìn)行簽名并發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中進(jìn)一步包括:
交易驗(yàn)證節(jié)點(diǎn)通過對(duì)交易的格式和/或驗(yàn)證交易是否雙重花費(fèi)驗(yàn)證所述交易是否為合法交易。
A3、根據(jù)A1所述的方法,其中,在交易驗(yàn)證節(jié)點(diǎn)接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證所述交易合法后,對(duì)所述交易進(jìn)行簽名并發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中之前,所述方法還包括:
若所述交易為其他交易驗(yàn)證節(jié)點(diǎn)簽名后的交易,交易驗(yàn)證節(jié)點(diǎn)對(duì)所述交易進(jìn)行簽名并發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中。
A4、根據(jù)A3所述的方法,其中,所述若所述交易為其他交易驗(yàn)證節(jié)點(diǎn)簽名后的交易,對(duì)所述交易進(jìn)行簽名并發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中進(jìn)一步包括:
交易驗(yàn)證節(jié)點(diǎn)將其他交易驗(yàn)證節(jié)點(diǎn)的簽名替換為該交易驗(yàn)證節(jié)點(diǎn)的簽名并發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中。
A5、根據(jù)A1所述的方法,其中,在所述由指定的交易打包節(jié)點(diǎn)接收簽名后的交易,判斷所述交易是否已保存在交易池中之前,所述方法還包括:
在多個(gè)交易打包節(jié)點(diǎn)中利用預(yù)設(shè)選舉算法選舉出一個(gè)交易打包節(jié)點(diǎn)作為指定的交易打包節(jié)點(diǎn)。
A6、根據(jù)A1所述的方法,其中,所述由指定的交易打包節(jié)點(diǎn)接收簽名后的交易,驗(yàn)證所述交易的簽名是否為所述交易驗(yàn)證節(jié)點(diǎn)的簽名,若是,將交易與簽名關(guān)聯(lián)存儲(chǔ)進(jìn)一步包括:
判斷所述交易是否已保存在所述交易打包節(jié)點(diǎn)的交易池中;
若否,將所述交易保存在交易池中,并將所述交易的簽名與所述交易關(guān)聯(lián)存儲(chǔ);
若是,判斷所述交易的簽名是否與所述交易已關(guān)聯(lián)存儲(chǔ)的簽名一致,若不一致,將所述交易的簽名與所述交易關(guān)聯(lián)存儲(chǔ)。
A7、根據(jù)A1所述的方法,其中,所述預(yù)設(shè)標(biāo)準(zhǔn)為交易關(guān)聯(lián)的交易驗(yàn)證節(jié)點(diǎn)簽名數(shù)量超過交易驗(yàn)證節(jié)點(diǎn)數(shù)量的三分之二。
A8、根據(jù)A1所述的方法,其中,所述交易驗(yàn)證節(jié)點(diǎn)接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證所述交易合法后,對(duì)所述交易進(jìn)行簽名并發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中進(jìn)一步包括:
若驗(yàn)證所述交易不合法,將所述交易直接發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中。
A9、根據(jù)A1所述的方法,其中,在所述除所述交易打包節(jié)點(diǎn)外的其他節(jié)點(diǎn)在接收廣播的簽名后的區(qū)塊后,將所述區(qū)塊加入所述其他節(jié)點(diǎn)自身的區(qū)塊鏈副本中之前,所述方法還包括:
所述其他節(jié)點(diǎn)利用公鑰驗(yàn)證所述區(qū)塊的簽名是否為所述交易打包節(jié)點(diǎn)的簽名;若否,所述方法結(jié)束。
本發(fā)明還公開了:B10、一種區(qū)塊鏈的分組共識(shí)系統(tǒng),其中,包括:多個(gè)交易驗(yàn)證節(jié)點(diǎn)、多個(gè)交易打包節(jié)點(diǎn)以及多個(gè)常規(guī)節(jié)點(diǎn);
所述交易驗(yàn)證節(jié)點(diǎn)用于接收區(qū)塊鏈網(wǎng)絡(luò)中廣播的交易,在驗(yàn)證所述交易合法后,對(duì)所述交易進(jìn)行簽名并發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中;
所述交易打包節(jié)點(diǎn)用于接收簽名后的交易,驗(yàn)證所述交易的簽名是否為所述交易驗(yàn)證節(jié)點(diǎn)的簽名,若是,將交易與簽名關(guān)聯(lián)存儲(chǔ);
所述交易打包節(jié)點(diǎn)還用于將交易池中滿足預(yù)設(shè)標(biāo)準(zhǔn)的交易打包進(jìn)區(qū)塊;將所述區(qū)塊加入所述交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中,并對(duì)區(qū)塊進(jìn)行簽名,在區(qū)塊鏈網(wǎng)絡(luò)中廣播簽名后的區(qū)塊;
所述常規(guī)節(jié)點(diǎn)用于在接收廣播的簽名后的區(qū)塊后,將所述區(qū)塊加入所述常規(guī)節(jié)點(diǎn)自身的區(qū)塊鏈副本中;
所述交易驗(yàn)證節(jié)點(diǎn)還用于在接收廣播的簽名后的區(qū)塊后,將所述區(qū)塊加入所述交易驗(yàn)證節(jié)點(diǎn)自身的區(qū)塊鏈副本中;
所述未被指定的交易打包節(jié)點(diǎn)還用于在接收廣播的簽名后的區(qū)塊后,將所述區(qū)塊加入所述未被指定的交易打包節(jié)點(diǎn)自身的區(qū)塊鏈副本中。
B11、根據(jù)B10所述的系統(tǒng),其中,所述交易驗(yàn)證節(jié)點(diǎn)進(jìn)一步用于:
通過對(duì)交易的格式和/或驗(yàn)證交易是否雙重花費(fèi)驗(yàn)證所述交易是否為合法交易。
B12、根據(jù)B11所述的系統(tǒng),其中,所述交易驗(yàn)證節(jié)點(diǎn)進(jìn)一步用于:
若所述交易為其他交易驗(yàn)證節(jié)點(diǎn)簽名后的交易,對(duì)所述交易進(jìn)行簽名并發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中。
B13、根據(jù)B12所述的系統(tǒng),其中,所述交易驗(yàn)證節(jié)點(diǎn)進(jìn)一步用于:
將其他交易驗(yàn)證節(jié)點(diǎn)的簽名替換為該交易驗(yàn)證節(jié)點(diǎn)的簽名并發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中。
B14、根據(jù)B10所述的系統(tǒng),其中,所述交易打包節(jié)點(diǎn)進(jìn)一步用于:
在多個(gè)交易打包節(jié)點(diǎn)中利用預(yù)設(shè)選舉算法選舉出一個(gè)交易打包節(jié)點(diǎn)作為指定的交易打包節(jié)點(diǎn)。
B15、根據(jù)B14所述的系統(tǒng),其中,所述交易打包節(jié)點(diǎn)進(jìn)一步用于:
判斷所述交易是否已保存在所述交易打包節(jié)點(diǎn)的交易池中;
若否,將所述交易保存在交易池中,并將所述交易的簽名與所述交易關(guān)聯(lián)存儲(chǔ);
若是,判斷所述交易的簽名是否與所述交易已關(guān)聯(lián)存儲(chǔ)的簽名一致,若不一致,將所述交易的簽名與所述交易關(guān)聯(lián)存儲(chǔ)。
B16、根據(jù)B15所述的系統(tǒng),其中,所述預(yù)設(shè)標(biāo)準(zhǔn)為交易關(guān)聯(lián)的交易驗(yàn)證節(jié)點(diǎn)簽名數(shù)量超過交易驗(yàn)證節(jié)點(diǎn)數(shù)量的三分之二。
B17、根據(jù)B10所述的系統(tǒng),其中,所述交易驗(yàn)證節(jié)點(diǎn)進(jìn)一步用于:
若驗(yàn)證所述交易不合法,將所述交易直接發(fā)送到所述區(qū)塊鏈網(wǎng)絡(luò)中。
B18、根據(jù)B10所述的系統(tǒng),其中,所述常規(guī)節(jié)點(diǎn)進(jìn)一步用于:
利用公鑰驗(yàn)證所述區(qū)塊的簽名是否為所述交易打包節(jié)點(diǎn)的簽名;若否,所述系統(tǒng)執(zhí)行結(jié)束。
B19、根據(jù)B10所述的系統(tǒng),其中,所述交易驗(yàn)證節(jié)點(diǎn)進(jìn)一步用于:
利用公鑰驗(yàn)證所述區(qū)塊的簽名是否為所述交易打包節(jié)點(diǎn)的簽名;若否,所述系統(tǒng)執(zhí)行結(jié)束。
B20、根據(jù)B10所述的系統(tǒng),其中,所述未被指定的交易打包節(jié)點(diǎn)進(jìn)一步用于:
利用公鑰驗(yàn)證所述區(qū)塊的簽名是否為所述交易打包節(jié)點(diǎn)的簽名;若否,所述系統(tǒng)執(zhí)行結(jié)束。