@ crossmint/ 钱包- sdk
用于创建和管理的打字机 SDK 十字薄荷钱包 在EVM,索拉纳,和斯特拉勒链.
先决条件
从中获取 Crossmint API 密钥 开发者控制台。确保您的键有 钱包 API 启用范围,包括 wallets.fund 页:1 stagingFund。 。 。 .
- 客户端 (浏览器):使用客户端 API 密钥
- 服务器侧 (节点:js): 使用服务器 API 密钥
安装
npm install @crossmint/wallets-sdk
# or
pnpm add @crossmint/wallets-sdk
# or
yarn add @crossmint/wallets-sdk
快速启动
服务器侧 (Node.js)
import { createCrossmint, CrossmintWallets } from "@crossmint/wallets-sdk";
const crossmint = createCrossmint({ apiKey: "<YOUR_SERVER_API_KEY>" });
const wallets = CrossmintWallets.from(crossmint);
// Create a wallet with a server signer
const wallet = await wallets.createWallet({
chain: "base-sepolia",
recoveryMethods: [{ type: "server", secret: "<RECOVERY_SECRET>" }],
});
console.log(wallet.address);
// Staging only: mint USDXM, Crossmint's test stablecoin, into the wallet
await wallet.stagingFund(10);
// Send tokens
const tx = await wallet.send("0xRecipientAddress", "usdxm", "10");
console.log(tx.explorerLink);
客户端( 无头)
对于客户端不用React的用法,可以直接与用户JWT使用SDK. 在进行中,从 Crossmint Auth 获得它(@crossmint/client-sdk-auth);在生产中,或当您的应用程序已经有认证提供者时,使用该提供者的JWT:
import { createCrossmint, CrossmintWallets } from "@crossmint/wallets-sdk";
const crossmint = createCrossmint({ apiKey: "<YOUR_CLIENT_API_KEY>" });
crossmint.setJwt("<USER_JWT>");
const wallets = CrossmintWallets.from(crossmint);
const wallet = await wallets.getWallet({ chain: "base-sepolia" });
console.log(wallet.address);
用于反应应用程序, 使用
@crossmint/client-sdk-react-ui规定CrossmintWalletProvider钩子和内置的UI 用于检察官办公室和密码流通.
创建钱包
服务器签名器
以服务器密钥创建钱包作为恢复方法 :
import { createCrossmint, CrossmintWallets } from "@crossmint/wallets-sdk";
const crossmint = createCrossmint({ apiKey: "<YOUR_SERVER_API_KEY>" });
const wallets = CrossmintWallets.from(crossmint);
const wallet = await wallets.createWallet({
chain: "base-sepolia",
recoveryMethods: [{ type: "server", secret: "<RECOVERY_SECRET>" }],
});
console.log(wallet.address);
外部钱包签名器
自带钥匙( MetaMask, KMS等) :
const wallet = await wallets.createWallet({
chain: "base-sepolia",
recoveryMethods: [
{
type: "external-wallet",
address: "0xYourWalletAddress",
onSign: async (message: string) => {
// Sign the message with your wallet/KMS and return the signature
return await yourWallet.signMessage({ message: { raw: message as `0x${string}` } });
},
},
],
});
设备签名器( 浏览器 / React Introduction)
设备签名者使用由硬件支撑的P256键进行无摩擦客户端-侧签名. 它们必须在客户端上创建,并且可以在钱包创建时间被传递到服务器:
// Client: generate a device signer descriptor
const { createDeviceSigner } = useWallet();
const deviceSigner = await createDeviceSigner();
// Send deviceSigner to your server
// Server: create the wallet with the device signer pre-registered
const wallet = await wallets.createWallet({
chain: "base-sepolia",
owner: "email:[email protected]",
recoveryMethods: [{ type: "email", email: "[email protected]" }],
signers: [deviceSigner],
});
设备签名器是 仅浏览器和回放本地 ——Node.js没有. 见 带有设备签名器的服务器- Side 钱包 用于完整图案的指南.
获取已存在的钱包
// Client-side
const wallet = await wallets.getWallet({ chain: "base-sepolia" });
// Server-side — requires a wallet locator
const wallet = await wallets.getWallet("0xWalletAddress", {
chain: "base-sepolia",
});
核心概念
签名人
钱包 SDK 使用两级标志模型:
- 回收方法 ——高安全性,用于钱包回收并添加新的签注. 支持电子邮件OTP,电话OTP,外部钱包或服务器密钥.
- 操作标志 ——低平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平 支持服务器密钥,外部钱包,密码,以及设备(仅浏览/移动). 对于服务器侧(Node.js)的使用,使用a 服务器 或者说 外墙 签名者.
在没有可操作的签名器时,恢复方法自动成为签名的倒计时.
使用量
余额
const balances = await wallet.balances();
console.log(balances.nativeToken.amount);
console.log(balances.usdc.amount);
对于有卡片的钱包,每个信使也会报告其余额的分割情况:
available: 现在可以花多少locked:待付卡费inTransit:在钱包和卡片之间移动的资金,但卡片提供者尚未反映accounts:钱包和每张卡的分数相同。 只有信用卡账户inTransit。每张卡都报告creditLimit: 按卡片提供者的设置, 它能花的最多
available + inTransit 是用户在资金流动时持有的总数.
const { usdc } = await wallet.balances();
console.log(usdc.available?.amount, usdc.inTransit?.amount);
发送托肯斯
const tx = await wallet.send("0xRecipient", "usdc", "100");
console.log(tx.explorerLink);
转账
const transfers = await wallet.transfers({
tokens: "usdc",
status: "successful",
});
无
const nfts = await wallet.nfts({ perPage: 10, page: 1 });
链状交易
import { EVMWallet, SolanaWallet, StellarWallet } from "@crossmint/wallets-sdk";
// EVM — smart contract interaction
const evmWallet = EVMWallet.from(wallet);
const tx = await evmWallet.sendTransaction({
to: "0xContractAddress",
abi: contractAbi,
functionName: "mint",
args: [1],
value: 0n,
});
// EVM — sign a message
const sig = await evmWallet.signMessage({ message: "Hello" });
// EVM — viem public client
const client = evmWallet.getViemClient();
// Solana
const solWallet = SolanaWallet.from(wallet);
const solTx = await solWallet.sendTransaction({
serializedTransaction: "<base64-encoded-transaction>",
});
// Stellar
const stellarWallet = StellarWallet.from(wallet);
const stellarTx = await stellarWallet.sendTransaction({
contractId: "C...",
method: "transfer",
args: { to: "G...", amount: "1000000" },
});
签名管理
// Add a new signer
await wallet.addSigner({ type: "server", secret: "<SECRET>" });
// List signers
const signers = await wallet.signers();
console.log(signers); // [{ type: "server", locator: "server:...", status: "success" }, ...]
// Set the active signer (required after getWallet server-side)
await wallet.useSigner({ type: "server", secret: "<SECRET>" });
交易核准( 仅预留模式)
对于需要多步骤批准的流动:
// Create a transaction without auto-approving
const pendingTx = await wallet.send("0xRecipient", "usdc", "10", {
prepareOnly: true,
});
console.log(pendingTx.transactionId);
// Approve later
const result = await wallet.approve({
transactionId: pendingTx.transactionId,
});
签名类型
| 类型 | 使用大小写 | 平台 |
|---|---|---|
device | 硬件支持,没有检察官办公室. 浏览器和只反应本地 ——Node.js没有. | 浏览器, 反应原生 |
server | 服务器侧自动操作(AI代理,后端). | 节点.js |
email | 检察官办公室的回收方法. | 全体 |
phone | 检察官办公室的回收方法. | 全体 |
passkey | 在EVM,索拉纳和斯泰拉尔的WebAuthn/FIDO2生物鉴别标志. 在索拉纳岛,它可以是一种标志,但不能是一种恢复方法. | 浏览器, React 本地(设置 passkeys 打开道具 CrossmintWalletProvider(中文(简体) ) |
external-wallet | 带上你的钥匙(MetaMask、KMS等). | 全体 |
反应/ 反应原生
对于反应应用程序, 使用 @crossmint/client-sdk-react-ui 提供钱包提供者、 钩子( t)useWallet, (中文(简体) ), useWalletOtpSigner用于检察官办公室和密码流通的内置UI.
原始反应,见 @crossmint/client-sdk-react-native-ui。 。 。 .
文档
许可证
阿帕奇 - 2.0