簡介:上面介紹的在Solidity中嵌入的內聯組合語言也可以單獨使用。實際上,它是被計劃用來作為編譯器的一種中間語言。本文我們將介紹開發智慧合約過程中Solidity語言的開發規範和開發流程。
Solidity作為編譯器的一種中間語言。在開發智慧合約時需要遵守相應的開發規範和開發流程。
開發規範
命名規範
目錄和檔案
-
目錄使用小寫,請勿使用特殊符號;
-
庫檔案和合約檔案統一以.sol為字尾;
-
合約檔名保持與合約名一致;
-
檔名採用駝峰命名(首字母大寫);
合約、庫檔案命名
-
合約名採用駝峰命名(首字元大寫),例如:UserManager、ActionManager;
-
方法的命名使用駝峰法(首字母小寫),例如:getNumber;
-
屬性的命名使用駝峰法(首字母小寫),例如:userName;
-
以雙下劃線__打頭的函式或方法作為內部合約呼叫方法;
-
合約library庫命名以字首Lib+結構體名稱,如:LibUser、LibAction;
常量和配置
-
常量以大寫字母和下劃線命名,例如 APP_PATH;
-
配置引數以小寫字母和下劃線命名,例如url_route_on和url_convert;
目錄結構
|-app(truffle服務目錄)
|-contracts(合約目錄)
| └─interfaces(抽象合約目錄)
|
| └─library(結構解析庫目錄)
|
| └─sysbase(公共合約目錄)
| |-OwnerNamed.sol(基礎合約,所有使用者業務合約,必須繼承此基礎合約)
| └─BaseModule.sol
|
| └─utillib(工具庫目錄)
| |-LibDB.sol
| |-LibDecode.sol
| |-LibInt.sol
| |-LibJson.sol
| |-LibLog.sol
| |-LibNIZK.sol
| |-LibNizkParam.sol
| |-LibPaillier.sol
| |-LibStack.sol
| |-LibString.sol
| └─Strings.sol
|
|-migrations(truffle釋出配置目錄)
|-test(測試指令碼目錄)
|-truffle.js
Copy
複製程式碼
常規開發中,使用目錄對合約檔案的功能進行分類,下面逐一介紹功能:
-
contracts truffle 標準工作目錄中的合約目錄,合約存放在此目錄下,如:UserManager.sol;
-
interfaces 存放抽象合約,如:IConsumerManager.sol;
-
library 存放struct結構庫檔案;
-
sysbase 儲存公共合約目錄,例如:OwnerNamed.sol;
-
utillib 存放工具庫,如:LibString.sol, LibLog.sol;
開發流程
- 合約介面定義
按照良好的程式設計習慣,在編寫業務方法前,首先定義介面,並交付給呼叫者。
- 資料結構定義
使用者定義的合約介面中,如果有比較複雜的輸入/輸出資料,就有必要提前定義一些資料結構,並提供操作這些資料結構的一些常用方法(主要是一些序列化成JSON字串的方法)。
- 業務合約編寫
實現合約介面定義,並實現使用者的業務邏輯。在業務合約的建構函式中,需要把業務合約註冊到模組合約中。
如果使用者只是想編寫業務合約,做學習,測試用,則可以把業務合約註冊到"juzix.io.debugModule"這個特殊名稱的模組合約中,則使用者可以不需要編寫模組合約,從而在JUICE客戶端IDE中直接呼叫業務合約的方法。
- 模組合約編寫
編寫模組合約,這是JUICE開放服務平臺的要求,以便管理使用者的DAPP應用、業務合約。在模組合約的建構函式中,需要把模組合約註冊到鏈上,並在建構函式中說明模組合約將會使用到的所有業務合約。
使用者編寫了模組合約、並部署到JUICE區塊鏈後,模組的名稱將會顯示在JUICE開放服務平臺的“我的應用”中,點選“我的應用”的某個應用,將會跳轉到使用者開放的DAPP應用。如何設定應用的跳轉URL,參考模組合約編寫https://open.juzix.net/api_doc/part03/example/modules.md
- 編譯部署、測試
通過JUICE客戶端,或者線上IDE,都可以完成編譯、部署、測試使用者合約。
參考內容:https://open.juzix.net/doc
智慧合約開發教程視訊:區塊鏈系列視訊課程之智慧合約簡介