EOS 智能合约源代码解读 合约之action

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EOS 智能合约源代码解读 合约之action相关的知识,希望对你有一定的参考价值。

1. 动作 ( action ) 是 EOS 合约的灵魂,是 EOS 的基础组成单位

1.1 一个动作就是一个公开的 ( pubic ) 的 C++ 类的成员方法

  • 必须使用 [[eosio::action]] C++11 特性修饰,否则就是一个普通的类成员函数
  • 访问级别必须是公开的 public
  • 必须没有任何返回值,也不能返回任何值,也就是说,必须使用 void 作为返回值
  • 可以接受任意数量的参数
  • 必须在 EOSIO_DISPATCH 中导出

eg.

#include <eosiolib/eosio.hpp>

using namespace eosio;
using namespace std;

class hello:public eosio::contract {
public:
    using eosio::contract::contract;

    // 一个名为 hi 的动作,没有任何参数
    [[eosio::action]]
    void hi(){
    }

    // 一个名为 greeting 的动作,接受一个参数
    [[eosio::action]]
    void greeting(name to){}

    // 一个名为 age 的动作,虽然有返回值,但返回值会被合约忽略
    [[eosio::action]]
    void age() {
    }

    // 这不是一个动作,因为没有使用 [[eosio::action]] 修饰
    void born() {
        print(1990);
    }

    // 这虽然是一个动作,因为没有被导出,所以根本不会被执行到
    [[eosio::action]]
    void province() {
        print("北京");
    }
};

EOSIO_DISPATCH(hello,(hi)(greeting)(age)(born))

以上是关于EOS 智能合约源代码解读 合约之action的主要内容,如果未能解决你的问题,请参考以下文章

EOS 智能合约源代码解读 bios合约

EOS 智能合约源代码解读 class contract

EOS 智能合约源代码解读 (10)token合约“简介”

EOS 智能合约源代码解读 (11)wrap合约“wrap源代码”

EOS之记事本智能合约

EOS 智能合约源代码解读 boot合约