关于智能合约:为何Solana更安全?

  • Sec3dev
  • 发布于 2022-06-06 10:59
  • 阅读 26

本文深入探讨了Solana智能合约的安全性为何优于以太坊,主要原因在于Solana的编程模型将代码与数据分离,以及其执行模型设计了一系列执行限制来消除各种攻击。文章详细说明了如何通过账户准备和执行监控来检测潜在的攻击,并强调Solana在日志记录方面的优势,从而提供更全面的安全防护。

尽管 Solana 的核心运行时仍在快速发展,其智能合约的设计相对稳定。在这篇文章中,我将详细说明为什么从智能合约的角度来看,Solana 更加安全。

总体来说,有两个主要原因:

  1. Solana 的编程模型将代码和数据解耦。这一点很重要,因为它使 Solana 智能合约在本质上比具有耦合编程模型的区块链(如 Ethereum)更难受到攻击。
  2. Solana 的执行模型(特别是各种执行约束的设计)排除了许多类型的攻击,例如重入攻击;同时,它还允许比 Ethereum 更透明的实时监控和更全面的安全防御。

解耦代码和数据带来更好的安全性

考虑一个包含任意安全漏洞的智能合约,例如,它有一个存在缺陷的函数 X,允许攻击者更改智能合约的 owner

在 Ethereum 中,owner 是一个与智能合约一对一关联的全局变量,因此调用 X 将直接更改“owner”。

在 Solana 中,owner 是与账户关联的数据,而不是与智能合约关联。owner 不是全局的,但可以有多个账户和所有者。要更改“owner”,在调用 X 时必须提供“正确”的账户。

换句话说,为了利用这个安全漏洞,攻击者不仅必须找到有缺陷的函数 X 还必须准备“正确”的账户来调用 X。

实际上,准备“正确的”账户并非 trivial,因为 Solana 智能合约通常处理多个输入账户,并通过约束强制执行他们的“关系”,例如,account1.owner==account2.key

攻击者必须准备所有这些输入账户并满足所有约束,这通常要求通过额外的交易创建“假”账户,尽管这可能并非不可能。

重要的是,从“准备正确的账户”到“发起攻击”的过程使安全监控能够主动检测与智能合约相关的 可疑交易,这些交易会在攻击之前创建“假”账户。

攻击 Solana 智能合约通常需要两个阶段:账户准备和攻击执行。第一阶段可以通过链上监控检测,允许在第二阶段之前采取抑制措施。

受限执行带来更好的安全性

Solana 运行时在交易层面强制执行各种约束,例如:

  • 不得超过 4 层跨程序调用 (CPI)
  • 会计规则,例如,只有账户的所有者可以更改账户的数据,并且仅在账户是可写的且不可执行时才可以

Solana 的 CPI 设计本质上消除了重入攻击的可能性。而 Ethereum 依赖于应用层状态来限制重入,这容易出错。

透明执行带来更好的安全性

日志记录使得可以实时观察智能合约的运行时行为,这成为细粒度安全监控的基础。

与 Ethereum 相比,Solana 允许的链上日志记录数量高出几个数量级(msg! vs emit)。

在 Ethereum 上,日志记录是昂贵的。一次日志记录操作(emit)要花费数百甚至数千的 gas (查看文档): gas_cost = 375 + 375 * num_topics + 8 * data_size + mem_expansion_cost

相比之下,Solana 上的日志记录成本较低([100 计算单位](https://github.com/solana-labs/solana/blob/master/program-runtime/src/compute_budget.rs#L113)通过系统调用)。考虑到 140 万最大计算预算,Solana 交易可以允许数万次日志记录操作。

即使不考虑 gas 价格,由于 Ethereum 的 gas 限制,一个智能合约也无法进行太多日志记录(这解释了为何日志记录在 Ethereum 上很少见)。

与 Ethereum 相比,强大的日志记录能力使 Solana 更有前景,能够迎接更全面的安全防御以抵御攻击。


关于 sec3(以前叫 Soteria)

sec3 是一家安全研究公司,旨在为数百万用户准备 Solana 项目。sec3 的启动审计是一项严格的、研究人员主导的代码审查,旨在调查和认证基于主网的智能合约;sec3 的持续审计软件平台 X-ray 与 GitHub 集成以逐步扫描拉取请求,帮助项目在部署之前强化代码;sec3 的部署后安全解决方案 WatchTower 确保资金安全。sec3 正在为 Web3 项目构建基于技术的可扩展解决方案,确保协议在规模扩大时保持安全。

要了解更多关于 sec3 的信息,请访问 https://www.sec3.dev

  • 原文链接: sec3.dev/blog/on-smart-c...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Sec3dev
Sec3dev
https://www.sec3.dev/