導航:首頁 > 源碼編譯 > 區塊鏈演算法實踐

區塊鏈演算法實踐

發布時間:2022-08-16 15:40:26

1. 區塊鏈技術的六大核心演算法

區塊鏈技術的六大核心演算法
區塊鏈核心演算法一:拜占庭協定
拜占庭的故事大概是這么說的:拜占庭帝國擁有巨大的財富,周圍10個鄰邦垂誕已久,但拜占庭高牆聳立,固若金湯,沒有一個單獨的鄰邦能夠成功入侵。任何單個鄰邦入侵的都會失敗,同時也有可能自身被其他9個鄰邦入侵。拜占庭帝國防禦能力如此之強,至少要有十個鄰邦中的一半以上同時進攻,才有可能攻破。然而,如果其中的一個或者幾個鄰邦本身答應好一起進攻,但實際過程出現背叛,那麼入侵者可能都會被殲滅。於是每一方都小心行事,不敢輕易相信鄰國。這就是拜占庭將軍問題。
在這個分布式網路里:每個將軍都有一份實時與其他將軍同步的消息賬本。賬本里有每個將軍的簽名都是可以驗證身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些將軍。盡管有消息不一致的,只要超過半數同意進攻,少數服從多數,共識達成。
由此,在一個分布式的系統中,盡管有壞人,壞人可以做任意事情(不受protocol限制),比如不響應、發送錯誤信息、對不同節點發送不同決定、不同錯誤節點聯合起來干壞事等等。但是,只要大多數人是好人,就完全有可能去中心化地實現共識
區塊鏈核心演算法二:非對稱加密技術
在上述拜占庭協定中,如果10個將軍中的幾個同時發起消息,勢必會造成系統的混亂,造成各說各的攻擊時間方案,行動難以一致。誰都可以發起進攻的信息,但由誰來發出呢?其實這只要加入一個成本就可以了,即:一段時間內只有一個節點可以傳播信息。當某個節點發出統一進攻的消息後,各個節點收到發起者的消息必須簽名蓋章,確認各自的身份。
在如今看來,非對稱加密技術完全可以解決這個簽名問題。非對稱加密演算法的加密和解密使用不同的兩個密鑰.這兩個密鑰就是我們經常聽到的」公鑰」和」私鑰」。公鑰和私鑰一般成對出現, 如果消息使用公鑰加密,那麼需要該公鑰對應的私鑰才能解密; 同樣,如果消息使用私鑰加密,那麼需要該私鑰對應的公鑰才能解密。
區塊鏈核心演算法三:容錯問題
我們假設在此網路中,消息可能會丟失、損壞、延遲、重復發送,並且接受的順序與發送的順序不一致。此外,節點的行為可以是任意的:可以隨時加入、退出網路,可以丟棄消息、偽造消息、停止工作等,還可能發生各種人為或非人為的故障。我們的演算法對由共識節點組成的共識系統,提供的容錯能力,這種容錯能力同時包含安全性和可用性,並適用於任何網路環境。
區塊鏈核心演算法四:Paxos 演算法(一致性演算法)
Paxos演算法解決的問題是一個分布式系統如何就某個值(決議)達成一致。一個典型的場景是,在一個分布式資料庫系統中,如果各節點的初始狀態一致,每個節點都執行相同的操作序列,那麼他們最後能得到一個一致的狀態。為保證每個節點執行相同的命令序列,需要在每一條指令上執行一個「一致性演算法」以保證每個節點看到的指令一致。一個通用的一致性演算法可以應用在許多場景中,是分布式計算中的重要問題。節點通信存在兩種模型:共享內存和消息傳遞。Paxos演算法就是一種基於消息傳遞模型的一致性演算法。
區塊鏈核心演算法五:共識機制
區塊鏈共識演算法主要是工作量證明和權益證明。拿比特幣來說,其實從技術角度來看可以把PoW看做重復使用的Hashcash,生成工作量證明在概率上來說是一個隨機的過程。開采新的機密貨幣,生成區塊時,必須得到所有參與者的同意,那礦工必須得到區塊中所有數據的PoW工作證明。與此同時礦工還要時時觀察調整這項工作的難度,因為對網路要求是平均每10分鍾生成一個區塊。
區塊鏈核心演算法六:分布式存儲
分布式存儲是一種數據存儲技術,通過網路使用每台機器上的磁碟空間,並將這些分散的存儲資源構成一個虛擬的存儲設備,數據分散的存儲在網路中的各個角落。所以,分布式存儲技術並不是每台電腦都存放完整的數據,而是把數據切割後存放在不同的電腦里。就像存放100個雞蛋,不是放在同一個籃子里,而是分開放在不同的地方,加起來的總和是100個。

