首页 游戏 软件 资讯 排行榜 专题
首页
手机教程
Solana 联创:Solana 状态增长有何解决方案?

Solana 联创:Solana 状态增长有何解决方案?

热心网友
49
转载
2025-04-02

solana 联创:solana 状态增长有何解决方案?

作者:toly,Solana 联合创始人

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

编译:Felix,PANews

每天大约有 100 万个新账户被添加到 Solana 中,现在的总状态已超 5 亿,而快照大小约为 70GB。随着硬件的改进,这些数字本身是完全可管理的,但是 SVM 运行时的目标是提供最便宜的硬件访问方式,为了实现这一点,必须在当前硬件限制内管理状态和内存。

PCI 带宽

截至 2024 年,最新的 PCI 带宽可以达到 0.5 Tbs 到 1 Tb 的吞吐量。或者每秒 64GB 到 128GB。虽然听起来很大,但如果一个 tx 读取 / 写入为 128MB, 128GBps 的 PCI 带宽会将链的 TPS 限制在 1000 左右。实际上,大多数 txs 访问的是最近加载并缓存到 RAM 中的内存。理想的设计应该是允许加载 1000 个具有 128MB 新状态的 txs,再加上 10k 或更多读取和写入现有缓存状态的 txs。

帐户索引

创建新帐户需要证明该帐户当前不存在。这通常是在每个验证器上自动完成,因为每个验证器都有当前所有有效帐户的完整索引。即使帐户数据不存储在本地,只存储数据的哈希,5 亿个帐户也将是 32 字节的密钥 + 32 字节的数据哈希或者每项 64 字节,即 32 GB。这已经足可以保证 RAM 和磁盘的分离。

快照大小

在某些快照大小(Snapshot Size)下,如果部分网络出现硬件故障,冷启动新系统所需的时间足以延长最坏情况的重启时间。随着带宽和硬件的改进,情况每天都在变化,而 Solana 并没有接近这个限制,但该限制在任何时间点都存在。

概要

内存和磁盘具有不同的性能特征和限制。如果 SVM 不区分,那么交易和限制就必须针对最坏的情况进行定价,进而限制了性能。在交易执行期间,所有帐户密钥至少必须可用,并且总帐户数量将影响 RAM 和磁盘 PCIi 带宽利用率。快照不能任意增大。理想的解决方案是:

允许将更多不需要 PCI 资源的 txs 打包到区块中

管理总索引大小和快照大小

Chilly、Avocado、LSR。糟糕的名字通常是优秀软件设计的标志。Anza 和 Firedancer 的工程师想出了以下方案。

Chilly

帐户运行时的缓存由所有实例(instances)进行确定性管理。从更高层次看,这是访问状态的 LRU 缓存。在区块构建和调度期间,该实现(implementation)可以很容易检查帐户,不需要锁定或迭代 LRU 缓存。缓存是用一个非常简单的计数器机制实现。

总加载字节被跟踪为 Bank::loaded_bytes:u64

每个帐户在使用时都用当前运行总数 account::load_counter:u64 进行标记

加载帐户时,如果 Bank::loaded_bytes - Account::load_counter > CACHE_SIZE,则帐户被认为是冷帐户,其大小是根据每个区块的 LOAD_LIMIT 计算

新帐户 load_counter 为 0,因此所有新帐户都是冷帐户

Leader 的调度程序将 LOAD_LIMIT 作为一个水印,类似于写锁 CU 限制。

这种设计的绝妙之处在于,它很自然地适合当前的调度程序。用户只需要担心他们的优先费。调度程序必须处理将所有低于 LOAD_LIMIT 和帐户写锁限制的 tx 放入背包问题。最高优先级的 tx 可以首先加载并使用 LOAD_LIMIT。一旦达到这个限制,所有其他 tx 仍然可以放入一个区块中。因此,验证器可以最大化缓解 txs 的缓存局部性。

Avocado

Avacado 由两部分组成,状态压缩和索引压缩。首先用哈希替换帐户数据,然后将帐户索引迁移到 Binary Trie / patricia Trie。新帐户必须提供证明,证明他们不在「trie」中。

状态压缩

大致设计如下:

在分配期间,每个帐户每字节绑定 X 个 lamports。

如果 X

压缩是一个多步骤的过程,运行在一个 epoch 上

帐户数据被替换为哈希值(data)

帐户密钥仍处于状态之中

引用压缩帐户的交易失败

