从零开始学EOS应用开发Dapp开发

【EOSIO】智能合约Hello World!

2018-09-04  本文已影响32人  面壁者Z

请允许我先讲个段子:

某程序员退休后决定练习书法,于是重金购买文房四宝。一日,饭后突生雅兴,一番研墨拟纸,并点上上好檀香。定神片刻,泼墨挥毫,郑重地写下一行字: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),一起进群交流,共同进步!

上一篇 下一篇

猜你喜欢

热点阅读