Skip to main content

6 posts tagged with "yul"

View All Tags

· 9 min read
fuel

原文: https://fuel-labs.ghost.io/introducing-fuels-new-grants-program/

编译: kkdemian

  成为第二期 Fuel Grants 生态的一员,即可获得高达 50,000 美元的资金补助,并有机会将您的想法变为现实,为期三个月。

我们很高兴地宣布启动 Fuel 备受期待的赠款计划,该计划目的是支持和增强模块化区块链生态系统中的创新者。该计划引入了一个令人兴奋的季度队列模式,允许由 10 个项目组成的选定小组获得高达 50,000 美元的资金,为他们提供三个月的机会,使他们的想法成为现实。我们相信,通过培育突破性举措并将其与著名的风险投资公司结合起来,我们可以促进 Fuel 的生态系统,以彻底改变 web3 的格局。

在可扩展性领域获得头部的支持

每季度最多有 10 个项目被征集到赠款候选。这些项目将有机会访问 Fuel 的技术、营销和法律团队,以指导其想法/集成的发展。在本季度结束时,参与者将展示他们的进展,并在独家演示日中展示他们的最小产品(MVP),在 Web3 领域中有一些杰出的支持者。以下将参加第三季度的演示日:

申请详情

即将到来的第三季度队列的申请期限为 6 月 21 日星期三开始,7 月 5 日星期三结束。我们鼓励申请者提交真正旨在利用 Fuel 模块化技术栈的项目构想,特别关注谓词(例如启用无状态帐户抽象)和多个本地资产支持。此外,我们认为,有一个致力于以 Fuel 为基础的专职团队、明确的资金利用概况以及在项目开发方面的透明进展是关键方面。展示其向最终用户营销项目的能力以及提出全面路线图和扩展计划的团队也将受到强烈的青睐。

  • 以下是完成应用程序时要考虑的一些准则:
    • Fuel 的谓词和 UTXO 模型可以实现构建 web3 解决方案的全新方法。花时间去理解这些概念,想出独特的解决问题的方法来突破可能的极限。使用 Fuel 重新定义 Web3 交互。
    • 直截了当 - 尝试以直接和具体的方式解释项目的价值主张。避免过于夸张的主张与远见卓识或项目比较。
    • 不要过度使用不必要的措辞或行话使项目的描述复杂化。理解项目越容易,处理应用程序就越容易。
    • 避免含煳不清的陈述或索赔,而采用精确的数字和事实来区分应用程序。几乎每个 Web3 项目都声称将 X 下放给 Y。尝试专注于真正使您的项目独一无二的原因,以及支持您论文的实际证据。

重点领域

  • 作为当前队列选择的一部分,我们对那些为 Fuel 生态系统带来新鲜和独特概念的项目特别感兴趣,但是 Fuel 可以为您的项目提供什么?
    • 模块化:以模块化区块链模式设计,以不同的配置随处可运行。
    • 垂直集成:VM、Sway 和 Forc 工具中的所有产品都设计为在单一的凝聚力开发人员体验中相互配合。
    • 执行:一种新的快速 FuelVM 和并行事务执行,具有基于 UTXO 的事务模型。
    • 互操作性:我们的设计天生擅长在区块链之间架起桥梁,非常适合互操作性和链之间的可移植性。

构建或集成 Fuel 的想法

在我们欣赏所有想法的创造力和独创性的同时,我们鼓励应用程序看看我们当前的生态系统在这里是什么样的。我们的目标是确定能够突破界限的项目,并为超出 web3 环境的用户创造有意义的体验。以下是 Fuel 在其生态系统中寻找的一些想法:

  • 可以构建的内容类别:

    • Defi(永续、收益聚合、小额支付、预测/拍卖市场、DeSci、ReFI)
    • 基础架构和工具
    • Web3 社会
    • 游戏和 GameFi 在 UX 和游戏玩法方面具有很高的优先级
    • 存储-证明
  • 生态系统所需的整合:

    • Bridges、Wallet 和 Indexers(Fuel 有其本机选项,但我们希望用户有更多选项)
    • TVL 统计仪表板、分析仪表板等。
    • 协议/通证聚合器、产品组合跟踪器
    • 天然液体放样令牌(LST)和稳定币
    • 用于 dapps、钱包和服务的跨链通信(通知/消息)

超越整体,以构建 Fuel 为基础

Fuel 的新赠款计划是一个令人难以置信的机会,让热情的创新者在 Web3 的可扩展性领域获得支持、指导和接触杰出的思想领袖。通过培育开创性理念,促进模块化区块链生态系统的发展,我们的目标是为自主未来的前沿带来实实在在的解决方桉。如果您的项目符合我们的愿景和重点领域,我们鼓励您在下面的 typeform 链接中应用。

申请地址

在试用日期为 10 月 2 日至 3 日的演示日标记您的日历,我们的官方团队将展示他们的进展。通过 Fuel 的官方渠道关注更多更新和公告。

如果你觉得你还没有准备好申请补助金,看看SwaySummer 在线黑客马拉松,在那里你可以获得动手体验 Fuel 的技术栈和原生 DSL sway。对于那些不希望成为赠款申请者但希望参加第四季度演示日的人,请在这里与我们联系

