Aptos 钱包标准
Aptos钱包标准定义了TypeScript接口和用于Aptos生态系统中的钱包和 Dapp 交互功能. 执行 AIP-62 (中文(简体) ),为钱包与应用程序集成提供了一个一致的方法.
建在连锁不可知的上方 钱包标准,这个库将它扩展为Aptos的特定功能,如交易签名,网络管理和账户处理等.
安装
# npm
npm install @aptos-labs/wallet-standard
# pnpm
pnpm add @aptos-labs/wallet-standard
同伴依赖关系
此软件包需要以下对等依赖性:
@aptos-labs/ts-sdk^7.1.0@wallet-standard/core^1.0.3
对于 Dapp 开发者
检测钱包
使用 getAptosWallets() 以发现所有已注册的 Aptos 兼容钱包。 用于执行钱包的此函数过滤器 需要的特性集。 。 。 .
import { getAptosWallets } from "@aptos-labs/wallet-standard";
const { aptosWallets, on } = getAptosWallets();
// Use currently registered wallets
console.log("Available wallets:", aptosWallets);
// Listen for new wallets that register after page load
const removeListener = on("register", (wallet) => {
console.log("New wallet registered:", wallet);
});
检查可选特性
使用 isWalletWithRequiredFeatureSet() 检查钱包是否支持超过所需集的额外功能 :
import { isWalletWithRequiredFeatureSet } from "@aptos-labs/wallet-standard";
import type { AptosSignAndSubmitTransactionFeature } from "@aptos-labs/wallet-standard";
if (
isWalletWithRequiredFeatureSet<AptosSignAndSubmitTransactionFeature>(wallet, [
"aptos:signAndSubmitTransaction",
])
) {
// Wallet supports sign-and-submit
}
钱包开发者
为了使您的钱包与 Aptos 钱包标准兼容, 请执行 AptosWallet 界面并使用 registerWallet 从 @wallet-standard/core。 。 。 .
1. 实施钱包接口
import { APTOS_CHAINS } from "@aptos-labs/wallet-standard";
import type { AptosWallet, AptosFeatures } from "@aptos-labs/wallet-standard";
class MyWallet implements AptosWallet {
readonly name = "My Wallet";
readonly url = "https://mywallet.com";
readonly version = "1.0.0";
readonly icon = "data:image/png;base64,...";
readonly chains = APTOS_CHAINS;
accounts = [];
get features(): AptosFeatures {
return {
"aptos:connect": { version: "1.0.0", connect: this.connect },
"aptos:disconnect": { version: "1.0.0", disconnect: this.disconnect },
"aptos:account": { version: "1.0.0", account: this.account },
"aptos:network": { version: "1.0.0", network: this.network },
"aptos:signTransaction": {
version: "1.0.0",
signTransaction: this.signTransaction,
},
"aptos:signMessage": {
version: "1.0.0",
signMessage: this.signMessage,
},
"aptos:onAccountChange": {
version: "1.0.0",
onAccountChange: this.onAccountChange,
},
"aptos:onNetworkChange": {
version: "1.0.0",
onNetworkChange: this.onNetworkChange,
},
};
}
// ... implement each feature method
}
2. 登记钱包
对于浏览器扩展钱包,请拨 registerWallet 当页面加载时 :
import { registerWallet } from "@aptos-labs/wallet-standard";
const myWallet = new MyWallet();
registerWallet(myWallet);
见全 示例钱包执行 一个完整的模板,并附有详细的指导.
API 参考
接口
| 接口 | 说明 |
|---|---|
AptosWallet | 主钱包接口扩展 WalletWithAptosFeatures 带有 url 属性 |
AptosWalletAccount | 账户接口扩展 WalletAccount 带有 signingScheme 字段 |
AccountInfo | 可序列账户信息类 address, (中文(简体) ), publicKey选择 ansName |
NetworkInfo | 网络细节包括: name, (中文(简体) ), chainId选择 url |
所需特性
所有 Aptos 钱包必须执行这些特性 :
| 特性 | 说明 |
|---|---|
aptos:connect | 连接用户账户到 Dapp |
aptos:disconnect | 从 dapp 中断开账户 |
aptos:account | 获取当前连接的账户信息 |
aptos:network | 获取钱包连接到的当前网络 |
aptos:signTransaction | 不提交而签名交易 |
aptos:signMessage | 签名任意信件 |
aptos:onAccountChange | 听账号更改事件 |
aptos:onNetworkChange | 听网络更改事件 |
可选特性
| 特性 | 说明 |
|---|---|
aptos:signAndSubmitTransaction | 在一步内签名并提交交易 |
aptos:changeNetwork | 请求钱包切换网络 |
aptos:openInMobileApp | 打开钱包的移动应用程序 |
aptos:signIn | 用钱包签名 |
链条
预定义链标识符 :
import {
APTOS_MAINNET_CHAIN, // "aptos:mainnet"
APTOS_TESTNET_CHAIN, // "aptos:testnet"
APTOS_DEVNET_CHAIN, // "aptos:devnet"
APTOS_LOCALNET_CHAIN, // "aptos:localnet"
APTOS_CHAINS, // All of the above
} from "@aptos-labs/wallet-standard";
处理错误
库通过 AptosWalletError数字 :
import {
AptosWalletError,
AptosWalletErrorCode,
} from "@aptos-labs/wallet-standard";
// Error codes:
// 4100 - Unauthorized: method/account not authorized by the user
// 4200 - Unsupported: requested feature is not supported
// -30001 - InternalError: something went wrong within the wallet
用户回复
促使用户核准返回的方法a UserResponse<T>,让钱包发出批准(结果)或拒绝信号的歧视工会。 以下特征使用此形状:
aptos:connectaptos:signTransactionaptos:signAndSubmitTransactionaptos:signMessageaptos:signInaptos:changeNetwork
其他需要的特性直接返回其值(仍然同步): aptos:account 返回时 Promise<AccountInfo>, (中文(简体) ), aptos:network 返回时 Promise<NetworkInfo>, (中文(简体) ), aptos:disconnect 返回时 Promise<void>,则 onAccountChange 编号 : onNetworkChange 特性注册订阅.
import { UserResponseStatus } from "@aptos-labs/wallet-standard";
const response = await wallet.features["aptos:connect"].connect();
if (response.status === UserResponseStatus.APPROVED) {
console.log("Connected:", response.args); // AccountInfo
} else {
console.log("User rejected the connection");
}
发展
# Install dependencies
pnpm install
# Build
pnpm build
# Lint
pnpm lint
# Format
pnpm format
许可证
阿帕奇 - 2.0