Motoko Playground:互联网计算机的在线开发环境

【Rust日报】2021-07-25 为什么你应该在 2021 年学习用 Rust 编写代码

Throne 一个游戏原型设计和故事逻辑的脚本语言 @tobmansf一直在研究用于游戏原型设计和故事逻辑的脚本语言 github.com/t-mw/throne。它编译成 WebAssembly,可以在 t-mw.github.io/throne-playg…

Motoko Playground:互联网计算机的在线开发环境

作者:DFINITY工程师 Yan Chen

翻译:DfinityClub

 

为了简化并升级开发者使用互联网计算机的开发体验,DFINITY基金会语言团队宣布推出Motoko Playground开源版本,后者是一个在互联网计算机区块链上运行的集成开发环境 (IDE)。

 

Motoko Playground:互联网计算机的在线开发环境

Motoko是无缝支持互联网计算机编程模型的编程语言,而Motoko Playground允许用户直接在 Web 浏览器中构建和部署容器(Canister )智能合约,并且无需下载DFINITY Canister SDK或设置钱包。

 

Motoko Playground教程

 

打开Motoko Playground链接:

https://m7sm4-2iaaa-aaaab-qabra-cai.raw.ic0.app/

 

目前在在互联网计算机上已经展示了一些项目示例,你可以选择你感兴趣的项目开始构建。以下是使用Motoko Playground的示例指南。

 

第1步:选择一个示例项目。


Motoko Playground:互联网计算机的在线开发环境

为了帮助开发者更快速的上手,目前已经从DFINITY示例中添加了几个Motoko项目供用户选择,这些项目示例包括计数器、电话簿、随机迷宫、订阅/发布服务等等。或者开发者也可以从Github中导入任何Motoko代码。


Motoko Playground:互联网计算机的在线开发环境

假如在列表中选择的是计数器示例,在导航中的“Main.mo”链接中可以查看代码。

 

第2步:选择一个项目后,点击右上角的“Deploy”按钮,在互联网计算机上构建和部署Canister。


Motoko Playground:互联网计算机的在线开发环境

单击“Deploy”后,指定要部署的容器名称。在这种情况下,你要部署的容器的名称是“Main”。部署需要几秒钟的时间,因为它需要从互联网计算机获取一个免费的 Canister ID 并安装已编译的 WebAssembly (Wasm) 模块。

 

第 3 步:容器部署后,可以使用页面右侧的Candid UI测试代码。


Motoko Playground:互联网计算机的在线开发环境

使用 Candid UI,您可以通过浏览器与容器通信——包括初始值查询、增加计数器等等。此外,也可以使用dfx或ic-repl命令行界面工具与容器交互。

 

第 4 步:如果需要对代码进行更改,可以在编辑器中进行。例如,下面示例中就将方法名更改为get2()。


Motoko Playground:互联网计算机的在线开发环境

第 5 步:请再次按“Deploy”按钮重新部署。因为系统已经知道你有一个名为“Main”的容器,所以必须指定是要升级现有容器还是完全安装新容器。在下面的示例中,我们将升级现有的容器。


Motoko Playground:互联网计算机的在线开发环境

第6步:因为计数器在稳定内存中,升级后,当你调用新的get2()方法时,会返回上次的计数器作为初始值(不是0)。


Motoko Playground:互联网计算机的在线开发环境

第 7 步:Motoko playground 支持安装参数。在下面的示例中,你可以为计数器添加一个 actor 类。


Motoko Playground:互联网计算机的在线开发环境

第 8 步:当你尝试部署容器时,系统知道存在安装参数,并会询问计数器的起始值。在示例中,起始值现在是 42,你可以重新安装容器。


Motoko Playground:互联网计算机的在线开发环境

第 9 步:现在,一旦你查询初始值,计数器将返回值 42,正如之前部署期间指定的那样。

Motoko Playground:互联网计算机的在线开发环境


对于大型项目,开发者通常需要使用第三方 Motoko 库。Motoko Playground 支持vessel package set,这是一组由社区维护的 Motoko 库。开发者可以通过单击左列 package section中的“+”号导入这些库,例如parsing、SHA256 和各种数据结构库。

 

Motoko Playground 支持与本地开发环境相同的功能,例如容器间调用、容器升级、使用初始化参数安装 actor 类和第三方库。作为一个有趣的练习,开发人员可以尝试导入CanCan存储库,从package section添加sequence库,并在浏览器中的 Motoko Playground 中构建后端容器。

 