关注 Fuel

Twitter | Discord | LinkedIn | YouTube

关于 Fuel

Fuel 是最快的模块化执行层。该项目技术功能强大且时尚,可实现并行交易执行,为开发人员提供扩展所需的最高灵活吞吐量和最高安全性。开发人员选择 FuelVM 是因为其卓越的开发体验以及超越 EVM 限制的能力。

成为一名贡献者

探索我们当前的职位空缺

学习 Sway

· 7 min read
fuel

原文: https://fuel-labs.ghost.io/unlocking-permissionless-interoperability-with-hyperlane/?ref=fuelwiki

编译: kkdemian

  Fuel 正在与 Hyperlane 集成,以实现跨链应用程序和与现有区块链的无许可交互。

fuelwiki

Fuel Labs 很高兴与 Hyperlane 合作,将无权限互操作性扩展到 Fuel 生态系统,释放出一种简单的、无权限的方式,与现有的区块链连接,让用户快速登入。

在过去几个月中,Hyperlane 和 Fuel 团队致力于构建与 FuelVM 兼容的 Hyperlane 部署,并为 Fuel 带来互操作性。今天,我们很高兴地宣布,Hyperlane 将是 Fuel 的第一个互操作性层,Hyperlane 互操作性堆栈将在 Fuel 推出时准备就绪。

什么是 Hyperlane?

Hyperlane 是第一个无许可互操作性层,任何人都可以将 Hyperlane 互操作性堆栈带入任何现成的区块链。利用 Hyperlane,开发人员可以构建链间应用,它可以抽象互换交互的复杂性,并为任何连接链上的用户提供服务。此外,Hyperlane 的模块化安全堆栈使开发人员能够自定义其链间安全。

Hyperlane 是开源的项目,目前由 Abacus Works 的核心开发人员领导。

Hyperlane 如何补充 Fuel 的多链愿景

Fuel 是区块链技术的一项重大进步。但是,如果没有一种简单和无权限的方式将现有的区块链连接到机载用户,这一切都是徒劳的。

目前,开发人员不得不游说允许的互操作性团队来支持他们的链, 而且互操作性团队无法跟上手动部署到每个新链的速度。由于这种允许的互操作性,新链上的用户和流动性增长受到影响。

  • 由于 Hyperlane 的"无允许互操作性"现在支持 FuelVM,因此 Fuel 利益相关者无需担心。Fuel 用户和开发人员现在可以探索 Hyperlane 的独特功能:

    • 将 Hyperlane 部署到任意链上的无允许部署。在这种情况下,任何将来的 FuelVM 汇总都可以无限制地将 Hyperlane 部署到他们的链中,以满足他们的互操作性需求。

    • 通过 Warp Routes 从任何 Hyperlane 支持的链中无权限地桥接任何资产。这对于入职用户和现有链条的流动性尤为重要。

链内应用程序,您的应用程序可以与任何 Hyperlane 支持的链上的其他实例共享状态和流动性。这可以通过将复杂的桥接和链交换概念移动到后端来显着改善用户体验。

为何选择链间应用程序:Yama Finance

一个快速的案例研究,说明在 Fuel 上链间应用程序的含义如何:

Yama Finance 是一个新颖的互换稳定货币和贷款协议,它使借款人能够在波动资产上利用高达 17 倍的杠杆,放大收益率,并提供链上即时流动性。Yama 的稳定币能够通过 Hyperlane 在不同的链条之间传送,没有滑点或流动性陷阱。使用 Hyperlane, Yama 将能够将其稳定币燃烧并铸造到任何支持 Hyperlane 的链条上,以实现无缝链间操作。

目前,Yama 在 Artrium 上只有一个实例,但是有了 Fuel mainnet,它将能够为其稳定组件释放互换协同效应。Yama 的稳定币可以通过 Hyperlane 作为 Artrium 和 Fuel 之间用户的即时流动性桥梁。用户可以直接从 Yama 的界面在链条之间传送他们的 Yama 稳定币,而无需将标签切换到外部桥梁或在官方桥梁上等待。使用 Hyperlane 可以为用户提供更流畅的体验、更快的流动性交换以及更高的应用程序效用。

现在开始使用 Hyperlane x Fuel 构建,使用 Fuel 的文档和 Hyperlane 的文档。

Fuel:全力以赴扩大以太坊的规模

以太坊对模块化路线图的承诺意味着,在执行层上使计算更具可扩展性和效率是构建更具可扩展性的以太坊生态系统的下一步。替代虚拟机是这一难题的关键部分,而 Fuel 在应对这一挑战时处于领先地位。

Fuel 在设计上具有开发人员的最前沿经验,Sway 语言已经获得了显着的吸引力。通过构建开发人员喜爱的基于 Rust 的 DSL 和综合工具,Fuel 能够吸引数十名新开发人员进入生态系统。

因为 Fuel 将部署在以太坊上,开发人员和用户将直接促进以太坊生态系统的增长,而不是迁移到其它 L1s 上。

关注 Fuel

Twitter | Discord | LinkedIn | YouTube

