2022 年 Gear 月度更新——2 月

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

2月更新.jpeg

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

此致,

Gear 团队

关于 GearFans

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

目录
相关文章
|
存储 负载均衡 算法
p2p的文件系统
p2p的文件系统
360 4
|
机器学习/深度学习 存储 人工智能
《C++ 模型训练之早停法:有效预防过拟合的关键策略》
在C++模型开发中,过拟合是常见问题,早停法(Early Stopping)能有效避免这一陷阱。本文介绍如何在C++环境下通过设定监控指标、耐心值及记录最佳模型状态,实现早停法,确保模型在最佳状态下停止训练,保持良好泛化性能。
364 12
|
12月前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
1232 11
|
9月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化的自适应马尔科夫链蒙特卡洛(Adaptive-MCMC)算法matlab仿真
本项目基于贝叶斯优化的自适应马尔科夫链蒙特卡洛(Adaptive-MCMC)算法,实现MATLAB仿真,并对比Kawasaki sampler、IMExpert、IMUnif和IMBayesOpt四种方法。核心在于利用历史采样信息动态调整MCMC参数,以高效探索复杂概率分布。完整程序在MATLAB2022A上运行,展示T1-T7结果,无水印。该算法结合贝叶斯优化与MCMC技术,通过代理模型和采集函数优化采样效率。
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
存储 算法
数据结构与算法学习十六:树的知识、二叉树、二叉树的遍历(前序、中序、后序、层次)、二叉树的查找(前序、中序、后序、层次)、二叉树的删除
这篇文章主要介绍了树和二叉树的基础知识,包括树的存储方式、二叉树的定义、遍历方法(前序、中序、后序、层次遍历),以及二叉树的查找和删除操作。
333 0
|
存储 算法 编译器
课程设计——基于FPGA的交通红绿灯控制系统(源代码)
课程设计——基于FPGA的交通红绿灯控制系统(源代码)
|
KVM 虚拟化
使用libvirt的端口转发,实现虚拟机跟外界互通
使用libvirt的端口转发,实现虚拟机跟外界互通
|
安全 Nacos
Nacos 客户端配置中心从浅入深原理及源码剖析(下)
Nacos 客户端配置中心从浅入深原理及源码剖析(下)
804 0
Nacos 客户端配置中心从浅入深原理及源码剖析(下)
|
机器学习/深度学习 人工智能 自然语言处理
能自动查找各种漏洞,专用于网络安全的AI Agent
【7月更文挑战第3天】研究表明,大型语言模型(LLM)可应用于网络安全,自动发现和利用漏洞,包括零日漏洞。多Agent系统中,HPTSA规划任务,其他Agent执行具体工作,提升发现和应对漏洞的效率。然而,LLM的复杂性可能导致可解释性、可控性问题,且系统鲁棒性、泛化能力和安全性仍需加强。[链接: arxiv.org/abs/2406.01637]
654 1