博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
智能合约从入门到精通:Solidity语言的开发规范和开发流程
阅读量:7209 次
发布时间:2019-06-29

本文共 1967 字,大约阅读时间需要 6 分钟。

简介:上面介绍的在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.jsCopy

    常规开发中,使用目录对合约文件的功能进行分类,下面逐一介绍功能:

  • 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://blog.51cto.com/13544628/2137060

你可能感兴趣的文章
java代码getHostAddress .getHostName()的练习
查看>>
【转】一个孩子关于MaD的思考概述
查看>>
C 再识数组指针 指针数组的概念
查看>>
第5次作业
查看>>
倒计时
查看>>
JAVA必会算法--选择排序
查看>>
SEO基础问题:13.什么是关键词密度?
查看>>
Ruby gem install mysql 错误解决
查看>>
坑!!!
查看>>
web前端性能优化
查看>>
java基础-数组的折半查找原理
查看>>
挑战JavaScript正则表达式每日两题(2)
查看>>
个人网盘倒下去 企业网盘顶起来
查看>>
Redis的多种启动方式比较!
查看>>
C#读取excel文件数据丢失问题
查看>>
我的编程知识库
查看>>
【Linux实用技术】LFS6.3构建实录
查看>>
js实现页面跳转的几种方式
查看>>
块代码编程---开始使用块代码
查看>>
ASP.NET 发邮件方法
查看>>