关于 Fuel

Fuel 是最快的模块化执行层。该项目技术功能强大且时尚,可实现并行交易执行,为开发人员提供扩展所需的最高灵活吞吐量和最高安全性。开发人员选择 FuelVM 是因为其卓越的开发体验以及超越 EVM 限制的能力。

成为一名贡献者

探索我们当前的职位空缺

学习 Sway

· 9 min read
fuel

原文: https://medium.com/@ThunderbyFuel/why-we-are-building-an-nft-marketplace-on-fuel-how-is-it-superior-99ae7e09c22f

编译: kkdemian

--- 为什么我们要在 Fuel 上建立一个 NFT 市场。它的优势是什么?

Fuel 是一个模块化的执行层,为 Ethereum 提供了最灵活的吞吐量。它采用模块化设计,以提高安全性并确保交易的迅速执行。

Thunder - 是一个尖端的 NFT 市场,在 Fuel 之上建立了卓越的体验。

在今天的博客中,你将获得关键的见解,了解为什么我们固定在这个卓越的层上构建。

让我们来探讨一下!⚡️

为什么是 Fuel

Fuel 网络是构建一个理想的 NFT 市场的平台。期间。

它能够创建方便的交易功能和灵活的开发。这种致命的融合将使我们的开发团队不仅能够创造无与伦比的交易和用户体验,而且能够贴近创造者,并根据他们的具体需求定制平台。

Thunder 将以成为一个由创作者为创作者提供的 NFT 市场而闻名。

Fuel 的功能需要注意的有

👉 零代币审批

零代币审批意味着用户在将他们的代币发送给合同之前,不必批准他们的转移。相反,他们可以直接将他们的可消费代币的余额发送到合同上。

这一功能使开发者更容易与智能合约互动,在构建新产品时有更大的灵活性。

👉 信任最小化的桥接

Fuel 提供可防欺诈的、信任最小化的轻客户端和信任最小化的流动性桥接,这在两个独立的 L1 之间是不可能的。 为以太坊生态系统提供最大的安全保障。

👉 存储空间的灵活性

由于一个被称为存储空间灵活性的功能,Fuel VM 的用户第一次可以利用 64 位的存储槽,而不是 Solidity 使用的标准 256 位槽。

由于 Fuel VM 不共享 Ethereum 的存储布局限制,它可以利用更有效的存储布局,从而降低存储成本和更好地扩展为 L2(EVM)。

👉 并行交易处理

Fuel 网络是一个以太坊执行层,以模块化的方式构建。当与单体链相比,这允许更大的可扩展性和增强的性能。

鉴于以太坊的性质,这个链的交易是线性处理的。在 EVM 的早期,当大多数程序只使用一个或两个线程时,整个 VM 是严重分散的。

如今,特别是对于第 2 层的解决方案,由于多线程处理器的兴起,同时执行多个交易的能力正成为一个越来越理想的功能。

但相信我们,当涉及到区块链的计算时,Fuel Network 是一个真正的游戏规则改变者。新的和改进的,FuelVM 是一个为速度和响应性而优化的虚拟机。

它的建立是为了促进并行交易处理,从而提高处理速度和效率。这反过来又为用户提供了一个卓越的体验。 此外,与其他智能合约平台不同,FuelVM 将开发者的体验放在首位,使程序员编写代码更加简单,确保智能合约的安全。

👉gas 可以用任何支持的代币支付

用户可以用 Fuel Network 接受的任何代币来支付他们的汽油费。因此,用户并不局限于只用网络的原生代币支付燃气费。

这使得建立在 Fuel 上的平台对新用户来说更容易获得,因为他们不必获得原生网络代币。

NFT 市场的挑战和解决方案

  • 目前的 NFT 市场有几个挑战,我们的目标是通过使用 Fuel 来解决:
    • 交易处理缓慢
    • 高额和隐藏的费用
    • 用户体验差
    • 特许权使用费

让我们深入了解一下,在解决上述问题的同时,Fuel 究竟将如何给我们的平台带来竞争优势。

⚡️ 交易速度的挑战

大多数 NFT 市场不能吹嘘最快的交易处理时间。试图购买或出售 NFT 的用户可能会发现等待他们的交易被确认是很不方便的。更重要的是,市场可能因交易处理速度慢而变得拥挤且昂贵,这可能导致错误或延误,或限制可处理的交易数量。

由于有了我们在上一节详细讨论的平行交易处理功能,交易处理速度慢对 Thunder 来说不再是一个问题。

⚡️ 用户体验的挑战

许多区块链没有优先考虑去中心化,而是专注于构建具有高吞吐量的系统。Fuel 实现了最高的灵活吞吐量,同时仍然保留了去中心化的好处。

Fuel 的执行层是为快速处理大量交易而建立的,这大大增强了 Thunder 上的用户体验。

⚡️ 高昂和隐藏的费用

第 1 层的 NFT 市场有一个共同的问题--他们未能成功降低费用。这使得一些用户参与市场的成本过高,特别是当费用不仅高,而且不透明时。

