1. 程式人生 > >智能合約從入門到精通:Solidity語言的開發規範和開發流程

智能合約從入門到精通:Solidity語言的開發規範和開發流程

truct 例如 內聯 命名 libjson 通過 int 復雜 入門

簡介:上面介紹的在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,參考模塊合約編寫。
  • 編譯部署、測試
    通過JUICE客戶端,或者在線IDE,都可以完成編譯、部署、測試用戶合約。

參考內容:https://open.juzix.net/doc

智能合約開發教程視頻:區塊鏈系列視頻課程之智能合約簡介

智能合約從入門到精通:Solidity語言的開發規範和開發流程