【1】。開發合約: 合約就是一段代碼html
【2】。安裝合約:就是將合約代碼提交到fabric上。java
【3】。合約分步安裝:node
A。合約打包 算法
B。合約簽署docker
C。合約安裝數據庫
【4】。合約實例化:就是在指定的peer節點上啓動一個docker容器,並調用合約的方法(init方法)安全
【5】。調用合約網絡
【6】。查詢合約架構
【7】。更新合約:合約更新以後,對查詢、調用等操做都將使用最新合約,老版本的合約還會存在,可是再也不起做用。分佈式
每一個peer上安裝的合約必須是相同的
【8】。合約的啓動與暫停:
fabric不支持合約的啓動與暫停。要暫停合約,只能到peer上手動刪除容器。
【9】。fabric SDKs (目前僅有java和node)
sdk分爲兩部分,fabric-client
用來調用fabric,fabric-ca-client
用來與fabric-ca交互,逐層、撤銷用戶等。
Fabric是一個支持智能合約(smart contracts)的分佈式帳本(ledger)系統
Fabric是私有的,只有經過MSP(Membership Service Provider)認證的成員才能夠進入到系統,參與合約的締造與執行。
fabric ca用來管理fabric的用戶,即用戶證書的簽署和撤銷等
CA : Certificate Authority 負責管理和簽發證書的第三方機構
1。做用:檢查證書持有者身份的合法性,並簽發證書,以防證書被僞造或篡改
2。CA證書:CA頒發的證書,也叫數字證書(包含證書擁有者的身份信息,CA機構的簽名,公鑰和私鑰
身份信息用於證實證書持有者的身份;
CA簽名用於保證身份的真實性;
公鑰和私鑰用於通訊過程當中加解密,從而保證通信信息的安全性。
Fabric中的鏈(chain)包含「鏈碼(chaincode)」,「帳本(ledger)」,「通道(channel)」。
它將參與方(organization),交易(transaction)進行隔離。
【1】。 peer:peer 是一個獨立存在的計算機節點,不論是物理機仍是虛擬機,總之是獨立實體
(在 peer 沒有加入任何通道以前,是不可以作任何業務的,由於他沒有業務載體)
【2】。channel:通道就是業務載體,是純粹的邏輯概念,能夠獨立於 peer 存在,但也所以也沒任何存在的意義了。
【3】。chaincode:鏈碼就是業務,業務是跑在通道里的,不一樣的通道即使是運行相同的鏈碼,由於載體不一樣,可認爲是兩個不一樣業務。
peer 是地,通道是路,鏈碼是車,三者相輔相成才能構建一套完整的區塊鏈業務系統
Chaincode將在Peer節點上以容器的方式運行,實現與背書節點進程之間的隔離。
鏈碼的部署
LevelDB 是默認的內置的數據庫,CouchDB 是額外的第三方數據庫。
跟 LevelDB 同樣,CouchDB 也可以存儲任意的二進制數據,並且做爲 JSON 文件數據庫,
CouchDB 額外的支撐 JSON 富文本查詢,若是鏈碼的鍵值對存儲的是 JSON,那麼能夠很好的利用 CouchDB 的富文本查詢功能。
代幣一種通過加密的虛擬貨幣,表明不一樣形式的數字資產。
(1)硬分叉
系統中出現了新版本的軟件,而且和以前版本軟件不能兼容,老節點沒法接受新節點挖出的所有或部分區塊,致使同時出現兩條鏈(舊鏈和新鏈)
(2)軟分叉
老節點不能發現新協議的變化,從而繼續接受新節點用新協議所挖出的區塊(一條鏈上,新舊區塊)
15。分割攻擊:將一批比特幣節點與主網分割出來的攻擊行爲
延遲改擊:延遲一下新區塊的廣播
16。51%攻擊:表示佔據了百分之百算力的一大半
17。徹底錢包:錢包客戶端是與完整區塊鏈帳本數據在一塊兒的,對於這些保有完整的,最新的區塊鏈拷貝的的錢包應用,稱爲「徹底錢包」
18。輕錢包:只保留了區塊頭而去除了區塊體中的詳細事務數據,所以大大減小須要同步的數據量,它們經過一種「SPV(簡易支付驗證)」的方式來完成交易驗證
SPV:Simplified Payment Verification:簡單支付驗證
19。私鑰 -》 公鑰 -》 公鑰編碼,獲得錢包地址
20。重放攻擊(Replay Attack)/回放攻擊:指攻擊者發送一個目的主機己接收過的數據包,來達到欺騙系統的目的。
類比:張三 盜取 李四 的聲音錄音,所以能夠進入李四的房間
21。交易延展性(Transaction Malleability):如數字1,修改數字1.0,本質仍是表明1.
22。隔離見證:將交易數據和簽名隔離,把簽名放到別的地方存儲。
相似「籤屬支票」,一張支票就至關於「一條比特幣的交易事務」,簽署UTXO(未花費交易輸出),就至關於支票簽名,即所謂的「見證」,這是用來確認交易的合法性
隔離見證還在必定程序上能解決「交易延展性」問題(攻擊者沒法修改交易事務的輸入和輸出,可是能夠修改簽名。即交易延展性)
潛在問題:
23。區塊鏈擴展:擴容,側鏈,閃電網絡
(一)擴容(鏈內方案)
(1)區塊擴容:
主要是增長區塊中容納交易事務的區塊體的空間大小 (比特由區塊大小爲1M)
(2)BCC(Bitcoin Cash):2017.8.1比特幣硬分叉產生的一個新的比特幣區塊鏈變種,比特幣現金
BTC:比特幣
(3)萊特幣:比特幣兄弟,率先完成了隔離見證,技術方案:用戶激活軟分叉
(4)用戶激活軟分叉(user-activated soft folk,UASF)
軟分叉升級模式,主要爲避開掌握大量算力的礦工和礦池的反對,而將支持升級的決定權交給礦工和礦池以外的全部節點和用戶。
(5)以太坊:提升Gas限制 & 分片
提升Gas限制:至關於提升用戶的使用成本
分片:將區塊數據按照某種分類存儲在不一樣的節點上,而不像如今全部節點都保存一樣的副本。
(二)側鏈(鏈外方案)
1.側鏈
實現將兩個不一樣的區塊鏈數字貨幣之間直接作價值轉換。側鏈協議能夠將比特幣從主鏈上轉移到側鏈上來。但須要在比特幣主鏈上先凍結,而後在別的鏈上激活。
如:比特幣和以太幣是兩個徹底不一樣技術和構架的區塊鏈,它們間互換價值,主鏈是相對的,以比特幣爲主鏈,則以太幣就爲側鏈。反之易然。
側鏈能夠是徹底獨立的,也能夠必須依賴主鏈生存的鏈。
側鏈技術用來分流數據量(或價值)
(1)雙向錨定
爲將比特幣從主鏈上移動到側鏈,比特幣區塊鏈上的比特幣必須首先在主鏈上被凍結,而後在側鏈上激活,這叫雙向錨定。
側鏈雙向錨定的思路和步驟:
(三)閃電網絡(lighting network)
是一個點對點對等網絡,徹底去中心化的數字貨幣微支付系統。
1.閃電網絡適用於:比特幣,以太幣,萊特幣這樣的數字貨幣。
2.雷電網絡微支付系統:以太坊上的以太幣
3.閃電網絡亮點:徹底基於買賣雙方的獨立雙向支付通道,不須要任何形式的押金擔保,也不須要任何信任的第三方便可實現實時的海量交易。
4.閃電網絡本質:
智能合約的應用,即RSMC(revocable sequence maturity contract,序列到期可撤銷合約) 及 HTLC(Hashed Timelock Contract,哈希時間鎖定合約).
基於智能合約創建一系列相互鏈接的雙向支付通道。
(1)RSMC(revocable sequence maturity contract,序列到期可撤銷合約):
類比淘寶購物,買家和賣家,錢託管在淘寶平臺,只有雙方承認(簽名)纔會完成支付,若買家退貨(中斷合約),則賣家不反對狀況可退回,若賣家反對,買家做弊,則要罰買家,將資金罰給賣家。
(2)HTLC(Hashed Timelock Contract,哈希時間鎖定合約)
類比RSMC,增長更多玩法,如買家在2天能給出一個正確口令,則賣家就要支付xx比特幣給買家,過時則要退還給賣家。(類比返差價或紅包)
閃電網絡無限制,只要雙方能創建起支付通道便可,以下所示:
微支付通道容許交易(支付)雙方無限次地更新交易過程,且不將中間數據上鍊,而將最後結果上鍊。
示例:A經過閃電網絡向B和其餘交易對手支付比特幣資產
(1)創建微支付交易通道(雙向 A->B & B->A)
(2)創建微支付交易通道(網絡 A -> B -> C & C->B->A)
(3)完成微支付交易並關閉支付通道
Hyperledger Fabric的通道channel即借鑑閃電網絡原理,以此來做爲保護交易對手的信息隱私。
(四)多鏈:區塊鏈應用的擴展交互
應用跨鏈鏈接器(中間件)鏈接多個可根據商業應用場景分別構建起來的價值鏈的多鏈架構理念。