Fuel 的虚拟机架构是其最显著的优势之一。它的设计是为了消除我们在 EVM 中经历的浪费和支付的费用,同时为开发者打开新的设计机会的大门,使我们能够降低费用,并消除任何隐藏的费用。

在 Thunder,我们决心不仅提供最好的体验,而且还提供最低的费用。

⚡️ 版税问题

为了收取版税,许多 NFT 市场最近引入了智能合约级别的限制。这破坏了数字资产的去中心化、无许可和开放的性质。

这可能会阻碍交易,并消除围绕代币所有者如何使用他们的代币的选择,限制了艺术家和收藏家以他们想要的方式运作的选择性和灵活性。

Thunder 将赋予创作者权力,不仅通过公平的版税制度支持创作者,而且还在技术支持、网络和社区建设方面提供帮助。

最后的话

综上所述,Thunder 团队相信,Fuel Network 将为我们的用户提供卓越的体验,它是为我们的 NFT 市场提供动力的最佳选择。

我们对我们平台的未来持乐观态度,认为我们做出了正确的选择。

此外,请务必在社交媒体上关注我们,以便在我们的市场正式上线时了解最新的信息。

请继续关注并记住:未来是模块化的!LFG ⚡️

· 14 min read
fuel

体验 P2P 网络等新功能,并参与塑造以太坊的未来。

这篇文章由 Fuel 大使通过俄语翻译而来。

我们很高兴地宣布推出 beta-3 测试网,在 Fuel 上增加 P2P 网络。有了这第三个测试网,Fuel 进入了测试的后期阶段,并在通往主网的道路上达到了一个关键的里程碑,这是一个模块化的未来,为以太坊生态系统实现真正的可扩展性。

11 月,我们推出了 beta-2,增加了桥接支持,以便开发者可以在 Fuel 上进行跨链 dapp 的实验。我们很高兴看到一个充满活力的生态系统在 Fuel 上出现,现在有超过25 个项目在这里。自之前 Beta2 以来,已经处理了超过 900,000 笔交易,并看到了来自开发者、项目和社区成员的巨大兴趣。

激动人心的新可能性正等待着 beta-3 的到来。

P2P 网络现在在 Fuel 上

beta-3 扩展了 beta-2 的功能,引入了P2P 网络和运行同步全节点的能力。这使得 beta-3 的 API 能够扩展到并达到 beta-2 中观察到的需求水平。在接下来的测试网中,我们将启用公共 P2P 访问,这样任何人都可以运行连接到 Fuel 的本地节点。

请注意,beta-3 不是一个激励性的测试网。参与这个网络不会有直接的奖励。

关键功能

以下是 beta-3 测试网的关键功能的完整列表:

⛓️ 区块同步

同步的完整节点可以通过 P2P 网络与 Fuel 网络同步。这主要是对于能够分叉主网状态进行合约测试或拥有一个专门的全节点进行应用索引的事情很有用。虽然 P2P 已经启用,但目前只适用于我们用来加速/扩展 API 的可信连接。

🤝 单一共享网络

beta-3 是一个共享的、面向开发者和用户的公共测试网。开发者可以部署合同,然后用户可以与这些合同进行交互。

🚰 水龙头

任何人都可以使用龙头来获得一些测试 ETH 来部署或与合约互动。可在此领取

📃 GraphQL 端点

Fuel Core 节点使用 GraphQL 而不是 JSON RPC。beta-3 的公共 GraphQL 端点的玩法可在此获得。

🔍 区块浏览器

这里有一个区块资源管理器(仍然大量是一个正在进行的工作)。

如果你有任何问题(与开发有关或其他),你可以加入 Fuel Labs Discord 并前往 Testnet 类别下的#questions 频道。请务必关注我们的 Twitter,了解最新信息。

新内容

编译器

由于引入了各种后端优化,编译器现在能够更稳健、更有效地处理大型设计,从而使字节码大小减少 30%。还引入了新的功能和增强功能,如支持可变静态数组,#[应付]注解,消除了~访问相关函数的需要,能够从脚本中返回 Vec,以及能够通过 main()在谓词中传递谓词数据。

🌐 客户端

支持运行本地节点的块同步(见上面的关键特征)

Gas 计量的谓词 - 谓词费用的计算与脚本类似,解锁标准控制流的能力,如循环或动态跳转。谓词使用的气体从整个 txn 汽油限额中扣除,防止昂贵的操作码被低估。

修订后的气体时间表--vm 操作码是根据更精确的基准系统重新定价的。随着更多的功能和优化的加入,气体时间表将继续调整,新的定价框架将使其更容易发现变化并在必要时调整定价。

新的数据库优化,以提高 API 性能。

🔧 工具箱

forc test 语法高亮

现在你可以使用 #[test(should_revert)] 属性来描述一个预期会恢复的单元测试。这使得测试失败状态成为可能。

测试输出现在显示失败测试的名称、文件路径和行数。

为单元测试中的合同调用奠定了基础。当在一个合同项目上运行 forc test 时,forc 将首先构建和部署合同,然后再构建和运行单元测试。这使得早期支持单元测试中的合同调用。

fuelup 亮点

