區塊鏈隨機數演算法
① 區塊鏈的三大核心技術是什麼
區塊鏈運作的7個核心技術介紹 2018-01-15
1.區塊鏈的鏈接
顧名思義,區塊鏈即由一個個區塊組成的鏈。每個區塊分為區塊頭和區塊體(含交易數據)兩個部分。區塊頭包括用來實現區塊鏈接的前一區塊的哈希(PrevHash)值(又稱散列值)和用於計算挖礦難度的隨機數(nonce)。前一區塊的哈希值實際是上一個區塊頭部的哈希值,而計算隨機數規則決定了哪個礦工可以獲得記錄區塊的權力。
2.共識機制
區塊鏈是伴隨比特幣誕生的,是比特幣的基礎技術架構。可以將區塊鏈理解為一個基於互聯網的去中心化記賬系統。類似比特幣這樣的去中心化數字貨幣系統,要求在沒有中心節點的情況下保證各個誠實節點記賬的一致性,就需要區塊鏈來完成。所以區塊鏈技術的核心是在沒有中心控制的情況下,在互相沒有信任基礎的個體之間就交易的合法性等達成共識的共識機制。
區塊鏈的共識機制目前主要有4類:PoW、PoS、DPoS、分布式一致性演算法。
3.解鎖腳本
腳本是區塊鏈上實現自動驗證、自動執行合約的重要技術。每一筆交易的每一項輸出嚴格意義上並不是指向一個地址,而是指向一個腳本。腳本類似一套規則,它約束著接收方怎樣才能花掉這個輸出上鎖定的資產。
交易的合法性驗證也依賴於腳本。目前它依賴於兩類腳本:鎖定腳本與解鎖腳本。鎖定腳本是在輸出交易上加上的條件,通過一段腳本語言來實現,位於交易的輸出。解鎖腳本與鎖定腳本相對應,只有滿足鎖定腳本要求的條件,才能花掉這個腳本上對應的資產,位於交易的輸入。通過腳本語言可以表達很多靈活的條件。解釋腳本是通過類似我們編程領域里的「虛擬機」,它分布式運行在區塊鏈網路里的每一個節點。
4.交易規則
區塊鏈交易就是構成區塊的基本單位,也是區塊鏈負責記錄的實際有效內容。一個區塊鏈交易可以是一次轉賬,也可以是智能合約的部署等其他事務。
就比特幣而言,交易即指一次支付轉賬。其交易規則如下:
1)交易的輸入和輸出不能為空。
2)對交易的每個輸入,如果其對應的UTXO輸出能在當前交易池中找到,則拒絕該交易。因為當前交易池是未被記錄在區塊鏈中的交易,而交易的每個輸入,應該來自確認的UTXO。如果在當前交易池中找到,那就是雙花交易。
3)交易中的每個輸入,其對應的輸出必須是UTXO。
4)每個輸入的解鎖腳本(unlocking )必須和相應輸出的鎖定腳本(locking )共同驗證交易的合規性。
5.交易優先順序
區塊鏈交易的優先順序由區塊鏈協議規則決定。對於比特幣而言,交易被區塊包含的優先次序由交易廣播到網路上的時間和交易額的大小決定。隨著交易廣播到網路上的時間的增長,交易的鏈齡增加,交易的優先順序就被提高,最終會被區塊包含。對於以太坊而言,交易的優先順序還與交易的發布者願意支付的交易費用有關,發布者願意支付的交易費用越高,交易被包含進區塊的優先順序就越高。
6.Merkle證明
Merkle證明的原始應用是比特幣系統(Bitcoin),它是由中本聰(Satoshi Nakamoto)在2009年描述並且創造的。比特幣區塊鏈使用了Merkle證明,為的是將交易存儲在每一個區塊中。使得交易不能被篡改,同時也容易驗證交易是否包含在一個特定區塊中。
7.RLP
RLP(Recursive Length Prefix,遞歸長度前綴編碼)是Ethereum中對象序列化的一個主要編碼方式,其目的是對任意嵌套的二進制數據的序列進行編碼。
② Blockchain區塊鏈的定義是什麼
是一個公開的包括所有已經被發送的交易的列表,它保證了每個人都知道每個比特幣的真實所有者(地址)。所有網路上的全功能節點都會保留一份區塊鏈的拷貝。
Block區塊是區塊鏈上的獨立單位。每一個區塊都包含了前一個區塊的哈希值(所以某人不可能剔除或者修改區塊鏈上的任何區塊,而同時不使得區塊鏈上的某些哈希值不匹配),還有盡可能多的在網路上可以找到的還沒有被確認的交易,以及一個叫做nonce隨機數的數字。正在創建一個區塊的某人,必須找到一個合適的nonce隨機數,以使得這個區塊的哈希值低於某個閾值(thetarget目標值),這只能通過一個接著一個的嘗試完所有的隨機數,直到一個產生了想要的哈希值的隨機數被找到,這個目標值越低就越難找到合適的隨機數。故意使得區塊的創建如此之難,是為了防止某人花掉了比特幣,然後創建並推進他自己的不包含剛才那筆顯示比特幣已經被花費了的交易的區塊鏈,一次擦除剛才的交易記錄並允許他把剛才那筆比特幣花兩次。當一個有效的區塊被創建,它會被分發到整個網路,然後基於這個區塊開始尋找下一個區塊。
③ 為什麼區塊鏈私鑰 中的字母只有a-f之間
私鑰:實際上是一組隨機數,關於區塊鏈中的隨機數我們已經介紹過了
公鑰:對私鑰進行橢圓曲線加密演算法生成,但是無法通過公鑰倒推得到私鑰。公鑰的作用是在和對方交易時,使用自己的私鑰加密信息,然後對方使用自己的公鑰解密獲得原始信息,這個過程俗稱簽名。
地址:由於公鑰太長,在交易中不方便使用,就對公鑰哈希進行SHA256、RIPEMD160、Base58演算法加密生成地址
首先使用隨機數發生器生成一個『私鑰』。後續的公鑰、地址都會由私鑰生成,所以一句話概括私鑰的重要性:"誰掌握了私鑰, 誰就掌握了該錢包的使用權!"
『私鑰』經過橢圓曲線演算法(SECP256K1)演算法加密生成了'公鑰'。這是一種非對稱單向加密演算法,知道私鑰可以算出公鑰,但知道公鑰卻無法反向算出私鑰
『公鑰』經過單向Hash演算法(SHA256、RIPEMD160)生成『公鑰Hash』
將一個位元組的地址版本號連接到『公鑰哈希』頭部(對於比特幣網路的pubkey地址,這一位元組為「0」),然後對其進行兩次SHA256運算,將結果的前4位元組作為『公鑰哈希』的校驗值,連接在其尾部。
將上一步結果使用BASE58進行編碼(比特幣定製版本),就得到了『錢包地址』。
④ 區塊鏈技術中的區塊頭包含的三組元數據是什麼
1、前區塊哈希值。用於索引前區塊
2、挖礦難度、隨機值(用於工作量證明計算)、時間戳
3、梅克爾樹,能夠總結並迅速歸納校驗區塊中全部交易數據的樹根數據。
⑤ 區塊鏈目前用到哪些共識機制它們各自的優缺點和適用范圍是什麼
目前主要有四大類共識機制:Pow、Pos、DPos、Pool
1、Pow工作量證明,就是大家熟悉的挖礦,通過與或運算,計算出一個滿足規則的隨機數,即獲得本次記賬權,發出本輪需要記錄的數據,全網其它節點驗證後一起存儲;
優點:完全去中心化,節點自由進出;
缺點:目前bitcoin已經吸引全球大部分的算力,其它再用Pow共識機制的區塊鏈應用很難獲得相同的算力來保障自身的安全;挖礦造成大量的資源浪費;共識達成的周期較長,不適合商業應用
2、Pos權益證明,Pow的一種升級共識機制;根據每個節點所佔代幣的比例和時間;等比例的降低挖礦難度,從而加快找隨機數的速度。
優點:在一定程度上縮短了共識達成的時間
缺點:還是需要挖礦,本質上沒有解決商業應用的痛點
3、DPos股份授權證明機制,類似於董事會投票,持幣者投出一定數量的節點,代理他們進行驗證和記賬。
優點:大幅縮小參與驗證和記賬節點的數量,可以達到秒級的共識驗證
缺點:整個共識機制還是依賴於代幣,很多商業應用是不需要代幣存在的
4、Pool驗證池,基於傳統的分布式一致性技術,加上數據驗證機制;是目前行業鏈大范圍在使用的共識機制
優點:不需要代幣也可以工作,在成熟的分布式一致性演算法(Pasox、Raft)基礎上,實現秒級共識驗證;
缺點:去中心化程度不如bictoin;更適合多方參與的多中心商業模式
在使用共識機制,保證數據一致性時的巨大優勢(共識機制則是Ripple首先提出的,數據正確性優先的網路交易同步機制,在共識網路中,無論軟體代碼怎麼變動,無法取得共識就無法進入網路,更不要提分叉了)。
——————————————————
PS:稍微自黑下,雖然共識機制絕對能確保任何時候都不會產生硬分叉。但是,這種機制的缺點也比較明顯,那就是要取得與其他節點的共識,明顯要比當前Bitcoin網路漫長的多。極端情況下,在Ripple共識機制網路中掉線的後果也是很恐怖的。
有可能你家停電一天,第二天整個系統就再也無法與其它Rippled節點取得共識了(共識機制事實上需要超過80%的節點承認了你的數據,你的提交才會被其它節點接受,否則就會被排它的拒絕連接),甚至只能清空自己全部500多GB數據重新同步才能連上其它Ripple節點。
所以目前來說,現有的Rippled端並不適合民用(商用的話影響就比較小,比如RL自己的Rippled節點託管在亞馬遜雲數據中心,長時間無響應是可以高額索賠的,而且那種地方除了大型災害幾乎不會斷),這也是RL一直想改進的方面之一。
⑥ 區塊鏈中點對點分布式技術是指什麼
「一種基於網路的計算機處理技術,與集中式相對應。由於個人計算機的性能得到極大的提高及其使用的普及,使處理能力分布到網路上的所有計算機成為可能。分布式計算是和集中式計算相對立的概念,分布式計算的數據可以分布在很大區域。」
⑦ 區塊如何連接成區塊鏈
區塊鏈如何保證依次順序相連?
區塊鏈由一串使用密碼學演算法產生的區塊連接而成。每一個區塊上寫滿了交易記錄,區塊按順序相連形成鏈狀結構,也就是區塊鏈大賬本。
以比特幣為例,礦工在生成新區塊時,需要根據前一個區塊的哈希值、新交易區塊和隨機數,來計算新的哈希值和隨機數。也就是說每一個區塊都是在前一個區塊數據的基礎上生成的,該機制保證了區塊鏈數據的唯一性。
因為交易記錄細微的變化也會徹底改變哈希值的結果,所以礦工在進行算力競爭的時候無法作弊,每個礦工都必須等前一個區塊生成之後才能根據前一個區塊的數據開始計算符合條件的隨機數,保證了挖礦的公平性。