EOS 智能合约开发初步-HelloWorld

根据EOS的wiki,我执行

eoscpp -n hello

试图创建一个空项目,报出如下错误

cp: cannot stat ‘/home/chen/eos/build/install/share/skeleton/.’: No such file or directory

于是在网上搜索到文章Problem with eoscpp - wrong paths,参考这篇文章后成功解决这个问题!
查看hello.cpp代码,只实现了init和apply函数,

#include <hello.hpp>

/**
 *  The init() and apply() methods must have C calling convention so that the blockchain can lookup and
 *  call these methods.
 */
extern "C" {

    /**
     *  This method is called once when the contract is published or updated.
     */
    void init()  {
       eosio::print( "Init World!\n" );
    }

    /// The apply method implements the dispatch of events to this contract
    void apply( uint64_t code, uint64_t action ) {
       eosio::print( "Hello World: ", eosio::name(code), "->", eosio::name(action), "\n" );
    }

} // extern "C"

init函数,在部署合约时执行打印消息,打印三次:
1, eosd收到一个新transaction
2 ,eosd开始产出区块
3,eosd把这个区块追加到区块链,如同在网络上接收到区块一样。
applay函数在向合约发送消息时打印消息。也打印三次,没看懂

接下来编译hello.cpp代码

cd hello
eoscpp -o hello.wast hello.cpp

假设你的钱包已经解锁并且有${account}的密钥,我的环境下有一个wallet1钱包和一个account1账户准备好的,之前备份好wallet1.wallet放到data-dir下面,重新启动eosd,

解锁钱包wallet1

eosc wallet open -n wallet1
eosc wallet unlock -n wallet1

查看钱包里的keys

 eosc wallet keys

返回:

[[
    "EOS55FiCrEu5rdtPUuUhVbDCvUcvYF64PYHh9Lj39TrH58WHj2yLG",
    "5KdT7YKf6p4aHqSqwtmGjvqdkQ2d4ZbX31F1mmLShbQ2eSUEe9n"
  ],[
    "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
    "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
  ],[
    "EOS7s1eAB9dbGnJzhhMbHnui1MA2PXbSycabio4JVDp9iJGAvRNSm",
    "5K5MhSgUbBCwDUdX3xRnZsBxapbq8CJ2uKvwS5kiMBchdmjY6Ea"
  ]
]

其中,一个是account1的owner key,一个是account1的active key,一个是inita账户的key
上面准备工作完成后,通过下面命令部署合约:

eosc set contract account1 hello.wast hello.abi

给合约发送消息:

 eosc push message account hello '"abcd"' --scope account1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 EOS智能合约的介绍1.1 所需背景知识1.2 EOS智能合约基础知识1.3 技术局限性 2 智能合约文件2....
    cenkai88阅读 30,615评论 5 28
  • 1. 账户与钱包1.1 创造并管理钱包1.2 生成EOS Keys并导入1.3 备份您的钱包1.4 创建账户 2....
    cenkai88阅读 4,020评论 1 7
  • 一、快速术语检索 比特币地址:(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串...
    不如假如阅读 16,174评论 4 87
  • 好生活就在眼前,好爱情还会远吗? 2017年8月28日,是属于中国的情人节!不管你是一个人在看这篇文章,还是俩个人...
    Lib丽丽吖阅读 513评论 0 0
  • 什么是作用域和执行上下文 说到 Javascript 中的作用域,通常一同出现的还有一个执行上下文(executi...
    唯泥Bernie阅读 3,351评论 2 6