zoukankan      html  css  js  c++  java
  • 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的入口。
    webide
    如果你无法显示IDE的内容,可能需要借助工具|科|学|上|网|才能打开。
    webide main

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

    网络管理

    我们先来切换一下网络,默认是Cloud,是WebIDE自用的网络,等会儿我们登录再使用,先切换到主网(Mainnet)来看看其他功能吧。
    webide_nav_network
    切换以后可以看到主网的基本信息和目前最新出块信息了。
    webide_network_mainnet

    合约页

    切换了主网,我们来看看导航栏的合约功能,默认选中的是eosio,也就是EOS的系统合约账号。
    webide_nav_contract
    这个列表可以收藏我们关注的合约,这里我们先看看eosio合约吧。点击eosio进入合约页面。

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

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

    账号页

    我们现在来看看导航栏的账号功能,默认选中的还是eosio。
    webide_nav_account
    这里还提供了创建账号的功能,我们之前说过了EOS创建账号的特殊性,所以这里也需要你登录scatter后才能创建。

    webide_account_mainnet
    账号页的功能比较类似于区块链浏览器,都是和账号相关的信息和交易。
    webide_account_tools
    不过界面上还是提供了两个实用功能,一个是转账,一个是key管理。

    登录账号

    为了进一步演示WebIDE的功能,我们现在需要登录,点击导航栏上的人像,选择log in
    webide_nav_login
    这里使用的是github的账号授权登录,因为WebIDE的合约存储是依赖于github的,所以直接使用了github来作为账号登录。
    webide_login
    登录以后,我们也顺带把scatter登录了,点击底部栏左侧钥匙旁边,然后授权scatter进行登录。
    webide_bar_scatter

    项目管理

    登录后我们就可以使用项目管理的功能了,默认肯定是没有项目的,你可以通过首页的链接打开他人的或者官方的合约,也可以新建一个合约,
    webide_project
    我这里已经有两个合约了,一个是我之前测试写的candy,一个是EOS官方的token合约。这里我们再新建一个test合约,点击New输入合约名即可。
    webide_project_new
    我们看到,默认的为我们创建了头文件test.hpp和源码实现test.cpp,另外的.eosproj是项目文件,自动生成了一个README.md文件,他连abi和wasm文件都帮我们生成好了,不过是空文件。

    项目配置

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

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

    编译

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

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

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

    部署

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

    • 导入私钥

    首先是导入私钥,点击底部栏左下角的钥匙图标。
    webide_bar_key
    打开了key管理页面,我们将要部署合约的账号私钥导入。
    webide_keys
    这里我们导入了官网testnet中我的一个账号hvzwqywduhbu的active私钥,这个账号已经购买了足够的内存和其他资源。

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

    • 切换网络

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

    • 收藏合约账号

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

    • 部署

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

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

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

    本地IDE

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

    安装

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

    使用

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

    总结

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

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

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

    原文链接

  • 相关阅读:
    react路由组件&&非路由组件
    react函数式组件(非路由组件)实现路由跳转
    react使用antd组件递归实现左侧菜单导航树
    【LeetCode】65. Valid Number
    【LeetCode】66. Plus One (2 solutions)
    【LeetCode】68. Text Justification
    【LeetCode】69. Sqrt(x) (2 solutions)
    【LeetCode】72. Edit Distance
    【LeetCode】73. Set Matrix Zeroes (2 solutions)
    【LeetCode】76. Minimum Window Substring
  • 原文地址:https://www.cnblogs.com/fishopark/p/12893693.html
Copyright © 2011-2022 走看看