本文详细介绍了如何安装 Solana 开发环境,并提供了一个从安装到运行“Hello World”程序的完整教程,包含问题排查和常见错误的解决方案。
本文详细介绍了如何在Solana平台上构建程序,其功能与Solidity合约类似,并探讨了Solana如何处理算术溢出问题。文章通过具体示例展示了如何在Rust中实现函数,处理数据类型,以及进行单元测试,同时强调了计算成本及浮点操作的性能限制。
本文详细介绍了 Solana 如何使用 IDL(接口定义语言)来描述如何与 Solana 程序交互,并通过 Anchor 框架自动生成 IDL 文件。文章还展示了如何通过 Rust 编写 Solana 程序,并通过 TypeScript 单元测试进行验证。
文章详细介绍了在 Solana 的 Anchor 框架中如何处理函数参数的限制,类似于以太坊中的 `require` 语句。通过代码示例展示了如何使用 `require!` 宏和错误处理机制来确保函数参数的有效性,并解释了 Solana 和以太坊在错误处理上的差异。
本文详细讲解了如何在Solana上使用Anchor框架部署程序,并解释了Solana程序的可变性和与Ethereum的差异。通过代码示例和命令行操作,展示了程序的部署、升级和测试过程。
本教程深入探讨了Solidity和Rust在控制流、数组、映射、结构体和常量等方面的语法对比,旨在帮助掌握Solidity的开发者快速上手Rust编程。
本文详尽地介绍了 Rust 的所有权、借用及其相关概念,包括 Rust 的复制类型、可变性、泛型、Option 和 Result 等内容。通过示例代码,深入解释了 Rust 的独特语法和其内在逻辑,尤其适合有 Solidity 或 JavaScript 背景的开发者。此外,文章结构清晰,包含代码示例和必要的注释,帮助读者更好地理解 Rust 编程语言。
本教程详细解释了Rust中函数与函数式宏的区别,并通过代码示例展示了如何使用Rust的函数式宏来处理不同数量的参数。
文章详细介绍了 Rust 语言中的 attribute-like 和 custom derive 宏的使用方法,通过具体代码示例展示了如何通过宏在编译时修改结构体,并解释了宏的工作原理和实现方式。
本文详细讲解了如何将Solidity中的函数可见性和合约继承概念化到Solana中,并提供了Rust语言中实现这些概念的代码示例。
文章详细介绍了 Solidity 中的块变量在 Solana 中的类比实现,包括 block.timestamp、block.number、block.coinbase 等,并提供了具体的代码示例和说明。
文章详细介绍了 Solana 中的系统变量(sysvars),包括如何通过 Anchor 框架访问这些变量,以及它们的功能和使用场景。
本文介绍了 Solana 中的日志和事件机制,解释了如何通过事件在前端传递信息,以及如何查询 Solana 的交易历史。与以太坊不同,Solana 的事件不能用于历史查询,而是更适合实时监听。
本文详细比较了Solidity和Solana智能合约中的`msg.sender`和`tx.origin`概念,并提供了在Solana中如何实现类似功能的代码示例。文章还介绍了如何在Solana中处理多个签名者以及如何实现`onlyOwner`功能。
文章详细介绍了Solana区块链中的计算单元(Compute Units)概念,与以太坊的gas机制进行了对比,并探讨了计算单元的优化策略及其对交易费用的影响。
文章详细介绍了Solana区块链中数据存储的机制,特别是如何通过账户和程序来管理和初始化存储数据。文章通过对比以太坊的存储方式,深入探讨了Solana的存储模型和使用Rust语言进行账户初始化的具体步骤。
本教程详细介绍了如何在Anchor框架下向已初始化的Solana账户写入数据,并解释了相关代码的实现原理。
本教程详细介绍了如何通过Solana的web3 Javascript客户端直接读取账户数据,并展示了如何在Web应用的前端实现这一功能。教程中首先使用Rust代码初始化并写入数据,然后通过TypeScript读取和反序列化数据,并进一步演示了如何读取由其他Anchor程序创建的账户数据。
本文详细介绍了如何在 Solana 中使用 `seeds` 参数来实现类似于 Solidity 中的映射和嵌套映射,并提供了 Rust 和 Typescript 的代码示例。
文章详细介绍了Solana区块链中账户存储空间租金的计算方式及其相关概念,包括租金豁免、存储成本比较、账户大小限制和调整、以及部署程序的成本预估。
文章介绍了如何在Solana程序中使用Anchor框架读取账户余额,并详细解释了`UncheckedAccount`的使用及其安全性考虑。
文章详细介绍了 Solana 区块链中缺少的一些功能,如 `fallback` 和 `receive` 函数、`view` 和 `pure` 函数,以及 Solidity 中的自定义修饰符和单位在 Rust 中的缺失。此外,文章还讨论了 Solana 中读取账户数据的方式和防止重入攻击的策略。
在 Solana 上实现 SOL 转账及构建支付分配器
文章详细介绍了在Solana区块链上如何使用不同的签名者初始化账户并进行更新操作,通过Rust代码和客户端代码示例,展示了如何实现账户管理和权限控制。
文章详细介绍了 Solana 区块链中的 Program Derived Address (PDA) 和 Keypair Account 的区别与使用场景,并通过代码示例展示了如何创建和初始化这两种账户,解释了它们的安全性和应用差异。
文章详细介绍了Solana区块链中的账户所有权机制,包括系统程序、BPFLoader和程序对不同类型的账户(如PDA和keypair账户)的所有权及其操作权限,并通过Rust和Typescript代码示例进行了演示。
本篇文章详细介绍了Anchor框架的`init_if_needed`宏,提供了一种在一次事务中初始化账户并写入数据的方法。文中阐述了该宏的便利性与可能引发的重初始化攻击风险,特别是在账户状态和lamport余额的处理上。同时,通过示例代码和测试用例,深入分析了如何安全地使用这些功能,以避免潜在的错误和安全隐患。
本文介绍了Solana区块链中内置的多调用(multicall)功能,以及如何使用Anchor框架在Solana上进行批量交易。文章还详细解释了Solana交易大小限制,并展示了如何使用Rust和TypeScript代码实现原子性批量交易。
文章详细解释了Solana中'owner'和'authority'的区别,'owner'是程序,'authority'是钱包,程序只能修改其拥有的账户数据,而'authority'通过发送签名交易来请求程序修改数据。
文章详细介绍了在Solana的Anchor框架中使用`close`指令关闭账户的操作,包括其原理、实现代码及背后的工作机制,并提供了Rust和Typescript的示例代码。
本文详细介绍了 Solana Anchor 框架中的 `#[derive(Accounts)]` 宏,解释了 Solana 并行交易处理机制及其账户访问控制的重要性,并深入探讨了 `Account`、`UncheckedAccount`、`Signer` 和 `Program` 四种账户类型的使用场景和实现细节。
本文详细介绍了在Solana链上程序中如何读取不属于自己的账户数据,通过创建`data_holder`和`data_reader`两个程序,展示了如何初始化并读取PDA中的数据,并探讨了Anchor框架下的数据反序列化机制及其限制。
在 Anchor 中的跨程序调用(CPI)
本 Solana 课程旨在帮助具有以太坊或 EVM 开发的初学者或中级背景的工程师快速掌握 Solana 程序开发。
初学者在学习区块链编程时面临的困难是他们必须学习一种新的计算模型、学习一种新的语言和学习一个新的开发框架。
如果你已经在以太坊或兼容以太坊的区块链上开发过,那么你已经对计算模型有了相当好的了解,可以专注于语言和框架。
我们的目标是利用你在以太坊方面的过去经验,更快地学习 Solana。 你无需从零开始。
详解 Compound V3
零知识证明之书
Uniswap V2 之书
代理模式与 Delegatecall 规范手册