区块链测试(一):测试人员初学区块链
區塊鏈可能會成為未來10年互聯應用的一個底層技術,會應用于各行各業的各種項目。比如:商品溯源,既然區塊鏈會易用到各種系統,QA同學當然有必要了解下區塊鏈該怎么測了。
1.1區塊鏈的出現和特點
?
區塊鏈的特性:
- 去中心化:區塊鏈技術不依賴額外的第三方管理機構或硬件設施,沒有中心管制,除了自成一體的區塊鏈本身,通過分布式核算和存儲,各個節點實現了信息自我驗證、傳遞和管理。去中心化是區塊鏈最突出最本質的特征。
- 可以追溯
- 集體維護
- 不可篡改:只要不能掌控全部數據節點的51%,就無法肆意操控修改網絡數據,這使區塊鏈本身變得相對安全,避免了主觀人為的數據變更。
- 公開透明:區塊鏈技術基礎是開源的,除了交易各方的私有信息被加密外,區塊鏈的數據對所有人開放,任何人都可以通過公開的接口查詢區塊鏈數據和開發相關應用,因此整個系統信息高度透明。
1.?2.定義
區塊鏈是一個分布式的共享賬本和數據庫,具有去中心化、不可篡改、全程留痕、可以追溯、集體維護、公開透明等特點。這些特點保證了區塊鏈的“誠實”與“透明”,為區塊鏈創造信任奠定基礎。
區塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。它本質上是一個去中心化的數據庫,同時作為比特幣的底層技術,是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一批次交易的信息,用于驗證其信息的有效性(防偽)和生成下一個區塊。
區塊鏈平臺一般是由分布在不同區域、不同機器上的節點組成,節點間通過網絡構成一個分布式系統,區塊鏈實質上就是一個分布式系統軟件。
1.3.類型
目前業界主要有公有鏈、聯盟鏈以及私有鏈三種模式:
- 公有區塊鏈(Public Block Chains)是指:世界上任何個體或者團體都可以發送交易,且交易能夠獲得該區塊鏈的有效確認,任何人都可以參與其共識過程。
- (聯盟)行業區塊鏈(Consortium Block Chains):由某個群體內部指定多個預選的節點為記賬人,每個塊的生成由所有的預選節點共同決定(預選節點參與共識過程),其他接入節點可以參與交易,但不過問記賬過程(本質上還是托管記賬,只是變成分布式記賬,預選節點的多少,如何決定每個塊的記賬者成為該區塊鏈的主要風險點),其他任何人可以通過該區塊鏈開放的API進行限定查詢。
- 私有區塊鏈(Private Block Chains):僅僅使用區塊鏈的總賬技術進行記賬,可以是一個公司,也可以是個人,獨享該區塊鏈的寫入權限,本鏈與其他的分布式存儲方案沒有太大區別。
1.4.架構模型
一般說來,區塊鏈系統由數據層、網絡層、共識層、激勵層、合約層和應用層組成。
該模型中,基于時間戳的鏈式區塊結構、分布式節點的共識機制、基于共識算力的經濟激勵和靈活可編程的智能合約是區塊鏈技術最具代表性的創新點
- 數據層封裝了底層數據區塊以及相關的數據加密和時間戳等基礎數據和基本算法;
- 網絡層則包括分布式組網機制、數據傳播機制和數據驗證機制等;
- 共識層主要封裝網絡節點的各類共識算法;
- 激勵層將經濟因素集成到區塊鏈技術體系中來,主要包括經濟激勵的發行機制和分配機制等;
- 合約層主要封裝各類腳本、算法和智能合約,是區塊鏈可編程特性的基礎;
- 應用層則封裝了區塊鏈的各種應用場景和案例。
-
1.5.核心技術
-
分布式賬本
分布式賬本指的是交易記賬由分布在不同地方的多個節點共同完成,而且每一個節點記錄的是完整的賬目,因此它們都可以參與監督交易合法性,同時也可以共同為其作證。
跟傳統的分布式存儲有所不同,區塊鏈的分布式存儲的獨特性主要體現在兩個方面:
-
非對稱加密
存儲在區塊鏈上的交易信息是公開的,但是賬戶身份信息是高度加密的,只有在數據擁有者授權的情況下才能訪問到,從而保證了數據的安全和個人的隱私。
-
共識機制
共識機制就是所有記賬節點之間怎么達成共識,去認定一個記錄的有效性,這既是認定的手段,也是防止篡改的手段。區塊鏈提出了四種不同的共識機制,適用于不同的應用場景,在效率和安全性之間取得平衡。
區塊鏈的共識機制具備“少數服從多數”以及“人人平等”的特點:
- 其中“少數服從多數”并不完全指節點個數,也可以是計算能力、股權數或者其他的計算機可以比較的特征量。
- “人人平等”是當節點滿足條件時,所有節點都有權優先提出共識結果、直接被其他節點認同后并最后有可能成為最終共識結果。以比特幣為例,采用的是工作量證明,只有在控制了全網超過51%的記賬節點的情況下,才有可能偽造出一條不存在的記錄。當加入區塊鏈的節點足夠多的時候,這基本上不可能,從而杜絕了造假的可能。
-
智能合約
智能合約是基于這些可信的不可篡改的數據,可以自動化的執行一些預先定義好的規則和條款。以保險為例,如果說每個人的信息(包括醫療信息和風險發生的信息)都是真實可信的,那就很容易的在一些標準化的保險產品中,去進行自動化的理賠。在保險公司的日常業務中,雖然交易不像銀行和證券行業那樣頻繁,但是對可信數據的依賴是有增無減。因此,個人認為利用區塊鏈技術,從數據管理的角度切入,能夠有效地幫助保險公司提高風險管理能力。具體來講主要分投保人風險管理和保險公司的風險監督。
2.名詞解釋
2.1節點
節點就是一個區域的服務器。在互聯網區域,一個企業所有運行的數據都在一個服務器里,那么這個服務器就是節點。
節點特點
- 具有一定的存儲空間,存儲空間指的就是電子存儲空間,包括日常的TF卡、U盤、移動硬盤和計算機等。
- 需要有存儲空間的設備通過網線連接網絡,也就是我們常說的聯網。
- 可視化操作終端,目前主流的可視化操作終端有手機、iPad、電腦。第四也是最重要的一點,那就是參與區塊鏈,要在連接網絡的存儲空間運行區塊鏈相應程序,通過可視化操作終端進行交易。
節點功能
每個比特幣節點都是路由、區塊鏈數據庫、挖礦、錢包服務的功能集合。每個節點都參與全網絡的路由功能,同時也可能包含其他功能。每個節點都參與驗證并傳播交易及區塊信息,發現并維持與對等節點的連接。
- 第一個功能是錢包,這里的錢包指的是錢包軟件,而非地址加私鑰本身。錢包的功能包含收集錢包中的地址相關的 UTXO ,以便統計出地址余額,構建交易,發送交易等等轉賬相關的功能。
- 第二個功能是挖礦。挖礦節點會去收集交易,制作區塊頭,然后參與 POW 算力比拼,找到隨機數,生成區塊并獲得出塊獎勵和手續費。
- 第三個功能是保存完整區塊鏈。區塊鏈數據龐大,所以并不是所有比特幣節點都會下載完整的最新的區塊鏈。
- 第四個功能是路由。所有類型的節點都會有這個功能。所有的節點有義務幫助其他節點去驗證和擴散交易,去查找其他節點,去維持整個網絡的連接。
節點角色
網絡中的每個節點都被認為是相等的,但是,某些節點在支持網絡的方式上扮演著不同的角色。
- 全節點:一些節點保有一份完整的、最新的區塊鏈拷貝,這樣的節點被稱為“全節點”。全節點能夠獨立自主地校驗所有交易,而不需借由任何外部參照。全節點就是擁有全網所有的交易數據的節點。
- 輕節點:一些節點只保留了區塊鏈的一部分,它們通過一種名為“簡易支付驗證(SPV)”的方 式來完成交易驗證。這樣的節點被稱為“SPV 節點”,又叫“輕量級節點”。輕節點就是只擁有和自己相關的交易數據節點。
- 礦工:這些節點除了挖掘比特幣,從而幫助創建新的區塊外,還會發布和傳播交易。礦工接收到用戶廣播的賬單后,要對賬單的合法性和真實性進行驗證。
2.2區塊
在區塊鏈技術中,有價值的信息以數據的形式被永久存儲下來,這些用于存儲數據信息的載體就稱為區塊。如果把區塊鏈比作一本總賬本,那么區塊就是這本總賬上的一頁。
2.2.1block結構說明
block的header
區塊的頭部包含內容說明如下:
- ParentHash:指向父區塊(parentBlock)的指針。除了創世塊(Genesis Block)外,每個區塊有且只有一個父區塊。
- Coinbase:挖掘出這個區塊的作者地址。在每次執行交易時系統會給與一定補償的Ether,這筆金額就是發給這個地址的。
- UncleHash:指向叔區塊的指針
- Root:狀態數根節點的哈希值。狀態數用來記錄賬號信息, 合約賬戶和用戶賬戶等信息。
- TxHash: 交易樹根節點的哈希值。
- ReceiptHash:收據樹根節點的哈希值。收據樹記錄交易執行過程中的一些數據。
- Bloom:Bloom過濾器(Filter),用來快速判斷一個參數Log對象是否存在于一組已知的Log集合中。
- Difficulty:區塊的難度。Block的Difficulty由共識算法基于parentBlock的Time和Difficulty計算得出,它會應用在區塊的‘挖掘’階段。
- Number:區塊的序號。Block的Number等于其父區塊Number +1。
- Time:區塊“應該”被創建的時間。由共識算法確定,一般來說,要么等于parentBlock.Time + 10s,要么等于當前系統時間。
- GasLimit:區塊內所有Gas消耗的理論上限。該數值在區塊創建時設置,與父區塊有關。具體來說,根據父區塊的GasUsed同GasLimit * 2/3的大小關系來計算得出。
- GasUsed:區塊內所有Transaction執行時所實際消耗的Gas總和。
- Nonce:一個64bit的哈希數,它被應用在區塊的"挖掘"階段,并且在使用中會被修改
block的body
Body主要記錄交易事物的主體。
block的定義
區塊鏈blockChina的結構
2.2.2叔區塊
因為特殊區塊的父區塊(上一區塊)和本區塊(包含它們的區塊)的爺爺區塊(上上個區塊)相同,也就是說,這些特殊區塊是本區塊的叔叔,所以叫“叔區塊”。
因為POW機制的“最長區塊鏈”原則,只有最長的那條鏈才是有效的,這就導致可能某些節點跟在A區塊后面創建了很多區塊,但后面發現B鏈條更長,這就很悲催了,這些最終不在B鏈條的區塊,稱之為“孤區塊”。
區塊里包含叔區塊,意味著叔區塊的工作量也納入了整個系統,也為安全做出了貢獻。既然做了貢獻,那肯定要給予獎勵。以太坊這個獎勵機制也設置得很好,使得大家皆大歡喜。
叔區塊獎勵 = ( 叔區塊高度 + 8 - 本區塊的高度 ) * 固定區塊獎勵 / 8
2.2.3區塊與節點的關系
- 一個全節點包括完整的區塊鏈,所以也就有很多區塊;
- 輕節點和礦工的區塊鏈是不全的,所以區塊會少一些,但是也會是一個節點上有一個區塊鏈(僅區塊不如全節點多而已);
區塊組合成鏈存儲于節點中,也就是說 可能一個區塊鏈的交易數據分成多個區塊存儲在一節點上,同時同樣的區塊鏈可能存在多個節點中。
2.2.4區塊基礎信息
- 高度
區塊高度是區塊鏈接在主鏈的個數,也就是連接在區塊鏈上的塊數。
區塊的高度,指的是區塊的編號,換句話說,就是一個區塊與創世區塊之間的塊數。創世區塊,顧名思義,就是一條區塊鏈上的第一個區塊,要注意的是,創世區塊的區塊高度是0,而不是1。我們查詢某個區塊信息的時候,除了通過它的哈希,還可以通過它的區塊高度進行查詢。
- 區塊高度的作用
區塊高度是區塊的標示符,區塊有兩個標示符,一是區塊頭的哈希值,二是區塊高度。區塊頭的哈希值是通過SHA256算法對區塊頭進行二次哈希計算而得到的數字。區塊哈希值可以唯一、明確地“標識”一個區塊,并且任何節點通過簡單地對區塊頭進行哈希計算都可以獨立地獲取該區塊哈希值。區塊高度是指該區塊在區塊鏈中的位置。區塊高度并不是唯一的“標識”符。雖然一個單一的區塊總是會有一個明確的、固定的區塊高度,但反過來卻并不成立,一個區塊高度并不總是識別一個單一的區塊。兩個或兩個以上的區塊可能有相同的區塊高度,在區塊鏈里爭奪同一位置。
- Token
Token是一種數字化的價值載體,是權益證明,
區塊鏈的token具備三要素:1.數字權益證明;2.加密;3.可流通
其他
- 交易次數:整個交易的交易次數
- 時間戳:顯示這個區塊產生的具體時間,區塊鏈通過時間戳保證每個區塊依次順序相連。時間戳在區塊鏈中扮演公證人的角色,因為區塊鏈上記錄的信息無法被任何人以任何方式修改。
- 重量:區塊大小”這種概念已經被“區塊重量”取代,如:4MB的區塊
- 難度:區塊的難度。Block的Difficulty由共識算法基于parentBlock的Time和Difficulty計算得出,它會應用在區塊的‘挖掘’階段。
- 塊收益:即區塊獎勵和所有交易費用的總和。
- 區塊獎勵:區塊獎勵(Block Reward)是礦工通過算力解決相關數學難題并創建新區塊后所獲得的獎勵,區塊獎勵根據不同加密貨幣而有所不同。
- 播報方:相當于礦工,表示這個區塊是由這個“礦工”獲得。
2.3打包交易
礦工會包含盡量多的交易,按照交易給予的fee/kb來排序;
交易數量是有上限的,每個block不能超過1MB;
每個塊的第一個交易為coinbase交易,沒有input,output地址是礦工的地址
數量是區塊獎勵和所有交易費用的總和;
用每個交易的TXhash生成merkletree,并生成merkle root hash 放在header中。
2.4錢包
區塊鏈是基于密碼學代碼學組成的自動運行記賬系統,每個人都可以在系統上面創建自己的賬戶。一組賬戶里面就包括:私鑰,助記詞,公鑰,錢包地址。
私鑰是你加了”鎖”的錢包,而助記詞和明文私鑰是完全暴露在外的錢包,沒有任何安全性可言,所以在使用助記詞和明文私鑰時,一定要注意保密。
錢包(Block Chain Wallet):是密鑰的管理工具,它只包含密鑰而不是確切的某一個代幣;錢包中包含成對的私鑰和公鑰,用戶用私鑰來簽名交易,從而證明該用戶擁有交易的輸出權;而輸出的交易信息則存儲在區塊鏈中。
錢包又可以分為冷錢包還有熱錢包,兩者的區別就在于它們之間的私鑰存儲方式并不同
- on-chain(熱錢包):給一個錢包地址發送數字貨幣,這筆交易在全網廣播、被確認、被打包進區塊。這是發生在鏈上的,被稱為on-chain交易;on-chain錢包需要自己保管私鑰。
- off-chain(冷錢包):相對于on-chain交易是off-chain交易。通常,通過交易所進行的交易是off-chain的,本人并沒有私鑰。私鑰在交易所,由交易所托管。所以,交易所的錢包也是中心化的錢包。
2.5節點管理
作為區塊鏈運轉的載體,所有的事情幾乎都要節點參與,網絡通信、邏輯運算、交易、數據驗證等,而區塊鏈一般是由多個節點組成協同工作,因此節點屬性及對節點的管理至關重要。根據節點的分工不同,可分為記賬節點和觀察節點,記賬節點負責打包共識,觀察節點同步最高塊數據,不同節點類型可進行切換。
2.6連接
區塊鏈的顯著特點它是一個分布式系統,因此連接尤為重要,節點間任一網絡抖動都可能影響到區塊鏈的正常工作。只有連接正常,才能保證后續的交易、共識、同步等功能特性正常展開。
? 在區塊鏈系統中,涉及到連接的地方主要有節點間p2p連接、節點與客戶端的連接,以及鏈下機構間通過鏈上節點進行通信。
2.7共識機制
2.7.1概念
共識可簡單理解為,不同群體所尋求的共同的認識、價值、想法等,在某一方面達成的一致意見。共識機制就是確定達成某種共識和維護共識的方式。
在區塊鏈世界中,由于其去中心化的區塊鏈設計,節點是各處分散且平行的,所以必須設計一套制度,來維護系統的運作順序與公平性,統一區塊鏈的版本,并獎勵提供資源維護區塊鏈的使用者,以及懲罰惡意的危害者。這樣的制度,必須依賴某種方式來證明,是由誰取得了一個區塊鏈的打包權(或稱記帳權),并且可以獲取打包這一個區塊的獎勵;又或者是誰意圖進行危害,就會獲得一定的懲罰,這就是共識機制。
共識過程一般包括打包、執行、簽名、驗證、落盤等主要階段,任一階段出現問題都會導致流程無法進行,對應節點無法參與共識,甚至整個鏈無法工作。
? 一個底層平臺選擇哪種共識算法,主要與該平臺使用的場景以及想解決的問題有關。它能支持的共識機制類型,以及在不同的場景,共識算法是否可插拔,提供便利的算法配置方式。
2.7.2性質
區塊鏈作為一種按時間順序存儲數據的數據結構,可支持不同的共識機制。共識機制是區塊鏈技術的重要組件。區塊鏈共識機制的目標是使所有的誠實節點保存一致的區塊鏈視圖,同時滿足兩個性質:
1)一致性。所有誠實節點保存的區塊鏈的前綴部分完全相同。
2)有效性。由某誠實節點發布的信息終將被其他所有誠實節點記錄在自己的區塊鏈中。
2.7.3分類
根據共識算法解決問題的方式,我們可以大致將其分為兩類:
代表算法有POW, PoET, 這類算法達到共識只需要等待得到能被驗證的結果即可。同時這類算法也有分叉的問題,也就是說如果多個節點同時驗證成功,會導致網絡需要花時間來解決分叉,也就導致了用戶需要等待確認,交易時間過長等問題。
? ?2. 投票型共識算法
代表算法有PBFT, dPOS, Paxos等,這類算法的好處在于交易能被快速確認,但大多數算法因為需要網絡中節點互相交換信息,會導致速度不夠,擴展性不強等問題。
共識算法
現今區塊鏈的共識機制可分為四大類:工作量證明機制、權益證明機制、股份授權證明機制和Pool驗證池
- 工作量證明機制(PoW)
在基于工作量證明機制構建的區塊鏈網絡中,節點通過計算隨機哈希散列的數值解爭奪記賬權,求得正確的數值解以生成區塊的能力是節點算力的具體表現。工作量證明機制具有完全去中心化的優點,在以工作量證明機制為共識的區塊鏈中,節點可以自由進出。大家所熟知的比特幣網絡就應用工作量證明機制來生產新的貨幣。
代表應用:比特幣
優點:架構簡明扼要、有效可靠;公平,你投入越多的算力,你獲得打包權的幾率也等比增加。
缺點:造成了大量的資源浪費;達成共識所需要的周期也較長;很難獲得同樣規模的算力來維持自身的安全。
- 權益證明機制(PoS)
權益證明要求證明人提供一定數量加密貨幣的所有權即可。權益證明機制的運作方式是,當創造一個新區塊時,礦工需要創建一個“幣權”交易,交易會按照預先設定的比例把一些幣發送給礦工本身。權益證明機制根據每個節點擁有代幣的比例和時間,依據算法等比例地降低節點的挖礦難度,從而加快了尋找隨機數的速度。
優點:可以縮短達成共識所需的時間
缺點:但本質上仍然需要網絡中的節點進行挖礦運算,攻擊成本低。
- 股份授權證明機制(DPoS)
股份授權證明機制是一種新的保障網絡安全的共識機制,在這樣的區塊鏈中,全體節點投票選舉出一定數量的節點代表,由他們來代理全體節點確認區塊、維持系統有序運行。同時,區塊鏈中的全體節點具有隨時罷免和任命代表的權力。如果必要,全體節點可以通過投票讓現任節點代表失去代表資格,重新選舉新的代表,實現實時的民主。
優點:可以大大縮小參與驗證和記賬節點的數量,從而達到秒級的共識驗證
缺點:無法擺脫對于代幣的依賴
- PooI驗證池
傳統分布式一致性機制原理如下:
我們認為要想達到一致性,只要各節點的初始狀態一致、執行過程一致,那么最終一定能夠得到一致的答案。于是當某條新信息出現時,各節點初始狀態一致,每個節點執行一個“一致性算法”保證處理過程的一致,那么最終就能得到一致的驗證結果。
傳統方法其實是基于一個假設——分布式系統中沒有拜占庭節點,這樣看來危害十分明顯,只要攻擊者控制發現新消息的那個節點,或者發現新消息的節點本身就是惡意節點,就能控制整條驗證流程。
Pool驗證池基于傳統的分布式一致性技術建立,并輔之以數據驗證機制,是目前區塊鏈中廣泛使用的一種共識機制。即 網絡中的A節點發現新區塊,A首先對該區塊進行合法性驗證,當其通過驗證后,A節點將該區塊廣播至其余節點,并使用類似于傳統分布式一致性機制的方法,利用“一致性算法”使得各個節點之間的操作保證一致性,就能得到一致結果。
Pool驗證池不需要依賴代幣就可以工作,在成熟的分布式一致性算法(Pasox、Raft)基礎之上,可以實現秒級共識驗證,更適合有多方參與的多中心商業模式。不過,Pool驗證池也存在一些不足,例如該共識機制能夠實現的分布式程度不如PoW機制等。
優點:不需要依賴代幣就可以工作;可以實現秒級共識驗證;更適合有多方參與的多中心商業模式
缺點:能夠實現的分布式程度不如PoW機制
- 實用拜占庭 PBFT
PBFT是一種狀態機副本復制算法,即服務作為狀態機進行建模,狀態機在分布式系統的不同節點進行副本復制。每個狀態機的副本都保存了服務的狀態,同時也實現了服務的操作。
2.8智能合約
智能合約是一種自動執行協議,買方和賣方之間的條約被寫入分布式區塊鏈網絡的代碼行中(即區塊的body不存儲交易信息存儲代碼)。一旦某個事件觸發合約中的條款,代碼即自動執行。 因此,智能合約能在無中心授權的情況下允許匿名用戶進行交易和協議。
作為區塊鏈2.0的標簽,智能合約猶如靈魂,通過代碼的運行展示了區塊鏈這種新型技術的獨特魅力。如何最大程度發揮合約特性,關鍵還看區塊鏈平臺提供了哪些合約管理能力。
? 合約的本質是由語言寫出來的一些代碼,通過區塊鏈平臺提供的執行環境,運行其中的代碼邏輯,達到預期目標。平臺支持的合約語言越豐富,用戶實現功能選擇的余地就越多,對項目盡早落地能有更好的保障。通用的solidity合約以其語法簡單、操作便利等優勢而廣泛使用,而對于有高性能要求的應用,預編譯合約將會是更好的選擇。以及逐漸開始流行的rust、go等語言在合約中使用,讓項目的合約開發選擇有了多樣性,滿足了不同開發者要求。
2.9同步
區塊鏈系統同步主要包括交易同步、區塊同步和狀態同步,只有每個場景下的同步始終保持正常,區塊鏈才能正常工作。
連接正常時,客戶端發送到節點的交易,應當能同步到網絡中其他節點。不同的區塊鏈平臺,根據節點的類型,組網模式,會采用不同的同步邏輯。
2.10存儲
區塊鏈從狹隘角度看,是一個數據庫,可用于存儲數據,類比常見的業務存儲模式,需要從數據組織模式和數據存儲介質,以及容災等幾大塊展開測試驗證。區塊鏈存儲也類似,各種區塊的數據在存儲前需要進行相應的組織管理再存到介質中,但是區塊鏈數據在落盤存儲前要經歷較漫長復雜的共識過程,也就是最終的數據都是共識確認過的。
2.11接口
區塊鏈也有許多RPC接口供外部調用,根據實際需要調用合約,去鏈上讀或者寫數據,或者直接http協議調用RPC接口。
2.12數據治理
數據治理,即數據有了,怎么去治理和利用它。鏈上有大量的數據,怎樣管理這些數據以供使用,特別是在業務量大的應用中,面對海量的鏈上數據,如何做適當的處理,讓歷史數據歸檔甚至是刪除,而又不影響業務的正常運行。
?想要最優化管理和利用鏈上數據,主要還是看區塊鏈平臺自身屬性和相關組件能提供什么工具。鏈上主要有區塊數據、交易數據以及狀態數據,常見的治理方式有數據導出、數據導入、數據裁剪等,不同的需求對應不同數據治理方式。
- 數據導出
? 對于上層應用來說,區塊鏈上的數據不易查看和使用,可以通過數據導出工具將數據遷移到mysql或者oracle中,后續做成可視化報表或者進行業務對賬,就可以利用數據庫中的數據完成相關設計。
- 數據裁剪
? 隨著區塊鏈長時間運行,業務產生的數據越來越多,對存儲和性能都是很大的考驗,但另一方面鏈上有大量使用率低的冷數據,嚴重影響查詢性能,這時就可以考慮對數據進行裁剪。舉個例子,區塊鏈塊高到達三萬時,可以將前兩萬塊數據進行裁剪,鏈上只保留最新一萬塊的數據,同時,被裁剪的數據保存在其他地方能繼續被使用。裁剪不僅是工具處理數據的過程,還要保證被裁剪的數據可用性。
- 數據導入
? 在區塊鏈系統中,當有新節點加入組網時,為了和其他節點保持同樣狀態,需要從其他節點同步數據,直到塊高相同。這種同步方式需要考慮兩方面的影響,一是在塊高很大時,同步完所有數據需要耗費很長時間,另一方面節點從其他節點同步數據過程,也會影響系統性能。通過已導出的全量鏈上數據,來快速完成這部分同步工作,使新節點快速達到鏈上最新狀態。用這種數據導入的方式能快速完成同步過程,而不對原組網產生影響。除了新入網節點,在遇到突發情況導致組網中節點數據丟失時,采用數據導入讓節點快速同步數據。
2.13?區塊鏈瀏覽器
區塊鏈瀏覽器,是指提供用戶瀏覽與查詢區塊鏈所有信息的工具。
2.14?OpenOcean聚合平臺
OpenOcean平臺是一個聚合了中心化和去中心化交易的綜合性平臺,將在 DeFi 和 CeFi 上進一步聚合衍生品、收益生成、借貸、保險產品,并在未來推出我們自己的組合保證金產品和智能理財產品。
3.其他
其他相關知識可參考該文章《關于區塊鏈100個基礎問題答疑》
https://www.jianshu.com/p/96d3cf8a0cc7
參考文獻:
區塊鏈如何測試?
區塊鏈如何測試?_zhusongziye的博客-CSDN博客_區塊鏈測試
區塊鏈怎么測試
區塊鏈怎么測試 - 太八神 - 博客園
區塊鏈-百度百科
區塊鏈(數據結構)_百度百科
以太坊區塊鏈的區塊(Block)結構
以太坊區塊鏈的區塊(Block)結構_luoye4321的專欄-CSDN博客_以太坊區塊結構
非對稱科技
比特幣,區塊鏈,節點的概念? - 知乎
總結
以上是生活随笔為你收集整理的区块链测试(一):测试人员初学区块链的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java使用ffmpeg和mencode
- 下一篇: 软考中级–软件设计师考试大纲