解压需要上传类似于加载程序的数据

解压的成本应该与分配一个新帐户的成本相同

估计 75% 的账户在超过 6 个月的时间里没有被访问,而且很可能永远不会被访问。压缩它们可以节省 50% 的快照大小。

索引压缩

这是一个更难解决的问题。仅通过状态压缩,验证器仍然拥有系统中所有可能的有效帐户。创建新帐户需要检查此数据库。验证器存储此数据库的成本很高,但用户创建新帐户的成本很低。要保证新私钥不会与现有帐户发生任何冲突。

Binary Trie mining

Binary Trie 作为快照的一部分被跟踪

想要获得额外 sol 的验证者可以创建一个交易,从状态中删除压缩的帐户 kv 对,并将它们添加到 Binary Trie 中

用户可以在解压过程中将 kv 从 Trie 中移除,从而在不被允许的情况下反向执行此操作(这可能需要在解压时进行原子操作,以便在后台服务压缩帐户时更容易)。

对于验证器,无论它包含多少 kv 对,Trie 根的大小都是恒定的

使用 zkp,每个 tx 可以压缩约 30 个帐户

假设每个区块只有一个,那么压缩 5 亿个账户需要大约 80 天的时间

这个过程的关键之处在于,执行此操作的验证者将获得奖励,但并不是所有验证者都必须执行此操作。如果所有验证器都必须执行此操作,那么所有验证器都必须维护当前 Binary Trie 中的内容,这意味着整个状态必须是快照的一部分。想要维护整个状态的验证器应该提交一个交易,将索引中的 N 个帐户压缩到 Trie 中。

新帐户证明

要创建一个新帐户,用户必须证明该帐户在 Trie 中不存在。维护整个状态的验证器可以生成帐户不在 Trie 中的证明。这给用户带来了负担,他们必须始终与大型状态提供者连接以生成这些证明。

或者,用户可以证明他们的帐户是用最近的 PoH 哈希创建的。支持这一点的最简单的方法是:

生成新的 PKI

帐户地址是哈希(最近的 PoH 哈希,PKI::public_key)

鉴于 Trie 中的帐户必须首先进行状态压缩,这需要一个完整的 epoch。Trie 中的任何帐户都不可能使用最近的 PoH 哈希来生成地址。

其他可以支持的方法是 PKI 创建本身可以提供一个证明,证明私钥是用哈希(用户隐藏的秘密,最近的 PoH 哈希)创建的。

LSR

Lightweight Simple Rent,又称 Less Stupid Rent。如何为分配新帐户的成本定价,以及如何确保旧的废弃账户最终得到压缩,并减少系统的整体负载和新用户的价格?

需要恢复租金(Rent)制度。Rent 是指当前状态下的账户应该支付 X 美元 / 字节 / 天的费用,就像 AWS 上的账户支付存储费用一样。

Rent Rate bonding curve

RentRate = K*(state_size)^N

无论当前状态大小如何,如果很小,费率应该很低,如果接近快照限制,费率应该非常高。

Allocation Minimum Bonding Price

账户必须至少存在一个 epoch。分配需要将帐户带入 Hot 状态。热帐户应该在缓存期间存在。

New Account bond = Epoch Slots * RentRate * Account::size

新账户的余额中必须至少有这么多的 lamports 才能创建。

Hot Account Burn

lruturnverrate = 每个帐户在 LRU 缓存中平均占用的时间,最大值为 1 epoch。这个值可以是一个常数,也可以在链下计算,并作为中位数权益加权常数报告给 SVM。

压缩

当(current slot - account::creation_slot) * RentRate * account::size > account::lamports 时,压缩帐户并烧毁所有 lamports。

上述解决方案,应该会让 State 很便宜,因为随着时间的推移,未使用的帐户最终会达到 lamports 0,并将被压缩。所以数据开销会减少,甚至索引开销也会减少,这将减少当前状态的大小。减少状态的大小将降低超二次分配的成本。

来源:https://www.php.cn/faq/817363.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Sublime怎么安装Less/Sass插件?Sublime实现CSS预处理编译教程
编程语言
Sublime怎么安装Less/Sass插件?Sublime实现CSS预处理编译教程

Sublime Text 需依赖外部 CLI 工具(lessc 或 Dart Sass)编译 Less Sass,插件仅提供语法高亮与构建入口;须先全局安装对应工具、正确配置构建系统路径,并推荐用命令行 watch 实时编译。 先说一个核心事实:Sublime Text 本身并不具备编译 Less

