共计 2406 个字符,预计需要花费 7 分钟才能阅读完成。
一、目标
本文档基于中移链合约罕用开发,介绍了工程化开发智能合约的办法。本文档将从主动生成我的项目开展,适宜刚接触合约开发的开发人员入门工程化开发。
二、智能合约介绍
区块链作为一种分布式可信计算平台,去中心化是其最实质的特色。每笔交易的记录不可篡改地存储在区块链上。智能合约中定义能够在区块链上执行的动作 action 和交易 transaction 的代码。能够在区块链上执行,并将合约执行状态作为该区块链实例不可变历史的一部分。
因而,开发人员能够依赖该区块链作为可信计算环境,其中智能合约的输出、执行和后果都是独立的,不受内部影响。
三、术语解释
CMake
CMake 是一个跨平台的装置(编译)工具,能够用简略的语句来形容所有平台的装置(编译过程)。它可能输入各种各样的 makefile 或者 project 文件,能测试编译器所反对的 C ++ 个性,组态档取名为 CMakeLists.txt。相熟某个集成开发环境(IDE)的开发者能够通过 CMake 用规范的形式建构软件。
工程化开发
工程化是进步程序开发效率与品质的必由之路。工程化的开发我的项目次要体现在让我的项目文件以标准清晰的架构排布。
四、环境筹备
(一)齐全配置的本地开发环境
创立智能合约我的项目并编译部署须要齐全配置的本地开发环境,确保零碎能够运行 eosio 系列工具指令,如 eosio-cpp。
可应用的环境有:
Linux Distributions
Amazon Linux 2
CentOS Linux 8.x
CentOS Linux 7.x
Ubuntu 20.04
Ubuntu 18.04
macOS
macOS 10.14 (Mojave)
macOS 10.15 (Catalina)
具体搭建过程可参考 [中移链(基于 EOS)测试环境搭建]
(二)CMake 及相干依赖
如果环境中未装置 CMake、Make 等工具包,能够应用命令行语句进行装置:
Mac OS
下载 cmake 提供的安装包并装置,关上 cmake 点击菜单栏的 Tools->How to Install For Command Line Use,能够在界面中找到装置该命令行工具所需的语句,例如:
sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install
Ubuntu
在终端中应用以下语句下载并装置 cmake:
sudo apt install -y gcc g++ make cmake
CentOS
sudo yum install -y gcc gcc-c++ make cmake
五、开始创立工程
(一)主动创立
1、应用 eosio-init 指令初始化我的项目
要用 CMake 编译 EOSIO 智能合约,你须要一个 CMake 文件。要应用新的 eosio-init 工具生成目录构造存根,.hpp、.cpp 文件和 CMake 配置文件。
执行以下步骤主动创立一个架构明显的我的项目文件:
cd ~/biosboot/genesis
eosio-init --path=. --project=test_contract
–path= 我的项目文件夹创立的地位,. 示意就在以后门路下创立
–project= 我的项目名,本例中命名为 test_contract
2、查看我的项目文件
指令运行胜利后能够在指定门路下失去 test_contract 文件夹,其中寄存着我的项目预设的文件夹和文件:
文件夹
build
include
ricardian
src
文件
CMakeLists.txt
README.txt
(二)初始化文件简介
主动生成的初始化我的项目中存在一些默认生成的样例文件,次要内容为一个 hi 动作的实现,会在调用时打印出打招呼的账户名。
.hpp 文件中的内容如下:
#include <eosio/eosio.hpp>
using namespace eosio;
CONTRACT test_contract : public contract {
public:
using contract::contract;
ACTION hi(name nm);
using hi_action = action_wrapper<"hi"_n, &test_contract::hi>;
};
.cpp 文件中的内容如下:
#include <test_contract.hpp>
ACTION test_contract::hi(name nm) {
/* fill in action body */
print_f("Name : %\n",nm);
}
不难看出该初始化我的项目中的两个 C ++ 程序文件仅作为样例展现该智能合约工程中的文件寄存地位和编写格局。开发人员能够依据本人的须要依照此框架编写本人的智能合约文件。
(三)我的项目编译
运行以下指令编译我的项目:
cd build
cmake ..
make
失去编译胜利的后果后,会在 build 文件夹中生成用于部署合约的.wasm 和.abi 文件。
六、常见问题
因为版本问题 cmake 命令失败
应用 cmake 编译我的项目时失败,返回提醒为:
CMake Error in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as
cmake_minimum_required(VERSION 3.25)
should be added at the top of the file. The version specified may be lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
须要再 test_contract/CMakelist.txt 文件中增加如下语句,指明 cmake 版本:
cmake_minimum_required(VERSION 3.25)
电脑拜访 DDC 网络门户
ddc.bsnbase.com
-END-