c++ eos智能合约开发_EOS开发完全解析(六):手摸手实现第一个EOS智能合约——Hello EOS...

本文介绍了如何在EOS上开发智能合约,包括安装eosio.cdt,使用Sublime编辑器,编写简单的C++合约代码,将合约编译成WebAssembly,创建并部署合约到指定账号,以及执行合约。重点讲解了EOS智能合约的开发流程,适合初学者入门。
摘要由CSDN通过智能技术生成

一、概述

EOS智能合约由C++编写,所以真正商业开发的时候,肯定是需要全面学习C++语法的,通过最近爆出的越来越多的合约漏洞我们就知道问题的严重性了。可以毫不客气的说,写智能合约要比写以往任何代码都要更加认真、细致,因为这是直接跟金钱打交道!

我们今天讲的是实现EOS的第一个智能合约,所以重点在于讲解EOS上智能合约的开发流程,而不是内在实现逻辑,因此会用最简单的例子(20行以内搞定),以保证让更多的人理解整个EOS智能合约开发流程。

二、实现

2.1 安装eosio.cdt

由于EOS虚拟机是用WebAssembly实现的,但是EOS智能合约却是由C++编写的,所以我们需要将C++代码转换为WebAssembly虚拟机能执行的代码(wasm),该工具就是用来完成该转换的。

eosio.cdt源码地址:https://github.com/EOSIO/eosio.cdt/

官方推荐了几种安装方式,根据自己的系统环境选择即可,浪哥选择了一种装逼的方式,直接下载源码编译。

$ git clone --recursive https://github.com/eosio/eosio.cdt

$ cd eosio.cdt

$ ./build.sh

$ sudo ./install.sh

2.2 安装Sublime编辑器

编辑器并非必须用Sublime,只要能输入文本即可,浪哥主要是习惯用Sublime了。 Sublime Linux安装。

2.3 代码实现

该代码很简单,简单到浪哥是直接从EOS官网Copy过来的。这段代码实现的功能就是传入一个eos账号,然后打印出来。重点关注一下最后一句代码EOSIO_DISPATCH( hello, (hi)),这句代码的意思就是发布的智能合约名称叫hello,被调用的方法叫hi。

#include

#include

using namespace eosio;

class hello : public contract {

public:

using contract::contract;

[[eosio::action]]

void hi( name user ) {

require_auth( user );//认证账号,确保调用者是本人

print( "Hello, ", name{user});

}

};

EOSIO_DISPATCH( hello, (hi))

2.4 编译代码

打开合约所在目录,执行如下指令:

eosio-cpp -abigen hello.cpp -o hello.wasm

执行成功后,会生成两个文件,分别以wasm和api结尾。

2.5 创建账号

部署合同时,会将其部署到帐户,我们这里创建一个名为hello的账号。账号创建流程不解释,不明白的童鞋,回头复习一下之前的教程。 EOS开发完全解析(三):EOS账号创建

2.6 部署合约

./cleos set contract hello ~/contracts/hello -p hello@owner

这句代码的意思将hello这个合约部署到hello这个账号,授权方式是owner权限。温馨提示:授权方式建议用active即可,这里由于浪哥导入钱包的时候用的是owner的私钥,所以只能用owner部署。

2.7 执行合约

./cleos push action hello hi '[eosio]' -p eosio@active

这句代码的意思是调用hello合约的hi方法,参数为eosio,授权账号为eosio。

我们可以看到两边的控制台都打印了Hello, eosio。温馨提示:控制台默认不会打印输出内容,我们需要修改config.ini文件,该文件目录在~/.local/share/eosio/nodeos/config,将contracts-console = true。

至此我们就完成了一个完整的EOS智能合约开发流程,就是这么自信!

三、总结

有木有发现一个现象,我们目前对EOS的所有操作,都是基于命令行的,但是现有的Dapp几乎都是网站操作,那么他们又是怎么实现的呢?没错,这就是我们下一讲的重磅内容——JS调用EOS智能合约。获取最新、最全的EOS开发教程请关注微信公众号:区块链浪潮之巅——一个集项目分析与区块链技术开发于一体的公众号。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值