文章详细介绍了Solana区块链中的Sealevel技术,即并行处理数千个智能合约的运行时环境,并解释了Solana如何通过并行处理实现高性能。
Solana 是世界上性能最强的无许可区块链。在当前版本的 Solana 测试网络上,一组 200 个物理不同的节点在使用 GPU 运行时支持超过 50,000 笔的持续交易吞吐量。要实现这一点,需要实施多个优化和新技术,结果是网络容量的突破,标志着区块链发展新阶段的到来。
在这篇博文中,我们将探讨 Sealevel,Solana 的并行智能合约运行时。在开始之前,要考虑的一件事是,EVM 和 EOS 的基于 WASM 的运行时都是单线程的。这意味着一次只能有一个合约修改区块链状态。而我们在 Solana 中构建的是一个能够并行处理成千上万合约的运行时,使用可用的 Validator 核心数量。
Solana 能够并行处理交易的原因在于,Solana 交易描述了交易在执行过程中将要读取或写入的所有状态。这不仅允许不重叠的交易同时执行,还允许仅读取相同状态的交易并发执行。
Cloudbreak,我们的账户数据库,是一个公共密钥到账户的映射。账户维护余额和数据,其中数据是字节的向量。账户有一个“所有者”字段。所有者是管理账户状态转移的程序的公共密钥。程序是代码,没有状态。它们依赖于分配给它们的账户中的数据向量进行状态转移。
默认情况下,所有账户的所有者为系统程序。
用户定义的程序由加载程序加载。加载程序能够将账户中的数据标记为可执行。用户执行以下交易以加载自定义程序:
此时,加载程序验证字节码,并且加载字节码的账户可以被用作可执行程序。新的账户可以标记为由用户定义的程序所拥有。
这里的关键洞察是程序是代码,并且在我们的键值存储中,存在某些子集的键,只有该程序拥有写权限。
交易指定了一个指令向量。每个指令包含程序、程序指令和交易希望读取和写入的账户列表。这个接口受到低级操作系统接口与设备的启发:
size_t
readv(int d, const struct iovec *iov, int iovcnt);
struct iovec {
char *iov_base; / 基地址。 /
size_t iov_len; / 长度。 /
};
像 readv 或 writev 这样的接口告诉内核用户希望读取或写入的所有内存。这允许操作系统提前获取、准备设备,并在设备允许时并发执行操作。
在 Solana 上,每个指令提前告诉虚拟机它希望读取和写入的账户。这是我们对虚拟机优化的根本所在。
更重要的是,我们可以利用 CPU 和 GPU 硬件的设计方式。
SIMD 指令允许一段代码在多个数据流上执行。这意味着 Sealevel 可以执行额外的优化,这是 Solana 设计中独特的:
为了理解这是一项多么强大的优化,看看 CUDA 开发者指南:
“CUDA架构围绕可扩展的多线程流式多处理器(SMs)构建。当主 CPU 上的 CUDA 程序调用一个内核网格时,网格中的块被枚举并分发到具有可用执行能力的多处理器。”
现代的 Nvidia GPU 拥有 4000 个 CUDA 核心,但只有大约 50 个多处理器。尽管一个多处理器一次只能执行单个程序指令,但它可以在并行的情况下对 80 个不同的输入执行该指令。因此,如果加载 Sealevel 的进程中的传入交易全部调用相同的程序指令,例如 CryptoKitties::BreedCats,Solana 可以在所有可用的 CUDA 核心上并发执行所有这些交易。
在性能方面没有免费的午餐,因此要实现 SIMD 优化,执行的指令应该包含少量分支,并且这些指令应该都采用相同的分支。多处理器受到批处理执行的最慢路径的限制。即使考虑到这一点,通过 Sealevel 的并行处理相比单线程运行时,提供了基础性的改进,极大地提高了吞吐量和可用性。
Solana 对 Sealevel 的实现,结合历史审计证明(Proof of History)、复制证明(Proof of Replication)和海湾流(Gulf Stream)等创新,共同创造了世界上性能最强的区块链。Solana 的测试网络目前正在上线。你可以访问 https://testnet.solana.com。为了成本考虑,我们仅运行少量节点。但是,我们已经在 AWS、GCE 和 Azure 等 23 个数据中心上启动了多实例,超过 200 个物理节点(不是共享硬件)进行基准测试。
运行时今天已经在运作,开发者可以在测试网部署代码。开发者今天可以用 C 构建智能合约,我们正在积极开发 Rust 工具链。Rust 将成为 Solana 智能合约开发的旗舰语言。Rust 工具链是公开可用的,作为 Solana Javascript SDK 的一部分,我们还在不断迭代软件开发工具包。
Solana 将很快推出一个公共测试版,鼓励验证者通过 Tour de SOL 运行节点——类似于 Cosmos 的“股份游戏”-挑战公众测试 Solana 网络的极限,同时为此获得代币。
- 原文链接: medium.com/solana-labs/s...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!