请允许我先讲个段子:
某程序员退休后决定练习书法,于是重金购买文房四宝。一日,饭后突生雅兴,一番研墨拟纸,并点上上好檀香。定神片刻,泼墨挥毫,郑重地写下一行字:hello world!
是的,今天我们要和智能合约,说一声Hello world!
1 准备合约文件
1) 在blockchain
目录下,新建一个目录eos-contracts
,用于存放智能合约文件。
2)在eos-contracts
目录下,新建文件夹hello
。
3)在hello
文件夹内,新建文件hello.cpp
。
4)编辑hello.cpp
内容如下:
#include <eosiolib/eosio.hpp>
#include <eosiolib/print.hpp>
using namespace eosio;
class hello : public eosio::contract {
public:
using contract::contract;
// @abi action
void hi (account_name user) {
print("Hello, ", name{user});
}
};
EOSIO_ABI (hello, (hi))
2 编译合约
编译合约使用eosio自带的编译工具eosiocpp
来进行,该工具位于~/eos/build/tools
目录下,我们通过修改profile文件,来将该工具配置到环境配置中,方便使用:
请打开/etc/profile
文件,将以下内容添加到行尾保存,然后重启服务器即可:
export PATH="$PATH:/home/zilly/blockchain/eos/build/tools"
这时候应该就可以直接使用eosiocpp
工具了。
我们用以下命令进行编译:
eosiocpp -o hello.wast hello.cpp
eosiocpp -g hello.abi hello.cpp
编译完成后,hello
目录下应该有以下四个文件:
hello.abi hello.cpp hello.wasm hello.wast
3 上传合约
上传合约使用的工具为cleos set contract
,使用myaccount
账户的active
权限上传,具体如下:
cleos set contract myaccount ../hello -p myaccount@active
合约部署成功后有如下提示:
合约部署完成注意,由于上一篇中介绍过,myaccount
的密钥存储在本地钱包mywallet
中,所以要先解锁本地钱包。
4 测试合约——Say Hello!
向刚才部署的hello发送一个用户名,合约会回你一句:Hello,×××。就表示成功啦。
cleos push action myaccount hi '["wangyue"]' -p myaccount@active
结果:
2018-09-04 15-08-46屏幕截图.png成功!
5 补充
部分同学反应说,其他正常,唯独看不到那一句Hello,wangyue
?
是因为启动nodeos
时,没有给加上参数--contracts-console
,请停止nodeos
,然后在最后带上参数--contracts-console
启动,然后再试试,是不是ok了?
本篇完。
我是王越,一枚坚持日更技术文章的区块链小白,欢迎加我微信361757(暗号EOS),一起进群交流,共同进步!
网友评论