本文深入探讨了如何使用Solana sBPF汇编语言读取Solana指令输入,包括账户数量、标志、公钥、Lamports、账户数据及程序ID等。文章通过ldxdw指令配合具体的内存偏移量,详细展示了这些数据在Solana程序执行时内存中的布局和读取机制,并提供了详尽的汇编代码示例和执行跟踪分析,帮助读者理解底层交互。
ldxdw
本文详细介绍了Solana程序(包括原生Solana和Anchor框架)的代码组织结构和最佳实践。它从Rust Cargo项目基础讲起,解释了程序组件、文件结构、Anchor项目工作区以及eBPF跨平台编译等关键概念,旨在帮助开发者构建可维护和可扩展的Solana程序。
本文详细介绍了如何在 Solana 区块链上使用去中心化预言机网络 Switchboard 来获取链下数据,特别是 SOL/USD 的价格。它涵盖了 Solana 智能合约的编写、Switchboard 价格喂价的初始化与配置、以及客户端脚本如何更新和读取链上价格数据。
本文详细介绍了Solana原生程序开发中的多项关键安全检查,包括验证账户所有权、系统变量和程序ID、要求签名者、强制可写账户、跨程序调用后状态重载以及防范代币账户粉尘攻击和PDA账户抢占。文章通过具体代码示例和真实案例(如Wormhole漏洞)深入剖析了潜在的安全风险及其修复方法,旨在帮助开发者构建更安全的Solana程序。
这篇文章详细介绍了如何在 Solana 链上使用程序派生地址(PDA)创建存储账户。它对比了 PDA 与传统密钥对账户的区别,并深入讲解了 invoke_signed() 机制、种子 (seed) 与碰撞字节 (bump_seed) 的作用,提供了完整的 Rust 链上程序和 TypeScript 客户端代码示例。
invoke_signed()
本文详细介绍了Solana区块链上的跨程序调用(CPI),重点讲解了invoke和invoke_signed两个核心函数及其在原生Rust中的使用。文章还阐述了Anchor框架如何抽象这些函数,并通过一个包含目标程序和调用程序的实际案例,展示了如何在程序间传递数据。
invoke
invoke_signed
本文详细阐述了Rust程序在Solana平台上的三阶段编译过程,包括从Rust到LLVM IR,再到SBF字节码,并最终通过JIT编译在Solana验证器上高效执行,从而确保了程序的确定性和跨平台一致性。
本文介绍了Solana的sBPF虚拟机及其指令集。它阐述了sBPF作为基于eBPF的寄存器式虚拟机架构,详细描述了其11个寄存器的约定用途以及各类操作码(如算术、逻辑、数据移动、控制流和内存操作)。文章旨在帮助读者理解Solana程序中SBF指令的执行方式。
这篇教程详细讲解了如何在Solana原生程序中使用密钥对创建账户来存储数据。内容涵盖了账户分配、初始化、Borsh数据序列化以及与System Program的交互,并通过Rust程序和TypeScript客户端示例,演示了账户创建、数据写入与验证的完整过程。
本文介绍了如何使用Certora对OpenZeppelin的Initializable.sol合约进行形式化验证。文章聚焦于可升级合约的初始化器和重初始化器的一些关键安全属性,并通过Certora验证语言(CVL)的代码片段展示了相应的验证规则,确保合约行为的正确性。