Solana 中的函数修饰符与 Fallback 函数:为何不存在

  • 0xE
  • 发布于 2025-03-28 09:57
  • 阅读 428

本文分析了 Solana 和 Anchor 框架为何缺乏 Solidity 中的 Fallback、view、pure、payable 函数及修饰符,指出其设计上账户预声明、数据公开性及 Rust 语言特性导致的差异,并提及缺乏内置单位的问题。

Solana 无 Fallback 或 Receive 函数

在 Solidity 中,fallback 和 receive 函数处理未定义操作或直接 ETH 转账。Solana 则不同,其交易需预先声明所有涉及的账户。若引入类似 Fallback 函数,访问未指定的账户会导致交易失败,用户需提前预测账户调用,增加复杂性。因此,Solana 直接禁止此类函数,简化设计。


Solana 无 view 或 pure 函数

Solidity 中的机制

Solidity 的 view 和 pure 函数通过编译器约束状态访问:

  • view:禁止状态修改,所有外部调用使用 staticcall(若修改状态则回滚),编译器检测 SSTORE 等操作码时抛错。
  • pure:更严格,禁止读取状态(如 SLOAD),仅限纯计算。

Solana 的差异

Anchor 未实现类似编译器检查。Solana 程序的状态访问由 Context 结构定义,未列明的账户无法直接读写,间接提供一定约束。但这并非强制:

  • 外部程序可通过独立逻辑读取账户数据并传递结果。
  • Solana 运行时无 staticcall 等原生支持。

其他框架如 [Seahorse](https://seahorse-l...

剩余50%的内容订阅专栏后可查看

点赞 1
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
0xE
0xE
0x59f6...a17e
17年进入币圈,Web3 开发者。刨根问底探链上真相,品味坎坷悟 Web3 人生。