现在支持用 fuel-toolchain.toml 覆盖工具链。这样就可以把目录和仓库钉在特定的 fuelup 通道和组件版本上,提高 Fuel 项目的可重复性。

forc doc 亮点

由 forc doc 生成的 HTML 现在支持改进的模块导航。

新的和改进的样式和 markdown 渲染。

其它亮点

forc test 和 forc fmt 现在支持工作区,并将为每个成员包运行。

forc.toml 现在支持为合同依赖关系指定一个盐(Salt)。

增加了一个简单的 forc tx 插件命令,用于通过 CLI 构建序列化的事务。

🧩 语言服务器

对语言服务器进行了优化,使其能够同时与多个项目一起工作,使用户能够在不中断工作流程的情况下轻松地在项目之间切换。

实施了改进的警告和错误诊断,提供了关于潜在问题的更准确和详细的信息。

增加了代码动作,用于为 abi 定义自动生成一个植入块。

初步支持 neovim,为用户的开发环境提供了更多的灵活性。

SDK

Rust SDK

区块操作,用于测试特定场景下的智能合约。

更简单的测试基础设施设置:在一个宏中描述你的测试钱包、合约、脚本、谓词和部署。

改善智能合约的调试, 优化解析和人类可读的还原错误。

交易费用现在可以使用消息支付,即桥接资产。

谓词数据编码器。

abigen!宏重做:现在支持多个合约、谓词和脚本都在同一个宏调用中。

新的谓词 API。

更好的依赖关系导入体验。

TS SDK

更好、更可靠的日志解析。

整体的人机工程学改进。

新的 Abi-typegen CLI;

全新文档。

🔌 前端

Fuel 钱包

交易预览能够更好地预览复杂的交易,例如包含多种操作的交易,如将资产转移到多个地址,调用合同,或同时进行两种操作。

多账户支持现在可以在 Fuel 钱包内管理多个地址。

交易历史让用户在不离开钱包的情况下看到账户的所有交易。

新的软件包 @fuel-wallet/sdk 用于类型支持。当使用 Fuel Wallet 开发时,您可以导入我们的 TypeScript 包,以拥有我们钱包的类型,并与目前使用 Fuel TS SDK 的项目更好地整合。

使用私钥创建账户。在特殊情况下,如开发,你可能需要使用一个与当前钱包助记词无关的私钥来创建一个新的帐户。

添加自定义资产。现在 dApps 和用户可以添加元数据到钱包上的自定义资产,使得不仅有 Fuel 团队的官方代币列表,而且有第三方应用程序的可定制资产。

🗃 索引器

  • 结合你编译的 Sway 合同 ABI 和 GraphQL 模式,建立索引器,编译到 WASM。

  • 重新部署新的索引器,而无需重新部署你的合同。

  • 你可以根据自己的需要对 FuelVM 块的信息进行索引,或多或少。

  • forc-index 插件

    • 一个新的 Forc 插件,用于使用一组简单的命令创建、构建和部署新的索引器。
  • 新版文档上线! (查看新的快速入门)

应用开发

  • Sway 标准库:

    • 支持低级别的调用(在编译时 ABI 未知)
    • 新的字节类型,以取代 vecu8>,用于非类型化/原始数据。
  • Sway-libs:

    • 固定点和有符号整数类型
    • 所有权库

开发者教育

  • 我们为开发者更新并发布了新的资源:
    • 开发者快速入门手册(学习如何在 Fuel 上构建和部署他们的第一个全栈应用)。
    • 技术论坛,查看常见问题,发布问题,并从社区成员和 Fuel 贡献者那里获得支持。

对于开发者

这里有更多的 beta-3 文档:

🚰 测试币水龙头

部署合约和与网络互动需要有效的交易,而这些交易需要币。Testnet ETH 可以通过完成一个验证码从水龙头领取

💰 钱包

这里有一个持久的CLI 钱包(有 Linux 和 MacOS 的二进制文件)。

一个网络/浏览器插件钱包正在积极开发中,可在此查看

⚡️ 入门

关于 Fuel 的概述,请看Fuel 的文档

要在 Fuel 上开始构建,请查看开发者快速入门。该指南为开发者在 Fuel 上构建应用程序提供了一个端到端的操作指南。

🌴 智能合约语言(Sway)

要开始为 Fuel 开发合约,请看看 Sway Book,以及 Rust SDK 和 TypeScript SDK。

请注意,beta-3 测试网正在积极开发中,可能会出现突破性的升级,甚至是再生事件。

超越单片机

模块化的区块链设计正迅速成为应对区块链数量级扩展挑战的首要解决方案。该行业正在迅速摆脱单一的区块链设计,转向模块化设计。

我们相信创新不需要推出新的 L1,而是可以在执行层发生。Fuel Labs 正以最快的模块化执行层 Fuel 引领这一潮流。

不受 EVM 的限制,Fuel 从模块化优先的角度来处理可扩展的执行,允许对 EVM 的低效执行环境进行重大改进,从而实现最大的分散化和最高的灵活吞吐量。

通过这场新的运动,我们有机会重新开始,并从根本上建立新一代的区块链,超越单片机。

关注 Fuel

