1. 首页
  2. 名家说

Ontology Wasm测试网上线,赋予dApp更广阔的星空与大海

Ontology Wasm测试网上线,赋予dApp更广阔的星空与大海

首先,本体君给大家讲一个故事:

从前,有一位勤奋好学又高瞻远瞩的开发者,暂且称他为小程。经过几个月的潜心研究与废寝忘食地开发,他基于某知名公有链平台上线了一款益智类游戏 dApp。从上线的这一天开始,随着用户数量直线飙升,机智的小程并没有沉湎于眼前的成功,马上开始思考下一步的方向:

😮 我的 dApp 接下来会如何发展?

Scenario 1:这款益智类游戏 dApp 实在是太好玩了!一经上线就已经火爆全球,成为 dApp 排行榜明星应用!兴奋之余,很多行业伙伴纷纷发来建议:“小程,你可真是个人才啊!你的应用目前深度已经足够,但是广度有待提高,是否考虑赶快登陆其他知名公有链,覆盖更多用户。”

小程内心 OS:“说的好有道理我竟无法反驳。”

Scenario 2:上线后用户数的急速增长并没有持续很久,有些用户很快审美疲劳或是因为该平台受众的局限性,没过多久小程的应用表现日趋平淡,在不断研发新功能实现版本迭代的同时,团队伙伴猛烈建议道:“程总,你要不要考虑迁移到别的平台啊,我们的应用值得更广阔的星辰大海!”

小程内心 OS:“年轻人很有想法,让我仔细考虑一下。”

想到这里,小程灵光一现,恍然大悟:无论如何,我都要让我的应用能够实现快速迁移与同步,这样才能够实现更广阔与更长足的生态发展!

然而,不同公链上的 dApp 开发语言不同,如果重新编写可能无法实现快速迭代。如果你和小程有着同样的烦恼,那么一定不要错过 Ontology Wasm 这款强大的工具。


锁定下方,get 这款法宝

👇

Wasm 是什么?


Wasm 是由 Google、Microsoft、Mozilla 和 Apple 等几家大公司合作发起的一个关于面向 Web 的通用二进制和文本格式的项目。

Wasm MVP 标准现已稳定,被多数主流浏览器支持。同时很多其他语言(C、C++、Rust)编写的程序都可以编译成 Wasm 字节码,基于此建立的应用层生态可以让开发人员有着较低的学习成本,从而快速上手。

Ontology Wasm测试网上线,赋予dApp更广阔的星空与大海

当前支持 Wasm VM 的公链主要是 EOS,其他如 Difinity, ewasm 等正在开发中。而对 Wasm 的支持,目前 Rust 社区提供最完善的支持,其编译器和标准库都可以直接使用,而对于其他语言如 Go、Python、Java 对 Wasm 的支持也有实验性的项目。

Ontology Wasm 虚拟机介绍


Ontology Wasm 虚拟机以沙盒方式运行,使用社区开源的 wagon 项目作为wasm的解释引擎。在 Wagon 基础上,Ontology Wasm 屏蔽了浮点数相关的类型和方法,并加入了费用计算。

合约的部署和调用流程如下图所示:

Ontology Wasm测试网上线,赋予dApp更广阔的星空与大海

可以看到,我们通过 contractype 字段区分 NeoVM 合约和 Wasm 合约。而不同类型的合约会在相应的虚拟机沙盒环境中运行。

Ontology Wasm 优势


1) C++标准的支持

C++ 是受众非常广泛的开发语言,有良好的开发者基础, C++ 自 C++11、14、17之后引入了很多现代编程语言的特性,比如类型推导、lambda 表达式、变长参数的模板、列表初始化、右值引用和完美转发等。使得 C++ 具备更强大的表达能力。C++20标准已进入冻结阶段,C++20标准将是继 C++11标准之后的一个重大版本,目前已冻结的特性如 Module, reflection 将进一步方便开发者使用。而对 C++现代标准的支持使得开发者更关注自身的业务逻辑。

2) Rust 的支持:

Rust 连续三年获得 Stack Overflow 最受欢迎语言,同时也是目前对 Wasm 支持最完善的语言之一。从原生的工具 cargo 直接可以编译出 Wasm 字节码,同时可以直接使用现有的标准库。 

3) 现有生态库支持:

无论是 C++和 Rust,社区都有非常多的可直接使用的库资源,将大大降低开发者的开发成本;

4) 多语言支持:

随着区块链 Wasm 生态的发展,会有更多的智能合约以 C++, Rust 等支持 Wasm 的语言实现,在 Wasm 生态中实现代码复用。

本体 Wasm C++ 合约开发工具

Ontology CDT

Ontology CDT 是支持 C/C++ 的 Wasm 合约开发工具,支持libc/libcxx/boost/libcrypto 常用库,其中较常用的是 libcxx,开发者常用的 vector、array、map、list 和 queue 数据结构及其方法都可以自由使用。

Ontology CDT 提供了 C++ 编译器 ont_cpp、反编译工具 Wasm-objdump、Wasm-opt 优化器等工具。可以方便的通过 ont_cpp 将 C++合约编译成 Wasm 字节码,并部署到测试网上。

具体的使用方法见以下链接:

a. Ontology Wasm C++ 合约开发工具说明:

https://github.com/ontio/ontology-wasm-cdt-cpp/blob/master/README.md

b. Ontology Wasm C++ 合约开发工具接口和数据结构说明:

https://github.com/ontio/ontology-wasm-cdt-cpp/blob/master/How_To_Use_cdt.md

c. 如何通过 Ontology Cli 工具部署或调用 Wasm 合约(以 OEP-4为例):

https://github.com/ontio/ontology-wasm-cdt-cpp/blob/master/How_To_Run_ontologywasm_node.md

本体 Wasm Rust 合约开发工具


Rust 是目前支持 Wasm 最好的语言。我们提供了相应的 Rust 合约开发工具,支持代码分发框架,优化内存分配策略、合约存储管理和合约测试框架Ontology Blockchain API。

方便用户使用 Rust 语言开发智能合约。

a. Rust 合约开发工具说明

https://github.com/ontio/ontology-wasm-cdt-rust/blob/master/README.md

b. Rust 合约开发工具教程

https://github.com/ontio/ontology-wasm-cdt-rust/blob/master/tutorial_en.md

Ontology Wasm Go SDK 

使用说明

我们提供 Go SDK,以供 Wasm 合约的自动化部署和调用。

a. Wasm Go SDK:

https://github.com/ontio/ontology-go-sdk/tree/wasm

b. Wasm Go SDK 合约部署和调用例子:

https://github.com/ontio/ontology-go-sdk/blob/wasm/samples/wasm_sample.go

复制以上链接至浏览器

体验 Ontology Wasm

如有其他问题

可添加 ontresearch 研究院小秘书交流讨论


扫描下方二维码

获取更多本体技术动态

Ontology Wasm测试网上线,赋予dApp更广阔的星空与大海


点击阅读原文查看技术文档

原创文章,作者:比特币区块链日报,如若转载,请注明出处:https://www.dailybtc.cn/ontology-wasm%e6%b5%8b%e8%af%95%e7%bd%91%e4%b8%8a%e7%ba%bf%ef%bc%8c%e8%b5%8b%e4%ba%88dapp%e6%9b%b4%e5%b9%bf%e9%98%94%e7%9a%84%e6%98%9f%e7%a9%ba%e4%b8%8e%e5%a4%a7%e6%b5%b7/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

在线咨询:点击这里给我发消息

邮件:[email protected]

工作时间:周一至周五,9:30-18:30,节假日休息

QR code