交易所开发如何编写智能合约代码(国王小组)
编写合约
1、创建文件
创建智能合约的过程中,通常会创建两个文件,分别是包含智能合约类声明的头文件.hpp,以及包含智能合约操作实现的文件.cpp。如果代码内容十分简单时,也可以直接在一个.cpp文件中编写声明和实现。此处我们仅用一个.cpp文件来展示hello样例。但往后的程序都应采用规范的声明实现分离写法。
创建一个名为hello的新文件夹来存储您的智能合约文件,并进入目录:
mkdir hello
cd hello
创建新文件hello.cpp:
touch hello.cpp
使用您的文本编辑器打开它后,可以开始编写智能合约代码。
2、编写代码
编写智能合约代码,主要包括以下四个步骤:
(1)使用include导入 EOSIO 基础库
include <eosio/eosio.hpp>
eosio.hpp中包含编写一个智能合约所需要的基础类,例如eosio::contract。
(2)创建一个类,并使它继承eosio::contract
使用[[eosio::contract]]属性通知EOSIO.CDT这是一个智能合约。
添加一行代码:
class [[eosio::contract]] hello : public eosio::contract {};
这表明hello作为一个智能合约,公有的继承了eosio::contract类型。
(3)添加公共访问说明符和使用声明
在C++的类中,可以声明公有、私有、保护三种类型的类成员和类成员函数。其中,构造函数是在类被创建时需要运行的类成员函数。我们创建的hello类作为eosio::contract的派生类(子类),可以继承基类(父类)的接口和实现。
使用using添加一行代码表示声明了eosio::contract的默认基类构造函数:
public:
using eosio::contract::contract;
(4)添加动作hi
使用[[eosio::action]]通知 EOSIO.CDT 这是一个合约动作。
添加以下代码:
[[eosio::action]] void hi(eosio::name user){
print("Hello, ", user);
}
在EOSIO中,智能合约的动作action就类似于C++中的类成员函数。此处添加的hi动作功能为:接收一个类型为eosio::name的参数,打印与该参数打招呼的信息。其中eosio::print是包含在eosio/eosio.hpp中的函数,可以直接使用。
(5)保存文件
现在,hello.cpp文件应该如下所示:
include <eosio/eosio.hpp>
class [[eosio::contract]] hello : public eosio::contract {
public:
using eosio::contract::contract;
[[eosio::action]] void hi( eosio::name user ) {
print( "Hello, ", user);
}
};