简介

我们马上要进入智能合约的开发了,以太坊最初提供了智能合约的功能,并宣告区块链进入2.0时代,而EOS的智能合约更进一步,提供了更多的便利性和可能性。为了进一步了解智能合约,并进行开发,我们需要先准备好智能合约的开发环境,工欲善其事必先利其器,有了好的开发环境,可以加快我们的开发速度,降低bug率。

EOS的IDE介绍

EOS的智能合约是使用C++编写的,而编译是使用EOSIO官方出品的eosio.cdt来完成,所以最简单又最复杂的IDE就是一个编辑器+cdt工具。

简单是因为你只需要一个记事本软件,再装好eosio.cdt工具,配合命令行,就可以完成合约的开发了。

复杂是因为你如果需要更好的智能提示、缩进、换行、自动填充和代码关联……你需要自行安装很多插件并配置语言库等。

这次我们先介绍一个EOS中相对成熟的IDE环境,EOS Studio,使用现成的,而且配置很少,算是一个比较适合入门的工具了,但是没有本地环境稳定,算是各有千秋吧。

EOS Studio介绍

先给出官网地址,https://www.eosstudio.io/,可以说这是目前最成熟的EOS智能合约开发IDE了,图形化的界面,支持代码编辑、合约交互和链网络管理等。就算你不开发智能合约,也可以使用它来查主网数据或者调用合约。

之前我们说过EOS的运行环境目前是不支持windows的,所以windows上只能通过docker来运行。那么,EOS Studio提供了Mac、Windows和Linux的安装程序,一想便知是借助了docker技术来实现的。

借助docker技术,使得EOS的开发环境的搭建变得更加的简洁和便利,你可以更方便的更换EOSIO主程序和CDT的版本,也可以更加纯净的安装和删除。

而EOS Studio提供了两种使用方式,一种是WebIDE,可以直接在浏览器中进行开发,这种的使用体验将更接近于以太坊的remix,可以让开发人员在任何有网络的地方进行合约修改和调用。另一种就是传统的应用程序,安装到本地操作系统中,提供更加完整的IDE功能和测试的功能。

WebIDE

介绍

打开官网,正中间醒目的按钮Launch EOS Studio Web就是WebIDE的入口。

如果你无法显示IDE的内容,可能需要借助工具|科|学|上|网|才能打开。

主页面提供了很多便于初学者学习的功能,比如开发教程啊、EOS官方合约的源码,还有其他人开源出来的合约等。

网络管理

我们先来切换一下网络,默认是Cloud,是WebIDE自用的网络,等会儿我们登录再使用,先切换到主网(Mainnet)来看看其他功能吧。

切换以后可以看到主网的基本信息和目前最新出块信息了。

合约页

切换了主网,我们来看看导航栏的合约功能,默认选中的是eosio,也就是EOS的系统合约账号。

这个列表可以收藏我们关注的合约,这里我们先看看eosio合约吧。点击eosio进入合约页面。

合约页面功能丰富,可以同时打开多个合约,每个合约里可以进行action的调用、table的查询

如果你想调用action,那么你需要先登录,然后还有打开scatter,再完成网页上scatter的登录,然后你就可以使用你的私钥进行签名了,这部分我稍后再介绍。

账号页

我们现在来看看导航栏的账号功能,默认选中的还是eosio。

这里还提供了创建账号的功能,我们之前说过了EOS创建账号的特殊性,所以这里也需要你登录scatter后才能创建。


账号页的功能比较类似于区块链浏览器,都是和账号相关的信息和交易。

不过界面上还是提供了两个实用功能,一个是转账,一个是key管理。

登录账号

为了进一步演示WebIDE的功能,我们现在需要登录,点击导航栏上的人像,选择log in

这里使用的是github的账号授权登录,因为WebIDE的合约存储是依赖于github的,所以直接使用了github来作为账号登录。

登录以后,我们也顺带把scatter登录了,点击底部栏左侧钥匙旁边,然后授权scatter进行登录。

项目管理

登录后我们就可以使用项目管理的功能了,默认肯定是没有项目的,你可以通过首页的链接打开他人的或者官方的合约,也可以新建一个合约,

