智能合约重构社会契约(9)Fabric
1. Docker
Docker 是一個(gè)開源的應(yīng)用容器引擎, 開發(fā)者可以將他們的應(yīng)用及依賴包打包到一個(gè)可移植的鏡像中,也可以實(shí)現(xiàn)虛擬化。
- 完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
- 在超級(jí)賬本中,智能合約的代碼在使用任意的語言編寫之后,將會(huì)被編譯器打包進(jìn)Docker鏡像中,以容器作為執(zhí)行環(huán)境。
2. 鏈碼
2.1 所有的鏈碼都繼承兩個(gè)接口,Init和Invoke。
Init接口
用于初始化合約,在整個(gè)鏈碼的生命周期里該接口僅僅執(zhí)行一次。
Invoke接口
編寫業(yè)務(wù)邏輯的唯一人?雖然只有一個(gè)入口,但是可以根據(jù)參數(shù)傳遞的不同自由區(qū)分不同業(yè)務(wù)邏輯。
2.2合約接口能夠獲取的數(shù)據(jù)主要分為三類:
- 輸人參數(shù)獲取
這個(gè)直接就是調(diào)用時(shí)候的輸入。 - 與狀態(tài)數(shù)據(jù)庫和歷史數(shù)據(jù)庫交互
在合約層,可以將區(qū)塊鏈底層當(dāng)作一個(gè)鍵值對(duì)數(shù)據(jù)庫,合約就是對(duì)數(shù)據(jù)庫中值的增刪改查。 - 與其他合約的交互
在合約執(zhí)行的過程中,可以與其他合約交換數(shù)據(jù)。有了這種形式的數(shù)據(jù)獲取方式,其實(shí)就可以將聯(lián)系不緊密的業(yè)務(wù)邏輯拆分為多個(gè)合約,只有必要的時(shí)候跨合約調(diào)用。
3.Raft協(xié)議
Raft是一個(gè)管理復(fù)制日志的共識(shí)算法。
step1. 客戶端向主節(jié)點(diǎn)發(fā)送請(qǐng)求,主節(jié)點(diǎn)收到后將請(qǐng)求追加到日志中,并將該請(qǐng)求發(fā)送給所有的跟隨節(jié)點(diǎn),跟隨節(jié)點(diǎn)也會(huì)將請(qǐng)求追加到自身的日志中并返回一個(gè)確認(rèn)消息。
step2. 當(dāng)主節(jié)點(diǎn)接收到大部分跟隨節(jié)點(diǎn)的確認(rèn)消息,就會(huì)將命令日志提交給狀態(tài)管理機(jī)。
step3. 一旦主節(jié)點(diǎn)提交了日志,跟隨節(jié)點(diǎn)也會(huì)將日志提交給自身管理的狀態(tài)機(jī)。
step4. 最后主節(jié)點(diǎn)向客戶端返回響應(yīng)結(jié)果。
Raft并不是拜占庭共識(shí),它僅僅需要容忍2n+1個(gè)節(jié)點(diǎn)中不超過n個(gè)的非拜占庭故障(Fabric的聯(lián)盟鏈數(shù)字證書等安全機(jī)制確保惡意節(jié)點(diǎn)的可能性不高)
總結(jié)
以上是生活随笔為你收集整理的智能合约重构社会契约(9)Fabric的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智能合约重构社会契约(8)以太坊分片
- 下一篇: 区块链BaaS云服务(27)米链科技 H