物件選取方法及裝置、電子設備
本說明書一個或多個實施例關於區塊鏈技術領域,尤其關於一種物件選取方法及裝置、電子設備。
當某一事件被設定為由預設數量的物件實施時,如果備選物件的數量超出該預設數量,則需要從這些備選物件中進行選擇。當這些備選物件對於該事件的實施並無明顯區別時,可以從這些備選物件中隨機選取上述預設數量的物件。例如,當系統內包含10台設備時,如果希望配置為2台主設備、8台從設備的架構,可以從該10台設備中隨機選取2台主設備,則剩餘的8台設備為從設備。
有鑑於此,本說明書一個或多個實施例提供一種物件選取方法及裝置、電子設備。
為實現上述目的,本說明書一個或多個實施例提供技術方案如下:
根據本說明書一個或多個實施例的第一態樣,提出了一種物件選取方法,應用於區塊鏈節點;所述方法包括:
獲取備選物件提交的參選申請;
呼叫智慧合約,所述智慧合約被用於向區塊鏈的第一區塊發佈與所述參選申請相關的申請記錄,根據區塊鏈中的第二區塊的區塊內容產生隨機種子,並透過偽隨機數發生器產生基於所述隨機種子的偽隨機數,以使得匹配於所述偽隨機數的備選物件被選取為目標物件;其中,所述第二區塊的區塊高度大於所述第一區塊的區塊高度。
根據本說明書一個或多個實施例的第二態樣,提出了一種物件選取裝置,應用於區塊鏈節點;所述裝置包括:
獲取單元,獲取備選物件提交的參選申請;
呼叫單元,呼叫智慧合約,所述智慧合約被用於向區塊鏈的第一區塊發佈與所述參選申請相關的申請記錄,根據區塊鏈中的第二區塊的區塊內容產生隨機種子,並透過偽隨機數發生器產生基於所述隨機種子的偽隨機數,以使得匹配於所述偽隨機數的備選物件被選取為目標物件;其中,所述第二區塊的區塊高度大於所述第一區塊的區塊高度。
根據本說明書一個或多個實施例的第三態樣,提出了一種電子設備,包括:
處理器;
用於儲存處理器可執行指令的記憶體;
其中,所述處理器透過運行所述可執行指令以實現如上述實施例中任一所述的方法。
這裡將詳細地對範例性實施例進行說明,其範例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下範例性實施例中所描述的實施方式並不代表與本說明書一個或多個實施例相一致的所有實施方式。相反,它們僅是與如所附申請專利範圍中所詳述的、本說明書一個或多個實施例的一些態樣相一致的裝置和方法的例子。
需要說明的是:在其他實施例中並不一定按照本說明書顯示和描述的順序來執行相應方法的步驟。在一些其他實施例中,其方法所包括的步驟可以比本說明書所描述的更多或更少。此外,本說明書中所描述的單一步驟,在其他實施例中可能被分解為多個步驟進行描述;而本說明書中所描述的多個步驟,在其他實施例中也可能被合併為單一步驟進行描述。
圖1是一範例性實施例提供的一種物件選取方法的流程圖。如圖1所示,該方法應用於區塊鏈節點,可以包括以下步驟:
步驟102,獲取備選物件提交的參選申請。
在一實施例中,備選物件透過提交參選申請,使得智慧合約可以向區塊鏈發佈相應的申請記錄,從而確保相應的備選物件能夠參與到物件的選取過程中。
在一實施例中,參選申請可以包含備選物件的身份資訊,例如該備選物件透過私密金鑰產生的簽名等,而該身份資訊可以被添加至申請記錄中,以表明該申請記錄與該備選物件之間的關聯關係。
步驟104,呼叫智慧合約,所述智慧合約被用於向區塊鏈的第一區塊發佈與所述參選申請相關的申請記錄,根據區塊鏈中的第二區塊的區塊內容產生隨機種子,並透過偽隨機數發生器產生基於所述隨機種子的偽隨機數,以使得匹配於所述偽隨機數的備選物件被選取為目標物件;其中,所述第二區塊的區塊高度大於所述第一區塊的區塊高度。
在一實施例中,可以在區塊鏈的用戶端上創建交易(transfer),從而透過該交易將備選物件對應的申請記錄發佈至區塊鏈上,成為區塊鏈的分布式資料庫中的一筆資料。需要指出的是:區塊鏈中的交易,存在狹義的交易以及廣義的交易之分。狹義的交易是指用戶向區塊鏈發佈的一筆價值轉移;例如,在傳統的比特幣區塊鏈網路中,交易可以是用戶在區塊鏈中發起的一筆轉帳。而廣義的交易是指用戶向區塊鏈發佈的一筆具有業務意圖的業務資料;例如,營運方可以基於實際的業務需求搭建一個聯盟鏈,依託於聯盟鏈部署一些與價值轉移無關的其它類型的在線業務(例如,物件選取業務、租房業務、車輛調度業務、保險理賠業務、信用服務、醫療服務等),而在這類聯盟鏈中,交易可以是用戶在聯盟鏈中發佈的一筆具有業務意圖的業務訊息或者業務請求。本說明書中的交易,應當傾向於理解為廣義上的交易。
在一實施例中,由於區塊鏈採用分布式資料庫,使得發佈至區塊鏈上的申請記錄無法被篡改,可以確保真實、可靠。
在一實施例中,當申請記錄被發佈至區塊鏈中的第一區塊,而隨機種子與區塊高度大於第一區塊的第二區塊相關時,基於區塊鏈中各個區塊之間的鏈式關係,使得申請記錄的加入可以增加隨機種子的不確定性,無法被不法分子預測和設定,使得基於該隨機種子產生的偽隨機數同樣具備高度隨機性,可以極大地降低不法分子造假作弊的可能性。
同時,由於隨機種子的產生過程、偽隨機數的產生過程均由智慧合約實現,而智慧合約被存證於區塊鏈中,使得該智慧合約的內容公開且不可篡改,使得對於目標物件的選擇過程公平、公開、可驗證,進一步降低了不法分子造假作弊的可能性。
在一實施例中,智慧合約可以根據每一備選物件已有的數位形式的標識資訊,確定與偽隨機數之間的匹配情況。例如,該標識資訊可以為各個備選物件的用戶ID、公開金鑰的取值等,本說明書並不對此進行限制。
在一實施例中,所述智慧合約還用於:為每一備選物件分別產生申請編號,每一申請編號對應於唯一的備選物件;其中,當所述偽隨機數與任一申請編號相同時,所述任一申請編號對應的備選物件被確定為匹配於所述偽隨機數。
在一實施例中,可以按照預設方式為備選物件產生申請編號,例如各個備選物件提交參選申請的順序、各個備選物件的公開金鑰的取值大小等,本說明書並不對此進行限制。舉例而言,所述申請編號與所述備選物件對應的唯一標識的取值相關,所述唯一標識的取值由與區塊鏈中的歷史區塊相關的雜湊值和所述備選用戶的公開金鑰進行雜湊計算而得到,這樣可以增加該唯一標識的取值的隨機性,降低被不法分子操控的可能性。
在一實施例中,當所述備選物件的中籤率為標準中籤率的x倍時,所述備選物件存在x個申請編號;其中,x為正整數。例如,當x=1時,備選物件存在1個申請編號,當x=2時,備選物件存在2個申請編號;當申請編號的數量越多時,備選物件被選中的機率也越大,即中籤率更高。
在一實施例中,智慧合約在收到任一物件的參選申請後,可以根據預定義的參選條件判斷該任一物件是否符合要求,當符合要求時可以將其設定為上述的備選用戶,使其能夠參與到物件選取過程中。同時,智慧合約可以基於該備選用戶的資訊,確定其中籤率;例如,智慧合約可以從區塊鏈帳本中查詢該備選物件歷史上參與物件選取的次數,並按照設定的計算公式確定出中籤率,其中該中籤率可以與次數呈正相關。
在一實施例中,所述智慧合約用於將與區塊鏈中的歷史區塊相關的雜湊值與所述備選物件的公開金鑰進行雜湊計算,得到相應的唯一標識;當x的取值從小至大地分別包括x1~xn時,所述智慧合約用於依次選取x1~xn;其中,當選取xi時,所述智慧合約將中籤率不小於標準中籤率的xi倍的備選物件對應的唯一標識按照從小至大依次排列,並在已有申請編號之後、按照排列次序接續產生相應的申請編號,1≤i≤n。
假定備選物件的數量為m個。在依次選取x1~xn時:首先選取x1並假定x1=1,那麼“中籤率不小於標準中籤率的xi倍的備選物件”為所有的m個備選物件,並且此時尚未存在申請編號,因而可以直接產生相應的m個申請編號為1~m;接著選取x2並假定x2=2,那麼“中籤率不小於標準中籤率的xi倍的備選物件”為x2~xn倍中籤率的備選物件、不包含x1倍中籤率的備選物件,譬如x2~xn倍中籤率的備選物件的數量為a,由於已存在上述的申請編號1~m,因而可以在m之後接續產生a個申請編號,即m+1~m+a,此時x1倍中籤率的備選物件存在1個申請編號、x2~xn倍中籤率的備選物件存在2個申請編號;接著選取x3並假定x3=3,那麼“中籤率不小於標準中籤率的xi倍的備選物件”為x3~xn倍中籤率的備選物件、不包含x1-x2倍中籤率的備選物件,譬如x3~xn倍中籤率的備選物件的數量為b,由於已存在上述的申請編號1~m+a,因而可以在m+a之後接續產生b個申請編號,即m+a+1~m+a+b,此時x1倍中籤率的備選物件存在1個申請編號、x2倍中籤率的備選物件存在2個申請編號、x3~xn倍中籤率的備選物件存在3個申請編號。類似地,透過上述方式依次選取至xn後,可以確保備選物件具有的申請編號的數量與其對應的中籤率倍數相同。
在一實施例中,所述目標物件的總數為w;所述智慧合約用於在已選取的目標物件的數量未達到w時,將所述隨機種子和取樣區間[M,N]作為輸入、透過所述偽隨機數發生器產生1個偽隨機數,其中M為申請編號的最小值、N為申請編號的最大值。換言之,在每次產生偽隨機數時,採用的取樣區間均覆蓋所有的申請編號,而不會剔除已被選取的目標物件對應的申請編號,可以確保各個備選物件的實際中籤機率在每次產生偽隨機數時都不變,避免剔除目標物件對應的申請編號而導致其他備選用戶的實際中籤機率增大,從而確保公平性。
在一實施例中,所述智慧合約用於將每一備選物件對應的申請編號存證於區塊鏈中,使得備選用戶或監管方可以隨時從區塊鏈中對申請編號進行查驗,避免發生造假作弊。
在一實施例中,所述隨機種子還與區塊鏈中的一個或多個其他區塊的區塊內容相關,使得不法分子即便具備區塊攻擊能力,也必須分別攻擊第二區塊和該其他區塊才能夠達成目的,造成了極高的攻擊成本,可以極大地降低不法分子操控隨機種子的可能性。
在一實施例中,所述一個或多個其他區塊包括:包含至少一條申請記錄的區塊,使得所有的申請記錄均可以影響到隨機種子,可以增加隨機種子的不確定性,降低被不法分子猜測或操控的可能性。
在一實施例中,所述一個或多個其他區塊包括:與所述第二區塊相鄰的一個或多個區塊。例如當該一個或多個其他區塊的數量為r時,可以選取第二區塊之前的r個區塊;或者,可以在產生第二區塊之後,等待區塊鏈中繼續產生r個區塊,並基於該第二區塊和該r個區塊產生隨機種子。
在一實施例中,所述智慧合約用於透過下述公式對所述第二區塊和r個其他區塊(例如上述包含申請記錄的一個或多個區塊,或者位於第二區塊之後的一個或多個區塊)的區塊內容進行處理,以確定出所述實際結果:
H’1=H(Hp, Hr),
H’i=H(H’(i-1), H(r-i+1)),其中1<i≤r;
其中,H為預設的雜湊函數,Hp為與所述第二區塊的區塊內容相關的雜湊值,Hi為與第i個其他區塊的區塊內容相關的雜湊值,所述隨機種子為Hf=H(H’r, Hp)。
在一實施例中,在透過上述公式進行計算的過程中,r個其他區塊之間可以按照預設順序進行依次排列,形成第1個其他區塊、……、第r個其他區塊,例如該預設順序可以包括區塊高度從小至大的順序、區塊內容的雜湊值從小至大的順序等,本說明書並不對此進行限制。
在一實施例中,所述智慧合約用於在區塊鏈中產生第三區塊後,產生所述隨機種子;其中,所述第三區塊的區塊高度大於所述第二區塊,且高度差為預設數值。換言之,智慧合約雖然基於第二區塊的區塊內容來確定隨機種子,但是產生該第二區塊後並不立即確定隨機種子,而是等待預設數量個區塊之後,才確定該隨機種子,保證了第二區塊的安全性,使得攻擊者必須連續攻擊第二區塊與第三區塊之間的所有區塊,使得攻擊成本極高,可以極大地降低不法分子操控隨機種子的可能性。
為了便於理解,下面以選購不動產時的抽籤過程為例,對本說明書的物件選取方案進行描述。圖2是一範例性實施例提供的一種抽籤選購不動產的示意圖;如圖2所示,假定用戶A希望參與針對某一建案的抽籤,該用戶A可以透過安裝有用戶端的手機21提交申請抽籤資格所需的抽籤申請,例如身份證明材料、存款證明材料、對應於數位身份的公開金鑰、個人資料等,這取決於建案開發商或相關法律法規的要求。
設備22被配置為抽籤系統的伺服端,該設備22一方面與用戶A使用的手機21進行互動、以協助其申請抽籤資格,另一方面與設備23進行互動。設備23被配置為區塊鏈中的一個區塊鏈節點,基於設備22所提供的資訊,可以配置、發佈智慧合約,並透過呼叫智慧合約以實現抽籤資格的申請和抽籤操作等。建案開發商或抽籤公證部門可以對智慧合約進行配置,以設定對抽籤資格的申請條件、抽籤過程包含的各個階段(如基於時間劃分各個階段或者基於區塊鏈上的區塊高度劃分各個階段等)、每一階段所採取的處理邏輯等,使得該智慧合約可以用於實現本說明書的物件選取方案,以完成相應的抽籤操作。
假定已完成對智慧合約的配置過程,並且該智慧合約已被發佈至區塊鏈中,那麼基於該智慧合約可以實現如圖3所示的抽籤過程,該過程可以包括以下步驟:
步驟301,用戶申請抽籤資格。
在一實施例中,用戶A可以透過手機21向設備22提交抽籤申請,並經由設備23向區塊鏈中提交包含該抽籤申請的交易,該交易的類型可以被配置或標記為申請抽籤資格的類型。類似地,其他用戶也可以透過上述方式申請抽籤資格,從而與用戶A一併參與抽籤。
除了透過設備23向區塊鏈提交包含抽籤申請的交易之外,用戶A也可以透過其他區塊鏈節點向區塊鏈提交包含抽籤申請的交易,例如該手機21可以被配置為一區塊鏈節點,那麼用戶A可以基於該手機21向區塊鏈提交包含抽籤申請的交易。
上述包含抽籤申請的交易可以被記錄至區塊鏈帳本中,智慧合約可以從區塊鏈帳本中進行查詢和存取,以獲取這些交易中包含的抽籤申請,從而驗證相應的用戶是否可以獲得抽籤資格。
在一實施例中,以設備23為例,設備23可以獲知智慧合約的名稱或位置等資訊,使得設備23可以直接將抽籤申請發送至智慧合約,而智慧合約可以針對收到的抽籤申請進行驗證,以確定相應的用戶是否可以獲得抽籤資格。
步驟302,智慧合約驗證用戶資訊。
在一實施例中,智慧合約獲得某一用戶的抽籤申請後,可以按照預先定義的申請條件對該抽籤申請進行驗證,以確定其是否滿足該申請條件;如果滿足,則判定相應的用戶具備抽籤資格,否則判定為不具備抽籤資格。
在一實施例中,抽籤申請中包含對應用戶的公開金鑰和其他個人資訊,且抽籤申請應當由用戶的私密金鑰進行簽名,以確保其內容的真實有效、不可篡改。
步驟303,智慧合約將驗證結果存證於區塊鏈帳本中。
在一實施例中,透過將驗證結果存證於區塊鏈帳本中,相當於對驗證結果進行公示,使得驗證結果透明、可追溯,並且無法隨意篡改驗證結果,確保對於抽籤申請的驗證符合要求,避免暗箱操作。
步驟304,智慧合約為透過驗證的用戶產生資格編號,並將資格編號存證於區塊鏈帳本中。
在一實施例中,假定以區塊高度來劃分各個階段,智慧合約可以定義申請階段、編號階段、抽籤階段等每一階段對應的區塊高度範圍,例如申請階段對應的區塊高度為T0-T1、編號階段對應的區塊高度為T2-T3、抽籤階段對應的區塊高度為T4-T5。那麼,對於申請階段而言,智慧合約可以從區塊鏈帳本中讀取處於T0-T1高度的區塊內記錄的抽籤申請,只有這些抽籤申請有可能參與到本次抽籤過程中,而其他區塊內的抽籤申請則無法參與到本次抽籤過程中。
在一實施例中,智慧合約可以按照預設的方式為透過驗證的用戶產生資格編號,本說明書並不對此進行限制。舉例而言,可以透過如下方式產生資格編號:
首先,確定各個用戶的中籤率。智慧合約可以從區塊鏈帳本中讀取和統計各個用戶在歷史上參與的抽籤活動,並基於該統計資料確定中籤率;例如,當歷史上參與的抽籤次數不大於第一數值時,中籤率可以為標準中籤率,當抽籤次數大於第一數值、不大於第二數值時,中籤率可以為標準中籤率的2倍,當抽籤次數大於第二數值、不大於第三數值時,中籤率可以為標準中籤率的3倍,以此類推。當然,各個用戶的中籤率也可以透過其他方式計算得到,並記錄至區塊鏈帳本中,而智慧合約只需要從區塊鏈帳本中讀取透過驗證的各個用戶分別對應的中籤率即可。
其次,智慧合約可以基於透過驗證的各個用戶的公開金鑰pk、指定的歷史區塊的雜湊值PreH,分別計算各個用戶對應的過渡ID。例如,智慧合約中可以設定有雜湊函數H(),則各個用戶對應的過渡ID可以為H(PreH,pk),即透過雜湊函數H()對雜湊值PreH和公開金鑰pk進行計算,得到相應的雜湊值,使得該過渡ID具有極高的隨機性,無法被不法分子操控。
接著,智慧合約可以根據產生的過渡ID,為各個用戶分別賦予相應的資格編號。假定透過驗證的用戶為U1~Um,這些用戶的中籤率分別為標準中籤率的1倍、2倍、3倍……n倍,那麼智慧合約可以實施下述操作:
從用戶U1~Um中,選取中籤率不小於標準中籤率的1倍的所有用戶,即用戶U1~Um均被選中;按照過渡ID從小至大的順序,對被選中的m個用戶進行依次排列,接著基於排列次序產生相應的資格編號。由於尚未存在已產生的資格編號,因而此時產生的資格編號可以從頭開始,例如為過渡ID最小的用戶產生資格編號為1、為過渡ID第二小的用戶產生資格編號為2,直至為過渡ID最大的用戶產生資格編號為m。因此,針對中籤率不小於標準中籤率的1倍的所有用戶,此時可以產生相應的m個資格編號,分別為上述的1~m;換言之,此時每一用戶分別具有1個對應的資格編號。
進一步地,從用戶U1~Um中,選取中籤率不小於標準中籤率的2倍的所有用戶,即中籤率為標準中籤率的2~n倍的用戶,假定這些用戶的數量為a;按照過渡ID從小至大的順序,對被選中的a個用戶進行依次排列,接著基於排列次序產生相應的資格編號。由於存在已產生的資格編號1~m,因而此時接續產生資格編號,例如為過渡ID最小的用戶產生資格編號為m+1、為過渡ID第二小的用戶產生資格編號為m+2,直至為過渡ID最大的用戶產生資格編號為m+a。因此,針對中籤率不小於標準中籤率的2倍的所有用戶,此時可以產生相應的a個資格編號,分別為上述的m+1~m+a。此時,對於中籤率為標準中籤率的1倍的用戶,每一用戶存在1個資格編號;而對於中籤率不小於標準中籤率的2倍的用戶,每一用戶存在2個資格編號。
進一步地,從用戶U1~Um中,選取中籤率不小於標準中籤率的3倍的所有用戶,即中籤率為標準中籤率的3~n倍的用戶,假定這些用戶的數量為b;按照過渡ID從小至大的順序,對被選中的b個用戶進行依次排列,接著基於排列次序產生相應的資格編號。由於存在已產生的資格編號1~m+a,因而此時接續產生資格編號,例如為過渡ID最小的用戶產生資格編號為m+a+1、為過渡ID第二小的用戶產生資格編號為m+a+2,直至為過渡ID最大的用戶產生資格編號為m+a+b。因此,針對中籤率不小於標準中籤率的3倍的所有用戶,此時可以產生相應的b個資格編號,分別為上述的m+a+1~m+a+b。此時,對於中籤率為標準中籤率的1倍的用戶,每一用戶存在1個資格編號;而對於中籤率不小於標準中籤率的2倍的用戶,每一用戶存在2個資格編號;而對於中籤率不小於標準中籤率的3倍的用戶,每一用戶存在3個資格編號。
以此類推,智慧合約可以針對每一中籤率,分別透過上述方式對相應用戶分配對應的資格編號,最終使得中籤率為標準中籤率的i倍的用戶,能夠分配得到i個資格編號,其中1≤i≤n。
在一實施例中,透過將所有參與抽籤的用戶對應的資格編號存證於區塊鏈帳本中,使得各個用戶的資格編號公開、透明、可查詢且不可篡改,因而在後續的抽籤過程中,可以基於該資格編號準確地確定各個用戶是否搖中,具有極高的公平性、公開性和可信度。
步驟305,智慧合約監控區塊鏈帳本中已產生的區塊,在最近區塊的區塊高度達到P時,等待區塊鏈帳本中繼續產生Q個區塊後,轉入步驟306。
在一實施例中,P和Q均為預定義的任意取值。當抽籤階段對應的區塊高度範圍為T4-T5時,應當確保T4<P≤P+Q<T5;換言之,Q的取值可以為0,即區塊高度到達P後即可轉入步驟306,而並非必須等待。當Q>0時,Q的取值與區塊鏈中產生區塊的速度相關,只需要確保在Q個區塊後,該高度為P的區塊不會發生變化即可;而透過等待Q個區塊,可以保證高度為P的區塊的安全性,攻擊者必須連續攻擊高度為P和P+Q之間的所有區塊,使得攻擊成本極高,可以極大地降低不法分子操控抽籤的可能性。
步驟306,智慧合約產生隨機種子。
在一實施例中,智慧合約可以分別確定出高度為P的區塊,以及區塊鏈中包含與本次抽籤相關的抽籤申請的r個區塊,並分別獲取這些區塊的雜湊值(雜湊值與對應區塊的區塊內容相關),例如:高度為P的區塊對應於雜湊值Hp,而r個區塊對應的雜湊值分別為H1~Hr(譬如可以按照區塊高度從小至大的順序進行排列)。進一步的,智慧合約可以按照下述公式進行計算:
H’1=H(Hp, Hr),
H’i=H(H’(i-1), H(r-i+1)),其中1<i≤r;
其中,H為預設的雜湊函數,H(Hp, Hr)表示透過該雜湊函數H對Hp和Hr進行雜湊運算、得到相應的雜湊值為H’1;類似地,H(H’(i-1), H(r-i+1))表示透過該雜湊函數H對H’(i-1)和H(r-i+1)進行雜湊運算、得到相應的雜湊值為H’i。最終,可以計算得到計算結果為H’r,而隨機種子為Hf=H(H’r, Hp),使得所有用戶提供的抽籤申請均可以對隨機種子的取值產生影響,而不法分子無法對所有用戶提交的抽籤申請進行控制,因而無法對隨機種子的取值進行操控。
當然,這裡除了選用包含抽籤申請的r個區塊之外,還可以選用其他類型的區塊,本說明書並不對此進行限制。例如,在等待高度為P的區塊產生後,繼續等待上述的Q個區塊,並基於該Q個區塊和高度為P的區塊產生隨機種子;其中:
H’1=H(Hp, HQ),
H’i=H(H’(i-1), H(Q-i+1)),其中1<i≤Q;
其中,H為預設的雜湊函數,H(Hp, HQ)表示透過該雜湊函數H對Hp和HQ(假定高度為P的區塊的雜湊值為Hp,此後的Q個區塊的雜湊值分別為H1、H2……HQ)進行雜湊運算、得到相應的雜湊值為H’1;類似地,H(H’(i-1), H(Q-i+1))表示透過該雜湊函數H對H’(i-1)和H(Q-i+1)進行雜湊運算、得到相應的雜湊值為H’i。最終,可以計算得到計算結果為H’Q,而隨機種子為Hf=H(H’Q, Hp)。
步驟307,智慧合約產生中籤號碼,將中籤號碼存證於區塊鏈帳本中。
在一實施例中,智慧合約可以呼叫設定的偽隨機數發生器,以用於產生中籤號碼。針對為偽隨機數發生器的輸入資料可以包括:隨機種子和取樣區間;其中:隨機種子為上述過程中產生的Hf,而取樣區間可以根據各個用戶的資格編號的取值範圍而產生,例如當資格編號的最小值為1、最大值為Y時,可以將取樣區間設定為[1,Y],使得偽隨機數發生器產生的中籤號碼處於該範圍[1,Y]中。
假定中籤數量為w,當已中籤的用戶數量小於w時,智慧合約可以透過偽隨機數發生器產生匹配於隨機種子Hf、取樣區間[1,Y]的中籤號碼,並在確定出匹配於中籤號碼的資格編號後,確認該資格編號對應的用戶是否先前已中籤,若未中籤則確認該用戶被抽中,否則本次中籤號碼無效,需要繼續抽取。雖然在此過程中,不斷產生已中籤的用戶,但是應當確保取樣區間始終不變、不剔除已中籤用戶對應的資格編號,以確保每一用戶對應的實際中籤機率在整個過程中不會發生變化,不會由於剔除已中籤用戶而導致實際中籤機率增大,可以保證抽籤的公平性。
在一實施例中,透過將中籤號碼存證於區塊鏈帳本上,使得用戶或監管方可以隨時進行查證核驗,避免不法分子進行篡改。以用戶A為例,用戶A可以透過手機21向設備22發起查詢請求,設備22可以透過設備23對區塊鏈帳本進行查詢,並將查詢到的抽籤結果返回手機21,以由用戶A進行查看,確保自己是否具備不動產的選購權限;類似地,當用戶A對抽籤過程存在異議時,同樣可以透過上述過程,對區塊鏈帳本中的相關資料進行追溯查詢,整個過程及其產生的資料均公開透明。
圖4是一範例性實施例提供的一種設備的示意結構圖。請參考圖4,在硬體層面,該設備包括處理器402、內部匯流排404、網路介面406、記憶體408以及非揮發性記憶體410,當然還可能包括其他業務所需要的硬體。處理器402從非揮發性記憶體410中讀取對應的電腦程式到記憶體408中接著運行,在邏輯層面上形成物件選取裝置。當然,除了軟體實現方式之外,本說明書一個或多個實施例並不排除其他實現方式,例如邏輯裝置抑或軟硬體結合的方式等等,也就是說以下處理流程的執行主體並不限定於各個邏輯單元,也可以是硬體或邏輯裝置。
請參考圖5,在軟體實施方式中,該物件選取裝置應用於區塊鏈節點;該裝置可以包括:
獲取單元51,獲取備選物件提交的參選申請;
呼叫單元52,呼叫智慧合約,所述智慧合約被用於向區塊鏈的第一區塊發佈與所述參選申請相關的申請記錄,根據區塊鏈中的第二區塊的區塊內容產生隨機種子,並透過偽隨機數發生器產生基於所述隨機種子的偽隨機數,以使得匹配於所述偽隨機數的備選物件被選取為目標物件;其中,所述第二區塊的區塊高度大於所述第一區塊的區塊高度。
可選的,所述智慧合約還用於:為每一備選物件分別產生申請編號,每一申請編號對應於唯一的備選物件;其中,當所述偽隨機數與任一申請編號相同時,所述任一申請編號對應的備選物件被確定為匹配於所述偽隨機數。
可選的,所述申請編號與所述備選物件對應的唯一標識的取值相關,所述唯一標識的取值由與區塊鏈中的歷史區塊相關的雜湊值和所述備選用戶的公開金鑰進行雜湊計算而得到。
可選的,當所述備選物件的中籤率為標準中籤率的x倍時,所述備選物件存在x個申請編號;其中,x為正整數。
可選的,所述智慧合約用於將與區塊鏈中的歷史區塊相關的雜湊值與所述備選物件的公開金鑰進行雜湊計算,得到相應的唯一標識;
當x的取值從小至大地分別包括x1~xn時,所述智慧合約用於依次選取x1~xn;其中,當選取xi時,所述智慧合約將中籤率不小於標準中籤率的xi倍的備選物件對應的唯一標識按照從小至大依次排列,並在已有申請編號之後、按照排列次序接續產生相應的申請編號,1≤i≤n。
可選的,所述目標物件的總數為w;所述智慧合約用於在已選取的目標物件的數量未達到w時,將所述隨機種子和取樣區間[M,N]作為輸入、透過所述偽隨機數發生器產生1個偽隨機數,其中M為申請編號的最小值、N為申請編號的最大值。
可選的,所述智慧合約用於將每一備選物件對應的申請編號存證於區塊鏈中。
可選的,所述隨機種子還與區塊鏈中的一個或多個其他區塊的區塊內容相關。
可選的,所述一個或多個其他區塊包括:包含至少一條申請記錄的區塊。
可選的,所述一個或多個其他區塊包括:與所述第二區塊相鄰的一個或多個區塊。
可選的,所述智慧合約用於透過下述公式對所述第二區塊和r個其他區塊的區塊內容進行處理,以確定出所述實際結果:
H’1=H(Hp, Hr),
H’i=H(H’(i-1), H(r-i+1)),其中1<i≤r;
其中,H為預設的雜湊函數,Hp為與所述第二區塊的區塊內容相關的雜湊值,Hi為與第i個其他區塊的區塊內容相關的雜湊值,所述隨機種子為Hf=H(H’r, Hp)。
可選的,所述智慧合約用於在區塊鏈中產生第三區塊後,產生所述隨機種子;其中,所述第三區塊的區塊高度大於所述第二區塊,且高度差為預設數值。
上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦,電腦的具體形式可以是個人電腦、膝上型電腦、蜂巢式電話、相機電話、智慧手機、個人數位助理、媒體播放器、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、可穿戴設備或者這些設備中的任意幾種設備的組合。
在一個典型的配置中,電腦包括一個或多個處理器 (CPU)、輸入/輸出介面、網路介面和記憶體。
記憶體可能包括電腦可讀媒體中的非永久性記憶體,隨機存取記憶體(RAM)和/或非揮發性記憶體等形式,如唯讀記憶體(ROM)或快閃記憶體(flash RAM)。記憶體是電腦可讀媒體的範例。
電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程序的模組或其他資料。電腦的儲存媒體的例子包括,但不限於相變記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可抹除可程式化唯讀記憶體(EEPROM)、快閃記憶體或其他記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶、磁碟儲存、量子記憶體、基於石墨烯的儲存媒體或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備存取的資訊。按照本文中的界定,電腦可讀媒體不包括暫存電腦可讀媒體(transitory media),如調變的資料訊號和載波。
還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,並不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
上述對本說明書特定實施例進行了描述。其它實施例在所附申請專利範圍的範圍內。在一些情況下,在申請專利範圍中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在附圖中描繪的過程不一定要求顯示的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多任務處理和並行處理也是可以的或者可能是有利的。
在本說明書一個或多個實施例使用的術語是僅僅出於描述特定實施例的目的,而非意於限制本說明書一個或多個實施例。在本說明書一個或多個實施例和所附申請專利範圍中所使用的單數形式的“一種”、“所述”和“該”也意於包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指並包含一個或多個相關聯的列出項目的任何或所有可能組合。
應當理解,儘管在本說明書一個或多個實施例可能採用術語第一、第二、第三等來描述各種資訊,但這些資訊不應限於這些術語。這些術語僅用來將同一類型的資訊彼此區分開。例如,在不脫離本說明書一個或多個實施例範圍的情況下,第一資訊也可以被稱為第二資訊,類似地,第二資訊也可以被稱為第一資訊。取決於語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應於確定”。
以上所述僅為本說明書一個或多個實施例的較佳實施例而已,並不用以限制本說明書一個或多個實施例,凡在本說明書一個或多個實施例的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本說明書一個或多個實施例保護的範圍之內。
102-104:步驟
21:手機
22:設備
23:設備
301-307:步驟
402:處理器
404:內部匯流排
406:網路介面
408:記憶體
410:非揮發性記憶體
51:獲取單元
52:呼叫單元
圖1是一範例性實施例提供的一種物件選取方法的流程圖。
圖2是一範例性實施例提供的一種抽籤選購不動產的示意圖。
圖3是一範例性實施例提供的一種基於智慧合約的抽籤過程的示意圖。
圖4是一範例性實施例提供的一種設備的結構示意圖。
圖5是一範例性實施例提供的一種物件選取裝置的方塊圖。