Aptos-AIP-62
AIP-62 标准是 Aptos 官方引入的新标准。它是一套与链无关的接口和约定,旨在改善应用程序和注入钱包之间的交互。它使用Wallet Standard
方法来检测已安装的钱包并自动显示可连接钱包的列表。AIP-62 还升级了 DApps 和钱包之间交互的数据接口,例如封装的RawTransaction
等。
💡
Tip
在不久的将来,随着钱包采用新标准,钱包适配器将弃用旧标准,仅保留对AIP-62 钱包标准的支持。
当在 Bitget Wallet App 中运行 DApp 或在安装了 Chrome 扩展的 Chrome 浏览器中时,应用程序可以通过包装AptosWalletAdapterProvider
来实现钱包注入。
import { AptosWalletAdapterProvider } from '@aptos-labs/wallet-adapter-react'
;<AptosWalletAdapterProvider autoConnect>
<App />
</AptosWalletAdapterProvider>
钱包基础方法
获取钱包列表
DApps 可以直接使用 hooks 来获取通过registerWallet
注册的钱包列表:
import { useWallet } from '@aptos-labs/wallet-adapter-react'
const { wallets } = useWallet() // [{name: 'Bitget Wallet', icon: '...'}]
连接钱包
将钱包名称传递给 connect 方法以连接到指定钱包:
参数
name
- string:钱包名称
import { useWallet } from '@aptos-labs/wallet-adapter-react'
const { connect } = useWallet() // [{name: 'Bitget Wallet', icon: '...'}]
await connect('Bitget Wallet')
获取钱包地址
import { useWallet } from '@aptos-labs/wallet-adapter-react'
const { account } = useWallet() // {address: '...', publicKey: '...'}
获取网络
import { useWallet } from '@aptos-labs/wallet-adapter-react'
const { network } = useWallet()
消息
签名
参数
options
message
- stringnonce
- string
import { useWallet } from '@aptos-labs/wallet-adapter-react'
const { signMessage } = useWallet()
const res = await signMessage({
message: '要签名并显示给用户的消息',
nonce: '1',
})
验证
签名信息旨在验证对私有资源的所有权。
import nacl from 'tweetnacl';
import { useWallet } from "@aptos-labs/wallet-adapter-react";
const { signMessage, account } = useWallet();
const message = "hello";
const nonce = "random_string"
try {
const response = await signMessage({
message,
nonce,
});
const key = account.publicKey!.slice(2, 66);
const verified = nacl.sign.detached.verify(Buffer.from(response.fullMessage),
Buffer.from(response.signature, 'hex'),
Buffer.from(key, 'hex'));
console.log(verified);
} catch (error) {
console.error(error);
}
交易
签名交易
import { useWallet } from '@aptos-labs/wallet-adapter-react'
const { signTransaction } = useWallet()
const transaction = {
arguments: ['100000', '330679'],
function:
'0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa::router::swap_exact_input',
type: 'entry_function_payload',
type_arguments: [
'0x1::aptos_coin::AptosCoin',
'0x159df6b7689437016108a019fd5bef736bac692b6d4a1f10c941f6fbb9a74ca6::oft::CakeOFT',
],
}
try {
const res = await signTransaction(transaction)
} catch (error) {
// 查看"错误"
}
签名并广播交易
import { useWallet } from '@aptos-labs/wallet-adapter-react'
const { signAndSubmitTransaction } = useWallet()
try {
const pendingTransaction = await signAndSubmitTransaction({
data: transaction,
})
} catch (error) {
// 查看"错误"
}
Last updated on