智能钱包 SDK
[尖叫声] 智能钱包SDK不再维护,使用 钱包 SDK 换句话说.
与 Crossmint Smart 钱包互动的客户端 SDK 。 这个SDK使开发者能够创建和管理智能合同钱包,既支持传统的基于键盘的签名,也支持密码认证.
安装
npm install @crossmint/client-sdk-smart-wallet
# or
pnpm add @crossmint/client-sdk-smart-wallet
认证
此 SDK 使用 JSON Web Tokens( JWT) 认证您的用户 。 JWT由认证服务器生成,用于授权用户部署和操作钱包.
关于如何获得JWT标志的详细指示,请参见: 用户认证。 。 。 .
快速启动
import { SmartWalletSDK } from "@crossmint/client-sdk-smart-wallet";
import { privateKeyToAccount } from "viem";
const sdk = SmartWalletSDK.init({ clientApiKey: "<YOUR_API_KEY>" });
const account = privateKeyToAccount(privateKey);
const wallet = await sdk.getOrCreateWallet(
{
jwt: "<USER_TOKEN>",
},
"base-sepolia",
{
signer: {
type: "VIEM_ACCOUNT",
account,
},
}
);
const address = wallet.address;
实例
钱包创建
密码钱包
const signer = await sdk.createPasskeySigner("My Wallet")
const wallet = await sdk.getOrCreateWallet(
{
jwt: "<USER_TOKEN>",
},
"base-sepolia",
{
signer,
}
);
const address = walletClient.getAddress();
私钥钱包
import { privateKeyToAccount } from "viem";
const account = privateKeyToAccount(privateKey);
const wallet = await sdk.getOrCreateWallet(
{
jwt: "<USER_TOKEN>",
},
"base-sepolia",
{
signer: {
type: "VIEM_ACCOUNT",
account,
},
}
);
const address = walletClient.getAddress();
浏览器钱包
import type { EIP1193Provider } from "viem";
const providerSigner = window.ethereum as EIP1193Provider;
const wallet = await sdk.getOrCreateWallet(
{
jwt: "<USER_TOKEN>",
},
"base-sepolia",
{
signer: providerSigner,
}
);
发送交易
import { encodeFunctionData, erc20Abi } from "viem";
const walletClient = wallet.client.wallet;
const txHash = await walletClient.sendTransaction({
to: "<TOKEN_ADDRESS>",
data: encodeFunctionData({
abi: erc20Abi,
functionName: "transfer",
args: ["<RECEIVER_ADDRESS>", "<TRANSFER_AMOUNT>"],
})
})
签名信件
const walletClient = wallet.client.wallet;
const signature = await walletClient.signMessage({
message: "Hello, Crossmint!"
})
从 0.1.x
0.2.x SDK 努力向后兼容 0.1.x 尽可能多.
然而,由于钱包现在由Crossmint API供电,一些功能已经无法使用.
具体来说,一些职能来自 SmartWalletClient 对象已不可用 :
requestwriteContractdeployContractaccountsendUserOperationprepareUserOperationRequest
此外,密码创建流程也有所改变. 要创建有密码功能的钱包, 您首先创建一个密码符号:
const signer = await sdk.createPasskeySigner("My Wallet")
钱包创建时使用该签名符 :
const wallet = await sdk.getOrCreateWallet(
{
jwt: "<USER_TOKEN>",
},
"<NETWORK>",
{
signer,
}
);
API 参考
智能钱包SDK
与智能钱包互动的主要切入点.
静态方法
init(params: SmartWalletSDKInitParams): SmartWalletSDK
用客户端的 API 键初始化 SDK .
const sdk = SmartWalletSDK.init({ clientApiKey: "<YOUR_API_KEY>" });
实例方法
getOrCreateWallet(user: UserParams, chain: SmartWalletChain, walletParams: WalletParams): Promise<EVMSmartWallet>
为指定的用户创建或检索智能钱包.
const wallet = await sdk.getOrCreateWallet(
{
jwt: "<USER_TOKEN>"
},
"<NETWORK>",
{
signer: /* PasskeySigner or ExternalSigner */
}
);
createPasskeySigner(name: string): Promise<PasskeySigner>
创建带有指定名称的新密码符号.
const signer = await sdk.createPasskeySigner("My Wallet");
类型
智能钱包钱
支持区块链网络.
钱包
钱包创建配置 :
interface WalletParams {
signer: ExternalSigner | PasskeySigner;
}
// Use existing Web3 wallet or private key
type ExternalSigner = EIP1193Provider | ViemAccount;
// Use private key authentication
interface ViemAccount {
type: "VIEM_ACCOUNT";
account: LocalAccount & { source: "custom" };
};
// Use passkey authentication
interface PasskeySigner {
type: "PASSKEY";
credential: WebAuthnP256.P256Credential;
}
EMSmartWallet 软件
钱包实例由 getOrCreateWallet()。提供与智能钱包互动的方法:
interface EVMSmartWallet {
// viem clients that provide an interface for core wallet functionality.
client: {
public: PublicClient<HttpTransport>;
wallet: SmartWalletClient;
};
// The EVM chain of the smart wallet.
chain: SmartWalletChain;
// The address of the smart wallet.
address(): Address;
// Transfers tokens from the smart wallet to a specified address.
transferToken(toAddress: Address, config: TransferType): Promise<string>;
// A list of NFTs owned by the wallet.
nfts(): Promise<NftResponse>;
// Sends a contract call transaction and returns the hash of a confirmed transaction.
executeContract(params: {
address: Address;
abi: Abi;
functionName: string;
args: unknown;
}): Promise<Hex>;
}
智能钱包客户端
通过 wallet.client.wallet。提供与钱包互动的方法:
interface SmartWalletClient {
// Get the wallet's address
getAddress(): Address;
// Sign a message
signMessage(message: string): Promise<Hex>;
// Sign typed data (EIP-712)
signTypedData<T extends TypedData>(params: TypedDataDefinition<T>): Promise<Hex>;
// Send a transaction
sendTransaction(params: {
to: Address;
data?: Hex;
value?: bigint;
}): Promise<Hex>;
}
可在以下网址查阅全文: 文档。 。 。 .