Twitter | Discord | LinkedIn | YouTube

关于 Fuel

Fuel 是最快的模块化执行层。该项目技术功能强大且时尚,可实现并行交易执行,为开发人员提供扩展所需的最高灵活吞吐量和最高安全性。开发人员选择 FuelVM 是因为其卓越的开发体验以及超越 EVM 限制的能力。

成为一名贡献者

探索我们当前的职位空缺

学习 Sway

· 12 min read
fuel

来自最快的模块化执行层的最新消息。

fuelwiki

欢迎来到 Inside Fuel,我们对技术发展的回顾以及 Fuel 网络上发生的一切。花点时间了解所有最新消息。

🆕 Fuel 的团队最新情况

没有令人难以置信的贡献者团队,构建最快的模块化执行层是不可能的。以下是本月团队的最新成员:

fuelteam

📰 在 Rust 中的新闻

rustfuel

根据 Rust In Blockchain 的月度回顾,Fuel 是今年冬天最活跃的基于 Rust 的项目之一,Fuel:在 2022 年 12 月和 2023 年 1 月之间有 548 个合并的 PR,406 个封闭的问题,以及 256 个开放的问题,使我们在最活跃的基于 Rust 的区块链中排名前五。

🎙️ 播客和 AMAs

约翰-阿德勒参加了 Bankless Podcast,解释了为什么以及模块化区块链将为自主的未来设定道路。

他还参加了OxResearch 的播客,解释了 Fuel 如何区别于其他扩容方案。

🌴 Sway 语言日

我们主持了第三期 Sway Day,这是一个关于 Sway 所有事情的月度讨论。这一次,我们回顾了 2022 年的所有发展成就,并与约翰-阿德勒一起设定了 2023 年的期望。

  • 在 2022 年底,你可以记住。
  • 自 Sway 开始以来,已有 3168 个问题被修复。
  • Sway 资源库已经从 0 增长到 350 多颗星。
  • 使用 Sway 可以直接在编译器层面进行重入分析。

Reentrancy detection is a critical function in smart contract systems.

Fuel Labs 软件库在区块链领域的 Rust 中,整整一年都在关闭的 PR 中排名前五,并且在打开/关闭的问题中一直排名前一。

我们流程的文档不断带来越来越多的第三方贡献者和建设者(目前有 25 个以上的项目在 Fuel 上构建)。

在过去的一年里,Fuel 和 Sway 的受欢迎程度明显上升,其标志是开源贡献和参与我们的赠款计划以使用 Sway 在 Fuel 上构建项目的大幅增加。

  • 在 2023 年,你可以期待:
    • 在字节码大小方面的编译器优化。
    • 更多的后端语言将被 Sway 支持(例如 EVM 后端已经在开发中)。
    • 通用和特性约束将被改进,抽象将更加经济和强大。
    • 更多的应用程序将从 Solidity/Vyper 移植到 Sway。
    • 在编译器层面改进重入分析。
    • 增强的工具和语言特性。

💻 技术更新

什么是 Fuelup?

Fuelup 是 Fuel 的官方软件包管理器和复用器,从官方发布渠道安装 Fuel 工具链。它使你能够轻松地安装预先打包的工具链,保持它们的更新,甚至创建自定义的工具链并在它们之间切换。

二进制文件通过 Fuelup 作为代理执行,允许工具的灵活执行。

它简化了普通平台的 forc 和 fuel-core 的 Sway 应用程序的构建和维护。

Fuelup 中加入了对覆盖工具链的支持。

开发者可以在 Sway 项目根部的 TOML 文件(fuel-toolchain.toml)中指定一个组件的特定版本,当在该目录下工作时,fuelup 将自动使用指定的版本。

fuelup 处理二进制文件的方式也被更新了 - fuelup 现在使用~/.fuelup/store中的通用存储来缓存你的二进制下载。这意味着在不同的工具链中不会再有相同版本的重复组件,而且用已经下载的组件创建一个新的工具链几乎不需要时间。

Sway 应用程序

已经部署在 Sway 上的 dapp

新的碎片化 NFT 应用: 碎片化 NFT 应用将把 NFT 锁定在 fractional-NFT(f-NFT)合约中,并允许用户购买新铸造的 fractionalized 代币。然后,这些代币可以在 AMM 上买卖,或者在启动回购的情况下将其退回到分销合约。如果所有的代币都被退回,管理员可以从 f-NFT 合约中解锁 NFT,重新获得全部所有权。

新的 Timelock 应用: 时间锁的目的是将交易的执行限制在某个时间窗口。该交易通常涉及资金转移,例如通过托管、归属时间表、延期付款等。然而,它也可用于无价值的执行,即调用合同来执行计算。交易参数被散列并存储在一个队列中,等待后续调用执行。用户可以选择在时间窗口内执行交易,或者通过将其从队列中删除来取消交易。

Sway 语言一般性更新

  • 引入 Sway 参考,这是一个更具技术性的 Sway 文档来源。
  • 引入了 __smo intrinsic。
  • 启动了 EVM 后端工作。
  • 引入配置时间常数。
  • 改进了对方法调用、不匹配的 ABI 方法、不正确使用的类型等的错误信息。
  • 在 CEI 分析中增加了平衡树和输出消息的效果。
  • 增加了对不完整路径表达式/模式的更好的解析器恢复。

