第三篇 - EOS DAWN-V3.0.0 智能合约开发之Hello World

简介:

作者:黎跃春 | 孔壹学院创始人
视频网站:http://kongyixueyuan.com
微信搜索「kongyixueyuan」添加莉莉微信申请进群
黎跃春区块链博客:http://liyuechun.org

不管是C、C++、Java还是任何其他语言,一般刚开始学习的时候,我们都会从HelloWorld开始,这篇文章主要讲解EOS DAWN-V3.0.0 智能合约开发之Hello World

在看这篇文章之前,请先阅读下面两篇入门文章。

1. 编写合约代码

在桌面创建一个文件夹,比如:0418,用Atom打开0418文件夹。新建文件Hello.cpp文件,并将下面的源码拷贝到Hello.cpp文件中。

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

// 视频网站:http://kongyixueyuan.com
// 个人博客:http://liyuechun.org
// 公众号:区块链部落
// 进技术群,请加微信(kongyixueyuan)

//用eosio命名空间
using namespace eosio;

//所有的智能合约都继承自contract类
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. 生成.wast文件

liyuechun:Project yuechunli$ eosiocpp -o Hello.wast Hello.cpp
liyuechun:Project yuechunli$ ls
Hello.cpp    Hello.wast
liyuechun:Project yuechunli$ 

3. 生成.abi文件

liyuechun:Project yuechunli$ eosiocpp -g Hello.abi Hello.cpp 
Generated Hello.abi ...
liyuechun:Project yuechunli$ ls
Hello.abi    Hello.cpp    Hello.wast
liyuechun:Project yuechunli$
  • Hello.abi文件内容如下:
{
  "____comment": "This file was generated by eosio-abigen. DO NOT EDIT - 2018-04-18T08:15:50",
  "types": [],
  "structs": [{
      "name": "hi",
      "base": "",
      "fields": [{
          "name": "user",
          "type": "account_name"
        }
      ]
    }
  ],
  "actions": [{
      "name": "hi",
      "type": "hi",
      "ricardian_contract": ""
    }
  ],
  "tables": [],
  "clauses": []
}

4. 创建钱包账号

4.1 创建钱包
liyuechun:Hello yuechunli$ cleos wallet create
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5J3rx7Bfg9zb8Kf2owTytccFyJqtDTrqnUX8iBRRUvbwM8RyzRL"

PW5J3rx7Bfg9zb8Kf2owTytccFyJqtDTrqnUX8iBRRUvbwM8RyzRL必须保存好,解锁钱包时需要使用到这个密码。

4.2 创建两组key
liyuechun:Hello yuechunli$ ./cleos create key
-bash: ./cleos: No such file or directory
liyuechun:Hello yuechunli$ cleos create key
Private key: 5K7QdknUZsF9apdBhD8TDMZGJjw8zJ8esYwS173YyFRv2453Z9t
Public key: EOS5RU8VsYBLnN5snGeUKmt1sDDzpvQbGyW7LPP6qEryaFctYieCK
liyuechun:Hello yuechunli$ cleos create key
Private key: 5J8kComGiQHZyNmH6VvkHgtFggeQemazLpihKR4QW75DNkWTVdA
Public key: EOS5fqiC3VFAJ1riMrKf8vzD28nqd4EpXvZGpXt6YewEBnH8DYinG
4.3 向钱包导入私钥
liyuechun:Hello yuechunli$ cleos wallet import 5K7QdknUZsF9apdBhD8TDMZGJjw8zJ8esYwS173YyFRv2453Z9t
imported private key for: EOS5RU8VsYBLnN5snGeUKmt1sDDzpvQbGyW7LPP6qEryaFctYieCK
liyuechun:Hello yuechunli$ cleos wallet import 5J8kComGiQHZyNmH6VvkHgtFggeQemazLpihKR4QW75DNkWTVdA
imported private key for: EOS5fqiC3VFAJ1riMrKf8vzD28nqd4EpXvZGpXt6YewEBnH8DYinG
4.4 创建账户
liyuechun:cleos yuechunli$ ./cleos create account eosio liyc111 EOS5RU8VsYBLnN5snGeUKmt1sDDzpvQbGyW7LPP6qEryaFctYieCK EOS5fqiC3VFAJ1riMrKf8vzD28nqd4EpXvZGpXt6YewEBnH8DYinG

5. 部署合约

