GearFans

V1

2022/03/03阅读:42主题:自定义主题1

2022 年 Gear 月度更新——2 月

我们很高兴与大家分享 Gear 的最新进展,现在网络功能完整! 我们已经迈过这个巨大的里程碑,接下来我们将把重点转向代码优化,并为测试网的全面发布做准备。这一阶段将涉及内部审查和第三方审计,用以提高安全性和性能。

2 月份,我们在开发过程中有几项重要的更新,我们特意在这里与大家分享。

本月的主要更新是 gstd crate,更新后的 gstd crate 允许从程序中发送消息,而无需明确设置 gas 限制。换句话说,当使用 msg::send(), msg::reply()和相关函数时,我们不需要设置处理这些消息所需的 gas 限制[1]。Gas 将自动从父消息中借用。注意,这是一个突破性的改变,因为当前函数的签名已经改变。新函数 msg::send_with_gas(), msg::send_commit_with_gas() 和msg::send_bytes_with_gas() 被引入,用于在需要时发送有明确 gas 限制的消息。想了解更多细节,请查阅 gstd::msg 文档[2]

我们为程序实施发布了补丁 1[3]补丁 3[4]。现在,一个程序不仅可以由用户提交,也可以由其他程序提交。首先,用户必须通过调用外部的 submit_code 来存储代码,并接收代码 id。然后,程序可以通过提供代码 id、salt 和 init 消息来使用 prog::create_program_with_gas() 函数在链上创建一个新的程序实例。这个函数返回新创建程序的 id。开发者可以通过更改 salt 参数来创建多个程序实例。

我们重新设计了用于计算 gas 费的 RPC 调用。现在不仅可以计算出处理一个消息所需的 gas 量,而且还可以计算出初始化一个程序和处理应答所需的 gas 量[5]。现在,该节点接受三个 RPC 调用:

  • gear_getInitGasSpent 用于计算提交和初始化一个新程序时的 gas 量;
  • gear_getHandleGasSpent 用于获取处理一条消息的 gas 量;
  • gear_getReplyGasSpent 用于计算回复用户邮箱中的信息所需的 gas 量。

另一个更新是回滚状态机制[6]。在这种情况下,成功的执行是指在程序结束前或通过调用没有陷阱的 wait 来完成的执行。即使出现陷阱,也不会有任何变化影响链:没有内存(状态)变化,没有传出消息,只提供系统错误回复。另外,我们增加了一个特殊的系统调用 leave,以引起一些 panic(人工陷阱)退出执行,但保存状态和传出消息。

另一个新的系统调用 exit 也已经实现[7]。它预先停止了一个程序的执行,并将该程序从存储器中删除。现在所有可用的程序余额被转移到 exit 参数指定的地址。另外,从现在开始,程序中的价值管理[8]允许从链上管理账户余额。直接发送的最小值取决于节点的 ExistentialDeposit。

我们规范化了缺失函数入口的情况[9]。换句话说,如果某些函数入口点(init、handle 或 handle_reply)未被提供,则意味着这个函数是空的。

我们添加了一个 gear-wasm-builder crate[10]。gear-wasm-builder 是一个用于构建脚本(又称 build.rs)的辅助工具箱。它有助于构建智能合约并获得 WASM 二进制文件(.wasm)以及只需在 build.rs 脚本中添加一行代码便可以生成优化(.opt.wasm)和元数据(.meta.wasm)输出。此外,它还可以使用更直接的命令来启动构建(仅仅是 cargo 构建,不需要任何附加参数),并保证在测试( cargo 测试)之前创建合约。

另一个重要的技术更新是,现在我们可以通过唤醒逻辑保存消息上下文[11]。之前我们无法通过 wait-wake 存储 msg::send_push 和 msg::reply_push 传递的不完整的有效载荷,因为我们没有存储具体消息执行的上下文,现在我们不仅具备这种能力,还解决了程序发送多个回复时的 bug。

本月,我们社区举办了两场在线 Workshop,一场面向中文用户,与 Forge[12]合作的另一场则面向英文用户。后续,我们将与 Forge 共同举办 Workshop 的第二部分。这场 Workshop 非常具有实践性,所有参与者将学会在 Gear 上部署他们的第一个智能合约。

继我们在世界各地举行一系列教育 Workshop 之后,我们很开心与@escomunidad[13]合作,在墨西哥举办了首场 Workshop!另外,在 2 月份,我们在比特币大使馆酒吧组织了我们在墨西哥的第一次聚会。

在此,我们向各位参与者表示衷心的感谢!我们将在未来举办更多具有互动性和沉浸式的 Workshop 和 Meetup,请持续关注我们,获取最新资讯!

同时,我们真诚感谢社区成员制作的视频和文章,欢迎关注我们的 Twitter[14],查看相关信息。

此致,

Gear 团队


关于 GearFans

Gear 是波卡生态的计算组件,GearFans 是 Gear 爱好者社区。

  • 官网:https://gear-tech.io/
  • Twitter:https://twitter.com/gear_techs
  • GitHub:https://github.com/gear-tech
  • Discord:https://discord.com/invite/7BQznC9uD9
  • Medium:https://medium.com/@gear_techs
  • Telegram 群:https://t.me/gear_tech
  • Telegram 中文群:https://t.me/Gear_CN
  • Telegram 中文开发群:https://t.me/gear_dev_cn
  • QQ 群:677703337

参考资料

[1]

不需要设置处理这些消息所需的 gas 限制: https://github.com/gear-tech/gear/pull/715

[2]

gstd::msg 文档: https://docs.gear.rs/gstd/msg/index.html

[3]

补丁 1: https://github.com/gear-tech/gear/pull/718

[4]

补丁 3: https://github.com/gear-tech/gear/pull/724#issue-1149433663

[5]

现在不仅可以计算出处理一个消息所需的 gas 量,而且还可以计算出初始化一个程序和处理应答所需的 gas 量: https://github.com/gear-tech/gear/pull/612

[6]

回滚状态机制: https://github.com/gear-tech/gear/pull/634

[7]

新的系统调用 exit 也已经实现: https://github.com/gear-tech/gear/pull/654

[8]

程序中的价值管理: https://github.com/gear-tech/gear/pull/696

[9]

规范化了缺失函数入口的情况: https://github.com/gear-tech/gear/pull/659

[10]

gear-wasm-builder crate: https://github.com/gear-tech/gear/pull/679

[11]

通过唤醒逻辑保存消息上下文: https://github.com/gear-tech/gear/pull/684

[12]

Forge: https://twitter.com/meetforge

[13]

@escomunidad: https://twitter.com/escomunidad

[14]

Twitter: https://twitter.com/gear_techs

分类:

工具介绍

标签:

开源软件

作者介绍

GearFans
V1

Gear 是波卡生态的计算组件。