EOS 智能合约源代码解读 (7)合约开发示例
官方提供了一个工具eosiocpp,它可以按照固定的模板创建一个新的智能合约。eosiocpp可以创建2个合约文件(曾经是三个文件),它们仅仅包含了合约的框架。
1. HelloWorld合约代码如下:
testcc.hpp:
/*** @file* @copyright defined in eos/LICENSE.txt*/
#include <eosiolib/eosio.hpp>testcc.cpp:
#include <eosiolib/eosio.hpp>using namespace eosio;class [[eosio::contract("hello")]] hello : public contract {public:using contract::contract;[[eosio::action]]void hi( name user ) {print( "Hello, ", user);}
};EOSIO_DISPATCH( hello, (hi))
- EOS 合约中的动作都需要 [[eosio::action]] 属性来修饰
- EOSIO_DISPATCH 宏在 <eosiolib/dispatcher.hpp> 头文件中定义,该宏的第一个参数是合约的名字,第二个参数,是多个小括号 () 扩起来的多个动作的方法名。
2. 部署
step1. 编译合约
eosio-cpp -I include -o hello.wasm hello.cpp --abigen
step2. 创建账户
cleos create account eosio hello
EOS7qyuXyBtqMYLYBveB3APTiWeyu1d6Z4mTLX1mMP5ZU3kWUqXcJ -p eosio@active # -p指定账户的权限
step3. 部署合约
cleos set contract hello CONTRACTS_DIR/hello -p hello@active
step4. 调用合约
cleos push action hello hi '["bob"]' -p alice@active
参考
- EOS 合约基础教程 - Hello World
EOS 智能合约源代码解读 (7)合约开发示例相关推荐
- EOS 智能合约源代码解读 (10)token合约“几种关键操作”
1. create:负责创建资产 void token::create( const text_name& issuer, const asset& maximum_supply) { ...
- EOS 智能合约源代码解读 (1)总体说明
1. 基本定义 在eos私有节点操作中,我们通常是一个合约对应一个合约账户,并且一个账户中只能部署一个智能合约.如果在同一个账户部署多个合约,那么最后部署的合约会覆盖掉之前的合约.每个帐户都至少链接到 ...
- EOS 智能合约源代码解读 (11)wrap合约“action_wrapper类”
1. 功能 对于许多用例,需要从合同代码向另一个合同发送新操作.这是合同之间能够积极沟通的唯一途径.它为特定智能合约代码的特定操作创建"操作模板",然后可使用该模板来调用此操作. ...
- EOS 智能合约源代码解读 (6)合约之action
1. 动作 ( action ) 是 EOS 合约的灵魂,是 EOS 的基础组成单位 1.1 一个动作就是一个公开的 ( pubic ) 的 C++ 类的成员方法 必须使用 [[eosio::acti ...
- EOS 智能合约源代码解读 (5)class contract
1. 所有合约的基类 #define CONTRACT class [[eosio::contract]] // 合约 #define ACTION [[eosio::action]] //动作 #d ...
- EOS 智能合约源代码解读 (3)asset.hpp
1. 合约中关于资产的数据结构的定义 输入字符串: "10.0000 CUR" 输出:amount = 10, symbol(4,"CUR") /**asset ...
- EOS 智能合约源代码解读 (14)system合约“exchange_state.hpp”
1. 使用bancor数学创建一个在两种资产类型中的50/50的中继 namespace eosiosystem {using eosio::asset;using eosio::symbol;typ ...
- EOS 智能合约源代码解读 (10)token合约“简介”
1. 记录用户的token,比如有哪些代币 class [[eosio::contract("eosio.token")]] token : public contract {pu ...
- EOS 智能合约源代码解读 (9)boot合约
1. 作用 激活 protocol features 性质 activating desired protocol features prior to deploying a system contr ...
最新文章
- Java 性能调优的 11 个实用技巧
- 【 MATLAB 】Fourier Analysis and Filtering frame(傅立叶分析和滤波 框架)
- 基于数组的无锁队列(译)
- python入门作业编程题-python入门(一)作业
- linux 扩展zhu分区,Linux分区调整(LVM和非LVM环境中扩容和缩小)
- Memcached服务器的图形化管理工具
- android 判断手机为小米
- 框架学习与探究之AOP--Castle DynamicProxy
- stm32f407 6个串口dma_stm32之DMA
- 欧奈尔4个经典形态_股票K线图基础知识:图解4大经典K线组合形态
- 苹果计算机磁盘格式,Mac 上“磁盘工具”中可用的文件系统格式
- ES6学习笔记六(新增数据结构)
- 清明上河图轴卷图滑动
- maya! board_老司机都在用的30款maya常用插件
- Docker容器实现跨主机文件共享(NFS服务器)
- 弦截法 解高次方程 C语言/C++
- STM32F4串口通信
- 欢迎火狐FireFox正式进入中国
- 模拟NAND FLASH 读写BCH ECC校验
- 《神雕瞎驴》,金庸看后哭了^-^
热门文章
- 自定义注解和拦截器,实现接口限流防刷
- Python a,b = b,a 是怎么赋值的
- Android—— ScrollView 与 ListView 滑动冲突处理
- android camera入门,android 基础一 Camera1 预览、拍照
- 数据中心ups电源七个故障分析
- 供配电负荷计算方法详解
- 腾讯数据中心负责人揭秘:半年时间如何搭好“山洞鹅厂”
- python连接es数据库_Python Elasticsearch API操作ES集群
- 成功解决AttributeError: module ‘dask.array.numpy_compat‘ has no attribute ‘take_along_axis‘
- AI:2020年6月北京智源大会演讲视频回放集合——分享博主体会与总结