模塊介紹
模塊概覽
- Assets: 實現(xiàn)了具有貨幣屬性的物品進行交換的功能舞吭,例如:視頻、古董旨怠、期權(quán)等渠驼。。鉴腻。
- ChainCode: 提供了智能合約功能迷扇,將它的執(zhí)行從交易排序中分割出去,從而限制跨節(jié)點時所需要的信任和驗證級別爽哎,并優(yōu)化網(wǎng)絡的拓展性和性能
- Ledger(分布式賬本): 不可變的蜓席、共享的賬本,存儲每個channel中完整交易的歷史课锌,并提供了類似sql的查詢方式
- Privacy: Channels和隱私數(shù)據(jù)集提供了隱私和多邊秘密交易的功能厨内,用來滿足日常生活中競爭性的企業(yè)和行業(yè)的需求
- Security&Membership Service(安全和成員服務): 基于授權(quán)許可模型,通過被許可的成員來提供可信的區(qū)塊鏈環(huán)境渺贤,所有的交易都會被授權(quán)的監(jiān)管雏胃、審查機構(gòu)進行檢測和跟蹤。
- Consensus: 提供了靈活和可拓展的共識組件癣亚,來滿足日常商業(yè)的需求
模塊詳細介紹
Assets
資產(chǎn)既包括有型的資產(chǎn)丑掺、也包含無形的資產(chǎn),Hyperledger使用chainCode去修改用戶的資產(chǎn)述雾。
在內(nèi)部實現(xiàn)中街州,資產(chǎn)表現(xiàn)為一系列key-value的鍵值對集合,狀態(tài)變更記錄為Channel賬本中的交易(即:通過交易來修改用戶的資產(chǎn))玻孟∷艚桑可以編碼為任意的二進制或Json格式.
ChainCode
ChainCode是定義資產(chǎn)、修改資產(chǎn)指令的軟件代碼黍翎;ChainCode是用于讀取面徽、修改鍵值對或其它數(shù)據(jù)庫狀態(tài)時強制執(zhí)行的規(guī)則。
Ledger
在Fabric中,賬本是順序的趟紊、不可變的狀態(tài)轉(zhuǎn)換記錄氮双,狀態(tài)轉(zhuǎn)換是ChainCode的執(zhí)行結(jié)果,由參與方提交給網(wǎng)絡中所有對等節(jié)點霎匈,交易會導致一系列的資產(chǎn)鍵值對被更新戴差、修改或刪除,然后這些狀態(tài)變動被提交至賬本铛嘱。
每個channel一個賬本暖释,每個節(jié)點都為它所屬的channel維護一個賬本拷貝。
賬本提供了下面的一些功能:
- 一系列的查詢功能
- channel的賬本包含了區(qū)塊策略墨吓、 訪問控制列表球匕、以及其他的配置的信息
- 包含
Membership Service Provider
實例,允許不同證書鑒權(quán)機構(gòu) 派發(fā)的加密證書帖烘。
Privacy
Hyperledger在每個channel上采用了不可變的賬本亮曹,chaincode用于維護、修改當前的資產(chǎn)狀態(tài)蚓让。賬本存在于channel中乾忱,可以被共享給整個網(wǎng)絡,也可以僅被共享給特定的參與方历极,在隨后的場景中窄瘟,參與方可以創(chuàng)建一個獨立的channel,從而在公開網(wǎng)絡上隔離他們的交易和賬本趟卸。為了解決這種在透明和隱私實現(xiàn)之間的差距蹄葱,chaincode需要被安裝在那些需要訪問資產(chǎn)狀態(tài)的節(jié)點上(即:如果chaincode未被安裝在該節(jié)點上,則該節(jié)點無法正確與賬本進行交互)
當在channel上組織的子集需要維護它們交易數(shù)據(jù)的隱私性時锄列,使用隱私數(shù)據(jù)集來在私有數(shù)據(jù)庫中分離它們的數(shù)據(jù)图云,在channel賬本上進行邏輯分離,僅有被授權(quán)的子組織可以訪問這些隱私數(shù)據(jù)
因此:在隱私的實現(xiàn)中邻邮,使用了兩種概念:channel, privacy collection; channel在公網(wǎng)上維護交易隱私竣况,collection在channel上的不同子組織間維護隱私。
同時在發(fā)送交易給排序服務或添加區(qū)塊至賬本時筒严,chaincode中的值(部分/全部)可以使用通用的加密算法(AES)來加密丹泉,以便進一步混淆鏈上數(shù)據(jù)。賬本上的加密數(shù)據(jù)鸭蛙,僅有含有對應密鑰的用戶才可以解密摹恨。
Security & Membership Services(安全和成員服務)
Hyperledger 支持網(wǎng)絡中的所有參與方都有公開的身份標識(如:身份證、網(wǎng)站證書)娶视;基于此晒哄,可以在公共網(wǎng)絡和channel級別上對對數(shù)據(jù)的訪問控制進行維護和管理睁宰;Hyperledger使用身份許可
和channel,來解決隱私和保密場景問題寝凌。
Consensus
在分布式賬本技術(shù)中柒傻,Consensus逐漸演變?yōu)橐环N特定算法的同義詞。但是较木,共識不僅簡單是對交易的排序诅愚,在Hyperledger中,通過其在整個交易流程中(提案劫映、背書、排序刹前、驗證泳赋、提交)的基礎作用,這種差別越加明顯喇喉。簡單來說祖今,Hyperledger中的共識被定義為組成區(qū)塊的交易集合的完整驗證流程。
當交易順序拣技、區(qū)塊的執(zhí)行結(jié)果符合明確的檢查標準時千诬,節(jié)點之間達成共識。檢查和余額發(fā)生在交易的生命周期中膏斤,且包含使用背書策略去指定特定成員必須對特定的交易類型進行背書徐绑,以及系統(tǒng)chaincode去保證這些策略被強制執(zhí)行。在狀態(tài)被提交之前莫辨,節(jié)點必須使用系統(tǒng)chaincode來確保有足夠的背書傲茄,且這些背書派生自對應的實體。此外沮榜,在將包含交易的區(qū)塊追加至賬本時盘榨,將進行版本檢查,來確保就當前賬本的狀態(tài)達成共識蟆融。最后的檢查可以防止雙花和其他可能破壞數(shù)據(jù)完整性的操作草巡,而且可以允許在非靜態(tài)數(shù)據(jù)上執(zhí)行一些功能(不懂)。
除了多節(jié)點背書型酥、合法性山憨、版本檢查外,在交易流程的各個方向上冕末,也會進行身份驗證萍歉。同時在網(wǎng)絡層實現(xiàn)數(shù)據(jù)訪問控制功能(排序服務在channel中實現(xiàn)),當交易在不同組件中傳輸時档桃,它的載荷數(shù)據(jù)會被重復簽名枪孩、驗證、認證。
總體來說蔑舞,共識不僅僅是對一系列交易的排序拒担,相反,排序是一項總體特征攻询,它是交易從提案到提交整個過程中不斷驗證的副產(chǎn)品从撼。
Reference
https://hyperledger-fabric.readthedocs.io/en/latest/fabric_model.html