2. 區塊鏈技術的優勢

1、去中心化

由於使用分布式核算和存儲,不存在中心化的硬體或管理機構,任意節點的權利和義務都是均等的,系統中的數據塊由整個系統中具有維護功能的節點來共同維護。

2、開放性

系統是開放的,除了交易各方的私有信息被加密外,區塊鏈的數據對所有人公開,任何人都可以通過公開的介面查詢區塊鏈數據和開發相關應用,因此整個系統信息高度透明。

3、自治性

區塊鏈採用基於協商一致的規范和協議(比如一套公開透明的演算法)使得整個系統中的所有節點能夠在去信任的環境自由安全的交換數據,使得對「人」的信任改成了對機器的信任,任何人為的干預不起作用。

4、匿名性

由於節點之間的交換遵循固定的演算法,其數據交互是無需信任的(區塊鏈中的程序規則會自行判斷活動是否有效),因此交易對手無須通過公開身份的方式讓對方自己產生信任,對信用的累積非常有幫助。

突出優勢:

信息不可篡改

一旦信息經過驗證並添加至區塊鏈,就會永久的存儲起來,除非能夠同時控制住系統中超過51%的節點,否則單個節點上對資料庫的修改是無效的,因此區塊鏈的數據穩定性和可靠性極高。

(2)區塊鏈演算法實踐擴展閱讀:

區塊鏈起源於比特幣,標志著上輪金融危機起點的雷曼兄弟倒閉後兩周,2008年11月1日,一位自稱中本聰(Satoshi Nakamoto)的人發表了《比特幣:一種點對點的電子現金系統》一文,闡述了基於P2P網路技術、加密技術、時間戳技術、區塊鏈技術等的電子現金系統的構架理念,這標志著比特幣的誕生。

兩個月後理論步入實踐,2009年1月3日第一個序號為0的比特幣創世區塊誕生。幾天後2009年1月9日出現序號為1的區塊,並與序號為0的創世區塊相連接形成了鏈,標志著區塊鏈的誕生。

近年來,世界對比特幣的態度起起落落,但作為比特幣底層技術之一的區塊鏈技術日益受到重視。在比特幣形成過程中,區塊是一個一個的存儲單元,記錄了一定時間內各個區塊節點全部的交流信息。

