基於區塊鏈的隨機物件選取方法和裝置
本說明書有關資料處理技術領域,尤其有關一種基於區塊鏈的隨機物件選取方法和裝置。
隨機物件選取常用在電腦隨機分配資源、隨機分配任務或其他任意所需的業務場景下,基於一台電腦或伺服器的隨機物件選取方法難以確保隨機選取過程的公平性和可驗證性,因為一台電腦或伺服器所施行的選取方法極易被人為操控,難以做到真正的「隨機」選取,而且外界在事中和事後都難以監測和驗證其施行的選取方法是否沒有被操控。
有鑑於此,本說明書一個或多個實施例提供一種基於區塊鏈的隨機物件選取方法及裝置、電子設備。
為實現上述目的,本說明書一個或多個實施例提供技術方案如下:
根據本說明書一個或多個實施例的第一態樣,提出了一種基於區塊鏈的隨機物件選取方法,應用於包含多個參選物件節點的區塊鏈,所述方法包括:
接收多個參選物件節點在第一時段內向所述區塊鏈的分散式資料庫發布的參選交易,所述參選交易基於所述參選物件節點確定的物件參考數產生;
根據預設的計算規則,基於指定事件的特徵值和參選交易對應的物件參考數分別計算多個參選物件節點對應的值,其中,所述指定事件的特徵值為根據預設的映射演算法,對發生在所述第一時段之後的指定事件計算所得的特徵值,所述指定事件的特徵值在所述指定事件發生之前不可被預知;
根據預設的選取規則,基於所述多個參選物件節點對應的值選取參選物件節點。
根據本說明書一個或多個實施例的第二態樣,提出了一種基於區塊鏈的隨機物件選取裝置,應用於包含多個參選物件節點的區塊鏈,所述裝置包括:
接收單元,接收多個參選物件節點在第一時段內向所述區塊鏈的分散式資料庫發布的參選交易,所述參選交易基於所述參選物件節點確定的物件參考數產生;
計算單元,根據預設的計算規則,基於指定事件的特徵值和參選交易對應的物件參考數分別計算多個參選物件節點對應的值,其中,所述指定事件的特徵值為根據預設的映射演算法,對發生在所述第一時段之後的指定事件計算所得的特徵值,所述指定事件的特徵值在所述指定事件發生之前不可被預知;
選取單元,根據預設的選取規則,基於所述多個參選物件節點對應的值選取參選物件節點。
相應的,本說明書還提供了一種電腦設備,包括:記憶體和處理器;所述記憶體上儲存有可由處理器運行的電腦程式;所述處理器運行所述電腦程式時,執行上述基於區塊鏈的隨機物件選取方法所述的步驟。
本說明書還提供了一種電腦可讀儲存媒體,其上儲存有電腦程式,所述電腦程式被處理器運行時,執行上述基於區塊鏈的隨機物件選取方法所述的步驟。
由以上技術方案可見,本說明書提供的基於區塊鏈的隨機物件選取方法及裝置,依賴於參選物件提供的物件參考數和之後發生的、不可被預測的、指定事件的特徵值進行計算,從而保證了選取過程免除了人為操縱、更改結果的可能性:基於區塊鏈技術的分散式資料庫儲存機制,參選物件所選擇發布的物件參考數被去中心化地記錄或存證在區塊鏈的所有節點中,且基於區塊鏈的共識機制,每個參選物件所發布的物件參考數不會在提供後被篡改,防止選取過程透過修改參選物件的物件參考數進行操控;進一步地,指定事件只有在物件參考數提供階段結束後才會發生,且其特徵值在指定事件發生前是不可預測的,這樣參選物件無法基於預設的規則和該特徵值進行預測算以選取合適的物件參考數,從而保證該物件參考數的提供是真正隨機的,進而保證了整個隨機物件選取過程的隨機性和公平性,而且事中和事後外界都可以監測和驗證過程中的每一步。
這裡將詳細地對示例性實施例進行說明,其示例表示在圖式中。下面的描述涉及圖式時,除非另有表示,不同圖式中的相同數字表示相同或相似的元件。以下示例性實施例中所描述的實施方式並不代表與本說明書一個或多個實施例相一致的所有實施方式。相反,它們僅是與如所附申請專利範圍中所詳述的、本說明書一個或多個實施例的一些態樣相一致的裝置和方法的例子。
需要說明的是:在其他實施例中並不一定按照本說明書示出和描述的順序來執行相應方法的步驟。在一些其他實施例中,其方法所包括的步驟可以比本說明書所描述的更多或更少。此外,本說明書中所描述的單個步驟,在其他實施例中可能被分解為多個步驟進行描述;而本說明書中所描述的多個步驟,在其他實施例中也可能被合併為單個步驟進行描述。
如圖1所示,本說明書一示意性實施例提供了一種基於區塊鏈的隨機物件選取方法,應用於包含多個參選物件節點的區塊鏈,所述方法包括:
步驟102,接收多個參選物件節點在第一時段內向所述區塊鏈的分散式資料庫發布的參選交易,所述參選交易基於所述參選物件節點所選擇的物件參考數產生。
上述實施例所述的區塊鏈,具體可指一個各節點透過共識機制達成的、具有分散式資料儲存結構的P2P網路系統,該區塊鏈內的資料分佈在時間上相連的一個個「區塊(block)」之內,後一區塊包含前一區塊的資料摘要,且根據具體的共識機制(如POW、POS、DPOS或PBFT等)的不同,達成全部或部分節點的資料全備份。本領域的技術人員熟知,由於區塊鏈系統在相應共識機制下運行,已收錄至區塊鏈資料庫內的資料很難被任意的節點篡改,例如採用Pow共識的區塊鏈,至少需要全網51%算力的攻擊才有可能篡改已有資料,因此區塊鏈系統有著其他中心化資料庫系統所無法比擬的保證資料安全、防攻擊篡改的特性。由此可知,在本說明書所提供的實施例中,被收錄至區塊鏈的分散式資料庫中的資料不會被攻擊或篡改,從而保證了所述參選物件節點所選擇的物件參考數的真實性。
上述實施例所述的參選物件節點可以為參與本說明書所述的隨機物件選取過程的區塊鏈節點、區塊鏈輕節點,還可以為與區塊鏈的節點連接的其他設備終端或客戶端,在本說明書中不作限定。另外,為方便描述本說明書各實施例提供的隨機物件選取方法所基於的區塊鏈技術,本說明書所述的「區塊鏈節點」或「節點」可以包括區塊鏈網路中的節點設備、輕節點設備、其他設備終端或客戶端,以下不再贅述。
上述實施例所述的參選物件節點確定的物件參考數可以是參選物件確定或選取的任意數值,在本說明書中不作限定。參選交易基於上述物件參考數產生,在本說明書中所描述的交易(transaction),是指用戶透過區塊鏈的客戶端創建,並需要最終發布至區塊鏈的分散式資料庫中的一筆資料。其中,區塊鏈中的交易,存在狹義的交易以及廣義的交易之分。狹義的交易是指用戶向區塊鏈發布的一筆價值轉移;例如,在傳統的比特幣區塊鏈網路中,交易可以是用戶在區塊鏈中發起的一筆轉帳。而廣義的交易是指用戶向區塊鏈發布的一筆具有業務意圖的業務資料;例如,本說明書的上述實施例所述的發布至上述區塊鏈中的、基於物件參考數產生的參與本次隨機物件選取過程的一筆或多筆資料,上述參選交易還可以有著既定的資料內容格式,在本說明書中不作限定。
上述實施例所述的第一時段,可以為有著具體物理起始時刻和物理結束時刻的一段物理時間,也可以為以具有邏輯先後順序的兩個事件所確定的起始時刻和解決時刻的一段邏輯時間,更可兼而有之,在本說明書中不作限定。例如,第一時段可以表示為從2018年1月1日零時起至2018年6月30日24時止,也可以表示為從比特幣區塊鏈高度為10000的區塊的產生時刻起至比特幣區塊鏈高度為20000的區塊的產生時刻止,等等。
在本說明書示出的一實施例中,上述參選交易可包括參選物件發布的物件參考數的明文,由於區塊鏈中各個節點設備發布至區塊鏈的交易是公開透明的,上述實施方案通常用於即使得知其他參選物件節點的物件參考數,也不會對自身提供的物件參考數產生任何影響的計算及選取規則中。
在本說明書示出的又一實施例中,由於區塊鏈上的發布的交易可以被區塊鏈的多個或所有節點查看,為防止一參選物件發布的物件參考數被其他參選物件透過區塊鏈獲知,以使其他物件參考數根據所述一參選物件發布的物件參考數,修改本節點尚未發布的物件參考數,而在發布物件參考數的過程中引起不公平現象的發生,可將上述第一時段劃分為至少兩個階段。
在所述第一時段的第一分時段,參選物件節點向上述區塊鏈的分散式資料庫發布第一參選交易,該第一參選交易包含加密後的物件參考數;發布在區塊鏈上的物件參考數密文即使被其他參選物件節點獲知,其他參選物件節點也不能得知物件參考數的實際的值,從而保證發布物件參考數階段的公平性。
在所述第一時段的第二分時段,參選物件節點向上述區塊鏈的分散式資料庫發布第二參選交易,該第二參選交易包含解密後的物件參考數,用以公開自身節點在第一分時段發布的加密的物件參考數;且所述第二分時段為所述第一分時段結束後的時段,在該第二分時段,各參選物件節點已經不可以再發送第一參選交易,因此,有效防止了參選物件節點依據其他參選物件節點公開的物件參考數而修改自身尚未發布的物件參考數的現象發生;所述加密後的物件參考數可被所述解密後的物件參考數證明,保證了參選物件在第二分時段發布的解密後的物件參考數確實為第一分時段發布的加密的物件參考數,防止參選物件在第二分時段篡改自身在第一分時段發布的物件參考數。
在上述實施例中,當參選物件節點所確定的物件參考數為一個或多個亂數時,本領域的技術人員很容易想到,上述第一參選交易所包含的加密後的物件參考數可以為基於上述一個或多個亂數的Pedersen承諾,上述第二參選交易所包含的解密後的物件參考數即可為上述一個或多個亂數。
步驟104,根據預設的計算規則,基於指定事件的特徵值和參選交易對應的物件參考數分別計算多個參選物件節點對應的值,其中,所述指定事件的特徵值為根據預設的映射演算法,對發生在第一時段之後的指定事件計算所得的特徵值,所述指定事件的特徵值在所述指定事件發生之前不可被預知。
上述實施例所述的多個參選物件節點對應的值,是用於對上述多個參選物件進行選擇時所依據的參考值,本說明書並不限定上述預設的計算規則的具體演算法。
上述實施例所述的指定事件為發生在第一時段結束後的一指定事件,為防止該指定事件對應的特徵值具有邏輯可知性而使上述預設的計算規則喪失隨機性和公平性,由該指定事件依據預設的映射演算法算出的特徵值,在該指定事件發生之前是不可被預知的。例如,當一區塊鏈的出塊速率維持為非常穩定的值,那一固定時段後該區塊鏈的區塊高度即為可以預知的值,則上述區塊高度便不可以作為指定事件的特徵值;雖然該區塊高度值可以預知,但該區塊的區塊雜湊值卻是不可被預知的,因此指定固定時段後新生區塊的雜湊值、或指定高度的未來新生區塊的雜湊值均可以作為該指定事件的特徵值參與到上述對多個參選物件節點對應的值的計算中。
本說明書並不限定上述指定事件的類型,例如指定事件可以是某區塊鏈在上述第一時段之後新生的區塊,也可以是第一時段之後發生的彩票中獎號碼,還可以是第一時段之後某醫院的新生兒出生率等任何預設的計算規則規定的指定事件。本說明書也不限定上述指定事件的特徵值的計算方法,例如可以是雜湊等數學摘要演算法、同比或環比增長率等,只要滿足上述指定事件的特徵值是根據預設的映射演算法,對發生在第一時段之後的指定事件計算所得的、在所述指定事件發生之前不可被預知的特徵值,即可至少由上述指定事件的特徵值的隨機性與公平性,確保上述預設的計算規則的隨機性和公平性。
步驟106,根據預設的選取規則,基於所述多個參選物件節點對應的值選取參選物件節點。
本說明書中並不限定上述預設的具體選取規則,可以基於上述多個參選物件節點對應的值選擇最大的、或最小的、或中間值、或任一排位的值等對應的參選物件節點,由於本說明書所提供的上述實施例,至少由上述指定事件的特徵值隨機性與公平性,確保上述預設的計算規則的隨機性和公平性,則基於上述計算規則進行選取的選取規則,也具有了相應的隨機性和公平性。
在本說明書提供的一實施例中,上述步驟104和106所述的、根據預設的計算規則,基於指定事件的特徵值和參選交易對應的物件參考數分別計算多個參選物件節點對應的值,和根據預設的選取規則,基於所述多個參選物件節點對應的值選取參選物件節點的過程,可以由部署在接收參選交易的區塊鏈上的智慧合約來執行完成。
智慧合約是被區塊鏈的各節點共識、且發布在區塊鏈的分散式資料庫內的一段電腦程式,這種程式經調用而自主地執行全部或部分和合約相關的操作,並產生相應地可以被驗證的證據,來說明執行合約操作的有效性。在部署智慧合約之前,與合約相關的所有條款的邏輯流程就已經被制定好了。智慧合約通常具有一個用戶介面,以供用戶與已制定的合約進行互動,這些互動行為都嚴格遵守此前制定的邏輯。得益於密碼學技術,這些互動行為能夠被嚴格地驗證,以確保合約能夠按照此前制定的規則順利執行,從而防止出現違約行為。
因此,上述步驟104和106的過程包括:調用發布在所述區塊鏈上的智慧合約,執行所述智慧合約中宣告的與所述計算規則和所述選取規則對應的執行程序,基於指定事件的特徵值和參選交易對應的物件參考數分別計算多個參選物件節點對應的值,並基於所述多個參選物件節點對應的值選取參選物件節點。
在上述實施例中,透過將上述計算規則和選取規則編譯部署到智慧合約中,上述智慧合約經由區塊鏈的節點共識同意後才可被部署上鏈,即是首先從其所包含的協議或合約內容上確保了上述計算規則和選取規則的公平性。進一步地,該智慧合約經調用而自主執行,且執行的結果可被該區塊鏈上的任一節點所驗證,更加保證了上述計算和選取過程的公平公正性,有效防止了中心化的隨機物件選取平臺依靠自身的伺服器對上述的計算和選取過程不施行透明公開,而私自操縱上述隨機選取過程的行為。而且,智慧合約可以應區塊鏈節點設備的調用而實時準確執行,方便快捷地進行如上的計算和選取過程。
在本說明書提供的又一實施例中,當多個參選物件節點在所述第一時段的第一分時段內向所述區塊鏈的分散式資料庫發布第一參選交易,所述第一參選交易包含加密後的物件參考數;且多個參選物件節點在所述第一時段的第二分時段內向所述區塊鏈的分散式資料庫內發布第二參選交易,所述第二參選交易包含解密後的物件參考數,所述第二分時段為所述第一分時段結束後的時段,所述加密後的物件參考數可被所述解密後的物件參考數證明時,上述步驟104和106的過程可以包括:調用發布在所述區塊鏈上的智慧合約,執行所述智慧合約中宣告的與所述計算規則和所述選取規則對應的執行程序,基於指定事件的特徵值和所述第二參選交易對應的物件參考數,分別計算多個參選物件節點對應的值,並基於所述多個參選物件節點對應的值選取參選物件節點。
更佳地,上述實施例所述的智慧合約還設置有白名單,在該智慧合約執行步驟104所述的計算步驟時,可基於指定事件的特徵值和所述白名單所包括的參選物件節點發布的第二參選交易所對應的物件參考數,分別計算所述白名單內包含的參選物件節點對應的值,相應地,步驟106所述的選取步驟則應基於上述白名單內包含的參選物件節點對應的值實施。
本說明書並不限定上述白名單的創建條件,在執行本說明書所述的隨機物件選取方法之前,可根據預設的計算規則、選取規則或其他參選規則等為智慧合約的創建過濾條件,過濾條件可包括參選物件節點的身份過濾條件、時間過濾條件、物件參考數過濾條件等等,將符合過濾條件的參選物件節點的公鑰、或帳戶地址、或其他與參選物件節點的身份相關的標識資訊加入到上述白名單,基於白名單內的參選物件節點所提供的物件參考數,執行相應的計算和選取過程。另外值得注意的是,作為本說明書所提供的創建或篩選智慧合約的白名單的一種特殊的實現方式,將不符合條件的參選物件加入智慧合約的黑名單也應在本說明書所提供的技術方案的保護範圍內;以下所述的各種篩選或過濾智慧合約的白名單的方式,也都可以相應地由向智慧合約的黑名單中增加參選物件而實現;或者由同時篩選或過濾白名單用戶且新增黑名單用戶來實現,以下不再贅述。
在一示出的實施例中,上述智慧合約內還宣告有交易驗證程序,透過對參選物件節點發布的交易進行合法性驗證來創建或篩選上述白名單。具體地,在上述區塊鏈的任一節點設備接收多個參選物件節點在所述第一時段的第一分時段內向所述區塊鏈的分散式資料庫發布的第一參選交易之後,還包括:調用所述智慧合約,執行所述智慧合約中宣告的交易驗證程序,驗證所述第一參選交易是否合法,並將不合法的第一參選交易對應的參選物件從所述智慧合約的白名單中去除。
值得注意的是,上述利用智慧合約對第一參選交易進行合法性驗證通常是應第一參選交易的發布而自動調用的,因此透過上述合法性驗證而篩選白名單的執行過程通常也發生在第一時段的第一分時段。
在又一示出的實施例中,為防止參選物件節點在第二分時段公開的物件參考數與其在第一分時段確定的物件參考數不同,上述區塊鏈的任一節點設備在接收到多個參選物件節點在所述第一時段的第二分時段內向所述區塊鏈的分散式資料庫內發布的第二參選交易之後,還包括:調用所述智慧合約,執行所述智慧合約中宣告的物件參考數驗證程序,驗證所述白名單內的參選物件所發布的第二參選交易所包含的物件參考數是否可驗證所述第一參選交易所包含的物件參考數密文,並將不可驗證的第二參選交易對應的參選物件從所述智慧合約的白名單中去除。
類似地,上述利用智慧合約對第二參選交易進行物件參考數驗證通常是應第二參選交易的發布而自動調用的,因此透過上述合法性驗證而篩選白名單的執行過程通常也發生在第一時段的第二分時段。
透過上述一次或多次的白名單創建或過濾過程,將最終符合各種參選規則設置、且交易內容或格式合格的參選物件甄選出來,針對白名單中的參選物件執行上述的計算及選取步驟,最終公平而隨機地選擇出參選物件。
為了便於理解,下面以區塊鏈網路中的物件節點的抽獎過程為例,對本說明書的技術方案進行詳細說明。本領域的技術人員熟知,本說明書所述的隨機物件選取過程或方法不僅限於抽獎的業務場景,還可適用在任何基於區塊鏈的隨機物件選取以執行任務或分配資源的場景中。圖2是一示例性實施例提供的一種在區塊鏈網路中實施抽獎的示意圖。如圖2所示,假定有用戶P1
,…,Pn
所對應的節點設備參與本次抽獎過程,其中,本說明書中的「用戶」可以表現為所登錄的用戶帳號或用戶身份公鑰,上述用戶帳號實際可以歸屬於個人或組織甚至終端設備,本說明書並不對此進行限制。
參選用戶設備P1
,…,Pn
上可以運行有區塊鏈的客戶端程序,使得上述參選用戶設備可作為區塊鏈的節點,根據上述區塊鏈所施行的具體的共識規則,參選用戶節點P1
,…,Pn
發布的交易可以經區塊鏈上所有或多數節點的共識驗證後被收錄至上述區塊鏈的分散式資料庫中,且上述參選用戶節點P1
,…,Pn
發布的交易還可以觸發調用部署在上述區塊鏈中的智慧合約,以執行智慧合約宣告的隨機物件選取相關的計算或選取邏輯。上述被收錄至區塊鏈的分散式資料庫中的交易、及由智慧合約執行相關邏輯後的輸出結果均可被上述區塊鏈的任一節點驗證,從而防止其他任何節點或設備對抽獎過程涉及到的參數篡改或對預設的計算或選取規則篡改以操縱抽獎過程。
圖2所示的抽獎過程可以根據時間劃分為三個階段,且使用區塊高度作為邏輯時間計時器,區塊高度為T0-T1為第一階段,區塊高度T1-T2為第二階段,區塊高度T2之後為第三階段,且在圖2所示意的抽獎過程中,將區塊高度為T2+h(h是一個事先規定好的非負整數,比如h可以為1)的區塊的區塊雜湊值作為指定事件的特徵值,參與到本次抽獎的計算過程中來。
步驟201,在區塊高度為T0-T1的第一階段,參選用戶節點P1
,…,Pn
向區塊鏈的分散式資料庫上發布第一參選交易J1
,…,Jn
,該第一參選交易是基於參選用戶確定的亂數而加密產生的。在本實施例中,實際具有參選資格的用戶個數可以大於n,但在第一階段結束之前,區塊鏈的分散式資料庫上收到n個參選用戶節點發來的第一參選交易。
在一示出的實施方式中,上述第一參選交易是基於參選用戶確定的兩個亂數(ri
,Ri
)作出的Pedersen承諾——Ci
=ri
G+Ri
H,其中,G、H為Pedersen承諾的公共參數。本領域的技術人員熟知,為防止其他節點仿冒本節點進而偽造本節點發布的參選交易,參選交易通常包括本節點對參選交易內容的電子簽章,及驗證電子簽章所需的公鑰或地址等身份資訊,因此,上述第一參選交易Ji
=(Ci
,pi
,Si
),其中,pi
為參選用戶的公鑰,Si
為參選用戶節點i利用公鑰pi
對應的私鑰、對包括Pedersen承諾Ci
的交易內容所作的電子簽章。
步驟202,在區塊高度為T0-T1的第一階段,智慧合約對上述第一參選交易進行交易合法性驗證,並根據上述驗證的結果篩選白名單。
上述區塊鏈上可部署有執行抽獎業務邏輯的智慧合約,且該智慧合約宣告有對上述第一參選交易進行交易的合法性驗證的邏輯程序,並隨第一參選交易的發布而被調用,例如,將上述第一參選交易Ji
=(Ci
,pi
,Si
)發送至上述智慧合約的地址以調用上述智慧合約。上述合法性驗證可以包括:該用戶是否在可參選的用戶列表中,電子簽章是否合法、或物件參考數的加密方式是否符合要求、或同一參選用戶是否有雙重提交等方面。該智慧合約可預先設置具有參選資格的用戶白名單,透過對第一參選交易的格式或內容的驗證,執行對該用戶白名單篩選過程。可選地,該智慧合約還可透過本次對第一參選交易的合法性驗證而首次創建白名單。本發明對該智慧合約的白名單的具體設置時機和條件並不作限定。可選的,該智慧合約還可將不合法的第一參選交易對應的參選用戶加入到黑名單中,以作為創建或篩選白名單的一種特殊的實施方式。
在示出的一實施例中,上述智慧合約的白名單內收錄了合法的第一參選交易所對應的參選用戶的公鑰pi
。
步驟203,在區塊高度為T1-T2的第二階段,參選用戶Pi
公開其在第一階段選擇確定的的亂數(ri
,Ri
),該公開過程可以包括:參選用戶Pi
首先對(ri
,Ri
)進行電子簽章S'i
,再向區塊鏈的分散式資料庫提交第二參選交易J'i
=(pi
,ri
,Ri
,S'i
)。
步驟204,在區塊高度為T1-T2的第二階段,智慧合約對上述第二參選交易所包含的亂數是否可以證明上述第一參選交易的亂數密文而進行驗證,並根據上述驗證的結果篩選白名單。
上述區塊鏈上部署的關於抽獎業務邏輯的智慧合約還可宣告有物件參考數驗證程序,用以驗證白名單中的參選用戶所發布的第二參選交易所包含的亂數(ri
,Ri
)是否可驗證該參選用戶之前所發布的第一參選交易所包含的亂數密文Ci
,並將不可驗證的第二參選交易對應的參選用戶從上述智慧合約的白名單中去除。上述智慧合約中宣告的物件參考數驗證程序可以隨著第二參選交易的發布被調用,例如將第二參選交易J'i=(pi
,ri
,Ri
,S'i
)發送至上述智慧合約的地址以調用上述智慧合約,驗證同一參選用戶發布的第二參選交易是否能與其發布的第一參選交易基於相同的亂數,進一步防止參選用戶可能發生的錯誤行為而影響抽獎結果的公平性。
步驟205,在區塊高度T2之後的階段,在上述關於抽獎業務邏輯的智慧合約執行完對步驟202所觸發的對第二參選交易的驗證後,應指定事件發生的觸發或應其他指令的觸發,進一步執行所述智慧合約中宣告的、與該抽獎的計算規則對應的執行程序。圖2所述的指定事件為高度為T2+h的區塊的產生,且約定該T2+h的區塊的區塊雜湊值作為指定事件的特徵值H0
,上述關於抽獎業務邏輯的智慧合約基於指定事件的特徵值R和白名單內的參選用戶Pj1
,…,Pjm
對應的亂數(rji
,Rji
)分別計算白名單內的參選用戶節點對應的值H''i
。
圖2所述實施例中白名單內的參選用戶節點對應的值H''i
的計算規則定義如下:
Hi
=Hash (pji
, Rji
);
H'i
=Hash (Hi
, H0
);
H''i
=|H'i
-Hi
|。
步驟206,上述智慧合約依據上述計算規則逐一計算H''i
的值,且從H''1
,…,H''m
中選擇符合預設的選擇規則的H''k
對應的參選用戶Pk
作為中獎用戶,輸出該參選用戶的公鑰或其他身份標識,用以公佈中獎用戶。
本領域的技術人員熟知,本說明書提供的隨機物件選取方法並不限定隨機物件選取所依據的具體的計算規則或選取規則;而且,執行圖2所示的抽獎過程的三個階段所對應的智慧合約既可以為同一個智慧合約,也可以為不同的智慧合約,在本說明書中也不作限定。
圖2所示的基於本說明書所提供的隨機物件選取方法的抽獎過程,依賴於參選用戶提供亂數和在提供亂數階段結束後發生的、不可被預測的指定區塊的區塊雜湊值進行計算,利用區塊鏈的防篡改機制保證了上述抽獎過程免於人為操縱而產生不公平的結果;而且,圖2所示的抽獎過程,依賴於智慧合約自主完成上述對用戶提供亂數的驗證、及基於指定事件的特徵值和上述亂數的計算和選取過程,全程避免了人為參與,且抽獎全過程在區塊鏈上透明可見、可被驗證,更加自主、準確、公平地執行了上述的抽獎過程。
與上述流程實現對應,本說明書的實施例還提供了一種基於區塊鏈的隨機物件選取裝置。該裝置可以透過軟體實現,也可以透過硬體或者軟硬體結合的方式實現。以軟體實現為例,作為邏輯意義上的裝置,是透過所在設備的CPU(Central Process Unit,中央處理器)將對應的電腦程式指令讀取到內部記憶體中運行形成的。從硬體層面而言,除了圖4所示的CPU、內部記憶體以及記憶體之外,網路風險業務的實現裝置所在的設備通常還包括用於進行無線信號收發的晶片等其他硬體,和/或用於實現網路通信功能的板卡等其他硬體。
圖3所示為一種基於區塊鏈的隨機物件選取裝置30,應用於包含多個參選物件節點的區塊鏈,所述裝置30包括:
接收單元302,接收多個參選物件節點在第一時段內向所述區塊鏈的分散式資料庫發布的參選交易,所述參選交易基於所述參選物件節點確定的物件參考數產生;
計算單元304,根據預設的計算規則,基於指定事件的特徵值和參選交易對應的物件參考數分別計算多個參選物件節點對應的值,其中,所述指定事件的特徵值為根據預設的映射演算法,對發生在所述第一時段之後的指定事件計算所得的特徵值,所述指定事件的特徵值在所述指定事件發生之前不可被預知;
選取單元306,根據預設的選取規則,基於所述多個參選物件節點對應的值選取參選物件節點。
在本說明書示出的又一實施例中,所述計算單元304:
調用發布在所述區塊鏈上的智慧合約,執行所述智慧合約中宣告的與所述計算規則和所述選取規則對應的執行程序,基於指定事件的特徵值和參選交易對應的物件參考數分別計算多個參選物件節點對應的值,並基於所述多個參選物件節點對應的值選取參選物件節點。
在本說明書示出的又一實施例中,所述接收單元302:
接收多個參選物件節點在所述第一時段的第一分時段內向所述區塊鏈的分散式資料庫發布的第一參選交易,所述第一參選交易包含加密後的物件參考數;
接收多個參選物件節點在所述第一時段的第二分時段內向所述區塊鏈的分散式資料庫內發布的第二參選交易,所述第二參選交易包含解密後的物件參考數;
其中,所述第二分時段為所述第一分時段結束後的時段,所述加密後的物件參考數可被所述解密後的物件參考數證明。
在本說明書示出的又一實施例中,所述計算單元304:
調用發布在所述區塊鏈上的智慧合約,執行所述智慧合約中宣告的與所述計算規則和所述選取規則對應的執行程序,基於指定事件的特徵值和所述第二參選交易對應的物件參考數,分別計算多個參選物件節點對應的值,並基於所述多個參選物件節點對應的值選取參選物件節點。
在本說明書示出的又一實施例中,所述智慧合約設置有白名單;
所述計算單元304:
基於指定事件的特徵值和所述白名單所包括的參選物件節點發布的第二參選交易所對應的物件參考數,分別計算所述白名單內包含的參選物件節點對應的值。
在本說明書示出的又一實施例中,所述接收單元302在接收多個參選物件節點在所述第一時段的第一分時段內向所述區塊鏈的分散式資料庫發布的第一參選交易之後,還用於:
調用所述智慧合約,執行所述智慧合約中宣告的交易驗證程序,驗證所述第一參選交易是否合法,並將合法的第一參選交易對應的參選物件加入到所述智慧合約的白名單。
在本說明書示出的又一實施例中,所述接收單元302在接收多個參選物件節點在所述第一時段的第二分時段內向所述區塊鏈的分散式資料庫內發布的第二參選交易之後,還用於:
調用所述智慧合約,執行所述智慧合約中宣告的物件參考數驗證程序,驗證所述白名單內的參選物件所發布的第二參選交易所包含的物件參考數是否可驗證所述第一參選交易所包含的物件參考數密文,並將不可驗證的第二參選交易對應的參選物件從所述智慧合約的白名單中去除。
在本說明書示出的又一實施例中,所述指定事件的特徵值為所述區塊鏈在所述第一時段之後產生的指定區塊的雜湊值。
在本說明書示出的又一實施例中,所述第一時段為與所述區塊鏈的區塊高度相關的邏輯時段。
在本說明書示出的又一實施例中,所述物件參考數為亂數,所述加密後的物件參考數為基於所述亂數的Pedersen承諾。
上述裝置中各個單元的功能和作用的實現過程具體詳見上述方法中對應步驟的實現過程,相關之處參見方法實施例的部分說明即可,在此不再贅述。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理模組,即可以位於一個地方,或者也可以分佈到多個網路模組上。可以根據實際的需要選擇其中的部分或者全部單元或模組來實現本說明書方案的目的。本發明所屬技術領域中具有通常知識者在不付出創造性勞動的情況下,即可以理解並實施。
上述實施例闡明的裝置、單元、模組,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦,電腦的具體形式可以是個人電腦、膝上型電腦、蜂巢式電話、相機電話、智慧電話、個人位助理、媒體播放器、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、穿戴式設備或者這些設備中的任意幾種設備的組合。
與上述方法實施例相對應,本說明書的實施例還提供了一種電腦設備,該電腦設備包括記憶體和處理器。其中,記憶體上儲存有能夠由處理器運行的電腦程式;處理器在運行儲存的電腦程式時,執行本說明書實施例中基於區塊鏈的隨機物件選取方法的各個步驟。對基於區塊鏈的隨機物件選取方法的各個步驟的詳細描述請參見之前的內容,不再重複。
與上述方法實施例相對應,本說明書的實施例還提供了一種電腦可讀儲存媒體,該儲存媒體上儲存有電腦程式,這些電腦程式在被處理器運行時,執行本說明書實施例中基於區塊鏈的隨機物件選取方法的各個步驟。對基於區塊鏈的隨機物件選取方法的各個步驟的詳細描述請參見之前的內容,不再重複。
以上所述僅為本說明書的較佳實施例而已,並不用以限制本說明書,凡在本說明書的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本說明書保護的範圍之內。
在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出介面、網路介面和內部記憶體。
內部記憶體可能包括電腦可讀媒體中的非永久性記憶體,隨機存取記憶體(RAM)和/或非易失性內部記憶體等形式,如唯讀記憶體(ROM)或閃存(flash RAM)。內部記憶體是電腦可讀媒體的示例。
電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程式的模組或其他資料。
電腦的儲存媒體的例子包括,但不限於相變內部記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可編程唯讀記憶體(EEPROM)、快閃記憶體或其他內部記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數字多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁碟儲存或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被運算設備訪問的資訊。按照本文中的界定,電腦可讀媒體不包括暫態性電腦可讀媒體(transitory media),如調變的資料信號和載波。
還需要說明的是,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列元件的過程、方法、商品或者設備不僅包括那些元件,而且還包括沒有明確列出的其他元件,或者是還包括為這種過程、方法、商品或者設備所固有的元件。在沒有更多限制的情況下,由語句「包括一個……」限定的元件,並不排除在包括所述元件的過程、方法、商品或者設備中還存在另外的相同元件。
本領域技術人員應明白,本說明書的實施例可提供為方法、系統或電腦程式產品。因此,本說明書的實施例可採用完全硬體實施例、完全軟體實施例或結合軟體和硬體方面的實施例的形式。而且,本說明書的實施例可採用在一個或多個其中包含有電腦可用程式碼的電腦可用儲存媒體(包括但不限於磁碟記憶體、CD-ROM、光學記憶體等)上實施的電腦程式產品的形式。
104‧‧‧方法步驟
106‧‧‧方法步驟
201‧‧‧方法步驟
202‧‧‧方法步驟
203‧‧‧方法步驟
204‧‧‧方法步驟
205‧‧‧方法步驟
206‧‧‧方法步驟
30‧‧‧裝置
302‧‧‧接收單元
304‧‧‧計算單元
306‧‧‧選取單元
圖1為本說明書所提供的一實施例所示的基於區塊鏈的隨機物件選取方法的流程圖;
圖2為本說明書一示例性實施例提供的隨機物件選取方法的過程示意圖;
圖3為本說明書所提供的一實施例提供的基於區塊鏈的隨機物件選取裝置的示意圖;
圖4為運行本說明書所提供的基於區塊鏈的隨機物件選取裝置實施例的一種硬體結構圖。