Skip to Content
dApps

Firma

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 firmar transacciones y mensajes en Polkadot.


Firmar los datos de una transacción

Firma los datos de extrínsecos:

import { web3FromAddress } from '@polkadot/extension-dapp' // Get injector for specific account const injector = await web3FromAddress(accountAddress) // Sign payload const payload = { address: accountAddress, blockHash: '0x...', blockNumber: '0x...', era: '0x...', genesisHash: '0x...', method: '0x...', nonce: '0x...', specVersion: '0x...', tip: '0x...', transactionVersion: '0x...', signedExtensions: [], // Populate from current chain metadata; do not sign this placeholder version: 4, } const result = await provider.web3SignPayload(payload) console.log({ id: result.id, signature: result.signature, // Hex signature })

Firmar un mensaje en bruto

const payload = { address: accountAddress, data: '0x48656c6c6f', // Hex-encoded message type: 'bytes', } const result = await provider.web3SignRaw(payload) console.log({ id: result.id, signature: result.signature, })

Escuchar eventos de transacciones

await tx.signAndSend( account.address, { signer: injector.signer }, ({ status, events }) => { if (status.isInBlock) { console.log('In block:', status.asInBlock.toHex()) } if (status.isFinalized) { console.log('Finalized:', status.asFinalized.toHex()) events.forEach(({ event }) => { if (api.events.system.ExtrinsicSuccess.is(event)) { console.log('Transaction succeeded') } if (api.events.system.ExtrinsicFailed.is(event)) { console.log('Transaction failed') } }) } } )

Métodos RPC

Enviar una solicitud RPC

const response = await provider.web3RpcSend({ method: 'chain_getHeader', params: [], }) console.log('Latest header:', response.result)

Suscribirse a eventos RPC

const subscriptionId = await provider.web3RpcSubscribe( { method: 'chain_subscribeNewHeads', params: [], }, (response) => { console.log('New block:', response.result) } ) // Unsubscribe later await provider.web3RpcUnSubscribe()

Gestión de errores

try { const result = await provider.web3SignPayload(payload) } catch (error) { if (error.message === 'Cancelled') { console.log('User cancelled signing') } else { console.error('Signing failed:', error) } }

Uso con React

import { useState, useEffect } from 'react' import { web3Enable, web3Accounts } from '@polkadot/extension-dapp' function usePolkadotWallet() { const [accounts, setAccounts] = useState([]) const [isConnected, setIsConnected] = useState(false) const connect = async () => { const extensions = await web3Enable('My dApp') if (extensions.length > 0) { const allAccounts = await web3Accounts() setAccounts(allAccounts) setIsConnected(true) } } return { accounts, isConnected, connect } }
Última actualización el