Fabric invoke執行流程分析

2021-08-11 04:36:50 字數 1730 閱讀 8541

1、sdk或者client發起invoke操作,呼叫chaincodeinvokeorquery(),建立proposal,

該過程主要生成txid,構造出channelheader,賦值給proposal.header, 構造出chaincodeproposalpayload賦值給proposal.payload, proposal結構如下所示。然後對proposal進行簽名獲得signedproposal。

type proposal struct
2、通過endorserclient傳送到peer節點進行processproposal操作。首先對signedproposal進行一些檢驗:對header進行檢驗,對簽名進行校驗,對txid檢查,對msg type檢查。獲取channel header,signed header;判斷如果是scc,則不能呼叫invoke操作。

3、建立乙個ledger.txsimulator,進行模擬執行simulateproposal:

4、判斷chainid是否為「」,也就是說如果是scc則直接返回給sdk,如果不是則要進行背書:endorseproposal,呼叫escc進行背書。

5、結果返回給sdk,如果是invoke操作,則根據proposal,proposalresp建立envelope message,主要fill endorsements,構建chaincodeendorsedaction,簽名,傳送給orderer節點。

6、orderer節點的broadcast.handle處理broadcast connection的訊息:

7、kafka 開啟處理訊息:processmessagestoblocks,processregular,進行排序,createnextblock,writeblock。createnextblock主要給block進行賦值,包括header的 number,previoushash,datahash;data欄位,data為是envelope資料。writeblock時給block metadata進行賦值主要做一些簽名。

type block struct 

type blockheader struct

type blockdata struct

type blockmetadata struct

type metadata struct

9、peer節點的deliverblocks會接收到block。這個deliver連線的建立過程如下:

10、verifyblock,mcs.go,主要是校驗簽名集;然後會addpayload->payload_buffer.go:push(payload)-> readychan

11、在gossip初始化時會起乙個監聽協程來讀取readychan,然後把payload buffer裡的block 進行commit,validator:vscc,最後寫到資料庫。具體地為:state.go:newgossipstateprovider->go s.deliverpayloads(): case commitblock->s.ledger.storeblock->coordinator.go:c.validator.validate->commitwithpvtdata->addblock.

11、根據block建立gossip訊息,最後gossip(gossipmsg),同步到其他peer節點。

activiti 觸發執行流

1.流程觸發 execution exe runtimeservice.createexecutionquery processinstanceid pi.getid onlychildexecutions singleresult system.out.println 流程的當前節點 exe.ge...

shell的執行流控制

case 1 in word1 word1 action1 word2 word2 action2 action3 esac dnf install expect y 問題指令碼 bin bash read p what s your name name read p how old are you...

事件流(迴圈過程)執行流程

事件流 迴圈過程 按執行流程分為三步 1 捕獲階段 捕獲事件 遍歷,從根節點開始順序而下,檢測每個節點是否註冊了 同時flex將事件物件的currenttarget值改為當前正在檢測的物件,如果註冊了,則呼叫監聽函式。2 目標階段 檢測目標的 激發在目標物件本身註冊的監聽程式 3 冒泡階段 事件冒泡...