第一个智能合约helloworld

文章参考//www.greatytc.com/p/46bb3b56c2da

官网教程

https://developers.eos.io/eosio-home/docs/your-first-contract

智能合约编译器安装(CDT)

root@ubuntu:#git clone --recursive https://github.com/eosio/eosio.cdt --branch v1.3.2 --single-branch

以下为当前版本,不指定版本号,在/root/目录下,在共享目录没有成功。你可以自己试试不同目录,编译时间有点长。

root@ubuntu:#git clone --recursive https://github.com/eosio/eosio.cdt --single-branch
root@ubuntu:#cd eosio.cdt
root@ubuntu:#sudo ./build.sh
root@ubuntu:#sudo ./install.sh

创建合约账户 helloworld

1.创建钱包eosio.wallet(上篇文章EOS私有链搭建已经创建好)
2.导入私钥

root@ubuntu:#cleos create key --to-console
Private key: 5HxKu3XVpVS6oFUq1dchzbpLPM4FYsRbkzaHCbUeGCcAzeR4tdo
Public key: EOS5Yn38kT1FYD5z2C7BC2BLWnhi8Ltac1g3J3MhyYdSLAUGgCn8A
root@ubuntu:#cleos wallet import -n eosio.wallet --private-key 5HxKu3XVpVS6oFUq1dchzbpLPM4FYsRbkzaHCbUeGCcAzeR4tdo
imported private key for: EOS5Yn38kT1FYD5z2C7BC2BLWnhi8Ltac1g3J3MhyYdSLAUGgCn8A

3.创建账户

cleos create account eosio helloworld EOS5Yn38kT1FYD5z2C7BC2BLWnhi8Ltac1g3J3MhyYdSLAUGgCn8A EOS5Yn38kT1FYD5z2C7BC2BLWnhi8Ltac1g3J3MhyYdSLAUGgCn8A -p eosio@active

编写智能合约软件

创建helloworld.cpp文件

#include <eosiolib/eosio.hpp>
#include <eosiolib/print.hpp>

using namespace eosio;

class hello : public contract {
  public:
      using contract::contract;

      [[eosio::action]]
      void hi( name user ) {
         print( "Hello, ", user);
      }
};

EOSIO_DISPATCH( hello, (hi))

编译wasm文件

root@ubuntu:#eosio-cpp -o hello.wasm hello.cpp --abigen

部署智能合约

root@ubuntu:#cleos set contract helloworld ./

执行合约操作

root@ubuntu:#cleos push action helloworld hi '["helloworld"]' -p helloworld
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 本篇文章,将跟大家介绍eos私链的激活、基础智能合约的安装,以及为大家演示转账等基础操作。还没有安装eos私...
    guaiguaihw阅读 2,515评论 3 2
  • eos项目(v1.0.9)主要可以分为以下八个模块:1.编译模块2.主程序模块3.依赖库模块4.插件模块5.智能合...
    vdes阅读 2,831评论 0 1
  • 忧忧木木期起---傻傻 白白虚虚瘦守---假假
    蒙古大傻阅读 291评论 0 0
  • 001 识别坏情绪:过分烦躁、过分生气、过分抑郁、过分内疚 在陷入情绪之前控制自己思考一下自己的情绪是否过激。发泄...
    冰棍儿嗝阅读 199评论 4 3
  • 我使用了以下方法,均未成功: 1.调用Animation的cancel()方法; 2.将播放动画的view inv...
    zhujunjun阅读 911评论 0 0