區塊鏈架構模型圖
1. 1分鍾帶你快速了解區塊鏈的技術模型架構
區塊鏈技術性並並不是一項單一的技術性,只是多種多樣技術性融合自主創新的結果,其實質是一個弱管理中心的、自信賴的最底層構架技術性。
區塊鏈技術性實體模型由上而下包含數據信息層、傳輸層的共識層、鼓勵層、合同層和網路層。每一層具有一項關鍵作用,不一樣等級中間互相配合,一同搭建一個去管理中心的使用價值傳送管理體系。
數據信息層的特性是不能偽造、全備份數據、徹底公平(數據信息、管理許可權、編碼),而其演算法設計是區塊鏈,包含區塊鏈頭和區塊材。區塊鏈頭由三組區塊鏈資料庫,一組資料庫是父區塊鏈哈希值,用以該區域塊與區塊鏈中的前一區塊鏈相互連接;二組資料庫是Merkle根,一種用於合理地小結區塊鏈中全部買賣的演算法設計;三組資料庫是難度系數總體目標、時間格式和Nonce與生產製造區塊鏈有關。
傳輸層封裝了P2P網路體制、散播和認證體制等技術性。在傳輸層中,新的買賣向各大網站開展廣播節目,每一個連接點都將接到的交易信息列入一個區塊鏈中,且每一個連接點都試著在自身的區塊鏈中尋找一個具備充足難度系數的勞動量證實,當一個連接點找到一個勞動量證實(得到裝包區塊鏈的資質),它就向各大網站開展廣播節目(新裝包的區塊鏈),當且僅當包括在該區域塊中的全部買賣全是合理的且以前未存有過的,別的連接點才認可該區域塊的實效性,而表明認可接納的方式 ,則是在追隨該區域塊的結尾,生產製造新的區塊鏈以增加該傳動鏈條,而將被接納區塊鏈的任意散列值視作在於新區塊鏈的任意散列值。
的共識層封裝了節點的各種共識機制優化演算法,它是區塊鏈的關鍵技術,由於這決策了區塊鏈的造成,而記帳決策方法可能危害全部系統軟體的安全系數和穩定性。現階段早已發生了十餘種共識機制優化演算法,在其中較為知名的有勞動量證實體制(POW)、好用拜占庭容錯機制優化演算法(PBFT)、利益證實體制(POS)、股權授權證明體制。
鼓勵層包含發售體制和激勵制度。簡易而言,激勵制度是根據經濟發展均衡的方式,激勵連接點參加到維護保養區塊鏈系統優化運作中,避免 對總帳簿開展偽造,使長期性保持區塊鏈互聯網運作的驅動力。
合同層具備可編程式控制制器的特點,關鍵包含智能合約、共識演算法、腳本製作、編碼,是區塊鏈可編程式控制制器特點的基本。將編碼置入區塊鏈或動態口令中,完成能夠 自定的智能合約,並在做到某一明確的約束的狀況下,不用經過第三方就可以全自動實行,是區塊鏈去信賴的基本。
網路層封裝了區塊鏈的各種各樣應用領域和實例,跟電腦的應用軟體、電腦瀏覽器上的門戶網等很類似,將區塊鏈關鍵技術布署在如以太幣、EOS上並在實際中落地式。
#比特幣[超話]# #數字貨幣#
2. 什麼是區塊鏈技術區塊鏈到底是什麼什麼叫區塊鏈
狹義來講,區塊鏈是一種按照時間順序將數據區塊以順序相連的方式組合成的一種鏈式數據結構, 並以密碼學方式保證的不可篡改和不可偽造的分布式賬本。
廣義來講,區塊鏈技術是利用塊鏈式數據結構來驗證與存儲數據、利用分布式節點共識演算法來生成和更新數據、利用密碼學的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分布式基礎架構與計算方式。
【基礎架構】
一般說來,區塊鏈系統由數據層、網路層、共識層、激勵層、合約層和應用層組成。 其中,數據層封裝了底層數據區塊以及相關的數據加密和時間戳等基礎數據和基本演算法;網路層則包括分布式組網機制、數據傳播機制和數據驗證機制等;共識層主要封裝網路節點的各類共識演算法;激勵層將經濟因素集成到區塊鏈技術體系中來,主要包括經濟激勵的發行機制和分配機制等;合約層主要封裝各類腳本、演算法和智能合約,是區塊鏈可編程特性的基礎;應用層則封裝了區塊鏈的各種應用場景和案例。該模型中,基於時間戳的鏈式區塊結構、分布式節點的共識機制、基於共識算力的經濟激勵和靈活可編程的智能合約是區塊鏈技術最具代表性的創新點 。
拓展資料:
【區塊鏈核心技術】
區塊鏈主要解決的交易的信任和安全問題,因此它針對這個問題提出了四個技術創新:
1.分布式賬本,就是交易記賬由分布在不同地方的多個節點共同完成,而且每一個節點都記錄的是完整的賬目,因此它們都可以參與監督交易合法性,同時也可以共同為其作證。
區塊鏈的分布式存儲的獨特性主要體現在兩個方面:一是區塊鏈每個節點都按照塊鏈式結構存儲完整的數據,傳統分布式存儲一般是將數據按照一定的規則分成多份進行存儲。二是區塊鏈每個節點存儲都是獨立的、地位等同的,依靠共識機制保證存儲的一致性,而傳統分布式存儲一般是通過中心節點往其他備份節點同步數據。
沒有任何一個節點可以單獨記錄賬本數據,從而避免了單一記賬人被控制或者被賄賂而記假賬的可能性。也由於記賬節點足夠多,理論上講除非所有的節點被破壞,否則賬目就不會丟失,從而保證了賬目數據的安全性。
2.非對稱加密和授權技術,存儲在區塊鏈上的交易信息是公開的,但是賬戶身份信息是高度加密的,只有在數據擁有者授權的情況下才能訪問到,從而保證了數據的安全和個人的隱私。
3.共識機制,就是所有記賬節點之間怎麼達成共識,去認定一個記錄的有效性,這既是認定的手段,也是防止篡改的手段。區塊鏈提出了四種不同的共識機制,適用於不同的應用場景,在效率和安全性之間取得平衡。
區塊鏈的共識機制具備「少數服從多數」以及「人人平等」的特點,其中「少數服從多數」並不完全指節點個數,也可以是計算能力、股權數或者其他的計算機可以比較的特徵量。「人人平等」是當節點滿足條件時,所有節點都有權優先提出共識結果、直接被其他節點認同後並最後有可能成為最終共識結果。
4.智能合約,智能合約是基於這些可信的不可篡改的數據,可以自動化的執行一些預先定義好的規則和條款。以保險為例,如果說每個人的信息(包括醫療信息和風險發生的信息)都是真實可信的,那就很容易的在一些標准化的保險產品中,去進行自動化的理賠。
在保險公司的日常業務中,雖然交易不像銀行和證券行業那樣頻繁,但是對可信數據的依賴是有增無減。因此,筆者認為利用區塊鏈技術,從數據管理的角度切入,能夠有效地幫助保險公司提高風險管理能力。具體來講主要分投保人風險管理和保險公司的風險監督。
區塊鏈-網路
3. 區塊鏈技術框架有哪些
當前主流的區塊鏈架構包含六個層級:網路層、數據層、共識層、激勵層、合約層和應用層。圖中將數據層和網路層的位置進行了對調,主要用途將在下一節中詳述。
網路層:區塊鏈網路本質是一個P2P(Peer-to-peer點對點)的網路,網路中的資源和服務分散在所有節點上,信息的傳輸和服務的實現都直接在節點之間進行,可以無需中間環節和伺服器的介入。每一個節點既接收信息,也產生信息,節點之間通過維護一個共同的區塊鏈來同步信息,當一個節點創造出新的區塊後便以廣播的形式通知其他節點,其他節點收到信息後對該區塊進行驗證,並在該區塊的基礎上去創建新的區塊,從而達到全網共同維護一個底層賬本的作用。所以網路層會涉及到P2P網路,傳播機制,驗證機制等的設計,顯而易見,這些設計都能影響到區塊信息的確認速度,網路層可以作為區塊鏈技術可擴展方案中的一個研究方向;
數據層:區塊鏈的底層數據是一個區塊+鏈表的數據結構,它包括數據區塊、鏈式結構、時間戳、哈希函數、Merkle樹、非對稱加密等設計。其中數據區塊、鏈式結構都可作為區塊鏈技術可擴展方案對數據層研究時的改進方向。
共識層:它是讓高度分散的節點對區塊數據的有效性達到快速共識的基礎,主要的共識機制有POW(Proof Of Work工作量證明機制),POS(Proof of Stake權益證明機制),DPOS(Delegated Proof of Stake委託權益證明機制)和PBFT(Practical Byzantine Fault Tolerance實用拜占庭容錯)等,它們一直是區塊鏈技術可擴展方案中的重頭戲。
激勵層:它是大家常說的挖礦機制,用來設計一定的經濟激勵模型,鼓勵節點來參與區塊鏈的安全驗證工作,包括發行機制,分配機制的設計等。這個層級的改進貌似與區塊鏈可擴展並無直接聯系。
合約層:主要是指各種腳本代碼、演算法機制以及智能合約等。第一代區塊鏈嚴格講這一層是缺失的,所以它們只能進行交易,而無法用於其他的領域或是進行其他的邏輯處理,合約層的出現,使得在其他領域使用區塊鏈成為了現實,以太坊中這部分包括了EVM(以太坊虛擬機)和智能合約兩部分。這個層級的改進貌似給區塊鏈可擴展提供了潛在的新方向,但結構上來看貌似並無直接聯系
應用層:它是區塊鏈的展示層,包括各種應用場景和案例。如以太坊使用的是truffle和web3-js.區塊鏈的應用層可以是移動端,web端,或是是融合進現有的伺服器,把當前的業務伺服器當成應用層。這個層級的改進貌似也給區塊鏈可擴展提供了潛在的新方向,但結構上來看貌似並無直接聯系。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
4. 【深度知識】區塊鏈之加密原理圖示(加密,簽名)
先放一張以太坊的架構圖:
在學習的過程中主要是採用單個模塊了學習了解的,包括P2P,密碼學,網路,協議等。直接開始總結:
秘鑰分配問題也就是秘鑰的傳輸問題,如果對稱秘鑰,那麼只能在線下進行秘鑰的交換。如果在線上傳輸秘鑰,那就有可能被攔截。所以採用非對稱加密,兩把鑰匙,一把私鑰自留,一把公鑰公開。公鑰可以在網上傳輸。不用線下交易。保證數據的安全性。
如上圖,A節點發送數據到B節點,此時採用公鑰加密。A節點從自己的公鑰中獲取到B節點的公鑰對明文數據加密,得到密文發送給B節點。而B節點採用自己的私鑰解密。
2、無法解決消息篡改。
如上圖,A節點採用B的公鑰進行加密,然後將密文傳輸給B節點。B節點拿A節點的公鑰將密文解密。
1、由於A的公鑰是公開的,一旦網上黑客攔截消息,密文形同虛設。說白了,這種加密方式,只要攔截消息,就都能解開。
2、同樣存在無法確定消息來源的問題,和消息篡改的問題。
如上圖,A節點在發送數據前,先用B的公鑰加密,得到密文1,再用A的私鑰對密文1加密得到密文2。而B節點得到密文後,先用A的公鑰解密,得到密文1,之後用B的私鑰解密得到明文。
1、當網路上攔截到數據密文2時, 由於A的公鑰是公開的,故可以用A的公鑰對密文2解密,就得到了密文1。所以這樣看起來是雙重加密,其實最後一層的私鑰簽名是無效的。一般來講,我們都希望簽名是簽在最原始的數據上。如果簽名放在後面,由於公鑰是公開的,簽名就缺乏安全性。
2、存在性能問題,非對稱加密本身效率就很低下,還進行了兩次加密過程。
如上圖,A節點先用A的私鑰加密,之後用B的公鑰加密。B節點收到消息後,先採用B的私鑰解密,然後再利用A的公鑰解密。
1、當密文數據2被黑客攔截後,由於密文2隻能採用B的私鑰解密,而B的私鑰只有B節點有,其他人無法機密。故安全性最高。
2、當B節點解密得到密文1後, 只能採用A的公鑰來解密。而只有經過A的私鑰加密的數據才能用A的公鑰解密成功,A的私鑰只有A節點有,所以可以確定數據是由A節點傳輸過來的。
經兩次非對稱加密,性能問題比較嚴重。
基於以上篡改數據的問題,我們引入了消息認證。經過消息認證後的加密流程如下:
當A節點發送消息前,先對明文數據做一次散列計算。得到一個摘要, 之後將照耀與原始數據同時發送給B節點。當B節點接收到消息後,對消息解密。解析出其中的散列摘要和原始數據,然後再對原始數據進行一次同樣的散列計算得到摘要1, 比較摘要與摘要1。如果相同則未被篡改,如果不同則表示已經被篡改。
在傳輸過程中,密文2隻要被篡改,最後導致的hash與hash1就會產生不同。
無法解決簽名問題,也就是雙方相互攻擊。A對於自己發送的消息始終不承認。比如A對B發送了一條錯誤消息,導致B有損失。但A抵賴不是自己發送的。
在(三)的過程中,沒有辦法解決交互雙方相互攻擊。什麼意思呢? 有可能是因為A發送的消息,對A節點不利,後來A就抵賴這消息不是它發送的。
為了解決這個問題,故引入了簽名。這里我們將(二)-4中的加密方式,與消息簽名合並設計在一起。
在上圖中,我們利用A節點的私鑰對其發送的摘要信息進行簽名,然後將簽名+原文,再利用B的公鑰進行加密。而B得到密文後,先用B的私鑰解密,然後 對摘要再用A的公鑰解密,只有比較兩次摘要的內容是否相同。這既避免了防篡改問題,有規避了雙方攻擊問題。因為A對信息進行了簽名,故是無法抵賴的。
為了解決非對稱加密數據時的性能問題,故往往採用混合加密。這里就需要引入對稱加密,如下圖:
在對數據加密時,我們採用了雙方共享的對稱秘鑰來加密。而對稱秘鑰盡量不要在網路上傳輸,以免丟失。這里的共享對稱秘鑰是根據自己的私鑰和對方的公鑰計算出的,然後適用對稱秘鑰對數據加密。而對方接收到數據時,也計算出對稱秘鑰然後對密文解密。
以上這種對稱秘鑰是不安全的,因為A的私鑰和B的公鑰一般短期內固定,所以共享對稱秘鑰也是固定不變的。為了增強安全性,最好的方式是每次交互都生成一個臨時的共享對稱秘鑰。那麼如何才能在每次交互過程中生成一個隨機的對稱秘鑰,且不需要傳輸呢?
那麼如何生成隨機的共享秘鑰進行加密呢?
對於發送方A節點,在每次發送時,都生成一個臨時非對稱秘鑰對,然後根據B節點的公鑰 和 臨時的非對稱私鑰 可以計算出一個對稱秘鑰(KA演算法-Key Agreement)。然後利用該對稱秘鑰對數據進行加密,針對共享秘鑰這里的流程如下:
對於B節點,當接收到傳輸過來的數據時,解析出其中A節點的隨機公鑰,之後利用A節點的隨機公鑰 與 B節點自身的私鑰 計算出對稱秘鑰(KA演算法)。之後利用對稱秘鑰機密數據。
對於以上加密方式,其實仍然存在很多問題,比如如何避免重放攻擊(在消息中加入 Nonce ),再比如彩虹表(參考 KDF機制解決 )之類的問題。由於時間及能力有限,故暫時忽略。
那麼究竟應該採用何種加密呢?
主要還是基於要傳輸的數據的安全等級來考量。不重要的數據其實做好認證和簽名就可以,但是很重要的數據就需要採用安全等級比較高的加密方案了。
密碼套件 是一個網路協議的概念。其中主要包括身份認證、加密、消息認證(MAC)、秘鑰交換的演算法組成。
在整個網路的傳輸過程中,根據密碼套件主要分如下幾大類演算法:
秘鑰交換演算法:比如ECDHE、RSA。主要用於客戶端和服務端握手時如何進行身份驗證。
消息認證演算法:比如SHA1、SHA2、SHA3。主要用於消息摘要。
批量加密演算法:比如AES, 主要用於加密信息流。
偽隨機數演算法:例如TLS 1.2的偽隨機函數使用MAC演算法的散列函數來創建一個 主密鑰 ——連接雙方共享的一個48位元組的私鑰。主密鑰在創建會話密鑰(例如創建MAC)時作為一個熵來源。
在網路中,一次消息的傳輸一般需要在如下4個階段分別進行加密,才能保證消息安全、可靠的傳輸。
握手/網路協商階段:
在雙方進行握手階段,需要進行鏈接的協商。主要的加密演算法包括RSA、DH、ECDH等
身份認證階段:
身份認證階段,需要確定發送的消息的來源來源。主要採用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA簽名)等。
消息加密階段:
消息加密指對發送的信息流進行加密。主要採用的加密方式包括DES、RC4、AES等。
消息身份認證階段/防篡改階段:
主要是保證消息在傳輸過程中確保沒有被篡改過。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。
ECC :Elliptic Curves Cryptography,橢圓曲線密碼編碼學。是一種根據橢圓上點倍積生成 公鑰、私鑰的演算法。用於生成公私秘鑰。
ECDSA :用於數字簽名,是一種數字簽名演算法。一種有效的數字簽名使接收者有理由相信消息是由已知的發送者創建的,從而發送者不能否認已經發送了消息(身份驗證和不可否認),並且消息在運輸過程中沒有改變。ECDSA簽名演算法是ECC與DSA的結合,整個簽名過程與DSA類似,所不一樣的是簽名中採取的演算法為ECC,最後簽名出來的值也是分為r,s。 主要用於身份認證階段 。
ECDH :也是基於ECC演算法的霍夫曼樹秘鑰,通過ECDH,雙方可以在不共享任何秘密的前提下協商出一個共享秘密,並且是這種共享秘鑰是為當前的通信暫時性的隨機生成的,通信一旦中斷秘鑰就消失。 主要用於握手磋商階段。
ECIES: 是一種集成加密方案,也可稱為一種混合加密方案,它提供了對所選擇的明文和選擇的密碼文本攻擊的語義安全性。ECIES可以使用不同類型的函數:秘鑰協商函數(KA),秘鑰推導函數(KDF),對稱加密方案(ENC),哈希函數(HASH), H-MAC函數(MAC)。
ECC 是橢圓加密演算法,主要講述了按照公私鑰怎麼在橢圓上產生,並且不可逆。 ECDSA 則主要是採用ECC演算法怎麼來做簽名, ECDH 則是採用ECC演算法怎麼生成對稱秘鑰。以上三者都是對ECC加密演算法的應用。而現實場景中,我們往往會採用混合加密(對稱加密,非對稱加密結合使用,簽名技術等一起使用)。 ECIES 就是底層利用ECC演算法提供的一套集成(混合)加密方案。其中包括了非對稱加密,對稱加密和簽名的功能。
<meta charset="utf-8">
這個先訂條件是為了保證曲線不包含奇點。
所以,隨著曲線參數a和b的不斷變化,曲線也呈現出了不同的形狀。比如:
所有的非對稱加密的基本原理基本都是基於一個公式 K = k G。其中K代表公鑰,k代表私鑰,G代表某一個選取的基點。非對稱加密的演算法 就是要保證 該公式 不可進行逆運算( 也就是說G/K是無法計算的 )。 *
ECC是如何計算出公私鑰呢?這里我按照我自己的理解來描述。
我理解,ECC的核心思想就是:選擇曲線上的一個基點G,之後隨機在ECC曲線上取一個點k(作為私鑰),然後根據k G計算出我們的公鑰K。並且保證公鑰K也要在曲線上。*
那麼k G怎麼計算呢?如何計算k G才能保證最後的結果不可逆呢?這就是ECC演算法要解決的。
首先,我們先隨便選擇一條ECC曲線,a = -3, b = 7 得到如下曲線:
在這個曲線上,我隨機選取兩個點,這兩個點的乘法怎麼算呢?我們可以簡化下問題,乘法是都可以用加法表示的,比如2 2 = 2+2,3 5 = 5+5+5。 那麼我們只要能在曲線上計算出加法,理論上就能算乘法。所以,只要能在這個曲線上進行加法計算,理論上就可以來計算乘法,理論上也就可以計算k*G這種表達式的值。
曲線上兩點的加法又怎麼算呢?這里ECC為了保證不可逆性,在曲線上自定義了加法體系。
現實中,1+1=2,2+2=4,但在ECC演算法里,我們理解的這種加法體系是不可能。故需要自定義一套適用於該曲線的加法體系。
ECC定義,在圖形中隨機找一條直線,與ECC曲線相交於三個點(也有可能是兩個點),這三點分別是P、Q、R。
那麼P+Q+R = 0。其中0 不是坐標軸上的0點,而是ECC中的無窮遠點。也就是說定義了無窮遠點為0點。
同樣,我們就能得出 P+Q = -R。 由於R 與-R是關於X軸對稱的,所以我們就能在曲線上找到其坐標。
P+R+Q = 0, 故P+R = -Q , 如上圖。
以上就描述了ECC曲線的世界裡是如何進行加法運算的。
從上圖可看出,直線與曲線只有兩個交點,也就是說 直線是曲線的切線。此時P,R 重合了。
也就是P = R, 根據上述ECC的加法體系,P+R+Q = 0, 就可以得出 P+R+Q = 2P+Q = 2R+Q=0
於是乎得到 2 P = -Q (是不是與我們非對稱演算法的公式 K = k G 越來越近了)。
於是我們得出一個結論,可以算乘法,不過只有在切點的時候才能算乘法,而且只能算2的乘法。
假若 2 可以變成任意個數進行想乘,那麼就能代表在ECC曲線里可以進行乘法運算,那麼ECC演算法就能滿足非對稱加密演算法的要求了。
那麼我們是不是可以隨機任何一個數的乘法都可以算呢? 答案是肯定的。 也就是點倍積 計算方式。
選一個隨機數 k, 那麼k * P等於多少呢?
我們知道在計算機的世界裡,所有的都是二進制的,ECC既然能算2的乘法,那麼我們可以將隨機數k描 述成二進制然後計算。假若k = 151 = 10010111
由於2 P = -Q 所以 這樣就計算出了k P。 這就是點倍積演算法 。所以在ECC的曲線體系下是可以來計算乘法,那麼以為這非對稱加密的方式是可行的。
至於為什麼這樣計算 是不可逆的。這需要大量的推演,我也不了解。但是我覺得可以這樣理解:
我們的手錶上,一般都有時間刻度。現在如果把1990年01月01日0點0分0秒作為起始點,如果告訴你至起始點為止時間流逝了 整1年,那麼我們是可以計算出現在的時間的,也就是能在手錶上將時分秒指針應該指向00:00:00。但是反過來,我說現在手錶上的時分秒指針指向了00:00:00,你能告訴我至起始點算過了有幾年了么?
ECDSA簽名演算法和其他DSA、RSA基本相似,都是採用私鑰簽名,公鑰驗證。只不過演算法體系採用的是ECC的演算法。交互的雙方要採用同一套參數體系。簽名原理如下:
在曲線上選取一個無窮遠點為基點 G = (x,y)。隨機在曲線上取一點k 作為私鑰, K = k*G 計算出公鑰。
簽名過程:
生成隨機數R, 計算出RG.
根據隨機數R,消息M的HASH值H,以及私鑰k, 計算出簽名S = (H+kx)/R.
將消息M,RG,S發送給接收方。
簽名驗證過程:
接收到消息M, RG,S
根據消息計算出HASH值H
根據發送方的公鑰K,計算 HG/S + xK/S, 將計算的結果與 RG比較。如果相等則驗證成功。
公式推論:
HG/S + xK/S = HG/S + x(kG)/S = (H+xk)/GS = RG
在介紹原理前,說明一下ECC是滿足結合律和交換律的,也就是說A+B+C = A+C+B = (A+C)+B。
這里舉一個WIKI上的例子說明如何生成共享秘鑰,也可以參考 Alice And Bob 的例子。
Alice 與Bob 要進行通信,雙方前提都是基於 同一參數體系的ECC生成的 公鑰和私鑰。所以有ECC有共同的基點G。
生成秘鑰階段:
Alice 採用公鑰演算法 KA = ka * G ,生成了公鑰KA和私鑰ka, 並公開公鑰KA。
Bob 採用公鑰演算法 KB = kb * G ,生成了公鑰KB和私鑰 kb, 並公開公鑰KB。
計算ECDH階段:
Alice 利用計算公式 Q = ka * KB 計算出一個秘鑰Q。
Bob 利用計算公式 Q' = kb * KA 計算出一個秘鑰Q'。
共享秘鑰驗證:
Q = ka KB = ka * kb * G = ka * G * kb = KA * kb = kb * KA = Q'
故 雙方分別計算出的共享秘鑰不需要進行公開就可採用Q進行加密。我們將Q稱為共享秘鑰。
在以太坊中,採用的ECIEC的加密套件中的其他內容:
1、其中HASH演算法採用的是最安全的SHA3演算法 Keccak 。
2、簽名演算法採用的是 ECDSA
3、認證方式採用的是 H-MAC
4、ECC的參數體系採用了secp256k1, 其他參數體系 參考這里
H-MAC 全程叫做 Hash-based Message Authentication Code. 其模型如下:
在 以太坊 的 UDP通信時(RPC通信加密方式不同),則採用了以上的實現方式,並擴展化了。
首先,以太坊的UDP通信的結構如下:
其中,sig是 經過 私鑰加密的簽名信息。mac是可以理解為整個消息的摘要, ptype是消息的事件類型,data則是經過RLP編碼後的傳輸數據。
其UDP的整個的加密,認證,簽名模型如下:
5. 區塊鏈的模型架構是什麼
區塊鏈技術不是單一的創新技術,而是多種技術整合創新的結果,其本質是一個弱中心的、自信任的底層架構技術。與傳統的互聯網技術相比,它的技術原理與模型架構是一次重大革新。在這里,我們將就區塊鏈的基本技術模型進行剖析。
模型圖
區塊鏈技術模型自下而上包括數據層、網路層、共識層、激勵層、合約層和應用層。每一層分別具備一項核心功能,不同層級之間相互配合,共同構建一個去中心的價值傳輸體系
數據層是區塊鏈最底層的釋術架構,應用了公私鑰相結合的非對稱加密技術,利用散列函數確保信息不被篡改,還採用了鏈式結構、時間戳技術、梅克爾(Merkle)樹等技術對數據區塊進行處理,讓新舊區塊之間相互鏈接,相互驗證,是區塊鏈安全穩定運行的基礎。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
6. java課程分享區塊鏈技術的組成元素架構
隨著互聯網的不斷發展,越來越多的人都了解到了關於區塊鏈技術的一些特點和使用情況,今天我們就來介紹一下,區塊鏈的一些元素組成都有哪些。
區塊鏈的組成
區塊鏈由區塊和鏈組成。每一個區塊包含三個元素:數據、哈希值、前一區塊的哈希值。
區塊的第一個元素是數據。區塊中所保存的數據與區塊鏈的類型有關。例如,比特幣區塊鏈中的區塊保存了相關的交易信息,包括賣家,買家,以及交易比特幣的數量。
區塊的第二個舉正元素是哈希值。每個區塊包含了一個哈讓悶希值,這個哈希值是的,它用來標識一個區塊和它所包含的所有內容。一旦某個區塊被創正滑悔建,它的哈希值就相對應的被計算出來了。改變區塊中的某些內容會使得哈希值改變。所以換句話說:當你想要檢測區塊中內容的改變時,哈希值對你就很有幫助。如果一個區塊的指紋改變了,那它就再也不是之前的區塊了。
區塊的第三個元素是前一個區塊的哈希值。這個元素使得區塊之間可以形成鏈接,並且能夠使得區塊鏈十分的安全。
舉個例子假設我們有一條區塊鏈包含3個區塊。每個區塊包含了一個自己的哈希值以及前一個區塊的哈希值。3號區塊指向2號區塊,2號區塊又指向1號區塊。但是1號區塊有點特殊,它不能指向前一個區塊,因為它是第一個區塊。我們把1號區塊叫做創世區塊。
那麼,現在我們假設你篡改了第二個區塊。這將導致第二個區塊的哈希值改變,那麼3號區塊存儲的數據就是錯誤的、非法的。而3號區塊存儲的數據一旦是非法的,後面的區塊也一定是非法的。
所以如果一個人想要篡改區塊鏈中任何一個區塊,它必須修改這個區塊以及這個區塊之後的所有區塊。這將是一個很繁重的任務。
區塊鏈的工作量證明
但是,僅僅使用哈希值的方法不足以防止用戶篡改區塊。因為現在的計算機運算速度已經足夠強大,並且能夠每秒計算成千上萬的哈希值。java課程建議你完全可以篡改一個區塊並且重新計算其他的區塊的哈希值,這樣就使得你的區塊再次變得合法。
7. 區塊鏈架構設計有哪些
區塊鏈作為一種架構設計的實現,與基礎語言或平台等差別較大。區塊鏈是加密貨幣背後的技術,是當下與VR虛擬現實等比肩的熱門技術之一,本身不是新技術,類似Ajax,可以說它是一種技術架構,所以我們從架構設計的角度談談區塊鏈的技術實現。無論你擅長什麼編程語言,都能夠參考這種設計去實現一款區塊鏈產品。與此同時,梳理與之相關的知識圖譜和體系,幫助大家系統去學習研究。
從架構設計上來說,區塊鏈可以簡單的分為三個層次,協議層、擴展層和應用層。其中,協議層又可以分為存儲層和網路層,它們相互獨立但又不可分割。
區塊鏈架構圖
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
8. 區塊鏈的層級結構(什麼是區塊鏈的Layer0/1/2)
分層結構是區塊鏈處理數據和運行的基礎。
為了尋找到區塊鏈的可擴展性方案,學術研究領域(通常論文中)所指的區塊鏈被分為三層:Layer0、Layer1和Layer2。
通常,區塊鏈系統主要分為:應用層、激勵層、共識層、網路層和數據層,共六層,主要體現在初期的比特幣系統上。隨著智能合約的產生,在應用層和激勵層之間加入了合約層,主要體現在以太坊系統中。
對於每一層的內容如上圖所示,但在具體的不同系統中所使用的技術可能並不相同,比如共識層主要完成節點之間的共識,除了工作量證明機制(Proof of Work)還有權益證明機制(Proof of Stake)和拜占庭容錯機制( Byzantine Fault Tolerance(BFT)等方式。
數據層、網路層、共識層三者構成了區塊鏈層級的底層基礎,也是區塊鏈必不可少的三個元素,缺少任何一個都無法稱之為真正的區塊鏈技術。
區塊鏈分層結構對應到OSI體系7層模型和TCP/IP 4層模型下的對比如下圖所示。
如果我們再聚焦TCP/IP的四層,特別是上面的「應用層」的話,我們會看到,有可能區塊鏈是把原來只專注於信息傳遞的應用層,分出來一個專門用於價值轉移的新層。因此,我們可以認為TCP/IP四層拆分成了五層,將區塊鏈視為TCP/IP的一層:價值層。
一般認為比特幣、以太坊、EOS是區塊鏈1.0、2.0、3.0的代表,如果去看它們的分層也很有意思:
從比特幣到以太坊,增加了合約層。從以太坊到EOS,因為採用DPOS,激勵層實際上合並到了共識層。而EOS增加出來兩層:①工具層,以讓在其上更容易開發應用;②生態層,它自身的定位是一個開源軟體,那麼其他人可以用它的開源軟體建立行業鏈、領域鏈。
徐忠、鄒傳偉寫了一篇央行工作論文,從經濟學的角度探討區塊鏈,試圖給出一種Token範式。其中,實際上他們給出了一個分層模型,這回是內外分層:里層是共識,又分:Token、智能合約、共識演算法;處在共識邊界與區塊鏈邊界,是區塊鏈內的其他信息;處在區塊鏈邊界之外,是互聯網和實體世界。
一些系統為了提升性能,其實對它的分布式網路也進行了分層。也就是,不是所有的節點都是平等的。
比如,以下是EOS的分層。
為了讓區塊鏈變得有用,又有人從其他視角進行討論。ENChain.Asia的朱峰在BAO白皮書中提出了「自組織商業體7層模型」,這個模型又被在《通證經濟的模型與實踐》(0.2)報告中引述,稱之為「自商業七層模型」。
不過,要注意的是,這里的「激勵層」,和我們通常說區塊鏈的激勵層,有相似之處,又不一樣。之前我們討論激勵層,往往是在公鏈原生代幣的角度討論的,而這里的激勵層,則是通證層面討論的。
火幣研究院在2018年12月的一份報告《區塊鏈四層應用模型的構建與解析》中,給出了一個四層的應用模型,很有意思:
參考文獻:
1.區塊鏈十年:各種各樣的層
http://www.360doc.com/content/18/1211/10/53358875_800866301.shtml
2.區塊鏈六大層級結構你知道多少? - 知乎
https://zhuanlan.hu.com/p/98126049
3.區塊鏈的六個分層級結構介紹 - 區塊鏈 - 電子發燒友網
http://www.elecfans.com/blockchain/1138839.html