
什么是 Solana 智能钱包?对比与实施指南
开发者现在可以在 Solana 上使用嵌入式智能钱包(也称为账户抽象钱包)。这意味着应用可以为用户提供更简单的入门流程和使用体验。
与此同时,开发者也能获得更高的灵活性、安全性和合规性,最终带来更安全、更易用的链上体验。
与非可执行账户(数据账户)和传统嵌入式钱包不同,智能钱包可编程,因此能够解锁新一代功能:Gas 费赞助、每个钱包支持多个签名者、支出限额等。
本文将介绍 Solana 上的嵌入式智能钱包与其他钱包解决方案之间的主要区别。
你还将了解智能钱包在 Solana 上的工作原理,以及如何在应用中实现嵌入式智能钱包。
什么是智能钱包?
智能钱包是包含可执行代码的可执行程序账户。传统钱包只是由单个私钥控制的简单密钥对,而 Solana 上的智能钱包以程序形式实现,并具备特殊逻辑和功能。
智能钱包有哪些优势?
智能钱包不再需要助记词,也消除了助记词丢失带来的风险。用户可以指定一个或多个“签名者”或密钥来控制钱包。
这种灵活性支持更易用的密钥管理方式,例如生物识别(如 Face ID、Touch ID 或通行密钥),以及高级安全方案(如多签)或企业级控制(如服务端管理员密钥)。
智能钱包允许开发者使用 SOL 或 USDC 等其他 SPL 代币代付费用,并轻松向最终用户隐藏费用细节,从而实现免手续费交易,带来更接近用户熟悉的 web2 体验。
这意味着,你可以构建无需交易批准提示、不会丢失助记词或私钥,并通过程序(智能合约)强制实施可编程安全机制的应用。
嵌入式智能钱包、嵌入式钱包与非可执行账户对比
| 嵌入式智能钱包 | 嵌入式钱包 | 非可执行账户 | |
| 实现方式 | 包含自定义逻辑的智能合约 | 嵌入应用的非智能合约账户 | 独立应用或浏览器扩展 |
| 账户控制 | 灵活——用户可以指定一个或多个签名者(从 Phantom 等 EOA 到通行密钥和社交登录钱包),并可选择设置程序化规则 | 由社交登录保护的密钥对(通常位于 TEE 或 MPC 集群中) | 由用户拥有的密钥对直接控制 |
| 托管模式 | 灵活。既可以设为由用户自行托管,也可以由开发者托管,甚至可以在同一钱包中结合两种模式 | 通常为非托管,但某些恢复方式可能使其转变为托管模式 | 由最终用户自行托管 |
| 密钥管理 | 支持多种授权方式(MPC、社交恢复等) | 通常由应用管理 | 由用户管理助记词/私钥 |
| 交易授权 | 自定义验证逻辑(多签、时间锁、限额) | 应用使用嵌入式私钥签名 | 用户明确批准每笔交易 |
| 费用支付 | 支持费用抽象和代付,并允许使用 USDC 或 USDT 等其他 SPL 代币支付 | 用户支付所有交易费用。每个应用都需要提供法币入金渠道 | 用户支付所有交易费用 |
| 安全模型 | 通过开源智能合约代码实施安全机制,并可选择添加可编程约束 | 安全性取决于嵌入式钱包提供商的闭源代码 | 安全性取决于客户端闭源代码 |
| 恢复选项 | 可编程恢复(社交恢复、守护者密钥) | 由应用提供的恢复方式 | 仅支持基于助记词的恢复 |
| 支出控制 | 可编程支出限额和审批工作流 | 部分嵌入式钱包支持服务端交易策略(注意:如果实现不当,可能形成托管架构) | 无 |
| 监管考量 | 灵活——托管模式可以编程,并能让钱包适应不断变化的监管要求 | 请咨询具体的钱包提供商 | 审查较少——由用户控制 |
| 企业功能 | 基于角色的访问控制、审批工作流 | 部分嵌入式钱包提供有限的服务端控制 | 无 |
| 供应商锁定 | 低。智能钱包基于开源程序。可以将用户从一个基础设施提供商迁移到另一个,而无需更改用户地址。 | 高。要离开嵌入式钱包,唯一的方法是让每位用户恢复私钥,这可能不安全,也可能要求用户手动操作 | 低。取决于用户 |
智能钱包的典型用例
当你需要灵活的托管架构时,Solana 智能钱包非常实用,例如:
- 由多名员工共同管理的公司财库钱包
- 代理金融用例中的 AI 智能体钱包,其中智能体所有者需要一把密钥,智能体本身也需要另一把密钥
- 用户自行托管资产,但选择允许银行扣款(例如定期付款)的新型银行和金融应用
委托签名者的一个关键特性是,可以限定其权限范围,限制其对钱包的操作,例如设置支出限制或资产类别限制。
智能钱包在 Solana 上具体如何运作?
Solana 上的智能钱包结合链上程序与链下基础设施运行,并具备一些 Solana 特有的特性:
基于程序的架构
与非可执行账户(数据账户)不同,Solana 智能钱包(即可执行程序账户)通常实现为控制一个或多个账户(PDA)的链上程序。
交易授权
智能钱包不使用单个私钥,而是采用自定义身份验证逻辑:
- 可以要求多个签名者(多签功能)
- 可以支持多种身份验证方式(密钥、生物识别、社交验证)
- 可以通过程序强制实施时间锁和支出限额
账户委托
用户可以将特定权限委托给不同地址,从而更精细地控制每个密钥或设备可以执行的操作。
支持版本化交易
智能钱包使用 Solana 的标准版本化交易格式。
什么是账户抽象?
账户抽象(AA)让开发者能够创建可自定义的智能合约账户,突破绑定单个密钥对的非可执行账户的限制,从而提供更灵活的用户体验。
AA 支持自定义验证逻辑,因此账户无需依赖区块链的默认规则,即可实现社交恢复、多签要求或支出限额等安全功能。
AA 的主要目标是在保留自托管优势的同时,消除交易费用和助记词等技术门槛,让用户无需感知区块链技术。
Solana 上的免手续费交易如何运作?
对于免手续费交易,智能钱包的关键优势在于抽象发生在账户层,而不需要针对特定 dApp 单独实现。这带来了更顺畅的体验,用户甚至可能完全意识不到交易费用的存在。
这意味着开发者可以实现:
内置费用抽象
智能钱包可以将费用代付直接纳入其架构。钱包合约本身可以定义由谁在什么情况下支付费用。
灵活的费用币种
如果你不想为用户代付交易费用,用户可以使用 SOL 或 USDC、USDT 等代币支付。
批准机制
智能钱包可以实现自定义验证逻辑,以确定何时允许代付交易,例如设置频率限制或仅限特定应用。
如何使用 Crossmint 将 Solana 智能钱包添加到你的应用
你可以通过多种方式将智能钱包集成到应用中:在客户端集成、在服务端集成,或为 AI 智能体采用双密钥架构。
在下面的教程中,你将学习如何在服务端部署第一个智能钱包。
前提条件
首先,在 Crossmint 预发布控制台中创建开发者账户。
然后,前往项目的设置 > 常规,将钱包类型更改为“智能钱包”。
前往集成 > API 密钥,并在“服务端密钥”部分选择“创建新密钥”,即可获取 API 密钥。
在 Wallets API 类别下,选择以下权限范围:
wallets.createwallets.readwallets:signatures.createwallets:transactions.createwallets:transactions.readwallets:transactions.sign
点击“创建服务端密钥”,保存该密钥以供下一步使用。
创建你的第一个智能钱包
创建一个文件(例如 createWallet.ts),然后输入以下代码:
const apiKey = "YOUR_API_KEY";
const walletType = "solana-smart-wallet";
const adminSigner = {
// In production, you may want to use an MPC solution, like
// crossmint-managed MPC keys
type: "solana-keypair",
};
async function createWallet() {
const response = await fetch("https://staging.crossmint.com/api/2022-06-09/wallets", {
method: "POST",
headers: {
"X-API-KEY": apiKey,
"Content-Type": "application/json",
},
body: JSON.stringify({
type: walletType,
config: {
adminSigner,
},
}),
});
return await response.json();
}
createWallet()
.then((json) => console.log(json))
.catch((err) => console.error(`error: ${err}`));运行前,使用上一步获取的密钥填写 YOUR_API_KEY。
现在运行脚本:
npx tsx createWallet.tsAPI 将返回包含新钱包详细信息的响应。
保存钱包地址,因为下一步会用到它。
与你的钱包交互
现在,我们已经在你的服务器上设置好钱包,接下来与它们进行交互。
首先,访问 Crossmint 测试网 USDXM 水龙头,粘贴上一步获得的钱包地址,以在 Solana 上领取测试 USDXM。
现在你已经拥有一些代币,接下来检查钱包余额(checkBalance.ts):
const apiKey = "YOUR_API_KEY";
const walletAddress = "YOUR_WALLET_ADDRESS"; // From previous step
const tokens = ["sol", "usdc", "usdxm"]; // Tokens to fetch balances for
const chains = ["solana"]; // Chains to query balances from
async function getWalletBalance() {
const url = new URL(`https://staging.crossmint.com/api/v1-alpha2/wallets/${walletAddress}/balances`);
url.search = new URLSearchParams({
tokens: tokens.join(','),
chains: chains.join(',')
}).toString();
const response = await fetch(url, {
method: "GET",
headers: {
"X-API-KEY": apiKey,
"Content-Type": "application/json",
},
});
return await response.json();
}
getWalletBalance()
.then((json) => console.log(json))
.catch((err) => console.error(`error: ${err}`));
恭喜,你现在已经在服务器上部署了智能钱包!
接下来,你可以查阅文档,了解如何发起第一笔交易、添加委托签名者等。
总结
智能钱包将推动新一代 Solana 应用的发展,改善用户入门流程、使用体验、安全性和合规性。
Crossmint 很高兴能通过简单的 API 和无代码钱包、支付及代币化工具,为从 IP、忠诚度计划到 AI 智能体的广泛用例提供支持。这些工具可以可靠扩展至数百万用户。现在,随着 Solana 嵌入式智能钱包的推出,我们也开始为金融科技和 AI 智能体应用提供支持。
如果你想进一步了解如何在项目中实现 Solana 智能钱包,请联系我们,我们很乐意提供帮助。
其他资源
相关文章
订阅 Helius
及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新


