ink! 开发
ink! 是一种基于 Rust 的嵌入式领域专用语言(eDSL),专门用于 WebAssembly 智能合约、尤其是FRAME Contracts pallet的编写。
ink! 正在开发中,所以它的使用文档很少。 然而,在本页您将找到最好的资源来让您立刻开始构建 ink! 合约。
教程
Ink! 项目组一直在对教程进行更新和维护,教程包含了 ink! 开发所有的基础知识。
这是立即开始学习ink! 语言的最佳途径。
您将学习到:
- 如何配置计算机以构建和部署 ink! 智能合约。
- 如何通过创建一个增量器合约来 学习 ink! 的基础知识。
- 如何通过开发 ERC20 合约学习到更先进的技巧。
合约示例
ink! 提供了一系列智能合约示例,可以帮助您了解它与其他智能合约语言的相似和不同之处。
这包括:
常见问答(FAQ)
以下是对开发者在开发 ink! 项目时常见问题的一些解答。
内存和存储有什么区别?
在 ink! 中,memory
指的是计算机内存,而 storage
指的是合约实例所占用的链上存储空间。 memory
是临时性的,仅持续到合约执行完成。而 storage
是持久的,可在多个合约的执行中存续。 合约storage
是部署在 Runtime 存储之上的,访问起来相对比较慢。
如何运行测试?
在用 ink! 构建智能合约时,你可以定义一组测试。
例如,在最小可行的 flipper 合约 中,您可以在合约代码底部找到一个小测试。
您应该像运行其他 Rust 测试一样运行该测试:
cargo +nightly test
获取帮助
加入正在增长的 ink! 智能合约开发者社区:
- 在 StackOverflow 上询问开发问题,并带上
ink
标签。 - 加入 Riot 中的 Smart Contracts & Parity ink! 实时聊天组。
- 在ink! 的 Github 中 提交bug、请求合并新功能以及询问技术类问题。
后续步骤
进一步学习
- 在我们的 概念性文档 中 了解更多 ink! 的设计理念
- 了解更多关于Contracts pallet的内容
示例
- 按照教程,将此Contracts pallet添加到你的 Substrate Runtime 中。