我这里已经有两个合约了,一个是我之前测试写的candy,一个是EOS官方的token合约。这里我们再新建一个test合约,点击New输入合约名即可。

我们看到,默认的为我们创建了头文件test.hpp和源码实现test.cpp,另外的.eosproj是项目文件,自动生成了一个README.md文件,他连abi和wasm文件都帮我们生成好了,不过是空文件。

项目配置

点击项目目录上的齿轮按钮进入项目的设置页面。

里面包含了两部分,构建配置和部署配置。这里具体的配置我先不做说明,在后面我们具体将合约的编译和发布的时候再详细说明。

编译

WebIDE的编译是通过请求其服务器上的服务进行编译,我们点击锤子图标进行编译。

然后等待构建成功就行了,这时abi和wasm文件就生成好了。

WebIDE中的构建有时不稳定,在我写这篇文章的时候就遇到了500错误或者编译很久无返回。

部署

我们需要先做一些准备工作。

  • 导入私钥

首先是导入私钥,点击底部栏左下角的钥匙图标。

打开了key管理页面,我们将要部署合约的账号私钥导入。

这里我们导入了官网testnet中我的一个账号hvzwqywduhbu的active私钥,这个账号已经购买了足够的内存和其他资源。

注意:这里的私钥管理安全性很低,不建议将主网的账号私钥通过这种方式导入,如果需要使用生产环境的账号,请使用scatter导入,并在页面上登录scatter即可。

  • 切换网络

切换到需要部署合约的账号所在的网络,我们这里使用Block.one,也就是官方testnet。

  • 收藏合约账号

打开账号页面,输入账号名,并收藏。我们这里使用的是hvzwqywduhbu,在搜索框搜索,然后点击右侧的五角星收藏。

  • 部署

合约已经编译成功后,abi和wasm文件准备就绪了,我们直接点击docker图标进行部署。

然后选择账号,这里我们选择hvzwqywduhbu。

最后就等待部署成功即可。

本地IDE

安装EOS Studio到本地操作系统,可以选择对应的安装包下载安装即可。默认安装程序会安装Docker、EOSIO主程序、CDT和系统合约。在官网首页里选择当前系统类型然后下载。

安装

打开安装程序我们可以看到需要安装docker,EOSIO主程序,CDT和系统合约。

我们逐个安装即可。

使用

本地使用方法与WebIDE类似,所以这里不再做重复介绍。本地有一个优势就是可以自启一个Local节点,然后测试合约也会很方便。当然,合约的编译和部署也会更加稳定一些。

总结

EOS Studio最初的设计其实是非常好的,加上功能也很全面,对于初学者来说,降低了开发和使用的门槛。

但是问题也很明显,提供的云服务经常有报错,合约的编译和部署也存在着很多问题,并不稳定。

所以在下一篇文章,我还是会介绍传统的简单而复杂的IDE环境搭建,这也是最服务开发人员使用习惯的IDE环境,敬请期待。

原文链接

