智能合约从入门到精通:Solidity语言的开发规范和开发流程

匿名 (未验证) 提交于 2019-12-03 00:40:02

简介: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客户端,或者在线IDE,都可以完成编译、部署、测试用户合约。

参考内容:https://open.juzix.net/doc

智能合约开发教程视频:http://edu.51cto.com/course/13403.html

原文:https://www.cnblogs.com/shjuzhen/p/9272832.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!