3 秒后将继续下一节内容
下一节
重播
学习下一节
登录 后可观看高清视频

将简单链上数据存储器扩展为可交易代币程序

313次播放
2026-01-16 下载附件

Mohanson老师通过解答学员实战报错,深入探讨了 Solana 处理高并发时的底层真相及网络协议限制。

1. 并发执行的真相:账户锁定 (Locking)

  • 并行转串行:Solana 虽然支持并行处理,但前提是交易涉及的账户不冲突。
  • 热点账户瓶颈:当成千上万人同时买入同一个流动性池或抢购同一个 NFT 时,由于它们都操作同一个账户,系统会强制将其转为串行执行。这解释了为何在极端热点下,用户会感受到“局部拥堵”。
  • 交易所方案:交易所内部转账通常在中心化数据库完成,仅在充提时与链上交互,以规避链上账户锁定的性能限制。

2. 解决包大小限制:LUT (Address Look Up Tables)

  • 1280 字节限制:受 UDP 协议 MTU 限制,单笔交易的数据包极其有限,无法包含过多的账户地址(通常上限为 20-30 个)。
  • LUT 地址查找表:当业务逻辑极其复杂(如聚合器交易涉及 100 个账户)时,通过 LUT 在链上建立“通讯录”,交易中只需传“索引编号”即可。这极大压缩了交易体积,是复杂应用开发的必备技巧。

3. 交易费用构成与报错排查

  • 费用公式Total Fee = Fixed Transaction Fee + Priority Fee + Account Rent
  • 优先费 (Priority Fee):在高并发期间,通过增加优先费可以获得验证者的优先打包权。
  • 报错解析Attempt to debit an account but found no record。这通常是因为目标账户尚未创建或余额不足以支付租金押金,导致交易模拟阶段就报错回滚。

4. PDA (Program Derived Address) 的付费与管理

  • 谁使用谁付费:PDA 的创建费用(租金)由用户支付。
  • 管理权限分离:用户虽付了钱,但没有私钥,无法直接动用资金;只有 Owner 程序能通过 invoke_signed 根据 Seeds 派生签名来管理其中的资产。


总结陈述: 本次课程深入到了 Solana 的工程边界。理解“账户锁定导致的串行化”能帮助你设计更好的业务并发逻辑;而掌握 LUT 和 Rent 管理 则是解决实战中“发不出交易”和“交易莫名报错”的关键。

文档:https://solana.com/zh/docs/intro/installation 附件中有社区小伙伴 Dean 分享的课程笔记