原子可组合性
程序在一笔交易内通过 Cross Program Invocation 相互调用。任何一步失败,整笔交易都会回滚,因此多协议策略绝不会只完成一半。
DeFi 开发者
每个 Solana 程序读写的都是同一个状态,因此兑换、还款和预言机更新可以在一笔原子交易中完成。从一个可运行的 Anchor 应用开始,集成实时流动性,并遵循生产级实践发布上线。
npx -y create-solana-dapp@latest -t solana-foundation/templates/kit/nextjs-anchor为什么选择 Solana
程序在一笔交易内通过 Cross Program Invocation 相互调用。任何一步失败,整笔交易都会回滚,因此多协议策略绝不会只完成一半。
每笔交易都会预先声明其读写的账户。运行时会并行执行不涉及相同可写账户的交易,因此一个繁忙的市场不会拖慢无关的市场。
写入竞争账户的交易会争夺该账户在区块中的份额。请根据你要写入的账户来确定优先费用的定价,而不是参考全网平均值。
主网 slot 时间正在分阶段缩短,Alpenglow 将取代当前的投票和最终性协议。在调整报价过期时间、超时和清算窗口之前,请持续关注这两项变化。
开发者技术栈
新协议的默认路径:程序用 Anchor,测试用 LiteSVM 和 Surfpool,客户端用 Codama,应用用 Kit。
01编写程序
Anchor 是大多数程序推荐使用的框架,内置账户验证、IDL 生成和 CPI 辅助工具。对于每个计算单元都至关重要的热点路径,可以选用零依赖库 Pinocchio。
02测试
使用 LiteSVM 或 Mollusk 运行快速的进程内测试,然后在 Surfpool 上运行集成测试。Surfpool 是一个可按需加载主网账户的本地网络,让你能够针对真实的资金池和预言机进行测试。
03生成客户端
根据程序的 IDL 生成带类型的 TypeScript 和 Rust 客户端,使指令构建器和账户解码器随每次部署保持同步。
04构建应用
@solana/kit 是标准的 JavaScript SDK。它的钱包插件通过 Wallet Standard 发现已安装的钱包,无需为每个钱包单独安装适配器包。
基础构件
这些协议为其程序和 API 发布了开发者文档。在通过某个协议路由用户资金之前,请先阅读其文档和审计报告。
通过聚合器 API 在 Solana 流动性中路由兑换,或请求原始指令,在你自己的交易中组合兑换。
创建资金池、提供集中流动性,并直接针对链上 AMM 获取报价。
通过借贷市场 SDK 提供抵押品、借款并读取储备状态。
开仓、管理和清算杠杆头寸,或设计你自己的完全链上永续合约市场。
将签名的价格更新拉取到你的交易中,并在使用价格前检查其置信度和时效性。
接受流动性质押代币作为抵押品,或将 SOL 路由到可赚取 validator 奖励的质押池。
使用在 Solana 上原生发行的法币支持型稳定币进行结算。
使用 Circle 的 CCTP 原生转移 USDC,或在不同链之间桥接其他资产和消息。
发行带有内置行为的资产,你的协议必须对这些行为进行处理:转账钩子、计息余额、缩放 UI 金额和保密转账。
仅为示例。列出某协议并不代表 Solana Foundation 的背书。
交易投递
DeFi 流量在波动期间达到峰值,而这恰恰是用户最需要交易成功上链的时候。请在主网上线前,将以下措施构建到你的客户端中。
按质押权重分配的 QoS 会为质押 validator 转发的交易预留 leader 容量。请选择支持该功能的 RPC 提供商。
安全
DeFi 程序从首次部署起就可能持有用户资金。请控制谁能修改它,证明已部署的内容,并监控它的行为。
将程序升级权限和管理员权限交由 Squads 多签持有,并为变更设置时间锁。
让用户和集成方能够确认已部署的程序与其公开源代码一致。
在主网上线前进行独立审计,并开展漏洞赏金计划。Solana Foundation 为生态系统团队资助 STRIDE 安全评估和免费工具。
Microscope 可将你程序的指令和 Squads 提案解码,并呈现在自托管的仪表板和告警中。
提出技术问题、评审设计,并寻找可以共同构建的团队。