各個區塊之間通過隨機散列(也稱哈希演算法)實現鏈接(chain,後一個區塊包含前一個區塊的哈希值,隨著信息交流的擴大,一個區塊與一個區塊相繼接續,形成的結果就叫區塊鏈[3]。

3. 區塊鏈技術的應用實例有哪些

區塊鏈是以比特幣為代表的數字加密貨幣體系的核心支撐技術。區塊鏈技術的核心優勢是去中心化,能夠通過運用數據加密、時間戳、分布式共識和經濟激勵等手段,在節點無需互相信任的分布式系統中實現基於去中心化信用的點對點交易、協調與協作,從而為解決中心化機構普遍存在的高成本、低效率和數據存儲不安全等問題提供了解決方案。
區塊鏈的應用領域有數字貨幣、通證、金融、防偽溯源、隱私保護、供應鏈、娛樂等等,區塊鏈、比特幣的火爆,不少相關的top域名都被注冊,對域名行業產生了比較大的影響。
以旅遊業為例,區塊鏈應用主要集中在旅遊出行、旅遊社區點評、數字身份管理、信用消費管理、追蹤飛行員的職業證書和資格、酒店和航空公司的忠誠度計劃、預訂管理、消費積分管理這幾個應用領域。另外區塊鏈在金融、游戲、娛樂等領域也有應用。

4. 區塊鏈密碼演算法是怎樣的

區塊鏈作為新興技術受到越來越廣泛的關注,是一種傳統技術在互聯網時代下的新的應用,這其中包括分布式數據存儲技術、共識機制和密碼學等。隨著各種區塊鏈研究聯盟的創建,相關研究得到了越來越多的資金和人員支持。區塊鏈使用的Hash演算法、零知識證明、環簽名等密碼演算法:

Hash演算法

哈希演算法作為區塊鏈基礎技術,Hash函數的本質是將任意長度(有限)的一組數據映射到一組已定義長度的數據流中。若此函數同時滿足:

(1)對任意輸入的一組數據Hash值的計算都特別簡單;

(2)想要找到2個不同的擁有相同Hash值的數據是計算困難的。

滿足上述兩條性質的Hash函數也被稱為加密Hash函數,不引起矛盾的情況下,Hash函數通常指的是加密Hash函數。對於Hash函數,找到使得被稱為一次碰撞。當前流行的Hash函數有MD5,SHA1,SHA2,SHA3。

比特幣使用的是SHA256,大多區塊鏈系統使用的都是SHA256演算法。所以這里先介紹一下SHA256。

1、 SHA256演算法步驟

STEP1:附加填充比特。對報文進行填充使報文長度與448模512同餘(長度=448mod512),填充的比特數范圍是1到512,填充比特串的最高位為1,其餘位為0。

STEP2:附加長度值。將用64-bit表示的初始報文(填充前)的位長度附加在步驟1的結果後(低位位元組優先)。

STEP3:初始化緩存。使用一個256-bit的緩存來存放該散列函數的中間及最終結果。

STEP4:處理512-bit(16個字)報文分組序列。該演算法使用了六種基本邏輯函數,由64 步迭代運算組成。每步都以256-bit緩存值為輸入,然後更新緩存內容。每步使用一個32-bit 常數值Kt和一個32-bit Wt。其中Wt是分組之後的報文,t=1,2,...,16 。

STEP5:所有的512-bit分組處理完畢後,對於SHA256演算法最後一個分組產生的輸出便是256-bit的報文。

2、環簽名

2001年,Rivest, shamir和Tauman三位密碼學家首次提出了環簽名。是一種簡化的群簽名,只有環成員沒有管理者,不需要環成員間的合作。環簽名方案中簽名者首先選定一個臨時的簽名者集合,集合中包括簽名者。然後簽名者利用自己的私鑰和簽名集合中其他人的公鑰就可以獨立的產生簽名,而無需他人的幫助。簽名者集合中的成員可能並不知道自己被包含在其中。

環簽名方案由以下幾部分構成:

(1)密鑰生成。為環中每個成員產生一個密鑰對(公鑰PKi,私鑰SKi)。

(2)簽名。簽名者用自己的私鑰和任意n個環成員(包括自己)的公鑰為消息m生成簽名a。

(3)簽名驗證。驗證者根據環簽名和消息m,驗證簽名是否為環中成員所簽,如果有效就接收,否則丟棄。

環簽名滿足的性質:

(1)無條件匿名性:攻擊者無法確定簽名是由環中哪個成員生成,即使在獲得環成員私鑰的情況下,概率也不超過1/n。

(2)正確性:簽名必需能被所有其他人驗證。

(3)不可偽造性:環中其他成員不能偽造真實簽名者簽名,外部攻擊者即使在獲得某個有效環簽名的基礎上,也不能為消息m偽造一個簽名。

3、環簽名和群簽名的比較

(1)匿名性。都是一種個體代表群體簽名的體制,驗證者能驗證簽名為群體中某個成員所簽,但並不能知道為哪個成員,以達到簽名者匿名的作用。

(2)可追蹤性。群簽名中,群管理員的存在保證了簽名的可追蹤性。群管理員可以撤銷簽名,揭露真正的簽名者。環簽名本身無法揭示簽名者,除非簽名者本身想暴露或者在簽名中添加額外的信息。提出了一個可驗證的環簽名方案,方案中真實簽名者希望驗證者知道自己的身份,此時真實簽名者可以通過透露自己掌握的秘密信息來證實自己的身份。

(3)管理系統。群簽名由群管理員管理,環簽名不需要管理,簽名者只有選擇一個可能的簽名者集合,獲得其公鑰,然後公布這個集合即可,所有成員平等。

鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。

5. 區塊鏈技術如何運用到實際場景中

區塊鏈分為公有鏈和私有鏈,但其實,用公有鏈和許可鏈的概念來區分更合適。

公共鏈所有人都可加入,為了吸引更多的人加入,其本身也有一定的激勵機制。這個激勵機制建立在區塊鏈的共識演算法之上,採用比特幣等做為記賬單位。為了讓激勵更有效,通常又採取錨定法幣等方式令記賬單位有價值。隨著時間的推移,就積累起了一定的公信力,在公有鏈上可以做存證、支付等業務。

許可鏈包括一般所說的私有鏈和聯盟鏈。

用「專有鏈」來表述指稱「私有鏈」更為恰當。專有鏈通常在一個大公司或大集團內部使用。在多對多的匯報體系及對賬體系之中,管理成本很高,採用區塊鏈技術,實現了信息共享和更有效的監督,就能大大降低成本、提高效率。

聯盟鏈往往是幾家企業聯合構造的一個區塊鏈,這些企業原本就有關聯,或者是上下游甲乙方關系,或者是橫向互聯合作關系,為了降低成本,提高效率,而採用了區塊鏈技術。

從某種程度上來講,聯盟鏈和專有鏈的本質上是一樣的,都需要參與者在技術上得到許可才能加入,其中各方也是受限的,因此叫許可鏈。因為在原本的經濟活動中就有關聯,所以不再需要區塊鏈上的激勵機制,在實際應用中也不一定產生代幣。

2.信息公開的區塊鏈之上如何保護隱私?

區塊鏈的應用中,信息是透明的、共享的,那麼隱私保護問題如何解決?如何處理監督制衡與隱私保護之間的關系?

其實,區塊鏈上信息的共享是有選擇的共享,透明也是有限度的透明。並不是所有的數據都會寫入區塊鏈,只有那些需要監督和共享的數據才需寫入。另外,對於已經寫入區塊鏈的數據,也並非全部透明,那些不透明的數據可能是需要得到授權才能看到。這些是通過加密手段可以實現的。

3.如何在數據高速增長的同時保證處理效率?

隨著數據的增長,資料庫越來越大,不但增加存儲負擔,隨時處理效果也會受到影響,如何處理效率與數據增長之間的矛盾,是人們非常關心的問題。

而且由於區塊鏈中有多方參與,所以有人可能會認為其處理數據的效率一定比中心化的網路要低。

其實這要視實際需求而定,在大多數情況下,區塊鏈是可以滿足效率需求的。

影響處理效率的兩大環節,一是驗證機制,即驗證每一個打包塊的真實性;二是共識演算法。此二環節耗時最多。

對於許可鏈來說,可以採取多種辦法提高效率。例如在驗證機制中不用POW演算法,而用驗證池的演算法。哪些數據寫入區塊鏈、哪些數據是透明的、哪些是被監督的,都可以與實際情況結合來定。

4.區塊鏈的真實應用需求。

在當下的各種討論中,人們暢想了各種各樣的區塊鏈應用需求。但其中很多並不是真實的需求。

一個區塊鏈應用需求是否是在真實的,很容易判斷,就是看區塊鏈的應用是否解決了實際問題——能否降低成本、提高效率,而不是為了應用區塊鏈而應用區塊鏈。

根據客戶方面的反饋,在區塊鏈的實際應用中,最看重的就是安全可控——共識演算法、分級授權、聯合簽名只有在可控的前提下才能應用。再進一步的要求是能夠高性能處理,包括對交易的處理效率以及對存儲結構的讀取效率。第三是私鑰與隱私管理。既要透明監督,又要有隱私保護,這當然是必須的。第四是內置的簡單合約。之所以是簡單合約而非智能合約,也是出於可控性方面的考慮,智能化提高,可控性勢必下降。最後,可擴展性,即支持多種類型的交易與存證、支持海量數據與大規模用戶,為了更好的用戶體驗,也一定要有快捷開發與可視化工具,這對於區塊鏈應用的普及是很關鍵的。

閱讀全文

與區塊鏈演算法實踐相關的資料

熱點內容
安卓登ins需要什麼 瀏覽:835
機器人演算法的難點 瀏覽:225
全自動化編程 瀏覽:725
程序員高薪限制 瀏覽:692
壓縮圖片壓縮 瀏覽:75
美國發明解壓魔方 瀏覽:301
電腦怎麼備案網上伺服器 瀏覽:514
旅行商問題Python寫法 瀏覽:952
解壓破壞王裡面的所有兌換碼 瀏覽:860
文件夾如何拖拽還保留原來的 瀏覽:22
職業生涯pdf 瀏覽:954
ubuntu安裝軟體php 瀏覽:159
黑馬程序員退學流程 瀏覽:362
網頁伺服器崩潰怎麼回事 瀏覽:651
cnc編程前景怎麼樣 瀏覽:320
lniux命令詳解 瀏覽:495
linuxmysql查詢日誌 瀏覽:369
老捷達夥伴壓縮比 瀏覽:94
改後綴加密 瀏覽:433
郵局選址問題演算法 瀏覽:16