错误修复

  • 对特质约束的解析,允许找到正确的特质方法。
  • 对死代码分析,以防止错误报告死代码。
  • 防止无限类型统一带来的堆栈溢出。
  • 在类型断言方面,防止不健全的类型推理和内部编译器错误。
  • 在匹配表达式中计算嵌套枚举匹配的缺失模式。
  • 阻止重复的 ABI/特质声明。
  • 禁用 ABI 方法的自我参数。

标准库更新

  • 引入 Byte 类型。
  • 支持 u8, u16, u32 的位操作。
  • 优化 U128 和 U256 的除法操作。
  • 删除 std::context::gas,改用 std::registers::context_gas()。
  • 引入低级别的调用功能。
  • 改为使用 Bytes 类型的 send_message 数据参数。
  • 增强结果库。
  • 引入 Never 枚举。

工具更新

  • 对逗号分隔的注释进行授权。
  • 在 forc doc 中增加了 CSS 样式、favicon 和--document-private-items 选项。
  • 引入#[test(should_revert)]属性,以表示单元测试应该回退。
  • 允许 LSP 以部分配置启动。
  • 增加 LSP 选项来隐藏编译器的警告和错误。
  • 为 ABI 方法增加#[支付能力]注解。
  • 使 LSP 能够同时与多个项目一起工作。
  • 增加了对从单元测试中调用合同 ABI 的支持。
  • 增加了 forc 文档中项目与模块之间生成链接的接口。

Forc 更新

  • 引入构建标志以打印死码分析图。
  • 在 forc 测试中引入了工作区测试功能。
  • 为 forc clean 增加了工作区支持。
  • 修正了一个错误,防止在同时运行 forc 的多个实例时出现 git 签出竞赛。
  • 修正了纠正 arm64 二进制文件的可执行输出的问题。

燃料核心

  • P2P 区块同步(增加了运行同步全节点的能力)。
    • 包括增加了两个新的服务,同步和区块导入器。
    • 在标准的 fuel-core 二进制文件中启用了 libp2p。
  • 端口和适配器的重新架构。
    • 将 fuel-core 的内部结构分解为易于单元测试和可重用的库。
    • 为其他的实现方式铺平道路,如轻型客户端。
  • 改进数据库性能(减少克隆)。
  • 引入天然气时间表框架和修订天然气价格。
    • 新的框架使我们能够根据基准输出自动重新定价 gas 计划。
    • 随着我们实施合同状态合并和进一步优化数据库,将会有更多的天然气价格变化。
  • 燃气计量的预测。 测使用标准气体时间表定价,其执行预算将从交易气体限额中扣除。以前,它们只根据它们增加到交易中的字节数来定价。
  • 用 1.67 版本的 Rust std lib impl 替换 VM 中的整数对数(现在需要 Rust 1.67 版本来使用 fuel-core & FueVM)。
  • 实现了区块头的二进制 MMR。
  • 汽油价格现在可以作为 chainconfig / genesis 块的一部分进行配置。
  • FuelVM 现在是一个包含虚拟机所有基于 Fuel 的依赖关系的单一程序。
  • 更新 GTF 参数常量以符合规范。

SDKs (Fuel-TS & Fuel-RS)

Rust SDK

  • 更简单的测试基础设施设置:在一个单一的宏中描述你的测试钱包、合同、脚本、谓词和部署。
  • 解析和人类可读的还原错误,使智能合约的调试更加友好。
  • 交易费用现在可以使用信息支付,即桥接资产。
  • 引入了 Predicate 数据编码器。
  • 重做 theabigen!宏, 现在支持多个合约、谓词和脚本都在同一个宏调用中。
  • 谓词 API 的引入。
  • 更好的依赖关系导入体验;

Typescript SDK

  • 更好、更可靠的日志解析。
  • 全面改善人机工程学。
  • 引入 abi-typegen CLI。
  • 实时文档返工。

关注我们

Twitter | Discord | LinkedIn | YouTube

关于我们

Fuel 是最快的模块化执行层。该项目技术功能强大且时尚,可实现并行交易执行,为开发人员提供扩展所需的最高灵活吞吐量和最高安全性。开发人员选择 FuelVM 是因为其卓越的开发体验以及超越 EVM 限制的能力。

· 6 min read
fuel

今天,Fuel Labs 介绍了 Yul+,它为 Yul 增加了各种 QoL 功能,Yul 是 Ethereum 虚拟机的一种低级中间语言。

Fuel wiki Labs

Yul 是由 Solidity 开发者编写的一种不可思议的小众语言,作为进一步优化的编译目标。它的特点是一个简单而实用的低级语法。它允许开发者比 Solidity 更接近原始的 EVM,并由此带来了对 Gas 使用的大幅改善的承诺。

Fuel Labs 已经在很大程度上用 Yul 实现了其最初的开放性测试的 OP 合约,但我们注意到,即使增加极少的基本语言,我们的代码也会变得更加清晰和高效。

