HyperLedger Fabric 1.4的SDK側(cè)交易簽名源碼分析

hyperledger fabric 1.4中所涉及到的實(shí)體包括如下:

fabric-ca:主要負(fù)責(zé)對網(wǎng)絡(luò)中實(shí)體的證書進(jìn)行維護(hù);

peer:主要負(fù)責(zé)智能合約的執(zhí)行、記錄賬簿;

Order:主要負(fù)責(zé)對記賬內(nèi)容進(jìn)行共識。

1.4架構(gòu)可以根據(jù)實(shí)際需求通過證書對網(wǎng)絡(luò)進(jìn)行安全域劃分管理,即通過證書形成一個(gè)個(gè)獨(dú)立的channel,對智能合約以及賬簿進(jìn)行分割管理,繼而實(shí)現(xiàn)多鏈結(jié)構(gòu)(每一個(gè)channel維護(hù)一條私有/聯(lián)盟鏈)。

1.4中的一條交易流程如下所示

①由客戶端發(fā)起交易請求;

②網(wǎng)絡(luò)中的peer節(jié)點(diǎn)選擇提交節(jié)點(diǎn)SP(可以固定、輪詢或者隨機(jī)),SP將相應(yīng)的交易請求發(fā)送給各個(gè)智能合約確認(rèn)節(jié)點(diǎn)EP;

簽名重點(diǎn)來了,這里查詢調(diào)用流程

evaluateTransaction(ContractImpl.java)->evaluate(TransactionImpl.java)->evaluate(SingleQueryHandler.java);->evaluate(QueryImpl.java)->queryByChaincode(Channel.java)->sendProposal()(Channel.java)->getSignedProposal(Channel.java)->signByteString(TransactionContext.java)->sign(TransactionContext.java)

    public byte[] sign(byte[] b) throws CryptoException, InvalidArgumentException {
        return signingIdentity.sign(b);
    }

簽名重點(diǎn)來了,這里交易調(diào)用流程

submitTransaction(ContractImpl.java)->submit(TransactionImpl.java)->sendTransactionProposal(TransactionImpl.java);->sendTransactionProposalToEndorsers(Channel.java)->getSignedProposal(Channel.java)->signByteString(TransactionContext.java)->sign(TransactionContext.java)

    @Override
    public byte[] sign(byte[] msg) throws CryptoException {
        return cryptoSuite.sign(super.user.getEnrollment().getKey(), msg); //私鑰和簽名內(nèi)容
    }

③各個(gè)智能合約確認(rèn)節(jié)點(diǎn)EP將相應(yīng)的執(zhí)行結(jié)果簽名并返回給提交節(jié)點(diǎn)SP,SP收集確認(rèn)結(jié)果;

④提交節(jié)點(diǎn)SP將收集到的結(jié)果發(fā)送給共識服務(wù)機(jī)構(gòu)(由Order節(jié)點(diǎn)組成的,執(zhí)行共識算法,確認(rèn)是否記鏈);

⑤共識服務(wù)機(jī)構(gòu)對結(jié)果進(jìn)行確認(rèn),并將相應(yīng)的結(jié)果返回給peer節(jié)點(diǎn),由peer節(jié)點(diǎn)根據(jù)返回結(jié)果決定是否記鏈。

總結(jié):目前sdk還是與錢包耦合度過高,以后有拆分的計(jì)劃。期待Fabric變得更好,更強(qiáng)壯。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容