除了 Motoko Playground 的独立版本,还有Motoko 语言手册中使用的嵌入式版本,一种Motoko Playground 的轻量级版本,用户可以交互式更改文档中的代码并立即在浏览器中运行(解释)代码,而无需在互联网计算机上安装代码。

Motoko Playground运作方式


Motoko Playground 的所有源代码现已公开。浏览代码的开发人员会发现一个拥有JavaScript 前端和后端容器的全栈 web dapp,用于管理由Motokoh和Rust编写的免费Cycles。


与大多数在线 IDE 相比,Motoko 编译器托管在前端,这要归功于 js-of-ocaml 编译器。这会自动解决安全性和可伸缩性问题,因为编译器在用户浏览器中运行,而不是在远程服务器中运行。


具体来说,前端由以下几部分组成:


  • 由 js-of-ocaml 生成的 Motoko 编译器,在 Web Worker 中运行。

  • 支持 Motoko 语法高亮和验证的 Monaco (VSCode) 编辑器。

  • 一个从容器包集中加载第三方库的容器包管理器。

  • 集成了 Canister 安装/升级、actor 类和 Candid UI 的部署模块。

  • 一个代码导入模块,允许从 Github 导入任何 Motoko 代码。


免费Cycle和后端


为了支持开发人员使用,DFINITY 为在 Motoko Playground 上部署的容器提供免费的Cycle,以便新用户无需设置Cycle钱包来探索 Motoko 和互联网计算机。


后端容器是用 Motoko 编写的,并管理已部署的容器使用的空闲Cycle。为保证这些免费Cycle的公平使用,对已部署的容器会有一些限制,即每个容器的初始Cycle余额为0.5T,并且只能运行10分钟,并且不允许跨容器进行Cycle的转移。


具体来说,当前端请求一个新的容器时,后端在它的容器池中找到一个空闲的容器,将它的Cycle加满,并设置容器的过期时间。时间到期后,后端可以将此容器交给其他请求部署的用户。为防止一个人占用过多的容器资源,用户在申请新的容器时需要提供工作证明。


为了确保资源公平,我们希望避免用户将大量Cycle转移到自己的容器中。例如,通过调用deposit_cycles管理容器中的方法,可以轻松汇聚其他部署好的容器中所有可用Cycle并转移到目标容器中。为了防止这种攻击,我们检查了所有提交的 Wasm 模块并删除了 Wasm 级别的循环传输指令。由于 Motoko 目前没有 Wasm 解析库,因此使用 Rust容器来实现此目标。每次 Motoko 后端收到安装请求时,它都会将 Wasm 模块转发到 Rust容器进行检查。这实际上是一个有趣的模式,它模仿了 Motoko 中的 FFI 支持。


未来,当用户提供自己的钱包进行部署时,这些限制将放宽,从而实现更高级的用例。

我们计划添加更多功能,使 Motoko Playground 成为适用于互联网计算机的全功能 Web IDE。欢迎社区贡献!同时,我们希望社区成员可以直接在网络浏览器中便捷地探索互联网计算机的母语 Motoko语言,而无需下载 SDK。

欢迎有兴趣的开发人员查看Motoko Playground 的开源代码:

https://github.com/dfinity/motoko-playground


【往期精彩文章】

Dominic对Badlands的详细介绍

普通投资者如何参与ICP的价值发现?

浅析DFINITY的链上治理系统NNS

DFINITY与以太坊网络集成带来了哪些影响?

Motoko Playground:互联网计算机的在线开发环境

MakerDAO 又回到了“原点”:实现完全去中心化

来源 | Maker Blog 作者 | Rune Christensen MakerDAO 现在完全去中心化了。 治理部门批准了几个核心单元来有效地组织 DAO 内的所有工作,以及现在由全球社区负责 Maker 协议的所有方面的工作。如此一来,DAO 现在已…

Click to rate this post!
[Total: 0 Average: 0]

人已赞赏
Dfinity名家说小白百科每日优选

不一样的「DFINITY」词贴 | dfx是什么?

2021-7-28 20:39:29

Dfinity名家说小白百科每日优选

通过Web浏览器运行的在线开发环境—Motoko Playground

2021-7-28 20:57:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索