liyuechun:build yuechunli$ cleos set contract liyc111 ./contracts/Hello
Reading WAST/WASM from ./contracts/Hello/Hello.wast...
Assembling WASM...
Publishing contract...
executed transaction: 21d891e425f3d65852432e2b6a78146e2e2992a267c9f28c8ce56cd5dbea98f2  1632 bytes  2200576 cycles
#         eosio <= eosio::setcode               {"account":"liyc111","vmtype":0,"vmversion":0,"code":"0061736d0100000001370b60027f7e0060027e7e006001...
#         eosio <= eosio::setabi                {"account":"liyc111","abi":{"types":[],"structs":[{"name":"hi","base":"","fields":[{"name":"user","t...
liyuechun:build yuechunli$ cleos get code liyc111
code hash: e387951f9a18870f2c151fbceea5b279a3861bdabab58ea87a67296a8a6583d0
liyuechun:build yuechunli$ 

6. 执行合约

6.1 解锁钱包

PW5J3rx7Bfg9zb8Kf2owTytccFyJqtDTrqnUX8iBRRUvbwM8RyzRL是创建钱包是的密码。

liyuechun:build yuechunli$ cleos wallet unlock --password PW5J3rx7Bfg9zb8Kf2owTytccFyJqtDTrqnUX8iBRRUvbwM8RyzRL
Unlocked: default
6.2 执行合约
liyuechun:build yuechunli$ cleos push action liyc111 hi '{"user":"liyc1215"}' -p liyc111
executed transaction: 9abcaec2711ce31c693e5124af507f34aa666702bd5bb230ec31ddd6903248a8  232 bytes  102400 cycles
#       liyc111 <= liyc111::hi                  {"user":"liyc1215"}
>> Hello, liyc1215
liyuechun:build yuechunli$ 

7. 关注公众号获取最新视频教程

目录
相关文章
|
4月前
|
IDE 区块链 开发工具
智能合约开发环境搭建及Hello World合约
智能合约开发环境搭建及Hello World合约
75 1
|
区块链
FDF智能合约循环互助游戏开发源码(Solidity版)
FDF智能合约循环互助游戏开发源码(Solidity版)
|
存储 算法 区块链
dapp/lp/defi/ido/dao智能合约开发原理丨dapp/lp/defi/ido/dao智能合约系统开发(稳定版)及详细源码
区块链作为一种新型的技术组合,综合了P2P网络、共识算法、非对称加密、智能合约等新型技术,是一种在对等网络(也称分布式网络、点对点网络)环境下,通过透明和可信的规则,构建可追溯的块链式数据结构,具有分布式对等、链式数据块、防伪造和防篡改、可追溯、透明可信和高可靠性的典型特征,其技术特性
|
Rust 安全 JavaScript
Go 核心团队 Russ Cox "驳斥"AWS 博文作者 :对 Go 存在严重误导!
Go 核心团队 Russ Cox "驳斥"AWS 博文作者 :对 Go 存在严重误导!
112 0
Go 核心团队 Russ Cox "驳斥"AWS 博文作者 :对 Go 存在严重误导!
|
Go 区块链
以太坊系列之十六:golang进行智能合约开发
以太坊系列之十六: 使用golang与智能合约进行交互 以太坊系列之十六: 使用golang与智能合约进行交互 此例子的目录结构 token contract 智能合约的golang wrapper 部署合约 1.
2069 0
|
区块链 数据安全/隐私保护
《区块链DAPP开发入门、代码实现、场景应用》笔记4——Ethereum Wallet中部署合约
账号创建完成之后,账号余额是0,但是部署合约是需要消耗GAS的,因此需要获取一定的以太币才能够继续本次实现。
1931 0
|
存储 区块链 数据安全/隐私保护
《区块链DAPP开发入门、代码实现、场景应用》笔记3——Ethereum Wallet的安装
以太坊的钱包需要下载和安装才能够使用,属于比较繁琐的开发环境,但是其优势也比较明显,那就是可以直接与测试或者正式的以太坊公链环境进行交互,并且可以直接显示交互结果。
1384 0
|
监控 前端开发 API
Bytom Dapp 开发笔记(三):Dapp Demo前端源码分析
本章内容会针对比原官方提供的dapp-demo,分析里面的前端源码,分析清楚整个demo的流程,然后针对里面开发过程遇到的坑,添加一下个人的见解还有解决的方案。 储蓄分红合约简述 为了方便理解,这里简单说说储蓄分红合约的内容,具体可以查看储蓄分红合约详细说明,储蓄分红,顾名思义就是储蓄之后,当达到一定的时间,按照比例返回本息这样的意思,所以demo中拆分成saving(储蓄)与profit(提现)两个页面,本章内容是针对合约交易的提交,所以只针对储蓄页面说明。
1159 0
|
区块链
EOS 智能合约开发实践(一)EOS钱包的简单使用
##EOS介绍: EOS,全称Enterprise Operation System,即商用分布式操作系统。EOS是一种全新的区块链架构,旨在实现分布式应用的性能扩展。注意,它并不是像比特币和以太坊那样的货币,而是基于EOS软件项目之上发布的代币,被称为区块链3.0。 ![eos (1).png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc
1279 0