EOS 开发新工具 Web IDE,一键进入开发调试

EOS 开发新工具 Web IDE,一键进入开发调试

EOSC 主网

朝着去中心化的高性能智能合约平台的方向持续演进

关注

EOS 开发新工具 Web IDE,一键进入开发调试

Web IDE 是什么?

各位小伙伴对 IDE 肯定不陌生,主要是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。

web IDE 则是将 IDE 里面除用户交互之外的功能全部移到了后台,开发人员在浏览器上可以像在本机一样调试、编译、运行程序,并且不会受系统环境和机器性能的限制。

EOS 开发新工具 Web IDE,一键进入开发调试

(图为一款 web IDE 的系统架构)

目前的 web IDE 主要有 AWS Cloud9、Cloud Studio、Eclipse Che、Gitpod 等,这些 web IDE 各有千秋,其中 Gitpod 是目前 web IDE 中对 Github 上的项目支持最好的,也是 eosio 主推的一款产品。并且 Gitpod 对于非商用的开发者,每月会有 100 小时的免费使用时间,本文的讲解,也会以 Gitpod 为例(下文中提到的 web IDE,在没有特指的情况下,全部为 Gitpod)

关于 Gitpod,可以参考 Gitpod 说明文档。(https://www.gitpod.io/docs/)

为什么要使用 Web IDE

1. 环境搭建及运行节点门槛

对于很多区块链爱好者来说,想要搭建一个简单的环境来了解一个区块链项目,很大程度上会因为搭建环境以及初次运行过程中的各种问题而退缩。

对于智能合约开发者来说,很多时候会因为初次运行,或者环境切换等原因,在这个过程中耗费很多不必要的时间成本。

而 Web IDE 的出现,会让这些问题不再成为麻烦。拿 eosio 来说,想要启动一个节点,并且在节点上部署开发好的智能合约,并不是一件很简单的事,需要下载代码、安装依赖、编译代码、启动节点、编译合约、然后部署。在这个过程中,可能会出现非常多的问题。

EOSIO 2 官方更新后,使用 Web IDE,只需要一键,就可以开始开发调试智能合约,消除开发人员的入门障碍。它在云中运行,使新开发人员能够建立智能合约和 Web 应用程序开发环境以及完全集成的单节点个人测试网,因此他们可以在几分钟之内从入门到构建。

2. 启动节点的机器性能要求

在计算机上运行一个 eos 的节点,是非常耗费性能的,很多 PC 机可能根本没法成功运行一个 eos 的节点,更不用说同时还打开 IDE 调试智能合约,而 Web IDE 将这些对机器性能的要求移到了后台,前端仅仅是一个交互页面。

3. 随处可用

传统 IDE 还有一个问题就是每次开发必须带上开发机或者每次改完代码都 push 到远程,而 Web IDE 解决了这个问题,它可以随时在远程保留开发环境,随时随地,只要有浏览器,就可以开始写合约。

以 EOSC 为例讲解使用步骤

EOSForce 社区小伙伴在 EOS Web IDE 上线的同时,第一时间发布了 EOSC 版本。方便了开发者更好的对开源社区作出贡献,接下来将详细讲解使用教程。

1. 浏览器插件下载

Gitpod 对 Chrome 和 Firefox 都提供了插件支持,下载插件后,会使进入 Gitpod 开始开发更加方便,本文以 Chrome 为例介绍使用步骤。

Chrome 插件下载:https://chrome.google.com/webstore/detail/gitpod-online-ide/dodmmooeoklaejobgleioelladacbeki

2. 一键生成环境

插件下载成功后,打开 eosforce 专门为使用 web IDE 开发智能合约准备的 github 项目 eosforce-web-ide,我们会发现项目的主页上多了一个 Gitpod 按钮。

EOS 开发新工具 Web IDE,一键进入开发调试

点击 Gitpod 按钮,就可以直接进到一个节点已经启动好的环境中,并且这个环境提供了一些编写智能合约的模板(实际的开发环境中,建议大家先 fork 这个项目,然后再启动 Gitpod)。

如果没有安装 GitPod 插件,可以直接在浏览器上新开一个页面,输入网址 https://gitpod.io/#https://github.com/xxxxx/eosforce-web-ide (其它 xxxx 替换成你的 github 用户名)

EOS 开发新工具 Web IDE,一键进入开发调试

从图中可以看见,eosforce 已经模拟正式环境启动了 23 个节点并且正在出块,同时整个编写智能合约的 IDE 环境已经搭建好,现在就可以使用 web IDE 直接开始开发智能合约了。

3. 开发调试合约

智能合约的具体开发、调试以及部署说明可以参考 eosio 白皮书,本文仅分析该项目模板合约的部署和调用。

在 web IDE 中打开 contract/talk/talk.cpp 文件,核心逻辑如下:

[[eosio::action]] void post(uint64_t id, uint64_t reply_to, eosio::name user, const std::string& content) {
message_table table{get_self(), 0};

   require_auth(user);   // 检查用户

   if (reply_to)                   // 检查是否需要回复  
       table.get(reply_to);

   // 检查 id 不能过大并且当没有传的时候分配一个 id  
   eosio::check(id < 1'000'000'000ull, "user-specified id is too big");  
   if (!id)  
       id = std::max(table.available_primary_key(), 1'000'000'000ull);

   // 记录 post 的内容到 table  
   table.emplace(get_self(), [&](auto& message) {  
       message.id       = id;  
       message.reply_to = reply_to;  
       message.user     = user;  
       message.content  = content;  
   });

}

理清 post 方法的逻辑之后,就可以开始编译文件了,首先点击 Gitpod 上方导航栏的 Terminal -> New Terminal(如下图)

EOS 开发新工具 Web IDE,一键进入开发调试

可以看见 Gitpod 下方出现了一个新的命令行窗口

EOS 开发新工具 Web IDE,一键进入开发调试

在该窗口执行如下命令,编译 talk.cpp 文件,会生成 talk.abi 和 talk.wasm 两个文件

eosforce-cpp contract/talk/talk.cpp

然后执行以下命令,创建合约账户 talk,并向该合约账户转帐 10000EOS(此次转账主要是该账户随后需要 set code 和 set abi)

cleos create account eosforce talk EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

cleos transfer eosforce talk ‘10000.0000 EOS’

通过执行系统合约为 talk 账户租一定的内存 (此处需要多租一点,因为 set code 操作需要的内存很多),然后将编译后的 wasm 和 abi 文件绑定到 talk 合约账户

cleos push action eosio vote4ram ‘[talk, biosbpa, “2000.0000 EOS”]’ -p talk

cleos set code talk talk.wasm

cleos set abi talk talk.abi

随后创建两个普通账户 bob 和 alice,并向他们每人转帐 100 EOS(因为后续执行合约需要扣除 fee),用来执行合约

cleos create account eosforce bob EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

cleos create account eosforce jane EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

cleos transfer eosforce bob ‘100 EOS’

cleos transfer eosforce jane ‘100 EOS’

为 talk 合约账户的 post 方法设置 fee,此处是其他账户执行该方法时需要支付的 fee

cleos set setfee talk post ‘1.0000 EOS’

执行合约,以下三个命令分别是

bob 以 1000 为 id,发布一条 “This is a new post” 消息到 table,并且不需要回复

jane 以 2000 为 id,发布一条 “This is my first post” 消息到 table,并且不需要回复

bob 以 1001 为 id,发布一条 “Replying to your post” 消息到 table,并且回复 jane

cleos push action talk post ‘[1000, 0, bob, “This is a new post”]’ -p bob

cleos push action talk post ‘[2000, 0, jane, “This is my first post”]’ -p jane

cleos push action talk post ‘[1001, 2000, bob, “Replying to your post”]’ -p bob

最后,输入如下命令,查看 table 的内容

cleos get table talk ” message

得到如下结果,说明合约已经成功执行

{

“rows”: [{

 "id": 1000,

 "reply_to": 0,

 "user": "bob",

 "content": "This is a new post"

},{

 "id": 1001,

 "reply_to": 2000,

 "user": "bob",

 "content": "Replying to your post"

},{

 "id": 2000,

 "reply_to": 0,

 "user": "jane",

 "content": "This is my first post"

}

],

“more”: false

}

4. 过程分析

下面具体分析一下这个一键生成环境的过程中都发生了什么

在任何一个 github 项目的地址前,加上 https://gitpod.io/# , 就可以在 gitpod 中打开该项目,例如在 eosforce-web-ide 这个项目中点击 Gitpod 按钮,实际访问的就是 https://gitpod.io/#https://github.com/ylic/eosforce-web-ide 这个地址

打开 Gitpod 之后,Gitpod 会根据项目中的 .gitpod.yml 文件来决定环境的初始化工作,该文件内容如下:

image: ylic/eosforce-web-ide:v0.1.0 # Gitpod 会加载 ylic/eosforce-web-ide:v0.1.0 的 docker 镜像,该镜像里面会部署编译好的 eosforce 相关程序,以及其他一些需要使用到的文件

ports: # 配置环境中需要打开的端口

– port: 3000

onOpen: ignore

– port: 8000

onOpen: ignore

– port: 8080

onOpen: ignore

– port: 8888

onOpen: ignore

– port: 9876

onOpen: ignore

… #此处省略了部分端口

tasks: # 初始化阶段的任务

– before: cd webapp

init: yarn # yarn 会根据 package.json 文件去下载相关依赖包

command: nginx -c $PWD/nginx.conf; npx webpack-dev-server # 启动 nginx 反向代理

– before: cd /workspace/eosforce-web-ide

command: ./nodeoscmd # 启动 nodeos

以上步骤结束后,一个完整的 eosforce 测试环境就运行起来了,然后 IDE 会加载当前项目,开发人员就可以通过浏览器开发调试智能合约了。

总结

通过以上步骤,很大的简化了编写和调试智能合约的难度,使得更多的开发者可以接触到这个优秀的区块链项目和智能合约。同时,有了这些 web IDE 的相关指导文档,越来越多的开源团队也可以发布自己基于 Web IDE 项目,来方便开发者更好的对开源社区作出贡献。

来源链接:mp.weixin.qq.com

>>> 【买币首选】DragonEx龙网交易所,买比特币和以太坊等币简单快捷,现在注册交易手续费终身4折,每天现金分红 + 30%年化理财收益,注册并中级认证即可获得抽DT奖励(100%中奖),1小时内极速出入资金。

...

...

>>【8年老牌】现在注册Gateio比特儿交易所,即可享受一年内交易手续费9折优惠+糖果空投。

...

...

相关推荐

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址