hello world合约
一、合约开发
我们编写一个简单的eos合约程序,这个程序只有基本的功能,即打印hello, world。以下是程序的代码:
#include <eosiolib/eosio.hpp>
using namespace eosio;
class hello : public eosio::contract {
public:
using contract::contract;
/// @abi action
void hi( account_name user ) {
print( "Hello, World!" );
}
};
EOSIO_ABI( hello, (hi) )
第1行引用了eosio标准库,eosio标准库定义了eos开发需要的一些基本数据结构、函数以及常用的宏。
第2行指定名字空间eosio,eosio标准库中定义的开发接口都在名字空间eosio中。
第4行定义了一个合约类,该类从contract类派生,contract类是在eosio标准库中被定义。
第8行注释使用了@abi,这个注释将被eosio编译工具eosiocpp使用,eosiocpp工具可以根据@abi注释来生成abi文件。
第9~11行,是该合约的方法函数,也被称为action,执行合约时需要指定方法以及参数,最终在合约的方法函数中被执行。在这里例子中,该方法只做了一件事情,调用eosio标准库接口打印hello, world。
第14行是一个宏,该宏定义了eos合约入口的标准写法,其展开后的代码如下:
extern "C" { \
void apply( uint64_t receiver, uint64_t code, uint64_t action ) { \
auto self = receiver; \