c++ eos智能合约开发_EOS基础全家桶(十三)智能合约基础

本文介绍了EOS智能合约开发的基础,包括C++编程基础,CDT选择,创建HelloWorld合约,合约结构及类型,数据持久化,以及编译和发布的流程。适合初学者了解EOS智能合约的开发环境和基本步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介


智能合约是现在区块链的一大特色,而不同的链使用的智能合约的虚拟机各不相同,编码语言也有很大差异。而今天我们开始学习EOS的智能合约,我也是从EOS初期一直开发合约至今,期间踩过无数坑,也在Stack Overflow上提过问(最后自己解决了),在实际生产中也积累了很多经验,所以我会连续几周分多次分享合约开发的经验,今天先来点基础的。

一些C++的编程基础


EOS就是使用C++开发的,这也为它带来了诸多好处,而合约也沿用C++作为开发语言,虽然合约中无法直接使用Boost等框架(你可以自己引入,但这也意味着合约会很大,会占用大量账号的内存),但是我们还是可以使用很多C++的小型库,并伴随着eosio.cdt的发展,融入了更多实用的合约功能。

如果你之前没有使用C系列的开发语言做过开发,比如:C语言、C++或者是C#,那么你需要先学习下C语言的基本语法和数据结构,这里我不做展开,在我们的系列文章的开篇就介绍了我推荐的Learn EOS - c/c++ 教程英文版,有一定英语基础的朋友可以直接看这个,其他朋友也可以在网上找一些C++的入门教程看下。

如果你已经有了一定的C语言基础,那么写合约的话,你会发现需要的基础也并不多,依葫芦画瓢就能写出各种基础功能了,所以,你并不需要担心太多语言上的门槛,毕竟合约只是一个特定环境下运行的程序,你能用到的东西并不会很多。

CDT选择


EOS的早期版本进行合约开发还没有CDT工具,那时的合约借助的是源码中的工具eosiocpp,所以你看2018年的博客,进行合约编译都是用它,但你现在是见不到了。随着官方CDT的迭代,在CDT的1.4版本开始被官方推荐使用,CDT后面也经历了几个大的版本更新,逐步改善合约编写方式,更加趋于简洁、直观。

但是不同的CDT版本,也意味着编译器的不同,所以合约开发也会有所区别,比如一些语法变了,一些库名称变了,增加了一些新的标注……

我们的教程侧重还是介绍最新的语法,所以推荐使用1.6以上的版本。我也会尽量在后面的介绍中补充说明老的CDT的写法,方便大家对照网上其他老博客的合约。

来个HelloWorld


学习任何编程,我们都不能少了Mr.HelloWorld,先来给大家打个招呼吧。

#include using namespace eosio;class [[eosio::contract]] hello : public contract{public:    using contract::contract;    [[eosio::action]] void hi(name user)    {        print("Hello, ", user);    }};

基本合约结构及类型

hello合约就是一个最简单的合约了,而且还有一个可调用的action为hi。我们首先还是来介绍下一个合约的程序结构吧。

  • 程序头

包含了引入的头文件、库文件等,还有全局的命名空间的引入等。

#include using namespace eosio;

这里eosio库是我们的合约基础库,所有和eos相关的类型和方法,都在这个库里面,而这个库里面eosio.hpp是基础,包含了contract等的定义,所以所有的合约都要引入。

【CDT老版本】早期cdt版本中库名称不是eosio,而是eosiolib

默认的,我们引入了eosio的命名空间,因为eosio的所有内容都是在这个命名空间下的,所以我们全局引入,会方便我们后续的代码编写。

  • 合约类定义

其实就是定义了一个class,继承contract,并通过[[eo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值