Skip to Content
dAppsAptos Wallet Adapter

Aptos Wallet Adapter

Biblioteca oficial de conexión de carteras de Aptos para React. Las versiones compatibles de OneKey se registran mediante Aptos Wallet Standard.

El adaptador detecta las carteras que registran funciones de Aptos Wallet Standard. Verifica que OneKey aparezca en wallets antes de ofrecer la conexión y prueba las versiones de cartera y adaptador que distribuyas.


Instalación

npm install @aptos-labs/wallet-adapter-react @aptos-labs/ts-sdk

Configuración básica

Envuelve tu aplicación con AptosWalletAdapterProvider:

App.tsx
import { AptosWalletAdapterProvider } from '@aptos-labs/wallet-adapter-react' function App() { return ( <AptosWalletAdapterProvider autoConnect={true}> <YourApp /> </AptosWalletAdapterProvider> ) }

Conexión de cartera

Botón de conexión

ConnectButton.tsx
import { useWallet } from '@aptos-labs/wallet-adapter-react' function ConnectButton() { const { connect, disconnect, account, connected, wallets } = useWallet() if (connected && account) { return ( <div> <p>Connected: {account.address.toString().slice(0, 6)}...{account.address.toString().slice(-4)}</p> <button onClick={disconnect}>Disconnect</button> </div> ) } return ( <div> {wallets?.map((wallet) => ( <button key={wallet.name} onClick={() => connect(wallet.name)} > <img src={wallet.icon} alt={wallet.name} width={24} /> {wallet.name} </button> ))} </div> ) }

Modal de selección de carteras

Este ejemplo mínimo muestra una lista personalizada de carteras. Para producción, añade gestión del foco del diálogo y del teclado, o usa un componente de diálogo accesible:

WalletModal.tsx
import { useWallet } from '@aptos-labs/wallet-adapter-react' import { useState } from 'react' function WalletModal() { const { wallets, connect } = useWallet() const [isOpen, setIsOpen] = useState(false) const [error, setError] = useState('') return ( <> <button onClick={() => setIsOpen(true)}>Connect Wallet</button> {isOpen && ( <div className="modal"> <h2>Select Wallet</h2> {error && <p role="alert">{error}</p>} {wallets?.map((wallet) => ( <button key={wallet.name} onClick={async () => { try { await connect(wallet.name) setIsOpen(false) } catch (error) { setError(error instanceof Error ? error.message : 'Connection failed') } }} > <img src={wallet.icon} alt={wallet.name} width={24} /> {wallet.name} </button> ))} <button onClick={() => setIsOpen(false)}>Close</button> </div> )} </> ) }

Transacciones

Firmar y enviar una transacción

Sustituye el destinatario abreviado y captura las solicitudes rechazadas o fallidas en tu interfaz. El cliente y la cartera deben usar la misma red.

import { useWallet } from '@aptos-labs/wallet-adapter-react' import { Aptos, AptosConfig, Network } from '@aptos-labs/ts-sdk' function TransferAPT() { const { account, network, signAndSubmitTransaction } = useWallet() const config = new AptosConfig({ network: Network.MAINNET }) const aptos = new Aptos(config) const handleTransfer = async () => { if (!account) return if (network?.name !== Network.MAINNET) throw new Error('Select Aptos mainnet first') const response = await signAndSubmitTransaction({ sender: account.address, data: { function: '0x1::aptos_account::transfer', functionArguments: [ '0x1234...', // recipient address 100000000, // amount in octas (1 APT = 100000000) ], }, }) // Wait for transaction const result = await aptos.waitForTransaction({ transactionHash: response.hash, }) console.log('Transaction confirmed:', result) } return <button onClick={handleTransfer}>Transfer APT</button> }

Firmar un mensaje

Para autenticación, sustituye el nonce de ejemplo por un desafío de un solo uso emitido por el servidor y verifica la respuesta firmada en tu servidor.

import { useWallet } from '@aptos-labs/wallet-adapter-react' function SignMessage() { const { signMessage, account } = useWallet() const handleSign = async () => { const response = await signMessage({ message: 'Welcome to My dApp!', nonce: crypto.randomUUID(), }) console.log('Signature:', response.signature) console.log('Full message:', response.fullMessage) } return <button disabled={!account} onClick={handleSign}>Sign Message</button> }

Configuración de red

Configura la red en el proveedor:

import { AptosWalletAdapterProvider } from '@aptos-labs/wallet-adapter-react' import { Network } from '@aptos-labs/ts-sdk' function App() { return ( <AptosWalletAdapterProvider autoConnect={true} dappConfig={{ network: Network.MAINNET, // Optional: specify additional networks aptosApiKeys: { [Network.MAINNET]: 'YOUR_API_KEY', [Network.TESTNET]: 'YOUR_TESTNET_KEY', }, }} > <YourApp /> </AptosWalletAdapterProvider> ) }

Referencia de hooks

Hook o miembro devueltoDescripción
useWallet()Hook principal para conexión de carteras y transacciones
accountCuenta conectada actualmente
connectedEstado de conexión
walletsLista de carteras disponibles
connect(walletName)Conectar a una cartera específica
disconnect()Desconectar la cartera actual
signAndSubmitTransaction(payload)Firmar y enviar una transacción
signMessage(request)Firmar un mensaje arbitrario
networkInformación de la red actual

Recursos

Última actualización el