文章
视频
课程
百科图谱
集训营
更多
问答
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
首页
文章
视频
课程
集训营
工作
工作
问答
活动
文档
集市
搜索
登录/注册
Solar 中文社群
文章
专栏
问答
视频
课程
集市作品
活动
招聘
TA的视频
TA的合集
一、Anchor 与 Pinocchio 的技术关系
这是本节课最核心、也是信息密度最高的部分。 ### 1. 两者在技术栈中的位置 - Anchor - 上层开发框架 - 提供完整脚手架、账户校验、测试与部署体验 - 更适合初学者与应用型开发 - Pinocchio - 底层 Rust crate - 与 `solana-program` 同一层级 - 提供更直接、可控的程序构建方式 - 对 Rust 基础要求更高 课程中的一个关键判断是: > Anchor 是“上层封装工具”,Pinocchio 是“底层引擎组件”。 ### 2. Anchor 2.0 与 Pinocchio 课程明确提到: - Anchor 2.0 正在逐步引入 Pinocchio 作为底层核心库 - 这并不意味着 Anchor 会被淘汰 - 而是 Anchor 继续承担“易用层”,Pinocchio 负责“性能与控制力” 因此,对大多数开发者来说: - **先学 Anchor,再理解 Pinocchio 是更合理的路径** ## 二、推荐学习路径与心智模型 课程中形成的共识路径是: 1. Rust 基础(不要求很深) 2. Anchor(重点掌握账户模型、PDA、CPI、测试) 3. Pinocchio(适合对性能、底层机制有更高要求的开发者) 特别强调: - Anchor 入门阶段不需要精通 Rust - Pinocchio 对 Rust 语法、类型系统、生命周期理解要求更高 ## 三、Vault 抽象为何如此常见 ### 1. Vault 的本质 Vault 是 Solana 程序中非常常见的一种模式,用于: - 暂时托管 Token - 管理资产流向 - 作为权限控制与状态隔离的中间层 ### 2. 为什么教学常从 Vault 开始 课程给出的解释是: - Vault 逻辑足够简单 - 又能覆盖: - PDA - 权限校验 - CPI - Token 操作 因此非常适合作为教学与入门案例。 ## 四、Pinocchio 0.10.x 的关键变化认知 课程中多次提到新版本带来的变化点: - API 调整较多 - 强类型 Address 替代旧版 Pubkey 抽象 - bump 不再被强烈推荐显式保存 - 对 Compute Unit 的使用更加友好 也提醒学员: - 教程与版本可能存在不一致 - 遇到问题时优先对照官方文档与社区说明 ## 五、测试、工具与工程实践提示 ### 1. 测试策略 - Anchor 提供完整测试框架 - Pinocchio 更偏向底层,需要额外测试工具 - Blueshift 推荐使用 mollusk 进行测试 ### 2. 工具链建议 - 使用 rust-analyzer 提升 IDE 体验 - 遇到依赖问题可通过指定版本解决 - 课程中给出了可直接使用的 cargo update 方案
37
0
0
12小时前
Task 3:构建一个 Anchor 托管程序
代码链接:https://github.com/Tools-touch/Task-/
66
0
0
2天前
task2:构建一个 Anchor 金库程序
Task2:https://learn.blueshift.gg/zh-CN/challenges/anchor-vault 助教包:https://github.com/daog1/blueshift_anchor_vault https://github.com/solana-foundation/solana-dev-skill
227
0
0
6天前
用 Anchor 重写简单链上数据存储程序
本节课程围绕 **Anchor 的基础使用方式** 展开,通过将一个“简单链上数据存储程序”从原生 Solana 写法迁移至 Anchor,实现对 Solana 账户模型、PDA 使用方式以及 Anchor 标准开发流程的系统理解,为后续 Vault 与更复杂合约内容打下基础。 ## 一、核心学习目标 通过本节课程,学员需要掌握以下能力: - 理解 Solana 与 EVM 在数据存储模型上的本质差异 - 熟悉 Anchor 项目的基础结构与开发流程 - 能够使用 PDA 为用户创建并管理专属数据账户 - 掌握账户空间分配与动态扩容的基本规则 - 能够独立排查 Anchor 开发中的常见报错 ## 二、Anchor 开发的基本流程 Anchor 提供了一套高度标准化的 Solana 开发体验,本次课程覆盖了完整闭环。 ### 1. 本地开发与测试流程 典型流程包括: - 安装依赖并初始化环境 - 使用 `anchor build` 编译程序 - 使用 `anchor test` - 自动启动本地 validator - 部署程序 - 执行测试脚本 在开发早期阶段,`anchor test` 是验证逻辑正确性的首选方式。 ## 三、Solana 账户模型与 PDA 的使用 ### 1. Solana 与 EVM 的关键差异 在 EVM 体系中,数据通常直接存储在合约内部。 而在 Solana 中: - **程序本身不存储业务数据** - 数据存储在独立的 **账户(Account)** 中 - 程序通过读写账户来完成状态更新 ### 2. PDA 在本次课程中的角色 本次“用户金库”示例中: - 每个用户对应一个 PDA 账户 - PDA 通过 `seeds + program_id` 派生 - PDA 用来存储用户的金库数据或余额信息 - 用户签名 + PDA 规则共同保证数据归属的安全性 ### 3. 是否需要 Auth 校验 课程中强调了一个常见误区: - PDA 的 owner 通常是 system program - 如果不做额外校验,逻辑层面的“数据归属”并不直观 因此,在真实项目中,建议通过: - 用户 signer - PDA seeds - 明确的字段校验 来确保账户只能被对应用户操作。 ## 四、账户空间(space)分配与计算 账户空间是 Anchor 开发中**最容易出错、但必须理解**的一部分。 ### 1. 基本原则 - Solana 账户在创建时必须一次性声明空间大小 - Anchor 账户默认需要额外 **8 bytes** 用于 discriminator ### 2. 常见写法 课程中对比了两种写法: - `space = 8 + Struct::INIT_SPACE` - 使用辅助函数动态计算空间 ### 3. 动态字段的注意事项 当账户结构体中包含以下字段时: - `Vec<T>` - `String` 必须: - 显式声明最大长度(如 `max_len`) - 否则 Anchor 无法正确计算所需空间 这是初学者最容易忽略、也最常导致运行时报错的点。 ## 五、realloc 与 realloc::zero 的理解 当账户需要扩容时,可以使用 `realloc`。 ### 1. realloc 的作用 - 在已有账户基础上增加空间 - 常用于列表增长、数据追加等场景 ### 2. realloc::zero 的含义 - `realloc::zero = true` - 新增空间会被初始化为 0 - 更安全、更可预测 - `false` - 新空间内容不确定 - 可能带来逻辑或安全风险 在涉及用户资产或关键状态时,推荐开启 zero。 ## 六、常见报错与排查方向 ### 1. Program ID 不匹配(最常见) **错误类型** `DeclaredProgramIdMismatch (4100)` **排查思路** - 确认 `Anchor.toml` 中的 program id - 使用以下命令获取真实部署 id ```bash solana-keygen pubkey target/deploy/<program>-keypair.json ``` - 确保以下三处完全一致 - `declare_id!` - `Anchor.toml` - 实际部署的 program id ### 2. 找不到 .so 文件 **错误表现** - deploy 阶段提示找不到 program 文件 **解决思路** - 确认 `anchor build` 成功执行 - 检查 `target/deploy` 目录下是否生成 `.so` 文件 ### 3. 工具链或 Solana CLI 版本问题 **典型现象** - toolchain 名称无效 - 编译阶段直接失败 **解决思路** - 检查本地 solana-cli 版本 - 按课程推荐版本重新安装或切换 - 保证 Anchor 与 Solana 版本兼容 ### 4. 测试脚本依赖缺失 **错误表现** - `ts-mocha` 找不到 **解决思路** - 先执行 `yarn install` - 确保测试相关依赖已正确安装 ## 七、课后实践建议 - 独立完整跑通一次项目流程 - build - test - deploy - 把以下内容整理成自己的 checklist - PDA 设计 - 权限校验 - space 计算 - realloc 使用场景 - 为毕业设计提前养成习惯 - 每次 deploy 前检查 program id - 关键逻辑不只依赖自动生成代码
213
0
0
6天前
AI Vibe Coding
AI Vibe Coding 中文黑客松介绍及 workshop AI Vibe Coding中文黑客松进行中,$20,000U奖池,和Trends.fun、Solana基金会和生态顶尖项目Jupiter、Drift的创始人评委们一起Vibe,领取手续费!1.28周三7pm截止提交 参加规则:https://reurl.cc/XaMM2D
274
0
0
6天前
Solana 2026 Task 1:铸造 SPL Token (使用 web3.js)
✅ Task 1: 铸造 SPL Token (使用 web3.js) https://learn.blueshift.gg/zh-CN/challenges/typescript-mint-an-spl-token ? task1助教包:https://github.com/Tools-touch/Task-/
316
0
0
2026-01-21 16:31
将简单链上数据存储器扩展为可交易代币程序
Mohanson老师通过解答学员实战报错,深入探讨了 Solana 处理高并发时的底层真相及网络协议限制。 ### **1. 并发执行的真相:账户锁定 (Locking)** - **并行转串行**:Solana 虽然支持并行处理,但前提是交易涉及的账户不冲突。 - **热点账户瓶颈**:当成千上万人同时买入同一个流动性池或抢购同一个 NFT 时,由于它们都操作同一个账户,系统会强制将其转为**串行执行**。这解释了为何在极端热点下,用户会感受到“局部拥堵”。 - **交易所方案**:交易所内部转账通常在中心化数据库完成,仅在充提时与链上交互,以规避链上账户锁定的性能限制。 ### **2. 解决包大小限制:LUT (Address Look Up Tables)** - **1280 字节限制**:受 UDP 协议 MTU 限制,单笔交易的数据包极其有限,无法包含过多的账户地址(通常上限为 20-30 个)。 - **LUT 地址查找表**:当业务逻辑极其复杂(如聚合器交易涉及 100 个账户)时,通过 LUT 在链上建立“通讯录”,交易中只需传“索引编号”即可。这极大压缩了交易体积,是复杂应用开发的必备技巧。 ### **3. 交易费用构成与报错排查** - **费用公式**:`Total Fee = Fixed Transaction Fee + Priority Fee + Account Rent`。 - **优先费 (Priority Fee)**:在高并发期间,通过增加优先费可以获得验证者的优先打包权。 - **报错解析**:`Attempt to debit an account but found no record`。这通常是因为目标账户尚未创建或余额不足以支付租金押金,导致交易模拟阶段就报错回滚。 ### **4. PDA (Program Derived Address) 的付费与管理** - **谁使用谁付费**:PDA 的创建费用(租金)由用户支付。 - **管理权限分离**:用户虽付了钱,但没有私钥,无法直接动用资金;只有 Owner 程序能通过 `invoke_signed` 根据 Seeds 派生签名来管理其中的资产。 --- --- **总结陈述:** 本次课程深入到了 Solana 的**工程边界**。理解“账户锁定导致的串行化”能帮助你设计更好的业务并发逻辑;而掌握 **LUT** 和 **Rent 管理** 则是解决实战中“发不出交易”和“交易莫名报错”的关键。 文档:https://solana.com/zh/docs/intro/installation 附件中有社区小伙伴 Dean 分享的课程笔记
453
0
0
2026-01-16 12:20
互联网资本市场
Yao Yao 结合其在亚马逊、交易所及基金会的复合背景,分享了 Solana 如何通过技术特性推动机构级应用落地。 ### **1. 亚太区:从“跟随者”到“技术引擎”** - **开发者红利**:亚太区开发者不仅在数量上占优,更在 DeFi 协议的复杂逻辑(如聚合器、衍生品)上贡献了全球领先的代码量。 - **基金会的角色转变**:基金会不只是提供 Grant(奖金),核心在于**资源分发与信誉背书**。通过将优秀的亚太开发者对接给全球顶级 VC(如 a16z)和交易所,实现项目的商业化落地。 ### **2. 传统机构入场:从“观望”到“基建融合”** - **亚马逊 (AWS) 的案例**:大厂看重的是**云端集成能力**。Solana 的节点节点可以轻松部署在 AWS 上,这种“云原生”的友好性降低了传统企业进入 Web3 的门槛。 - **成本即战略**:对传统机构而言,高吞吐量不仅是技术指标,更是财务指标。Solana 的低费率允许机构在链上进行**高频对账与清算**,这在以太坊上由于 Gas 费波动是无法实现的商业逻辑。 ### **3. Token Extensions (Token-2022) 的商业终局** Solana 杀入主流金融圈的“杀手锏”: - **可控的去中心化**:机构需要“有条件的监管”。 - **合规性 (Compliance)**:通过 Transfer Hooks 实现自动化 KYC,让每一笔转账都符合特定地区的法律。 - **资产安全 (Asset Security)**:永久代理权(Permanent Delegate)解决了机构最担心的“私钥丢失导致国有/企业资产流失”的合规痛点。
684
0
0
2026-01-16 12:18
Solana 2026 C3 QA
Solana Bootcamp 2026 Course 3 QA
386
0
0
2026-01-14 13:33
Solana 入门:简单链上数据存储器
Mohanson主要分享了 **“Account Model (账户模型)”** 的实战应用以及如何编写具备生产能力的 Rust 程序。 - **1. 开发环境与工具链** - **本地验证者 (`solana-test-validator`)**:本地测试是开发的基石。它可以完全模拟主网行为,支持重置状态。 - **RPC (Remote Procedure Call)**: - **端口 8899**:默认的 HTTP RPC 端口,用于发送交易和查询数据。 - **常用指令**:`getAccountInfo` 是最核心的读取函数,用于获取账户的 Lamports 余额、Owner 和 Data。 - **2. 核心架构:逻辑与数据的彻底解耦** 这是 Solana 区别于以太坊(EVM)的最本质特征: - **Stateless Program (无状态程序)**:Solana 的程序(Smart Contract)只包含执行指令的代码,不存储任何业务数据。 - **Data Accounts (数据账户)**:所有状态信息都必须存储在独立的数据账户中。 - **并行处理能力 (Parallel Execution)**: - **交易声明**:交易必须预先列出所有要操作的账户。 - **运行时调度**:只要两笔交易操作的是不同的账户,验证者就可以在多个 CPU 核心上同时执行它们。 - **3. PDA (Program Derived Address) —— 程序派生地址** PDA 作为重点,用于实现“程序自主管理账户”: - **计算公式**: Address=hash(Program ID+Seeds+Bump) - **特性**: - **无私钥**:PDA 不在 Ed25519 椭圆曲线上。 - **程序签名**:程序可以通过 `invoke_signed` 函数,利用 Seeds 和 Bump 为该 PDA 签署交易。 - **应用场景**:Vault(金库)账户、用户配置文件(Profile)、去中心化订单簿的撮合账户。 - **4. 链上存储与租金管理 (Rent Management)** - **Lamports 与租金**:链上空间昂贵。账户内必须持有一定数量的 SOL 来支付存储费。 - **Rent Exempt (租金豁免)**:若账户余额足以支付 2 年的租金,节点将不再扣费。目前的标准做法是所有账户都必须保持“租金豁免”。 - **动态调整 (`realloc`)**: - 当存储内容增加时,如何动态扩展账户空间。 - **安全检查**:必须判断发起者是否有权修改,并确保账户内有足够的 SOL 补足新增空间的租金。 - **5. Rust 程序编写要点** - **Entrypoint (入口点)**:所有 Solana 程序的唯一入口。Rust `pub fn process_instruction( program_id: &Pubkey, accounts: &[AccountInfo], instruction_data: &[u8], ) -> ProgramResult` - **Borsh 序列化**:用于将 Rust 中的 `struct`(结构体)转化为可在链上存储的二进制流(Binary stream)。 - **部署限制**:由于 UDP 包大小限制(通常为 1280 字节),部署大型程序会涉及成百上千次连续的交易指令。 文档:https://solana.com/zh/docs/intro/installation 附件中有来自社区小伙伴 Dean 的笔记分享
583
0
0
2026-01-14 13:19
‹
1
2
3
4
›
Solar 中文社群
关注
贡献值: 325
学分: 525
https://soldev.cn/
0 关注
43 粉丝
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
提醒
检测到你当前登录的账号还未绑定手机号
请绑定后再发布
去绑定
×
编辑封面图
封面预览
取消
确认
×
创建课程
课程封面
编辑封面图
建议尺寸: 1920*1080
×
编辑封面图
封面预览
取消
确认