En esta página
Primeros pasos
Habilita la extensión, selecciona una cuenta y conecta un cliente de API a la cadena prevista. Construye los datos de la transacción a partir de los metadatos actuales de la cadena; los valores hexadecimales abreviados de esta guía son marcadores de posición.
Aprende a detectar, conectar e interactuar con cadenas de Polkadot y Substrate.
OneKey implementa la interfaz de la extensión Polkadot.js para las operaciones documentadas aquí.
Detección del proveedor
// OneKey registers as a Polkadot.js extension
const provider = window.$onekey?.polkadot
// Or use the standard web3Enable API
import { web3Enable, web3Accounts } from '@polkadot/extension-dapp'Habilitar la extensión
// Using OneKey provider directly
const enabled = await provider.web3Enable('My dApp')
if (enabled) {
const accounts = await provider.web3Accounts()
console.log('Accounts:', accounts)
}Uso de la API de la extensión Polkadot.js (recomendado)
import { web3Enable, web3Accounts } from '@polkadot/extension-dapp'
// Enable all extensions (including OneKey)
const extensions = await web3Enable('My dApp')
if (extensions.length === 0) {
throw new Error('No extension found')
}
// Get all accounts
const allAccounts = await web3Accounts()
console.log('Accounts:', allAccounts)Obtener cuentas
const accounts = await provider.web3Accounts()
accounts.forEach(account => {
console.log({
address: account.address, // Substrate address
name: account.name, // Account name
type: account.type, // 'sr25519' | 'ed25519' | 'ecdsa'
genesisHash: account.genesisHash, // Optional chain genesis
})
})Suscribirse a cambios de cuenta
const unsubscribe = provider.web3AccountsSubscribe((accounts) => {
console.log('Accounts changed:', accounts)
})
// Later: unsubscribe()Uso con la API de Polkadot.js
Configuración
npm install @polkadot/api @polkadot/extension-dappConectar y firmar una transacción
import { ApiPromise, WsProvider } from '@polkadot/api'
import { web3Enable, web3FromAddress, web3Accounts } from '@polkadot/extension-dapp'
// Enable extensions
await web3Enable('My dApp')
// Get accounts
const accounts = await web3Accounts()
const account = accounts[0]
if (!account) throw new Error("No account was selected")
// Connect to chain
const wsProvider = new WsProvider('wss://rpc.polkadot.io')
const api = await ApiPromise.create({ provider: wsProvider })
// Get injector
const injector = await web3FromAddress(account.address)
// Create and sign transaction
const tx = api.tx.balances.transferKeepAlive(
recipientAddress,
'10000000000' // 1 DOT = 10^10 planck on Polkadot
)
// Sign and send
const hash = await tx.signAndSend(
account.address,
{ signer: injector.signer }
)
console.log('Transaction hash:', hash.toHex())Última actualización el