本系列想尽量以快速上手的目的来讲解 Solana。并且在实践的过程中穿插新概念。
使用 metaplex 来上传代币的名称和 Logo。
和之前创建 Token 是类似的。
1. 创建账户和查询余额 2. 转账SOL 3. 监听账户余额变化 4. 创建SPLToken 5. SPLToken转账 6. 监听账户的SPLToken的余额变化
通过本教程,你将轻松上手 Anchor 框架,学习如何在 Solana 上创建、部署、测试智能合约,并通过实际示例掌握常用命令和调试技巧。
本文介绍了如何使用 Anchor 框架在 Solana 上通过跨程序调用(CPI)实现 SOL 转账,并在此基础上扩展手续费收取功能,包括完整的代码示例和测试流程。
本系列文章将带你完成 Solana 开发的入门流程,从环境配置到运行一个简单的 Anchor 程序(Hello World)。我们会涵盖工具安装、项目初始化、构建和测试,并提供经验性建议。
本文将通过一个简单的 Solana 程序,展示如何用 Anchor 实现类似 Solidity 的算术功能,并深入探讨 Rust 在 Solana 中的基本类型、算术运算及计算单元(Compute Units)。
本文将带你探索 Anchor 框架中的 IDL(接口定义语言),这是一个自动生成的 JSON 文件,用于描述 Solana 程序的接口。我们将通过示例展示 IDL 的作用,解释 TypeScript 测试如何调用程序函数。
本文将通过示例解释如何在参数不符合预期时中止交易,并探讨 Solana 与以太坊在错误处理上的差异。
Solana 程序通过 Anchor 部署无需构造函数,默认可升级且可转为不可变,简化了状态管理与升级流程。
本文针对熟悉 Solidity 的开发者,介绍其常用语法并展示在 Rust 中的对应实现。
本文为从 Solidity 或 JavaScript 背景转向 Rust 的开发者解析了 Rust 中常见的语法特性,包括所有权与引用(& 和 *)、mut 可变性、泛型(<T>)、unwrap() 和 ? 运算符,帮助理解其逻辑并适应 Rust 的编程范式。
本文将阐释 Rust 中函数与类函数宏的区别,例如为何 msg! 后带有感叹号 !。我们将深入探讨这种语法的意义及其应用。
在 Rust 中,属性宏和自定义派生宏用于在编译时处理代码,通常为结构体添加功能或修改其定义。本文将解析这些宏的工作原理,并介绍与结构体相关的 impl 和 trait。
本文将探讨如何在 Rust 和 Solana 中实现类似 Solidity 的函数可见性,以及如何通过模块化复用来模拟“继承”。
本文将介绍 Solana 中与 Solidity 区块变量对应的概念。
在 Solana 中,系统变量(sysvars)是只读的系统账户,为程序提供区块链状态和网络信息的访问权限。它们类似于以太坊的全局变量,但每个系统变量拥有唯一的公钥地址,类似以太坊的预编译合约。
本节将探讨 Solana 中的日志和事件日志,以及如何查询历史交易。
在 Solidity 中,msg.sender 表示调用智能合约函数的地址,tx.origin 表示签署交易的钱包地址。本文将探讨 Solana 中类似的调用者识别机制及 onlyOwner 模式的实现。
本文对比了以太坊和 Solana 的交易费用与计算模型,深入探讨了 Solana 计算单元(CU)的使用、优化策略及字节码执行逻辑,并通过示例验证了 CU 消耗与费用无关的特点,同时介绍了 eBPF 和 SBF 的技术背景。
本文对比了以太坊和 Solana 的数据存储机制,介绍了 Solana 账户模型的统一设计及其与以太坊存储槽的差异,并通过将 Solidity 示例转换为 Anchor 代码,详细讲解了 Solana 中账户初始化的必要性、实现步骤及测试方法,强调了其显式初始化和防止重复初始化的特性。
本文基于前述 Solana 账户初始化内容,扩展了如何通过 Anchor 框架实现账户数据的读写操作,通过新增 set() 函数展示数据写入流程,优化代码结构,并介绍了使用命令行和程序内方法读取账户数据的技术细节,最终实现了一个简单的计数器功能。
本文介绍了通过 Solana Web3.js 和 Anchor 从前端读取账户数据的三种方法:自家 Anchor 程序用 fetch、跨程序读取需 IDL、任意账户用 Web3.js 自定义反序列化,强调了序列化与 IDL 的作用,为 Solana dApp 开发提供指导。
本文通过在 Solana 的 Anchor 框架中填充 seeds 参数,结合 Rust 和 Typescript 代码示例,展示了如何模拟 Solidity 中的映射表和嵌套映射表功能,利用 seeds 生成唯一账户地址实现键值存储。
本文详细解析了 Solana 的存储成本计算、租金免租机制、账户大小限制及动态调整方法,结合 Rust 示例展示了如何初始化和扩展账户,并与以太坊成本进行了对比。
本文介绍了在 Solana Anchor 中使用 Rust 读取账户余额的方法,阐释了 UncheckedAccount 的作用与安全性,解释了无需 #[account] 结构体的原因,并提及账户余额与免租机制的相关注意事项。
本文分析了 Solana 和 Anchor 框架为何缺乏 Solidity 中的 Fallback、view、pure、payable 函数及修饰符,指出其设计上账户预声明、数据公开性及 Rust 语言特性导致的差异,并提及缺乏内置单位的问题。
本专栏汇集了笔者在学习 Solana 过程中的笔记与心得,一路上也难免遇到了一些坑。市面上许多中文教程仍以翻译为主,因此难免存在一些不足。但我相信,只要你认真学习本专栏中的文章,掌握 Solana 开发将不再是难事。无论是 Solana 程序开发还是脚本编写,你都能游刃有余地应对。此外,本专栏的内容会持续更新,将逐步带领你从入门迈向中阶开发,毫无压力。
Solidity Yul Assembly 内联汇编
Rust 基础入门指南:为 Solana 合约学习铺路