Add Inline Actions
【Add Inline Actions】
1、为了使用 inline action,需要给 eosio.code 账号添加active权限。
To use the 'activeauthority inline you will need your contract's to give active authority to eosio.code` pseudo-authority
In order for the inline actions to be sent from addressbook, add the eosio.code permission to the contract's account's active permission.
cleos set account permission addressbook active '{"threshold": 1,"keys": [{"key": "EOS5NKJziczzVQefMxp3n1cp1X3FUegS7jw8LtxLvubZehqBKGiWT","weight": 1}], "accounts": [{"permission":{"actor":"addressbook","permission":"eosio.code"},"weight":1}]}' -p addressbook@owner
The eosio.code authority is a pseudo authority implemented to enhance security, and enable contracts to execute inline actions.
2、Notify方法
[[eosio::action]]
void notify(name user, std::string msg) {
require_auth(get_self());
require_recipient(user);
}
get_self:Get this contract name. 对于本例,就是addressbook。
require_recipient:对 name 账号调用本方法。
3、send_summary()方法
private:
void send_summary(name user, std::string message){
action(
//permission_level,
//code,
//action,
//data
);
}
The action constructor requires a number of parameters.
- A permission_level struct
- The contract to call (initialised using
eosio::nametype) - The action (initialised using
eosio::nametype) - The data to pass to the action, a tuple of positionals that correlate to the actions being called.
4、实现 send_summary
private:
void send_summary(name user, std::string message){
action(
permission_level{get_self(),"active"_n},
get_self(),
"notify"_n,
std::make_tuple(user, name{user}.to_string() + message)
).send();
}
make_tuple:a function available through std C++ library. Data passed in the tuple is positional, and determined by the order of the parameters accepted by the action that being called.
5、合约发布后,我们测试一下。
1)尝试插入数据
cleos push action addressbook upsert '["alice", "alice", "liddell", 21, "123 drink me way", "wonderland", "amsterdam"]' -p alice@active
我们发现会触发3个action。下图,第二个#表明 addressbook 触发了 notify, 第三个#表明 alice 触发了 notify。
executed transaction: e9e30524186bb6501cf490ceb744fe50654eb393ce0dd733f3bb6c68ff4b5622 bytes us
# addressbook <= addressbook::upsert {"user":"alice","first_name":"alice","last_name":"liddell","age":,"street":"123 drink me way","cit...
# addressbook <= addressbook::notify {"user":"alice","msg":"alicesuccessfully emplaced record to addressbook"}
# alice <= addressbook::notify {"user":"alice","msg":"alicesuccessfully emplaced record to addressbook"}
2)查看alice动作
cleos get actions alice
结果如下,有两个动作


参考:https://developers.eos.io/eosio-home/docs/inline-actions
Add Inline Actions的更多相关文章
- outlook使用inline style回复邮件
Reply with inline comments within the original message text When you reply to email messages in Outl ...
- 使用 Github Actions 自动部署 Angular 应用到 Github Pages
前言 最近在学习 Angular,一些基础的语法也学习的差不多了,就在 github 上新建了一个代码仓库,准备用 ng-zorro 搭个后台应用的模板,方便自己以后写些小东西时可以直接使用.前端项目 ...
- GitHub Actions in Action
GitHub Actions in Action https://lab.github.com/githubtraining/github-actions:-hello-world https://g ...
- Github Actions All In One
Github Actions All In One https://github.com/features/actions https://github.com/marketplace?type=ac ...
- [转] How to dispatch a Redux action with a timeout?
How to dispatch a Redux action with a timeout? Q I have an action that updates notification state of ...
- Angular2 ng2-smart-table
ng2-smart-table 入门 安装 你要做的就是运行以下命令: npm install --save ng2-smart-table 此命令将创建在你的`package.json`文件和安装包 ...
- [Win10应用开发] 如何使用Windows通知
消息通知,是一个应用中必不可少的组成部分.Win10下提供了多种消息通知机制,Toast通知只是其中一种.这篇博文和大家分享一下,如何使用Toast通知. 上图是一个基本的Toast通知,那我们该如何 ...
- BZOJ 3626: [LNOI2014]LCA [树链剖分 离线|主席树]
3626: [LNOI2014]LCA Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2050 Solved: 817[Submit][Status ...
- Android AppBar
AppBar官方文档摘记 2016-6-12 本文摘自Android官方文档,为方便自己及其他开发者朋友阅读. 章节目录为"Develop > Training > Best P ...
随机推荐
- Java多线程入门中几个常用的方法
一.currentThread()方法 currentThread方法就是返回当前被调用的线程. 该方法为一个本地方法,原码如下: /** * Returns a reference to the c ...
- idea xml版本修改问题
STEP 1.选中模块 STEP 2.file---->Project Structure---->Facets---->把相应模块的给删除"-"----> ...
- oracle 简单crud
-- 商品表 -- CREATE TABLE "SCOTT"."GOODS" ( "id" NUMBER NOT NULL, "n ...
- 访问google提示"您的连接不是私密连接"
直接访问google 提示这个,连subject 也变成连baidu 您的连接不是私密连接 攻击者可能会试图从 www.google.com 窃取您的信息(例如:密码.通讯内容或信用卡信息).了解详情 ...
- C++类中一个构造函数调用另一个构造函数
class A { int a; int b; int c; public: A(int aa, int bb) : a(aa), b(bb),c(0) { cout << "a ...
- 查看linux系统CPU及内存配置
总核数 = 物理CPU个数 X 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 查看物理CPU个数 cat /proc/cpuinfo| grep & ...
- .NET代码执行效率优化
NET性能优化方面的总结 从2004年底开始接触C#到现在也有2年多的时间了,因为有C++方面的基础,对于C#,我习惯于与C++对比.现在总结一些.NET方面的性能优化方面的经验,算是对这两年多的.N ...
- Firebug 没死,活在 Firefox DevTools 中
伯乐在线转注:2016年12月7日有一条<Firebug 宣布停止开发更新>的资讯,不少朋友误认为以后用不到 Firebug 了.其实在 2015 年 Firebug 已经在着手整合到 F ...
- 理念的创新——从keep和得到app谈起
浅谈keep创新之路 不得不说,这是一个健康越来越重要的时代,也是身体素质越来越被重视的一个年代.随着交通工具日新月异地发展,我们不太需要再徒步远行,甚至连骑自行车的机会也越来越少,这给我们的出行带来 ...
- __slots__用法
class Test(object): __slots__ = ("name","age") t = Test() t.name = "老王" ...