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 智能合约源代码解读 (6)合约之action相关推荐

  1. EOS 智能合约源代码解读 (10)token合约“几种关键操作”

    1. create:负责创建资产 void token::create( const text_name& issuer, const asset& maximum_supply) { ...

  2. EOS 智能合约源代码解读 (1)总体说明

    1. 基本定义 在eos私有节点操作中,我们通常是一个合约对应一个合约账户,并且一个账户中只能部署一个智能合约.如果在同一个账户部署多个合约,那么最后部署的合约会覆盖掉之前的合约.每个帐户都至少链接到 ...

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

    1. 功能 对于许多用例,需要从合同代码向另一个合同发送新操作.这是合同之间能够积极沟通的唯一途径.它为特定智能合约代码的特定操作创建"操作模板",然后可使用该模板来调用此操作. ...

  4. EOS 智能合约源代码解读 (7)合约开发示例

    官方提供了一个工具eosiocpp,它可以按照固定的模板创建一个新的智能合约.eosiocpp可以创建2个合约文件(曾经是三个文件),它们仅仅包含了合约的框架. 1. HelloWorld合约代码如下 ...

  5. EOS 智能合约源代码解读 (5)class contract

    1. 所有合约的基类 #define CONTRACT class [[eosio::contract]] // 合约 #define ACTION [[eosio::action]] //动作 #d ...

  6. EOS 智能合约源代码解读 (3)asset.hpp

    1. 合约中关于资产的数据结构的定义 输入字符串: "10.0000 CUR" 输出:amount = 10, symbol(4,"CUR") /**asset ...

  7. EOS 智能合约源代码解读 (14)system合约“exchange_state.hpp”

    1. 使用bancor数学创建一个在两种资产类型中的50/50的中继 namespace eosiosystem {using eosio::asset;using eosio::symbol;typ ...

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

    1. 记录用户的token,比如有哪些代币 class [[eosio::contract("eosio.token")]] token : public contract {pu ...

  9. EOS 智能合约源代码解读 (9)boot合约

    1. 作用 激活 protocol features 性质 activating desired protocol features prior to deploying a system contr ...

最新文章

  1. linux 编译sqlitecpp,编译安装sqlite3数据库
  2. python操作系统-python 操作系统
  3. 3.1.3 覆盖与交换
  4. 回溯法(其实是递归)
  5. 20、21_链式法则、MLP(多层感知器模型)反向传播
  6. 分布式缓存 - hash环/一致性hash
  7. C# 获取鼠标相对当前窗口坐标的方法
  8. linux系统遵循以下哪项协议,实务(互联网技术)通信工程师考试习题库
  9. 随机排列_“按字母顺序排列”其实是种随机顺序
  10. python中对比数组长度_在Python中检索数组长度的首选方法
  11. 蜜汁问题?差异基因分析谁比谁有差别吗?
  12. 关于如何在word中写公式的方法
  13. DROP TABLE ** CASCADE CONSTRAINTS PURGE删除表的时候级联删除从表外键
  14. linux程序打桩,一文搞懂linux的库打桩
  15. 第114天:Ajax跨域请求解决方法(二)
  16. atitit 英文与中文与阿拉伯文的简化解决方案.docx
  17. 空硬盘恢复linux,linux使用foremost恢复文件,硬盘恢复
  18. 青岛理工大学转专业到计算机难不难,2021年青岛理工大学大一新生转专业及入学考试相关规定...
  19. bm算法好后缀 java实现_BM算法 | Depeng's Blog
  20. python 指定证书验证_Python SSL证书验证问题解决方案

热门文章

  1. Android——怎么在一个 Activity 中销毁另外一个 Activity
  2. Android --- RecycleView 中默认选择第一个 item,点击第 2 个 item 时改变其字体样式,其余的 item 的字体样式恢复默认
  3. python2.7解释器安装教程_Python解释器安装教程以及环境变量配置
  4. word受权限保护无法打开_双击文档无法打开到底是啥毛病?简单一招解决
  5. java swing鼠标事件监听_java swing鼠标监听问题
  6. TF之DNN:TF利用简单7个神经元的三层全连接神经网络【2-3-2】实现降低损失到0.000以下
  7. DL之SoftmaxWithLoss:SoftmaxWithLoss算法(Softmax+交叉熵误差)简介、使用方法、应用案例之详细攻略
  8. Competition——AI:国内外人工智能比赛平台以及竞赛类型、竞赛题目、举行时间等之详细攻略(最全+ing)
  9. 成功解决Instructions for updating: Use `tf.global_variables_initializer` instead.
  10. 《疯狂Java讲义》8