本發(fā)明涉及數(shù)字資產(chǎn)技術(shù),尤其涉及一種基于區(qū)塊鏈的數(shù)據(jù)指紋查詢。
背景技術(shù):
區(qū)塊鏈?zhǔn)且环N前沿技術(shù),被譽為最有望顛覆傳統(tǒng)金融業(yè)的下一項互聯(lián)網(wǎng)技術(shù)。
區(qū)塊鏈技術(shù)將實體世界的資產(chǎn)和權(quán)益進(jìn)行數(shù)字化,并通過去中心化的方式實現(xiàn)資產(chǎn)的登記發(fā)行、轉(zhuǎn)賬交易等。它以密碼學(xué)技術(shù)為基礎(chǔ),通過去中心化的方式,對大量數(shù)據(jù)進(jìn)行存儲、傳輸和證明,具有高可靠性、公開透明、去信任等特性。從金融角度可以將區(qū)塊鏈技術(shù)看成是一種分布式開放性去中心化的大型網(wǎng)絡(luò)記賬薄,任何人任何時間都可以加入自己的信息,延伸區(qū)塊鏈,以持續(xù)滿足各種需求。
現(xiàn)有的區(qū)塊鏈1.0專門為虛擬貨幣而設(shè)計,區(qū)塊鏈1.0用來記錄虛擬貨幣的交易,它是單標(biāo)識系統(tǒng),支持單個資產(chǎn)標(biāo)志,不支持多屬性資產(chǎn)的交易。現(xiàn)有的區(qū)塊鏈查看器,例如現(xiàn)有的Abe軟件,是為用戶提供查看區(qū)塊鏈上數(shù)字貨幣交易記錄詳細(xì)信息的工具。用戶可以通過在現(xiàn)有Abe軟件的輸入框中輸入交易ID(交易標(biāo)識)來獲取數(shù)字貨幣的交易記錄,以精確地獲得相應(yīng)數(shù)字貨幣交易的詳細(xì)信息。
然而隨著區(qū)塊鏈技術(shù)的快速發(fā)展,區(qū)塊鏈不再局限于虛擬貨幣領(lǐng)域的應(yīng)用,逐漸涉及股權(quán)登記、版權(quán)登記、智能合約、公證、博彩游戲等各個領(lǐng)域,此類更為廣泛的應(yīng)用被稱作“區(qū)塊鏈2.0應(yīng)用”。在區(qū)塊鏈2.0上登記的內(nèi)容是實體資產(chǎn)的一種映射,可稱為映射資產(chǎn)。
綜上,現(xiàn)有的區(qū)塊鏈查看器,例如現(xiàn)有的Abe軟件,僅能夠查看一種數(shù)字資產(chǎn)即數(shù)字貨幣的交易記錄,卻無法查詢多種類型的數(shù)字資產(chǎn)的交易記錄。而區(qū)塊鏈2.0可以應(yīng)用于多個領(lǐng)域,區(qū)塊鏈2.0存儲了多種類型數(shù)字資產(chǎn)的交易記錄,而現(xiàn)有的區(qū)塊鏈查看器卻無法查看多種類型的數(shù)字資產(chǎn)的交易記錄,亦無法查看不可分割的數(shù)字資產(chǎn)的交易記錄。例如,現(xiàn)有技術(shù)無法查詢金融衍生品類的數(shù)字資產(chǎn)的交易記錄。因此,目前迫切需要一種能夠查詢多種類型的數(shù)字資產(chǎn)交易記錄的方法,尤其是能夠查詢不可分割的數(shù)字資產(chǎn)交易記錄的方法。
技術(shù)實現(xiàn)要素:
本申請的目的在于,提供一種基于區(qū)塊鏈的數(shù)據(jù)指紋查詢方法及裝置,以解決現(xiàn)有技術(shù)無法查詢多種類型數(shù)字資產(chǎn)的交易記錄詳情的問題,尤其是不可分割的數(shù)字資產(chǎn)的查詢。
為實現(xiàn)上述目的,本申請?zhí)峁┝艘环N基于區(qū)塊鏈的數(shù)據(jù)指紋的查詢方法。該方法先安裝區(qū)塊鏈查看器,啟動該區(qū)塊鏈查看器。然后該區(qū)塊鏈查看器將區(qū)塊鏈上的交易數(shù)據(jù)寫入數(shù)據(jù)庫,并根據(jù)該交易數(shù)據(jù)在該數(shù)據(jù)庫中生成資產(chǎn)標(biāo)志列表,該資產(chǎn)標(biāo)志列表至少包括數(shù)字資產(chǎn)英文符號symbol、數(shù)字資產(chǎn)標(biāo)志Asset Index、資產(chǎn)類別名稱Asset Type。然后該區(qū)塊鏈查看器生成該數(shù)字資產(chǎn)的數(shù)據(jù)指紋的查詢網(wǎng)址域名,以供查詢。在有數(shù)據(jù)指紋輸入時,判斷該數(shù)據(jù)指紋是否有效,如果有效,則從該數(shù)據(jù)庫中獲取該輸入的數(shù)據(jù)指紋的交易數(shù)據(jù),返回該交易數(shù)據(jù),生成網(wǎng)頁超鏈接。并且在該查詢結(jié)果返回網(wǎng)頁中包含所輸入數(shù)據(jù)指紋的資產(chǎn)類別名稱。
此外,對于新產(chǎn)生的交易記錄,該區(qū)塊鏈查看器根據(jù)該新產(chǎn)生的交易數(shù)據(jù)中的字段生成數(shù)字資產(chǎn)標(biāo)志Asset Index及資產(chǎn)類別名稱Asset Type。
本發(fā)明解決了現(xiàn)有技術(shù)無法查詢多屬性數(shù)字資產(chǎn)交易記錄詳情的問題,具體在,例如,無法查詢區(qū)塊鏈2.0上的數(shù)字資產(chǎn)交易記錄的詳情。本發(fā)明的數(shù)據(jù)指紋查詢方法,在用戶通過查詢框輸入數(shù)據(jù)指紋后,能夠為用戶提供數(shù)字資產(chǎn)的交易記錄詳情。本發(fā)明方法為用戶提供了多屬性數(shù)字資產(chǎn),尤其是不可分割數(shù)字資產(chǎn)的交易記錄詳情,給用戶提供了方便。
附圖說明
圖1為本發(fā)明實施例提供的一種基于區(qū)塊鏈的數(shù)字指紋查詢所處網(wǎng)絡(luò)的示意圖;
圖2為本發(fā)明實施例提供的一種基于區(qū)塊鏈的數(shù)字指紋查詢方法流程圖;
圖3為本發(fā)明實施例提供的用戶通過網(wǎng)頁輸入數(shù)據(jù)指紋查詢交易記錄的示意圖;
圖4為本發(fā)明實施提供的數(shù)據(jù)指紋讀入查詢參數(shù)q的示意圖;
圖5為本發(fā)明實施例提供的通過數(shù)據(jù)指紋查詢數(shù)據(jù)庫所返回數(shù)據(jù)的示意圖;
圖6為本發(fā)明實施例提供的交易記錄的詳細(xì)信息的示意圖;
圖7為本發(fā)明一個實施例提供的基于區(qū)塊鏈的數(shù)據(jù)指紋查詢裝置示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。下面結(jié)合附圖1、附圖2對本發(fā)明提供的基于區(qū)塊鏈的數(shù)據(jù)指紋查詢方法進(jìn)行詳述。
步驟201,在區(qū)塊鏈查看服務(wù)器120上安裝區(qū)塊鏈查看器,并運行該區(qū)塊鏈查看器的軟件包。
該區(qū)塊鏈查看器用于查看區(qū)塊鏈上的數(shù)字資產(chǎn)交易記錄的詳細(xì)信息。該區(qū)塊鏈查看器如Abe軟件,Abe軟件的主體程序由Python語言實現(xiàn),用于控制區(qū)塊鏈數(shù)據(jù)的讀入,處理計算區(qū)塊鏈數(shù)據(jù),以及控制顯示交易數(shù)據(jù)。Abe軟件中其它程序由Mysql語言實現(xiàn),主要用于保存和更新區(qū)塊鏈數(shù)據(jù)。若該區(qū)塊鏈查看器為Abe軟件,則運行該區(qū)塊鏈查看器的軟件包是由Python語言及Mysql語言實現(xiàn)的程序。
步驟202,通過區(qū)塊鏈查看服務(wù)器120修改該區(qū)塊鏈查看器的配置文件,包括設(shè)置該區(qū)塊鏈查看器的運行參數(shù),設(shè)置該區(qū)塊鏈查看器與數(shù)據(jù)庫130連接的參數(shù)。其中,數(shù)據(jù)庫130用于存儲區(qū)塊鏈上的數(shù)據(jù),包括數(shù)字資產(chǎn)交易記錄的詳細(xì)信息。
例如,設(shè)置區(qū)塊鏈查看器Abe的端口port為80,設(shè)置區(qū)塊鏈查看服務(wù)器120的IP地址,設(shè)置數(shù)據(jù)庫130的類型dbtype為mysql。
步驟203,通過在區(qū)塊鏈查看服務(wù)器120上輸入命令行,啟動區(qū)塊鏈查看器。例如,通過在區(qū)塊鏈查看器120輸入以下命令行,啟動區(qū)塊鏈查看器:
python-m Abe.abe-main–configmyconf.conf--commit-bytes 100000
步驟204,區(qū)塊鏈查看器將區(qū)塊鏈上的交易數(shù)據(jù)從區(qū)塊鏈節(jié)點110寫入到數(shù)據(jù)庫130,且數(shù)據(jù)庫130中的交易數(shù)據(jù)是實時更新的。例如,區(qū)塊鏈查看器每隔兩分鐘將區(qū)塊鏈上新產(chǎn)生的交易數(shù)據(jù)從區(qū)塊鏈節(jié)點110寫入到數(shù)據(jù)庫130中。
區(qū)塊鏈節(jié)點110包含所有數(shù)字資產(chǎn)交易的詳細(xì)記錄,區(qū)塊鏈查看器將該數(shù)字資產(chǎn)交易的詳細(xì)記錄寫入到數(shù)據(jù)庫130中,用戶可通過終端140并通過區(qū)塊鏈查看服務(wù)器120查看數(shù)據(jù)庫130中交易記錄的詳細(xì)信息。
在一個示例中,區(qū)塊鏈查看器從區(qū)塊鏈節(jié)點110上讀取的交易數(shù)據(jù)包括:交易ID(交易標(biāo)識)、數(shù)據(jù)指紋、數(shù)字資產(chǎn)的源地址(from address)、數(shù)字資產(chǎn)的目的地址(to address)、交易時間、數(shù)字資產(chǎn)標(biāo)志(AssetIndex)、數(shù)字資產(chǎn)英文符號(symbol)、資產(chǎn)類別名稱(Asset Type)等數(shù)字資產(chǎn)交易記錄的詳細(xì)信息。
并且區(qū)塊鏈查看器根據(jù)寫入至數(shù)據(jù)庫130中的交易數(shù)據(jù),在數(shù)據(jù)庫130中生成資產(chǎn)標(biāo)志列表(Asset Index列表)。在該Asset Index列表中,至少包括數(shù)字資產(chǎn)英文符號(symbol)、數(shù)字資產(chǎn)標(biāo)志(Asset Index)、資產(chǎn)類別名稱(Asset Type),且本申請的Asset Index列表中的數(shù)據(jù)不限于數(shù)字資產(chǎn)英文符號(symbol)、數(shù)字資產(chǎn)標(biāo)志(Asset Index)、資產(chǎn)類別名稱(Asset Type),如下表1所示:
表1
其中,表1中的數(shù)值僅是一個例子,如oil的AssetID為12345僅是在舉例說明。
此外,每當(dāng)有新的數(shù)字資產(chǎn)發(fā)行時,區(qū)塊鏈查看服務(wù)器120就會更新Asset Index列表即上述表1,將新的數(shù)字資產(chǎn)標(biāo)志Asset Index、資產(chǎn)類別名稱Asset Type以及數(shù)字資產(chǎn)英文標(biāo)識symbol更新至Asset Index列表中。例如,當(dāng)有新的數(shù)字資產(chǎn)發(fā)行成功后,經(jīng)用戶確認(rèn)后,通過數(shù)據(jù)庫命令更新該Asset Index列表即表1。需要說明的是,對于新產(chǎn)生的交易記錄,區(qū)塊鏈查看器除了將該交易記錄的詳細(xì)信息寫入數(shù)據(jù)庫130之外,還需要通過Asset Index列表獲取該交易記錄中的數(shù)字資產(chǎn)類別名稱Asset Type,下面將通過步驟205-207得到詳述。
步驟205,對于新產(chǎn)生的交易記錄,區(qū)塊鏈查看服務(wù)器120生成數(shù)字資產(chǎn)標(biāo)志Asset Index與數(shù)字資產(chǎn)類型Asset Type。
在一個數(shù)字資產(chǎn)的交易記錄中,包括源地址(from address)和目的地址(to address)。源地址是指在一次數(shù)字資產(chǎn)交易中,該數(shù)字資產(chǎn)的來源地址,目的地址是指該數(shù)字資產(chǎn)的去向地址。區(qū)塊鏈節(jié)點110包含了多種類型的數(shù)字資產(chǎn)的交易記錄,例如包含黃金、一件文物、一棟房子等多種類別的數(shù)字資產(chǎn)的交易記錄。對于在區(qū)塊鏈節(jié)點110上新產(chǎn)生的交易記錄,區(qū)塊鏈查看服務(wù)器120將交易記錄寫入數(shù)據(jù)庫的時候得到數(shù)字資產(chǎn)標(biāo)志Asset Index與該數(shù)字資產(chǎn)標(biāo)識Asset Index對應(yīng)的資產(chǎn)類別名稱Asset Type。
在一個示例中,通過以下方式得到Asset Index:在將區(qū)塊鏈節(jié)點110上的交易數(shù)據(jù)寫入到數(shù)據(jù)庫130時,得到該交易數(shù)據(jù)中的字段,根據(jù)該交易數(shù)據(jù)中的字段生成該交易記錄的Asset Index。
步驟206,將新產(chǎn)生交易記錄的Asset Index與數(shù)據(jù)庫130中存儲的資產(chǎn)標(biāo)志列表(Asset Index列表)中的各Asset Index進(jìn)行匹配,即判定該新產(chǎn)生交易記錄的Asset Index是否在Asset Index列表中,該Asset Index列表記錄了多種類別的Asset Index以及各Asset Index所對應(yīng)資產(chǎn)類別名稱Asset Type,參見上表1。
步驟207,若該新產(chǎn)生交易記錄的Asset Index與該Asset Index列表中的一個Asset Index匹配,則獲取該Asset Index列表中的該匹配上的Asset Index對應(yīng)數(shù)字資產(chǎn)類別名稱Asset Type,并將該數(shù)字資產(chǎn)類別名稱Asset Type與該新產(chǎn)生的交易記錄的信息,包括數(shù)據(jù)指紋,源地址、目的地址、交易時間、交易ID等寫入數(shù)據(jù)庫130中。
步驟208,若該新產(chǎn)生交易記錄的Asset Index與該Asset Index類別中的任何Asset Index均不匹配,說明該新產(chǎn)生交易記錄的Asset Index不在該Asset Index列表中,則標(biāo)記該新產(chǎn)生交易記錄的數(shù)字資產(chǎn)類別名稱為未知unknown,并將該數(shù)字資產(chǎn)類別名稱為未知以及該新產(chǎn)生的交易記錄的其它信息,包括數(shù)據(jù)指紋、源地址、目的地址、交易時間、交易ID等寫入數(shù)據(jù)庫130中。
一個典型的數(shù)字資產(chǎn)類別名稱為未知的應(yīng)用場景為:某數(shù)字資產(chǎn)新發(fā)行,且該新發(fā)行數(shù)字資產(chǎn)的用戶就對該數(shù)字資產(chǎn)做了交易,因此在區(qū)塊鏈節(jié)點110上產(chǎn)生了交易記錄,而此時,區(qū)塊鏈查看服務(wù)器120尚未來得及將該新發(fā)行的數(shù)字資產(chǎn)的Asset Type更新至Asset Index列表即表1中,此種情況下,數(shù)字資產(chǎn)類型名稱為未知unknow。
步驟209,區(qū)塊鏈查看服務(wù)器120生成數(shù)字資產(chǎn)交易記錄查詢的網(wǎng)址域名,即生成數(shù)據(jù)指紋查詢的網(wǎng)頁鏈接,以供用戶查詢數(shù)字資產(chǎn)的交易記錄。
在一個示例中,區(qū)塊鏈查看服務(wù)器120修改網(wǎng)頁生成函數(shù),從而將資產(chǎn)類別名稱Asset Type加入到數(shù)據(jù)指紋查詢結(jié)果返回網(wǎng)頁中。
在一個示例中,僅在該數(shù)字資產(chǎn)類型名稱已經(jīng)更新到Asset Index列表中之后,即僅在該數(shù)字資產(chǎn)類型名稱不是未知時,區(qū)塊鏈查看服務(wù)器120才會生成相應(yīng)的數(shù)據(jù)指紋查詢的網(wǎng)頁鏈接。步驟210,用戶通過任意終端140的瀏覽器打開相應(yīng)網(wǎng)頁鏈接(通過步驟209得到),即打開了供該用戶查詢數(shù)字資產(chǎn)交易記錄的網(wǎng)頁,用戶在該網(wǎng)頁的查詢框中輸入數(shù)據(jù)指紋,單擊查詢按鈕,如圖3所示。
具體地,區(qū)塊鏈查看服務(wù)器120在生成數(shù)據(jù)指紋查詢的網(wǎng)頁鏈接之后,即在步驟209之后,用戶就可以打開該網(wǎng)頁鏈接并在該網(wǎng)頁的查詢框中輸入數(shù)據(jù)指紋,查詢數(shù)字資產(chǎn)交易記錄的詳情。本發(fā)明實施例為用戶提供了查詢多種類型的數(shù)字資產(chǎn)的交易記錄,包括查詢不可分割的數(shù)字資產(chǎn)的交易記錄的詳情。
數(shù)字資產(chǎn)包括可分割的數(shù)字資產(chǎn)和不可分割的數(shù)字資產(chǎn),可分割的數(shù)字資產(chǎn)如數(shù)字貨幣,包括股票、黃金、美元等,不可分割的數(shù)字資產(chǎn)如水杯、文物、房屋、金融合同等。
對于不可分割的數(shù)字資產(chǎn),其地址下的余額指代的是與該地址相關(guān)的轉(zhuǎn)帳數(shù)據(jù)中的數(shù)據(jù)指紋所對應(yīng)的數(shù)字資產(chǎn)的數(shù)量,且所述余額是整數(shù),且計量單位是個數(shù)、件數(shù)、套數(shù)等,或者計量單位可以是計數(shù)的最小單位,例如,計數(shù)系統(tǒng)非0的最小值為0.00000001,那么可以用0.00000001作為計量單位,也就是說,0.00000001表示一個數(shù)量(例如,一件、一個等)。
進(jìn)一步地,不可分割的數(shù)字資產(chǎn)又包括不可分割且可疊加(fungible,可代替的,可互換的)的數(shù)字資產(chǎn)和不可分割且不可疊加(unfungible,不可代替的,不可互換的)的數(shù)字資產(chǎn)。
可疊加即可代替、可互換,對應(yīng)英文為fungible,可疊加的數(shù)字資產(chǎn)即可代替的數(shù)字資產(chǎn)、可互換的數(shù)字資產(chǎn);不可疊加即不可代替、不可互換,對應(yīng)英文為unfungible,不可疊加的數(shù)字資產(chǎn)即不可代替的數(shù)字資產(chǎn)、不可互換的數(shù)字資產(chǎn)。
該不可分割且可疊加的數(shù)字資產(chǎn)即不可分割且可代替的數(shù)字資產(chǎn),例如同一廠商生產(chǎn)的同一批次的水杯,該不可分割且可疊加的數(shù)字資產(chǎn)即該不可分割且可代替的數(shù)字資產(chǎn)的數(shù)據(jù)指紋相同。該不可分割且不可疊加的數(shù)字資產(chǎn)即不可分割且不可代替的數(shù)字資產(chǎn),例如金融合同。不同的交易有不同的合同,例如,根據(jù)信譽不同,合同內(nèi)容中的金融產(chǎn)品價格不同,因此,不同金融合同所對應(yīng)的數(shù)據(jù)指紋不同,該不可分割且可疊加的數(shù)字資產(chǎn)即該不可分割且可代替的數(shù)字資產(chǎn)的數(shù)據(jù)指紋相同。
綜上,本申請實施例能夠查詢多種類型的數(shù)字資產(chǎn)的交易記錄,包括能夠查詢不可分割的數(shù)字資產(chǎn)的交易記錄。
需要說明的是,用戶也可以在該網(wǎng)頁的查詢框中輸入交易ID以查詢數(shù)字資產(chǎn)交易記錄的詳細(xì)信息,以下僅以用戶在網(wǎng)頁查詢框中輸入數(shù)據(jù)指紋為例進(jìn)行闡述。
步驟211,區(qū)塊鏈查看器將用戶輸入的數(shù)據(jù)指紋讀入到查詢參數(shù)中,例如讀入到查詢參數(shù)“q”中,如圖4所示。
具體地,區(qū)塊鏈查看器啟動后,程序會初始化一個列表(list)類型的數(shù)據(jù)變量,名為page。該數(shù)據(jù)變量用于儲存要顯示在網(wǎng)頁上的內(nèi)容。用戶在查詢框內(nèi)輸入數(shù)據(jù)指紋,并單擊查找后,當(dāng)前網(wǎng)頁相當(dāng)于一個對象,網(wǎng)頁內(nèi)容存儲到該數(shù)據(jù)變量page中,搜索框內(nèi)提交的數(shù)據(jù)指紋通過該變量獲取用戶輸入的數(shù)據(jù)指紋。
步驟212,區(qū)塊鏈查看器判定該包含數(shù)據(jù)指紋的查詢參數(shù)是否包含有效的數(shù)據(jù)指紋。
在一個示例中,通過以下條件判定數(shù)據(jù)指紋是否有效:
(1)64位字符串;
(2)字符串結(jié)尾是數(shù)字0-9,字母a-f或者A-F這三類的組合;
(3)查詢參數(shù)符合根據(jù)條件(1)、(2)而生成的python正則表達(dá)式模式(pattern)。
步驟213,如果用戶輸入的數(shù)字指紋有效,則區(qū)塊鏈查看器查詢數(shù)據(jù)庫130中包含該數(shù)據(jù)指紋的交易數(shù)據(jù),返回交易數(shù)據(jù),例如,返回交易ID,生成網(wǎng)頁超鏈接,并顯示。
參見圖5,圖5中交易ID即TxID 516983。
步驟214,通過步驟213生成的網(wǎng)頁超鏈接,在終端140的瀏覽器上顯示與用戶輸入的數(shù)據(jù)指紋相關(guān)交易的詳細(xì)信息,如圖6所示。
具體地,用戶通過單擊網(wǎng)頁上的交易ID得到與用戶輸入的數(shù)據(jù)指紋相關(guān)的交易的詳細(xì)信息。
下面詳細(xì)介紹數(shù)據(jù)指紋的查詢。
數(shù)據(jù)指紋是對數(shù)字資產(chǎn)相關(guān)信息進(jìn)行哈希運算得到的哈希值,且數(shù)據(jù)指紋嵌入到一筆數(shù)字資產(chǎn)的交易中。一筆數(shù)字資產(chǎn)的交易包括交易輸入(transantion in,簡稱tx in)與交易輸出(transantion out,簡稱tx out)。該tx in包括來源地址、時間、金額或數(shù)量等。該Tx out包括目的地址、金額或數(shù)量等。
在數(shù)據(jù)庫中,每一筆數(shù)字資產(chǎn)的交易信息被保存在多個不同的表格中,例如tx out表、tx in表,該tx out表包括txout_id(交易輸出標(biāo)識),tx_id(交易標(biāo)識),txout_pos(交易輸出位置),txout_scriptPubkey(交易輸出腳本公鑰),pubkey_id(公鑰標(biāo)識),該tx in表包括txin_id(交易輸入標(biāo)識),tx_id(交易標(biāo)識),txin_pos(交易輸入位置),txout_id(交易輸出標(biāo)識),txin_scriptSig(交易輸入腳本簽名),txin_sequence(交易輸入序列)。區(qū)塊鏈查看器通過以下方式查詢數(shù)據(jù)指紋獲得交易記錄:
(1)判定用戶輸入的數(shù)據(jù)指紋是否有效;
(2)通過數(shù)據(jù)庫查詢命令如數(shù)據(jù)庫命令select,從上述tx out表中提取僅含有數(shù)據(jù)指紋的交易記錄;如根據(jù)tx out表中的txout_scriptPubkey表項確定含有數(shù)據(jù)指紋的交易記錄;
(3)通過數(shù)據(jù)庫連接命令如數(shù)據(jù)庫命令join,獲取與輸入的數(shù)據(jù)指紋相對應(yīng)的數(shù)字資產(chǎn)交易記錄詳情;
(4)返回查詢結(jié)果,并生成網(wǎng)頁。
圖7是本發(fā)明一個實施例提供的基于區(qū)塊鏈的數(shù)據(jù)指紋查詢裝置示意圖。裝置700包括交易數(shù)據(jù)寫入模塊704、資產(chǎn)標(biāo)志列表生成模塊705、數(shù)據(jù)指紋查詢網(wǎng)址生成模塊707、交易數(shù)據(jù)獲取模塊708。
進(jìn)一步地,該裝置還包括區(qū)塊鏈查看器安裝模塊701、配置模塊702、區(qū)塊鏈查看器啟動模塊703、資產(chǎn)類別名稱獲取模塊706。
區(qū)塊鏈查看器安裝模塊701,用于安裝區(qū)塊鏈查看器。具體地,區(qū)塊鏈查看器安裝模塊701還用于運行該區(qū)塊鏈查看器的軟件包,該區(qū)塊鏈查看器的軟件包由Python語言和Mysql語言實現(xiàn),例如Abe軟件。
配置模塊702用于修改該區(qū)塊鏈查看器的配置文件,包括設(shè)置該區(qū)塊鏈查看器的運行參數(shù),以及設(shè)置該區(qū)塊鏈查看器與該數(shù)據(jù)塊連接的參數(shù)。
區(qū)塊鏈查看器啟動模塊703,用于啟動所述區(qū)塊鏈查看器。例如,通過在區(qū)塊鏈查看器120輸入以下命令行,啟動區(qū)塊鏈查看器:
python-m Abe.abe-main–configmyconf.conf--commit-bytes 100000
交易數(shù)據(jù)寫入模塊704,用于將區(qū)塊鏈上的交易數(shù)據(jù)寫入數(shù)據(jù)庫。
具體地,交易數(shù)據(jù)寫入模塊704用于將區(qū)塊鏈上的交易數(shù)據(jù)從區(qū)塊鏈節(jié)點寫入到數(shù)據(jù)庫中。
在一個示例中,區(qū)塊鏈查看器從區(qū)塊鏈節(jié)點上讀取的交易數(shù)據(jù)包括:交易ID(交易標(biāo)識)、數(shù)據(jù)指紋、數(shù)字資產(chǎn)的源地址(from address)、數(shù)字資產(chǎn)的目的地址(to address)、交易時間、數(shù)字資產(chǎn)標(biāo)志(Asset Index)、數(shù)字資產(chǎn)英文符號(symbol)、資產(chǎn)類別名稱等數(shù)字資產(chǎn)交易記錄的詳細(xì)信息。
資產(chǎn)標(biāo)志列表生成模塊705,用于根據(jù)該交易數(shù)據(jù)生成資產(chǎn)標(biāo)志列表,該資產(chǎn)標(biāo)志列表至少包括數(shù)字資產(chǎn)標(biāo)志、資產(chǎn)類別名稱。
具體地,資產(chǎn)標(biāo)志列表生成模塊705用于根據(jù)寫入至數(shù)據(jù)庫中的交易數(shù)據(jù),在該數(shù)據(jù)庫中生成資產(chǎn)標(biāo)志列表(Asset Index列表)。在該Asset Index列表中,至少包括數(shù)字資產(chǎn)英文符號(symbol)、數(shù)字資產(chǎn)標(biāo)志(Asset Index)、資產(chǎn)類別名稱(Asset Type),具體可參見上表1。
此外,每當(dāng)有新的數(shù)字資產(chǎn)發(fā)行時,資產(chǎn)標(biāo)志列表生成模塊705就會更新Asset Index列表,將新的Asset Index、資產(chǎn)類別名稱以及數(shù)字資產(chǎn)英文標(biāo)識更新至Asset Index列表中。例如,當(dāng)有新的數(shù)字資產(chǎn)發(fā)行成功后,用戶通過填寫Asset Index列表即表1的方式,更新該Asset Index列表。
進(jìn)一步地,根據(jù)新產(chǎn)生的交易記錄生成Asset Index以及與該Asset Index對應(yīng)的Asset Type。
在一個示例中,通過以下方式得到Asset Index:在將區(qū)塊鏈節(jié)點上的交易數(shù)據(jù)寫入到數(shù)據(jù)庫時,得到該交易數(shù)據(jù)中的字段,通過該交易數(shù)據(jù)中的字段生成該交易記錄中Asset Index。
資產(chǎn)類別名稱獲取模塊706,用于基于該新產(chǎn)生的交易記錄的數(shù)字資產(chǎn)標(biāo)志及該資產(chǎn)標(biāo)志列表,得到該新產(chǎn)生的交易記錄的資產(chǎn)類別名稱。
在一個示例中,資產(chǎn)類別名稱獲取模塊706具體用于:將該新產(chǎn)生的交易記錄的數(shù)字資產(chǎn)標(biāo)志與該資產(chǎn)標(biāo)志列表中的各數(shù)字資產(chǎn)標(biāo)志進(jìn)行匹配;如果該新產(chǎn)生的交易記錄的數(shù)字資產(chǎn)標(biāo)志與該資產(chǎn)標(biāo)志列表中的一個數(shù)字資產(chǎn)標(biāo)志相匹配,則從該資產(chǎn)標(biāo)志列表中獲取相應(yīng)資產(chǎn)類別名稱;如果該新產(chǎn)生的交易記錄的數(shù)字資產(chǎn)標(biāo)志與該資產(chǎn)標(biāo)志列表中的該數(shù)字資產(chǎn)標(biāo)志均不匹配,則標(biāo)記該新生成的交易記錄的數(shù)字資產(chǎn)標(biāo)志類別名稱為未知。
進(jìn)一步地,當(dāng)獲取到資產(chǎn)類別名稱時,將該資產(chǎn)類別名稱及相應(yīng)數(shù)據(jù)指紋、源地址、目的地址、交易時間、交易標(biāo)識寫入到所述數(shù)據(jù)庫中。當(dāng)該數(shù)字資產(chǎn)標(biāo)志類別名稱為未知時,將該未知的數(shù)字資產(chǎn)類別名稱以及相應(yīng)數(shù)據(jù)指紋、源地址、目的地址、交易時間、交易標(biāo)識寫入到該數(shù)據(jù)庫中。
數(shù)據(jù)指紋查詢網(wǎng)址生成模塊707用于生成數(shù)字資產(chǎn)的數(shù)據(jù)指紋的查詢網(wǎng)址域名,以供查詢。
在一個示例中,數(shù)據(jù)指紋查詢網(wǎng)址生成模塊707用于修改網(wǎng)頁生成函數(shù),從而將資產(chǎn)類別名稱加入到查詢結(jié)果返回網(wǎng)頁中。
交易數(shù)據(jù)獲取模塊708用于接收輸入的數(shù)據(jù)指紋,判定該數(shù)據(jù)指紋是否有效,如果有效,則從數(shù)據(jù)庫中提取僅包含有數(shù)據(jù)指紋的交易記錄;從該僅包含有數(shù)據(jù)指紋的交易記錄中獲取該輸入數(shù)據(jù)指紋的交易數(shù)據(jù),返回該交易數(shù)據(jù),生成網(wǎng)頁超鏈接。其中,在該輸入數(shù)據(jù)指紋的返回交易數(shù)據(jù)的網(wǎng)頁超鏈接中,包含該資產(chǎn)類別名稱。
在一個示例中,通過以下條件判定數(shù)據(jù)指紋是否有效:
(1)64位字符串;
(2)字符串結(jié)尾是數(shù)字0-9,字母a-f或者A-F這三類的組合;
(3)查詢參數(shù)符合根據(jù)條件(1)、(2)而生成的python正則表達(dá)式模式(pattern)。
專業(yè)人員應(yīng)該還可以進(jìn)一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上所述的具體實施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。