美文网首页EOS区块链
EOS 智能合约部署一(游戏编写入门)2018.10

EOS 智能合约部署一(游戏编写入门)2018.10

作者: cowkeys | 来源:发表于2018-10-27 09:42 被阅读60次

    前言

    如果有eth合约经验,很容易理解eos合约的开发。区别如下:

    item ETH EOS 注意
    部署 一个账户部署无限个合约,只要有eth 一个账户只能部署一个合约,没有合约地址,所有接口均直接指向该账户
    语言 solidity 语言开发,类似js语言 C++
    费用 部署合约以及交易均收取手续费 手续费= gasprice*gaslimit 部署和交易均无费用,但是需要账户抵押eos来获取内存,网络和cpu
    web调用 metamask scatter 现在很多钱包有对dapp的支持

    前序步骤

    至少先熟悉 以下几个步骤:搭建测试网络,钱包创建、钱包锁定和解锁、转账等操作

    常用命令

    推荐资料 官网步骤 | 命令详解

    cmd meaning
    $ cleos wallet create --to-console 创建钱包
    $ cleos wallet open 打开钱包
    $ cleos wallet unlock 解锁钱包
    $ cleos wallet list 查看钱包列表
    $ cleos create key --to-console 生成一组公私钥
    $ cleos create account [creator] [name] [OwnerKey] [ActiveKey] 创建账号
    $ cleos wallet keys 查看钱包导入的key 公钥
    $

    开始编写合约 (先用一个helloworld合约来跑完流程,接着做一个抽牌的游戏)

    1. 先创建一个账号用来部署合约 使用eosio 来创建一个名为cont.hello 的账户, 以及两个测试用户bob, alice
    $ cleos create account eosio cont.hello EOS8TaHGPEGnWifY4aM23u9PytJXBMh8KNqDd9SCkT1yt7fDLm3wB
    # 若创建失败,可能是因为钱包未解锁 需使用解锁命令
    $ cleos create account eosio bob EOS8TaHGPEGnWifY4aM23u9PytJXBMh8KNqDd9SCkT1yt7fDLm3wB 
    $ cleos create account eosio alice EOS8TaHGPEGnWifY4aM23u9PytJXBMh8KNqDd9SCkT1yt7fDLm3wB
    
    1. 新建项目创建helloworld合约代码 cpp
      https://github.com/EOSIO/eos 项目下面 有一个contracts/eosiolib 目录,此目录是合约编写的必要库,需要放到项目路径下来进行调试编写。可见(官网示例) 学习基本语法介绍
      我的目录所处位置/Users/dapp/eos/eosproject/hello 最终的 helloworld 代码如下:
    #include <eosiolib/eosio.hpp>
    #include <eosiolib/print.hpp>
    
    using namespace eosio;
    
    class hello : public contract {
      public:
          using contract::contract;
    
          [[eosio::action]]
          void hi( account_name user ) {
             print( "Hello, ", name{user} );
          }
          [[eosio::action]]
          void hi2( account_name user ) {
             require_auth( user );
             print( "Hello, ", name{user} );
          }
    };
    EOSIO_ABI( hello, (hi))
    
    1. 编译
    $ eosio-cpp -o hello.wasm hello.cpp --abigen
    

    编译之后目录下会生成两个文件 hello.wasm 以及 hello.abi 关于部署合约的详情可参考(合约部署set)

    1. 部署
    # 使用绝对路径
    $ cleos set contract cont.hello /Users/dapp/eos/eosproject/hello -p cont.hello@active
    

    如无意外 合约已经部署上链了。

    1. 命令调用
    $ cleos push action cont.hello hi '["bob"]' -p bob@active
    

    正常操作下会显示返回值 >> Hello, bob

    相关文章

      网友评论

        本文标题:EOS 智能合约部署一(游戏编写入门)2018.10

        本文链接:https://www.haomeiwen.com/subject/ksdyzftx.html