本文是r0bre在3个多月的时间里编写的100个Solana技巧的合集,旨在提高Solana开发者和审计师的技能。内容涵盖项目结构、Anchor约束、代码学习、不变量、动态断言、全局程序状态、账户填充、PDA种子、剩余账户安全、日志记录、并行处理、数学运算安全、重入、ATA账户初始化、多重签名、事件响应计划、编程监控以及Solana账户模型等多个方面。
本文深入探讨了Solana程序的开发生命周期,从Rust代码编写到在Solana运行时执行的整个过程。文章详细介绍了Solana的编译管线,Solana字节码格式(SBF),运行时的BPF虚拟机以及涉及的安全机制。通过将Solana的方法与更熟悉的EVM模型进行比较,以帮助读者建立直觉,从而更好的了解Solana的底层技术。
文章主要介绍了如何在Solana区块链上使用持久的nonce来签名和发送离线交易,以避免交易过期的问题。
Alpenglow 是 Solana 新的共识协议,旨在实现高性能和低延迟。它引入了 Votor 用于投票和区块最终确认逻辑,采用 Rotor 优化数据传播,并结合单轮/双轮投票模式,目标是将区块最终确认时间缩短至 150 毫秒左右,从而使 Solana 在响应速度方面与 Web2 基础设施竞争。
Alpenglow 是 Solana 共识算法的重大改革,旨在提高性能、简化协议并增强安全性。它通过 Rotor 改进区块传播,通过 Votor 改进投票机制,从而将交易最终确认时间从 12.8 秒缩短至 100-150 毫秒,同时降低验证者的运营成本。Alpenglow 还引入了“20+20”的弹性模型,提高了网络的容错能力,预计将于明年年初部署到 Solana 主网。
Gill 是一个新的 JavaScript 客户端库,用于与 Solana 区块链交互。
Surfpool 是一个用于 Solana 开发的本地测试网络,类似于以太坊的 Anvil。它快速、轻量级,可以动态获取主网数据,方便开发者进行开发、调试和学习。Surfpool 具有快速、轻量级、动态账户获取、Anchor 集成等特点,并提供了清晰的交易执行和状态变更信息。
Surfpool是一个Solana开发工具,旨在通过提供本地优先的开发环境来弥合Localnet和Mainnet之间的差距。它通过按需从Mainnet获取实时账户数据,同时在本地隔离和跟踪程序状态,从而实现更快的迭代和更真实的模拟环境。此外,Surfpool还引入了基础设施即代码(IaC)的概念,以实现可重现、可审计和安全的部署到Solana网络。
本文详细介绍了Solana虚拟机(SVM)及其基础的rBPF虚拟机,包括其工作原理、系统调用、程序执行流程等。通过对rBPF虚拟机的分析,文章探讨了如何通过独特的指令集架构(ISA)与安全机制,确保Solana程序的高效和安全执行。本指南为对Solana和eBPF感兴趣的开发者提供了深入的技术背景资料和实践指南。
本文介绍了Lighthouse Assertion Protocol在Solana交易中的应用,旨在保护用户和开发者免受恶意交易的影响。通过添加断言指令,Lighthouse可以确保交易在特定链上状态不符合预期时失败,从而防止用户遭遇如钱包抢劫等恶意活动。文章详细讲解了断言的工作原理、实现方式及其在DeFi和NFT市场中的实际应用。