智能合約
在各業務彼此進行交互之前,必須先定義一套通用的合約,其中包括通用術語、數據、規則、概念定義和流程。將這些合約放在一起,就構成了管理交易各方之間所有交互的業務模型。
智能合約用可執行的代碼定義了不同組織之間的規則。應用程序調用智能合約來生成被記錄到賬本上的交易。搭建(punk2558)
使用區塊鏈網絡,我們可以將這些合約轉換為可執行程序(業內稱為智能合約),從而實現了各種各樣的新可能性。這是因為智能合約可以為任何類型的業務對象實現治理規則,以便在執行智能合約時自動執行這些規則。例如,一個智能合約可能會確保新車在指定的時間內交付,或者根據預先安排的條款釋放資金,前者可改善貨物流通,而后者可優化資本流動。然而最重要的是,智能合約的執行要比人工業務流程高效得多。
在上圖中,我們可以看到組織ORG1和ORG2是如何通過定義一個car智能合約來實現查詢、轉移和更新汽車的。來自這些組織的應用程序調用此智能合約執行業務流程中已商定的步驟,例如將特定汽車的所有權從ORG1轉移到ORG2。
一個智能合約定義在一個鏈碼中。而多個智能合約也可以定義在同一個鏈碼中。當一個鏈碼部署完畢,該鏈碼中的所有智能合約都可供應用程序使用。
從上圖中我們可以看到,vehicle鏈碼包含了以下三個智能合約:cars、boats和trucks;而insurance鏈碼包含了以下四個智能合約:policy、liability、syndication和securitization。以上每種智能合約都涵蓋了與車輛和保險有關的業務流程的一些關鍵點。在本主題中,我們將以car智能合約為例。我們可以看到,智能合約是一個特定領域的程序,它與特定的業務流程相關,而鏈碼則是一組相關智能合約安裝和實例化的技術容器。
賬本
以最簡單的方式來說,區塊鏈記錄著更新賬本狀態的交易,且記錄不可篡改。智能合約以編程方式訪問賬本兩個不同的部分:一個是區塊鏈(記錄所有交易的歷史,且記錄不可篡改),另一個是世界狀態(保存這些狀態當前值的緩存,是經常需要用到的對象的當前值)。
智能合約主要在世界狀態中將狀態寫入(put)、讀取(get)和刪除(delete),還可以查詢不可篡改的區塊鏈交易記錄。
讀取(get)操作一般代表的是查詢,目的是獲取關于交易對象當前狀態的信息。
寫入(put)操作通常生成一個新的業務對象或者對賬本世界狀態中現有的業務對象進行修改。
刪除(delete)操作代表的是將一個業務對象從賬本的當前狀態中移除,但不從賬本的歷史中移除。
智能合約有許多可用的API。但重要的是,在任意情況下,無論交易創建、讀取、更新還是刪除世界狀態中的業務對象,區塊鏈都包含了這些操作的記錄,且記錄不可更改。
開發
智能合約是應用程序開發的重點,正如我們所看到的,一個鏈碼中可定義一個或多個智能合約。將鏈碼部署到網絡中以后,網絡上的組織就都可以使用該鏈碼中的所有智能合約。這意味著只有管理員才需要考慮鏈碼;其他人都只用考慮智能合約。
智能合約的核心是一組交易定義。例如,在fabcar.js中,你可以看到一個創建了一輛新車的智能合約交易:
async createCar(ctx,carNumber,make,model,color,owner){
const car={
color,
docType:'car',
make,
model,
owner,
};
await ctx.stub.putState(carNumber,Buffer.from(JSON.stringify(car)));
}
在編寫您的第一個應用程序教程中,您可以了解更多關于Fabcar智能合約的信息。
智能合約幾乎可以描述所有與多組織決策中數據不可變性相關的業務案例。智能合約開發人員的工作是將一個現有的業務流程(可能是管理金融價格或交付條件)用JavaScript、GOLANG或Java等編程語言來表示成一個智能合約。將數百年的法律語言轉換為編程語言需要法律和技術方面的技能,智能合約審核員們不斷地實踐著這些技能。您可以在開發應用程序主題中了解如何設計和開發智能合約。
審核編輯 黃昊宇
-
區塊鏈智能合約
+關注
關注
4文章
426瀏覽量
11265
發布評論請先 登錄
相關推薦
評論