只有当交易携带所有必要签名者的有效
签名时,交易才会执行。在本地开发期间,您通常将密钥保存为
Keypair
并直接签名。在生产环境中,重要的问题则不同:私钥存储在哪里,谁有权使用它授权签名?
切勿将私钥嵌入客户端代码、将其打包进前端,或 将其提交到版本控制系统。任何获得密钥的人都将完全控制 该账户的资金。
签名方式
| 方式 | 密钥存储位置 | 签名者 | 最适用场景 |
|---|---|---|---|
| 本地 keypair | 机器上的文件或环境变量 | 您的代码,直接签名 | 本地开发、测试、CI |
| 浏览器钱包 | 终端用户的钱包(如 Phantom、Solflare) | 终端用户,逐笔交易签名 | 用户自行签署交易的前端 dApp |
| 云端 KMS / HSM | 硬件支持的密钥服务(AWS KMS、GCP KMS、Vault) | 您的后端向服务请求签名 | 后端服务、财务管理操作、受监管环境 |
| 托管 / MPC 钱包 | 在提供商基础设施中拆分或托管 | 提供商按照您的策略共同签名 | 嵌入式钱包、审批工作流、机构托管 |
本地 keypair 是唯一一种将原始密钥材料置于应用程序内部的方式。所有生产环境方案都将密钥保存在专用基础设施中,并由该基础设施代表您进行签名。
后端签名
当服务器需要进行签名操作时——例如支付费用、发送程序交易或管理资金库——应使用专用的密钥管理后端,而非原始 keypair。Solana 基金会维护着
Keychain,这是一个统一的签名库(支持 Rust 和 TypeScript),通过单一的
SolanaSigner 接口兼容上表中所有后端:Memory、HashiCorp Vault、AWS KMS、GCP
KMS、Fireblocks、Privy、Turnkey、CDP、Crossmint、Dfns、Para、Openfort 和 Utila。
由于该接口在所有后端中保持一致,您可以在本地开发时使用内存密钥,并通过配置切换到生产后端,无需重写应用代码。Keychain 与
@solana/kit 及
Rust SDK 兼容。
完整的生产环境检查清单——包括密钥管理、RPC 安全性和监控——请参阅 生产就绪指南。
Is this page helpful?