EOS基础全家桶(十一)智能合约IDE-EOS_Studio
简介
我们马上要进入智能合约的开发了,以太坊最初提供了智能合约的功能,并宣告区块链进入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的更多相关文章
- EOS基础全家桶(十二)智能合约IDE-VSCode
简介 上一篇我们介绍了EOS的专用IDE工具EOS Studio,该工具的优势是简单,易上手,但是灵活性低,且对系统资源开销大,依赖多,容易出现功能异常.那么我们开发人员最容易使用的,可能还是深度定制 ...
- EOS基础全家桶(十四)智能合约进阶
简介 通过上一期的学习,大家应该能写一些简单的功能了,但是在实际生产中的功能需求往往要复杂很多,今天我就继续和大家分享下智能合约中的一些高级用法和功能. 使用docker编译 如果你需要使用不同版本的 ...
- EOS基础全家桶(七)合约表操作
简介 本篇我们开始来为后续合约开发做准备了,先来说说EOS内置的系统合约的功能吧,本篇将侧重于合约表数据的查询,这将有利于我们理解EOS的功能,并可以进行必要的数据查询. EOS基础全家桶(七)合约表 ...
- EOS基础全家桶(十)交易Action操作
简介 区块链上的所有操作都是通过交易(Transaction)上链的,无论你是转账交易还是发起的智能合约的调用,而EOS和传统区块链不同的是EOS在一个交易里可以发起多个行为(Action),这使得E ...
- EOS基础全家桶(八)jungle测试网的使用
简介 前面我们已经学习了一些EOS的基础知识了,但是在EOS主网上的很多操作(比如:抵押.赎回.买卖内存)都是需要EOS链被正式激活后才可使用,而激活EOS链还需要很多的准备操作,我打算在单独的一篇文 ...
- EOS基础全家桶(五)钱包管理
简介 本篇我们将会学习EOS自带的命令行钱包的使用方法,我们将会使用cleos来控制keosd服务对本地钱包进行管理. 虽然现在市面上已经有很多支持EOS的钱包了,有Web钱包,有app钱包,还有浏览 ...
- EOS基础全家桶(六)账号管理
简介 本篇我们会学习最基本的账号相关的操作,包括了创建账号和查询,关于账号资源的操作因为必须先部署系统合约,所以我们会留到后面单独写一篇来讲解. 6-EOS基础全家桶(六)账号管理 简介 账号介绍 账 ...
- EOS基础全家桶(十三)智能合约基础
简介 智能合约是现在区块链的一大特色,而不同的链使用的智能合约的虚拟机各不相同,编码语言也有很大差异.而今天我们开始学习EOS的智能合约,我也是从EOS初期一直开发合约至今,期间踩过无数坑,也在Sta ...
- EOS基础全家桶(十五)智能合约进阶2
简介 今天我们继续补充智能合约的进阶使用技巧,这次的主题是交易,合约内我们除了可以发起内联action的调用,很多使用还需要直接调用其他的合约action或者以交易的形式调用自身的action. 发起 ...
随机推荐
- Youtube推荐算法的前世今生
第一阶段,基于User-Video图游历算法,2008年[1]. 在这个阶段,YouTube认为应该给用户推荐曾经观看过视频的同类视频,或者说拥有同一标签的视频.然而此时,YouTube的视频已是数千 ...
- Mysql列属性
列属性又称之为字段属性在mysql中一共有6个属性:null,默认值(default),列描述(comment),主键(primary key),唯一键(unique key)和自动增长 修改数据库字 ...
- PHP反序列化漏洞总结(二)
写在前边 之前介绍了什么是序列化和反序列化,顺便演示了一个简单的反序列化漏洞,现在结合实战,开始填坑 前篇:https://www.cnblogs.com/Lee-404/p/12771032.htm ...
- Go gRPC进阶-gRPC转换HTTP(十)
前言 我们通常把RPC用作内部通信,而使用Restful Api进行外部通信.为了避免写两套应用,我们使用grpc-gateway把gRPC转成HTTP.服务接收到HTTP请求后,grpc-gatew ...
- thinkphp5 -- _initialize()初始化控制器
public function _initialize() { parent::_initialize(); } public function __construct() { $; parent:: ...
- java并发中CountDownLatch的使用
文章目录 主线程等待子线程全都结束之后再开始运行 等待所有线程都准备好再一起执行 停止CountdownLatch的await java并发中CountDownLatch的使用 在java并发中,控制 ...
- c语言-----劫持自己02
在上一节 c语言-----劫持原理01 已经叙述了劫持原理,下边正式进入劫持实战 1. 需要实现的功能 在c语言中 system("notepad") 可以打开一个记事本 syst ...
- Codeforces Round #590
题目链接:Round #590 题目答案:官方Editorial.My Solution A. Equalize Prices Again 签到题还WA了一发,向上取整有点问题: //my wrong ...
- 图论--网络流--最大流 洛谷P4722(hlpp)
题目描述 给定 nn 个点,mm 条有向边,给定每条边的容量,求从点 ss 到点 tt 的最大流. 输入格式 第一行包含四个正整数nn.mm.ss.tt,用空格分隔,分别表示点的个数.有向边的个数.源 ...
- 从0开始搭建精灵宝可梦的检测APP
从0开始搭建精灵宝可梦的检测APP 本文为本人原创,转载请注明来源链接 环境要求 Tensorflow1.12.0 cuda 9.0 python3.6.10 Android Studio Anaco ...