Yul+可以被看作是 Yul 的一个实验性升级,Yul 可能会在以后的时间里把它的一些功能原生地整合起来。

一些 Yul 的基础知识

一个带有构造函数和运行时的基本 Yul 合约:

  object "EmptyContract" {
code {

// Your constructor code

datacopy(0, dataoffset("Runtime"), datasize("Runtime"))
return(0, datasize("Runtime"))
}
object "Runtime" {
code {

// Your runtime code

}
}
}

处理请求数据

  // copy calldata to memory
// this copies 36 bytes of transaction calldata to memory position 0

calldatacopy(0, 0, 36)

内存管理

  // store and read memory
// store 0xaa at memory position 100

mstore(100, 0xaa)

// load 32 byte chunk from memory position 100 and assign to someVar

let someVar := mload(100)

哈希

  // hash memory position 0 to 0+32, assign result to someHash

let someHash := keccak256(0, 32)

状态存储

  // store value 0xaa in state storage slot 3

sstore(3, 0xaa)

// get value from state storage 3 and assign to someVar

let someVar := sload(3)

函数和条件语句

  // Functions and conditions

function someMethod(someVar, someOther) -> someResult {
if eq(someVar, someOther) {
someResult := 0x45
}
}

// Loops

for { let i := 0 } lt(i, 100) { i := add(i, 1) } {
// some loop code
}

// Switches

switch someVar
case 0 {
// when someVar == 0
}

case 1 {
// when someVar == 1
}

default {
// default
}

Yul+ 特点

  • 所有现有的 Yul 语言功能
  • 枚举
  • 常量
  • 以太坊标准 ABI 签名生成 ( sig"function …" )
  • 布尔值(真,假)
  • 默认情况下的安全数学(即加法、减法、乘法的溢出保护)
  • 注入的方法(mslice 和 require)
  • 内存结构 ( mstruct )

用法

枚举、常量和布尔值

  enum Colors (
Red, // 0
Blue, // 1
Green // 2
)

// Constant someConst will equal 1

const someColor := Colors.Blue

// Constant someBool will equal 0x1

const someBool := true

以太坊标准 ABI 签名生成方法 sigs 和主题:

  // someVar will equal 4 byte method signature 0x6057361d

let someVar := sig"function store(uint256 val)"

// someTopic will equal 32 byte topic hash 0x69404ebde4a368ae324ed310becfefc3edfe9e5ebca74464e37ffffd8309a3c1

let someTopic := topic"event Store(uint256 val)"

默认情况下,所有计算现在都是安全的,如果需要,可以在编译器中将其禁用。

  let someVar := add(3, sub(4, 2))

// will compile to this, with safeAdd, safeSub methods injected

let someVar := safeAdd(3, safeSub(4, 2))

为方便起见,我们添加了一个内存片 mslice,并要求如果为真:

  mstore(300, 0xaabbccdd) // note, mstore left pads zeros by 28 bytes

let someVal := mslice(328, 3) // will return 0xaabbcc

require(gt(someVal, 0)) // someVal > 0 or revert(0, 0) nicely

最后,我们启用内存结构。这些用于描述内存中已经存在的结构,例如调用数据、哈希数据或任何具有写入内存的结构的数据。

它提供了广泛的定位、偏移、散列、索引和组织功能,以通过按需注入的简洁高效的预制函数更好地处理内存。我们仍然继续使用注入函数的函数符号,这不会破坏现有的 Yul 语法风格。

  // Let’s assume we assign some calldata to memory position 0

// this describes an abstract memory construction:

mstruct SomeCalldata(
signature: 4,
value: 32,
)

let methodSig := SomeCalldata.signature(0) // slices out sig
let someVal := SomeCalldata.value(0) // slices out value

// we also get some nice indexing and offset features

SomeCalldata.value.position(0) // equals 4 (i.e. 0 + 4)

// Index ordering values as well

SomeCalldata.signature.index() // equals 0

SomeCalldata.value.index() // equal 1

// Keccak hashing

SomeCalldata.value.keccak256(0) // equals 32 byte hash of value

// Calculate entire size of calldata structure

SomeCalldata.size(0) // equals 36 (i.e. 4 + 32)

示例:Yul+ SimpleStore 合约

  object “SimpleStore” {
code {
datacopy(0, dataoffset(“Runtime”), datasize(“Runtime”))
return(0, datasize(“Runtime”))
}
object “Runtime” {
code {
calldatacopy(0, 0, 36) // copy calldata into memory

mstruct Calldata( // mstruct describes calldata
sig: 4,
val: 32
)

switch Calldata.sig(0) // get signature at positive zero

case sig”function store(uint256 val)” { // store method
sstore(0, Calldata.val(0))
}

case sig”function get() returns (uint256)” { // get method
mstore(100, sload(0))

return (100, 32)
}
}
}
}

在线调试

Yul+ - Low-Level Ethereum Devepment

总结

总之,Fuel Labs 团队希望通过创建更多低级替代方案来扩展以太坊虚拟机的可能性,我们每天都使用这些替代方案来为生态系统构建高性能的 optimistic rollup 可扩展性。