Sealevel:Solana (SOL) 如何并行执行数千个智能合约?

Solana 目前是加密货币生态系统中最成功的区块链。 为了达到每秒 50,000 次交易的速度,其在 Anatoly Yakovenko 领导下的开发团队不得不带来包括 Sealevel 在内的创新份额。 这种执行环境可以同时处理数以万计的操作。

在之前的文章中,我们研究了历史证明,它的区块时间戳系统是如何工作的; 然后是 Tower BTF,它的共识机制; 或者 Turbine,它的区块传播方法,以及湾流,它的交易传播没有 mempool。

在本文中,重点介绍 Sealevel,这是一种巧妙的技巧,可让你同时执行数千个智能合约。

本文作为教育交易所活动的一部分提供给你,并由 Solana 提供支持。

Sealevel:Solana 的运行时环境

Sealevel 是 Solana 的运行时环境。 就像在以太坊或 EOS 上一样,这个运行时可以根据自治合约中编程的指令修改区块链的状态。 但与其前辈不同的是,Solana 允许并行执行数以万计的智能合约。

在以太坊虚拟机上,指令形成一个堆栈,单个合约可以在适当的时候改变区块链的状态。 在 Solana 上,网络验证者节点的处理器的每个核心都可以与其他核心同时执行一条指令。

Solana 上的交易

Solana 上的任何交易都准确地描述了由此导致的各种区块链状态变化,无论是读取还是写入。 这带来了显着的优势:

  • 由于事务不重叠,它们可以同时执行;
  • 需要访问区块链相同状态的交易也可以并行执行。

Sealevel:Solana (SOL) 如何并行执行数千个智能合约?

所需材料

因此 Sealevel 是 Solana 的执行环境,部署在任何验证器节点上。 它的执行需要以下硬件:

  • 具有 12 个或更多内核、主频为 2.8 GHz 或更高的处理器 (CPU);
  • 128 GB 随机存取存储器 (RAM) 或更多;
  • 一块容量为256GB的主板;
  • 500 GB 或更大的账户专用存储容量;
  • 至少 1TB 的注册表专用存储空间(SSD 或 SATA)。

如你所见,部署 Sealevel 所需的硬件仍然相当可观。 但是,Solana 运行时相当容易理解。

规则

  • 只有合约的所有者才能修改账户的余额或数据;
  • 此授权仅取决于交易签名的有效性;
  • 每个程序可以包含尽可能多的指令,并根据其所有者的意愿修改尽可能多的帐户
  • 由于帐户的元数据,Sealevel 允许确保交易发起者不会“作弊”。

事实上,就像在以太坊上一样,所有合约操作都有成本(计算预算)。

Solana - Sealevel - 计算预算这只是意味着该程序可以执行 200,000 条指令,记录 2000 条消息,但不能使用超过 4000 次堆栈,调用深度不能大于 64,或不同合约之间的调用超过 4 级。

Solana区块链上的程序和帐户

Solana区块链账户的数据库称为 Cloudbreak。 它使得在每个公钥和关联账户之间建立对应关系成为可能。 每个帐户都有余额和数据。 它还有一个所有者:管理其状态变化的程序的公钥。

另一方面,程序(智能合约)没有状态:它们只是一系列代码行。 为了修改帐户的状态,他们依赖于在所涉及的帐户上输入的数据。

权限和限制

因此,智能合约有授权,但也有与它们交互的账户相关的限制:

  • 程序只能修改其拥有的帐户中的数据;
  • 程序只能借记他们拥有的账户;
  • 任何程序都可以记入任何帐户;
  • 任何程序都可以对任何帐户进行读取访问。

所有帐户最初都具有相同的所有者:系统程序。 他是唯一可以分配帐户所有权(帐户生命周期一次)或为其分配空白数据(零初始化数据)的人。

Sealevel:Solana (SOL) 如何并行执行数千个智能合约?

当开发人员部署程序时,他使用加载程序。 正是这样,才能将与帐户关联的数据定义为“可执行”。 它只是一系列交易:

  • 创建公钥;
  • 在所述密钥上转移令牌;
  • 内存分配(通过系统程序);
  • 将要处理的账号发送给loader程序;
  • 将代码上传到内存中(在不同的部分);
  • 通过加载程序将内存定义为“可执行的”。

显然,加载器将检查字节码:如果正确,则可以将已上传此代码的帐户用作可执行程序。 将创建的新帐户将是该程序的财产。 因此,该程序将具有对整个密钥子集的特权写入访问权限。

Solana 上的交易结构

在 Solana 上,交易由一系列指令以及相关帐户列表(读或写访问)组成。 这些指令类似于低级操作系统的指令。 在它们执行之前,系统内核知道程序希望读取或写入的每个内存槽。 这允许系统/节点预处理操作,然后在其硬件配置允许的情况下执行它(与其他操作并行)。

正是这种“预处理”使 Solana 的虚拟机能够优化这些指令的执行并并行执行它们。 待处理的事务是有序的,任何不重叠的事务都可以同时执行(在处理器的处理能力范围内)。

Sealevel:并行执行智能合约

Solana 的运行时环境 – Sealevel – 因此利用了 CPU 和 GPU 的物理设计。 在计算机分类学中,我们说的是单指令多数据 (SIMD)。 处理器由不同的内核组成,可以并行处理多个数据的相同操作。

Solana - Sealevel - CUDA 架构

例如,Nvidia 的现代图形处理器 (GPU) 有 4000 个内核,可用于 50 个多处理器。 因此,每个多处理器可以同时处理 80 个不同的输入(对于单个指令)。

因此,如果 Solana 上的一系列事务(通过 Sealevel 加载)调用同一程序的指令,则它们可以同时、并行处理,具体取决于内核数量。

要了解有关多任务多处理器和 SIMD 架构概念的更多信息,请阅读 Nvidia 站点上提供的 CUDA 文档。

Sealevel 只是一个运行时环境,它利用了当今处理器提供的可能性。 这是区块链网络第一次可以并行处理指令,而不是一个一个。 这项创新(以及其他)使 Solana 能够实现其卓越的速度和可用性。 但是请放心,我们还有更多革命性的技术砖需要研究

Sealevel 文章:Solana (SOL) 如何并行执行数千个智能合约? 首次出现在 Journal du Coin 上。

内容搜集自网络,整理者:BTCover,如若侵权请联系站长,会尽快删除。

(0)
BTCover的头像BTCover
上一篇 20 9 月, 2021 1:52 下午
下一篇 20 9 月, 2021 1:51 下午

相关推荐