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