热心网友
05.03
Premiere如何稳定抖动画面 Premiere防抖功能使用教程
电脑教程
Premiere如何稳定抖动画面 Premiere防抖功能使用教程

premiere的防抖功能通过“warp stabilizer vfx”实现,适合手持拍摄或轻微抖动的画面。1 使用时需将该效果拖至素材上;2 参数调整关键包括结果(如平滑运动

热心网友
07.26
剪映电脑版如何添加动态贴纸 剪映专业版动画元素应用
电脑教程
剪映电脑版如何添加动态贴纸 剪映专业版动画元素应用

动态贴纸和动画元素能让视频更生动,使用剪映电脑版可通过三步实现:找到素材、拖拽添加、调整参数。首先,在界面底部“贴纸”选项中可找到内置贴纸库,分类包括节日、日常、搞怪等,也可通过关

热心网友
07.18
PPT创意封面设计教程_快速吸引观众注意力
手机教程
PPT创意封面设计教程_快速吸引观众注意力

ppt封面设计应遵循主题明确、配色协调、图片优质、字体清晰、布局合理五大原则。首先,确定主题如市场营销或项目汇报,决定设计方向;其次选择和谐配色,推荐adobe color工具;第

热心网友
06.13
Solana 联创:Solana 状态增长有何解决方案?
手机教程
Solana 联创:Solana 状态增长有何解决方案?

作者:toly,Solana 联合创始人编译:Felix,PANews每天大约有 100 万个新账户被添加到 Solana 中,现在的总状态已超 5 亿,而快照大小约为 70GB。

热心网友
04.02

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

最新公司2026年度工作总结会议主持词
职业与学业
最新公司2026年度工作总结会议主持词

最新公司2026年度工作总结会议主持词 各位领导、各位来宾、同事们,请就坐。 现在,我宣布,×公司——××××年度工作会议正式开始! 首先,请允许我荣幸地向大家介绍今天亲临会场的各位领导和来宾:集团公司董事长×先生、×公司总经理×先生、×公司总经理×女士、集团公司财务总监×先生。同时,出席本次会议的

热心网友
05.03
学生做最好的自己演讲稿    做最好的自己演讲稿600字左右
职业与学业
学生做最好的自己演讲稿 做最好的自己演讲稿600字左右

学生做最好的自己演讲稿,成为最好的自己,从来不是一句空谈,它需要持续的努力、踏实的实践,以及在漫长岁月里对自我的不断打磨与提升。下面为大家整理了几篇学生做最好的自己演讲稿,希望能带来一些启发和思考。 学生做最好的自己演讲稿一 尊敬的老师们,亲爱的同学们: 大家好! 你是否也曾有过这样的时刻?羡慕旁人

热心网友
05.03
幼儿园家长会主持词开场白系列
职业与学业
幼儿园家长会主持词开场白系列

为了确保活动流程顺畅、氛围融洽,一份好的主持词至关重要。它不仅能有效串联各个环节,更能营造出恰当的氛围。那么,如何撰写一份出色的主持词呢?借鉴诗词和散文诗的写作手法,往往能带来意想不到的效果。如果您正在寻找灵感,不妨参考以下由我们精心整理的“幼儿园家长会主持词开场白”系列范例,相信能为您提供切实的帮

热心网友
05.03
贪吃小气的弟弟
职业与学业
贪吃小气的弟弟

我有一个弟弟 我有个弟弟,叫浩浩。小家伙长着一双水汪汪的大眼睛,一张小嘴总惦记着吃,脸蛋儿胖乎乎的,别提多可爱了。不过啊,这浩浩除了贪吃,还有个挺出名的特点——那就是相当“小气”。 一次“护食”风波 有回我去他家玩,人还没进门呢,就被他给拦住了。只见他嘟着嘴,两脚一叉,小手一张,牢牢挡在门口,嘴里还

热心网友
05.03
我最难忘的同学
职业与学业
我最难忘的同学

说起最难忘的同学 细数下来,从幼儿园到现在,认识周鑫鑫竟然已经有十年了。时间过得可真快。 这事儿说来也巧。从三岁踏入幼儿园开始,一直到六年级的今天,我和她始终都在同一个班级。更巧的是,我的爷爷奶奶还认识她的父母,这么算下来,我俩真算得上是名副其实的“发小”了。 关于“认识”的起点 周鑫鑫总说“我们从

热心网友
05.03