Hyperledger Fabric Chaincode 開發指的什么?Chaincode是什么呢?

區塊鏈高級技術專家群內部講座系列活動 。群內由區塊鏈相關團隊或組織的技術專家、學者和負責人等組成,目前僅限邀請加入 。分享內容會在 TechFirst 微信公眾號進行首發,歡迎關注 。下面小編給大家介紹一下 。
嘉賓介紹
李超,現就職于 IBM 中國系統開發部門,一直從事基于主機系統將認知計算與關系型數據庫進行結合的相關研究工作 。近一年來,一直在跟蹤學習 Blockchain相關技術,尤其是 Hyperledger 開源項目,具有豐富的 chaincode 開發經驗 。
講座內容
Page 1

Hyperledger Fabric Chaincode 開發指的什么?Chaincode是什么呢?


Hello,大家好 。非常榮幸能被保華大大邀請來到這里跟大家分享我個人對Hyperledger Fabric 1.0 之上 Chaincode 開發的一些理解 。
簡單自我介紹一下,我叫李超,是 IBM 軟件開發部門的一名研發工程師 。之所以接觸 Blockchain 技術,一開始完全是由于部門boss的推動,做了一些學習和demo的工作 。之后,看到這項技術的火爆,尤其是Hyperledger開源項目的極速發展,個人也就一直在堅持跟蹤學習這項技術的最新進展 。
這里有我的微信二維碼,非常歡迎添加好友多多交流 。
好了,進入正題 。我今天分享的內容的題目是Fabric1.0 Chaincode介紹 。除了介紹Chaincode程序編寫、調試的基本方法之外,我還加入了一些有關Chaincode原理的內容,希望能夠幫助大家更好地理解Chaincode,進而編寫出更加高效的Chaincode程序以及更加快速地調試自己的Chaincode程序 。
Page 2
Hyperledger Fabric Chaincode 開發指的什么?Chaincode是什么呢?


我把內容分成了三個部分 。內容包括:在fabric 中Chaincode是什么、如何編寫Chaincode程序以及如何調試Chaincode程序 。中間會穿插與Chaincode相關的重要概念介紹,以及Chaincode運行原理的介紹 。
Page 3
Hyperledger Fabric Chaincode 開發指的什么?Chaincode是什么呢?


首先是第一部分內容:在fabric中,Chaincode是什么呢?我覺得可以從以下幾個方面來理解 。
第一,編寫Chaincode程序實際上就是要編寫一個類,并且這個類要實現fabric預先定義的一個接口 。關于這個接口后面第二部分會有更詳細的介紹 。
第二,如何運行Chaincode程序呢?我們知道blockchain系統是一個網絡,由若干結點構成 。Fabric區塊鏈系統也不例外,而要運行Chaincode程序,就要把它首先部署到fabric系統的結點上 。也就是說,Chaincode程序是依賴于fabric系統結點的 。
第三點和第四點可以放在一塊來看 。對于一個區塊鏈系統來說,顯然,區塊鏈其中是最重要的組成部分 。右邊這個圖展示了最基本的區塊鏈結構:首先區塊鏈是由一個一個的區塊串接而成,每個區塊又是由若干的Transaction構成 。所以,可以說Transaction是一個區塊鏈系統中最基本的組成要素 。而在Fabric中,Chaincode的運行是生成Transaction的唯一來源,也因此Chaincode是外界與Fabric區塊鏈交互的唯一渠道 。由此可見chaincode的重要性 。
最后一點講的是Chaincode與智能合約的關系 。相信大家都聽說智能合約的概念,簡單來講智能合約就是用程序實現合約的內容,并且這個程序是事件驅動、有狀態的 。智能合約是早就出現的概念,早于區塊鏈提出 。但是,區塊鏈的出現為智能合約的實現提供了一個非常理想的環境 。而在Fabric中,Chaincode就是開發者實現智能合約的方式 。
Page 4
Hyperledger Fabric Chaincode 開發指的什么?Chaincode是什么呢?


這一頁是在fabric1.0中與Chaincode相關的幾個比較重要的概念 。
Channel是1.0增加的一個比較大的feature 。字面意思,通道 。流過通道的數據對于加入該通道的結點是共享的 。因此,對于加入同一通道的結點來說,就相當于構建了一條子鏈 。這條子鏈上的內容對于通道外的結點是不可知的 。并且,同一個peer結點可以加入不同channel 。而Chaincode的執行是基于channel進行的,在一條channel上chaincode執行的結果會被該channel上所有的結點同步到本地Ledger中 。

推薦閱讀