EOS基础全家桶(十一)智能合约IDE-EOS_Studio的更多相关文章

  1. EOS基础全家桶(十二)智能合约IDE-VSCode

    简介 上一篇我们介绍了EOS的专用IDE工具EOS Studio,该工具的优势是简单,易上手,但是灵活性低,且对系统资源开销大,依赖多,容易出现功能异常.那么我们开发人员最容易使用的,可能还是深度定制 ...

  2. EOS基础全家桶(十四)智能合约进阶

    简介 通过上一期的学习,大家应该能写一些简单的功能了,但是在实际生产中的功能需求往往要复杂很多,今天我就继续和大家分享下智能合约中的一些高级用法和功能. 使用docker编译 如果你需要使用不同版本的 ...

  3. EOS基础全家桶(七)合约表操作

    简介 本篇我们开始来为后续合约开发做准备了,先来说说EOS内置的系统合约的功能吧,本篇将侧重于合约表数据的查询,这将有利于我们理解EOS的功能,并可以进行必要的数据查询. EOS基础全家桶(七)合约表 ...

  4. EOS基础全家桶(十)交易Action操作

    简介 区块链上的所有操作都是通过交易(Transaction)上链的,无论你是转账交易还是发起的智能合约的调用,而EOS和传统区块链不同的是EOS在一个交易里可以发起多个行为(Action),这使得E ...

  5. EOS基础全家桶(八)jungle测试网的使用

    简介 前面我们已经学习了一些EOS的基础知识了,但是在EOS主网上的很多操作(比如:抵押.赎回.买卖内存)都是需要EOS链被正式激活后才可使用,而激活EOS链还需要很多的准备操作,我打算在单独的一篇文 ...

  6. EOS基础全家桶(五)钱包管理

    简介 本篇我们将会学习EOS自带的命令行钱包的使用方法,我们将会使用cleos来控制keosd服务对本地钱包进行管理. 虽然现在市面上已经有很多支持EOS的钱包了,有Web钱包,有app钱包,还有浏览 ...

  7. EOS基础全家桶(六)账号管理

    简介 本篇我们会学习最基本的账号相关的操作,包括了创建账号和查询,关于账号资源的操作因为必须先部署系统合约,所以我们会留到后面单独写一篇来讲解. 6-EOS基础全家桶(六)账号管理 简介 账号介绍 账 ...

  8. EOS基础全家桶(十三)智能合约基础

    简介 智能合约是现在区块链的一大特色,而不同的链使用的智能合约的虚拟机各不相同,编码语言也有很大差异.而今天我们开始学习EOS的智能合约,我也是从EOS初期一直开发合约至今,期间踩过无数坑,也在Sta ...

  9. EOS基础全家桶(十五)智能合约进阶2

    简介 今天我们继续补充智能合约的进阶使用技巧,这次的主题是交易,合约内我们除了可以发起内联action的调用,很多使用还需要直接调用其他的合约action或者以交易的形式调用自身的action. 发起 ...

随机推荐

  1. 刷题记录:[V&N2020 公开赛]TimeTravel

    题目复现链接:https://buuoj.cn/challenges 参考链接:2020 年 V&N 内部考核赛 WriteUp V&N公开赛2020 writeup httpoxy ...

  2. pytorch seq2seq闲聊机器人加入attention机制

    attention.py """ 实现attention """ import torch import torch.nn as nn im ...

  3. 算法笔记刷题1(codeup 1934)

    准备6月份的拼题甲级中(本来现在这两天就考试了,但是因为疫情的原因延期了) 刚刚开始按算法笔记刷题,今天是探索codeup的第一天. 一开始并没有把多点测试当回事,直到一错再错,心态爆炸... 附上我 ...

  4. tensor求和( tensor.sum())

    1. torch.sum(input, dim, out=None) 参数说明: input:输入的tensor矩阵. dim:求和的方向.若input为2维tensor矩阵,dim=0,对列求和:d ...

  5. docker配置dns与容器的访问控制(6)

    Docker 没有为每个容器专门定制镜像,那么怎么自定义配置容器的主机名和DNS配置?秘诀就是它利用虚拟文件来挂载到容器的3个相关的配置文件. 进入容器内使用mount命令可以看到挂载信息,这种机制可 ...

  6. char * 转 wchar *

    ) ) https://github.com/ffftp/ffftp/commit/0b1ea7a23dc6c72d519edbdeb30f48b3c7c8e867

  7. QIntValidator没有最小值的限制,继承然后写个新类来控制最小值

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/firecityplans/article ...

  8. java switch用法

    为什么80%的码农都做不了架构师?>>>   Java 7中,switch的参数可以是String类型了,这对我们来说是一个很方便的改进.到目前为止switch支持这样几种数据类型: ...

  9. OOM的起点到终点

    前言 1.问题及现象 线上日志反馈内存溢出问题.根据用户反馈,客户操作一段时间之后,APP 内存溢出崩溃. 2.分析过程 (1) 分析线上日志,发现主要分两种: 第一种如下,可能是某个死循环导致内存不 ...

  10. Java之JVM(初学者)

    学习Java的第一次总结 1.Java程序的编译和执行 通过上图,我们轻易得出java执行过程:由javac编译为字节码文件,通过JVM转换为底层操作系统可识别的命令操作. 注意:①Java跨平台的始 ...