01
目的
本文档介绍了工程化开发智能合约项目的工程树目录,介绍了各个文件夹及文件的含义和用途。本文档将沿用之前文章中实现的地址簿合约内容,以初始化项目为例展开介绍,适合刚接触合约开发的开发人员用来了解智能合约项目,帮助其快速了解以及上手智能合约。
02
智能合约介绍
区块链作为一种分布式可信计算平台,去中心化是其最本质的特征。每笔交易的记录不可篡改地存储在区块链上。智能合约中定义可以在区块链上执行的动作action和交易transaction的代码。可以在区块链上执行,并将合约执行状态作为该区块链实例不可变历史的一部分。
因此,开发人员可以依赖该区块链作为可信计算环境,其中智能合约的输入、执行和结果都是独立的,不受外部影响。
03
术语解释
WebAssembly(WASM)
用于执行可移植二进制代码格式的虚拟机,托管在nodeos中。
应用程序二进制接口(ABI)
定义如何将数据编组进出WebAssembly虚拟机的接口。
CMake
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,组态档取名为CMakeLists.txt。熟悉某个集成开发环境(IDE)的开发者可以通过CMake用标准的方式建构软件。
04
目录树详解
(一)综述
在中移链合约常用开发介绍(二)多索引表的使用一文中,介绍了如何在智能合约中编写代码使用多索引表,完成一个可以增删改查的地址簿合约。该合约通过一个addressbook.cpp文件完成了所有代码,并不符合工程化开发的要求。
在本文中,我们将以工程化开发的方式重写这一合约,方便介绍各目录的含义和用途。
首先依旧是使用eosio-init命令创建addressbook项目。
eosio-init --path=. --project=addressbook
初次被创建的项目结构如下:
├── CMakeLists.txt c++编译描述文件
├── README.txt 引导文件
├── include
│ └── addressbook.hpp 项目头文件,包含表结构定义和接口定义
├── ricardian
│ └── addressbook.contracts.md 李嘉图合约,合约的数字文档
└── src
├── CMakeLists.txt c++编译描述文件
└── addressbook.cpp 项目源文件,包含接口实现