Altcoins Talks - Cryptocurrency Forum
Marketplace => Marketplace & Bitcoin Services => Advertise Your Stuff => Topic started by: [email protected] on November 09, 2022, 06:56:08 AM
-
Fuel v1 最初是用于单一以太坊的第 2 层(L2)可扩展性技术。这是以太坊主网的第一个乐观汇总,于 2020 年底部署。
如今,Fuel 是最快的模块化执行层。Fuel 提供最高的安全性和灵活的吞吐量,专注于卓越的开发人员体验。
我们是这样做的:
并行交易执行
燃料虚拟机 (FuelVM)
使用 Sway 语言和 Forc 的开发人员工具
并行事务执行
Fuel 通过使用 UTXO 模型形式的严格状态访问列表并行执行交易的能力,提供了无与伦比的处理能力。这使 Fuel 能够使用更多的线程和 CPU 内核,这些线程和内核通常在单线程区块链中处于空闲状态。因此,Fuel 可以提供比其单线程同类产品更多的计算、状态访问和事务吞吐量。
使用 EVM,很难知道事务之间是否以及在何处存在依赖关系,因此您被迫按顺序执行事务。
FuelVM 使用 UTXO 模型,通过所谓的状态访问列表识别交易依赖关系,从而实现并行交易执行。使用 FuelVM,Fuel 全节点识别交易涉及的账户,在执行前映射出依赖关系。
FuelVM
FuelVM 从以太坊生态系统中学习,实施了多年来向以太坊 VM (EVM) 提出的改进,但由于需要保持向后兼容性而无法实施。
以下是在 FuelVM 中实现的一些 EIP:
生态工业园 描述 执行
易于并行化 通过指定它们可以访问的地址,允许并行处理 EVM 中的事务。 Fuel 可以通过我们的 UTXO 模型使用严格的状态访问列表来并行执行交易。这允许 Fuel 使用 CPU 的所有线程和内核来验证交易。
EIP-2098:紧凑的签名表示 将签名从 65 字节减少到 64 字节,以简化客户端代码中的事务处理、降低 gas 成本并减小事务大小。 Fuel 将签名数据压缩一个字节,从 65 到 64 字节。
EIP-3074:AUTH和AUTHCALL操作码 引入了两个 EVM 指令AUTH和AUTHCALL,以启用批处理功能,允许气体赞助、到期、脚本编写等。 Fuel 有脚本和谓词,当它们组合时,允许在一个批次中执行多个调用。
EIP-3102:二叉树结构 为帐户和存储尝试引入二进制结构和默克尔化规则,将它们合并为单个“状态”trie。二进制尝试比十六进制尝试更小(~4x)的证明,使其成为无状态友好以太坊的首选设计。 Fuel 使用二进制 Sparse Merkle Trie 而不是 Patricia Merkle Trie,这使得证明更小,性能更好。
EIP-4758:停用 SELFDESTRUCT SELFDESTRUCT将操作码重命名为SENDALL,仅立即将账户中的所有 ETH 移至目标;不再破坏代码或存储或更改随机数。禁用SELFDESTRUCT将是无国籍状态的要求。 FuelVM 没有SELFDESTRUCT可以使客户端实现复杂化的操作码。
EIP-5027:取消对合约代码大小的限制 取消对代码大小的限制,这样用户就可以部署大代码合约,而不必担心将合约拆分成多个子合约。随着去中心化应用的迅猛发展,智能合约的功能也越来越复杂,新开发的合约规模也在稳步增长。因此,我们面临更多关于 24576 字节合约大小限制的问题。 FuelVM 对低于其物理限制的单个合约的大小没有限制。我们有一条指令允许您将另一个合约中的字节码加载到当前执行上下文中,即使您必须在多个交易中拆分字节码,您也可以将其用作单个合约。它将有一个单一的整体字节码和一个状态。在 EVM 中,如果你在两个交易中分配一个合约,它就是两个独立的合约,你必须做一些事情,比如委托调用来共享两个合约之间的状态,并且不能做在每个合约的字节码之间跳转之类的事情。
EIP-5065:转移以太币的说明 添加一条新指令,将以太币传输到目标地址,而不将执行流程移交给它。以太坊目前没有理想的方式来转移以太币而不转移执行流程。人们已经提出了可重入保护和类似的解决方案来防止某些类型的攻击,但这并不是一个理想的解决方案。 FuelVM 有一个名为 的指令TR,是 transfer 的缩写,它将原生资产转移到合约,但不允许接收合约执行逻辑。您可能希望这样做以确保接收合同无法重新输入。这在 EVM 中不作为原生的一流指令存在——你可以通过自毁合约来做到这一点,但这是一个只适用于 ETH 的混乱解决方法。
EIP-86:交易来源和签名的抽象和EIP-2938:账户抽象 实施一组更改,以“抽象出”签名验证和随机数检查的综合目的,允许用户创建执行任何所需签名/随机数检查的“账户合约”,而不是使用目前硬编码到交易处理中的机制。 FuelVM 具有无状态账户抽象,使应用层逻辑能够配置交易的有效性规则。在今天的以太坊上,如果用户有足够的以太币,交易是有效的,nonce 是正确的,并且签名是有效的。通过账户抽象,用户无需硬分叉即可更改交易逻辑的有效性。这可能意味着对签名方案的更改或本机锁定多重签名背后的帐户。
EIP-1051:EVM 的溢出检查 此 EIP 为 EVM 算术运算添加了溢出检查,并添加了两个用于检查和清除溢出标志的新操作码。由于 EVM 对模 2^256 整数进行操作,并且不提供内置溢出检测或预防,因此需要对每个算术运算进行手动检查。 溢出检查内置在 FuelVM 中,可以选择禁用。
EIP-2803:丰富的交易 如果一笔交易的地址为 x,那么交易的数据将被视为 EVM 字节码,并将从交易的 CALLER(又名:交易签名者)的上下文中执行。许多以太坊 DApp 需要用户批准多笔交易才能产生一种效果。这会导致糟糕的用户体验,并使与 DApp 交互的体验复杂化。 FuelVM 有实现这一点的脚本。
EIP-2926:基于块的代码默克尔化 字节码目前是在证明散列之后块见证大小的第二个贡献者。将 trie 从十六进制转换为二进制将见证的哈希部分减少 3 倍,从而使代码成为第一个贡献者。通过将合约代码分成块并提交到 Merkle 树中的这些块,无状态客户端将只需要在给定事务期间触及的块来执行它。 要在以太坊上获得代码散列,您需要将所有字节码散列在一起。问题是,如果你想用无状态或欺诈证明来做事情,为了证明这个哈希是有效的,你必须提供所有的字节码,每个合约最多 24KB。这个 EIP 建议我们应该对它进行 merkalize 而不是散列。FuelVM 通过使用代码根而不是代码哈希来实现这一点。
摇摆语言
Sway 是一种用于 Fuel 虚拟机 (FuelVM) 的领域特定语言 (DSL),这是一种专为 Fuel 区块链设计的区块链优化 VM。Sway 基于 Rust,并包含利用区块链 VM 的语法,而没有不必要的冗长样板。
Sway 是与 FuelVM 一起创建的,专为高计算燃料环境而设计。在此处查看 Sway 文档。
开发者工具
Fuel Labs 正在开发一套开发人员工具,以创建无缝的开发人员体验。通过在内部创建所有内容,Fuel Labs 保证了工具链的维护,避免了分散的开发者生态系统的陷阱。
Fuel 使用我们自己的称为 Sway 的特定领域语言和称为 Forc(Fuel Orchestrator)的支持工具链,为开发人员提供了强大而流畅的体验。我们的开发环境保留了 Solidity 等智能合约语言的优势,同时采用了 Rust 工具生态系统中引入的范式。现在,开发人员可以获得完全垂直集成的体验,从虚拟机到 CLI 的每个组件都可以协调工作。
Fuel 工具链: 强制:构建、运行测试、启动区块浏览器的本地实例、格式化。
在这里查看燃料工具链。
即将推出: 一套审计工具,从模糊测试和形式验证到代码覆盖和运行时门控。
跟随官方了解更多:https://twitter.com/fuellabs_