Hedera Wallet Connect (Reown)

Hedera Wallet Connect es la librería oficial open-source que permite la comunicación entre aplicaciones descentralizadas (dApps) y wallets en la red Hedera usando relays de Reown (anteriormente WalletConnect). Kabila es un contribuidor principal y uno de los wallets destacados que implementa este estándar.

Repositorio en GitHub

Consulta el código fuente y la documentación en github.com/hashgraph/hedera-wallet-connect.

Qué Hace

Hedera Wallet Connect proporciona herramientas y recomendaciones para integrar Hedera en aplicaciones que necesitan comunicarse con wallets. Actúa como un relay de mensajería, permitiendo que las dApps envíen transacciones a los wallets y reciban firmas de vuelta — todo a través de la red Reown (WalletConnect).

Dos Rutas de Integración

La librería soporta dos enfoques diferentes para integrar Hedera:

  • Hedera Native JSON-RPC — Envía transacciones usando la especificación JSON-RPC propia de Hedera sobre WalletConnect. Este es el enfoque específico de Hedera que trabaja directamente con el SDK de Hedera.
  • Ethereum JSON-RPC — Usa la API estándar Ethereum JSON-RPC a través de un proveedor de Hedera JSON-RPC Relay. Ideal para herramientas compatibles con EVM y flujos de trabajo existentes de Ethereum.

Características Principales

  • Soporte Reown (WalletConnect) v2 — Construido sobre el último protocolo de Reown
  • DAppConnector — Un conector listo para usar para que desarrolladores de dApps interactúen con wallets de Hedera
  • Transacciones multi-firma — Soporte nativo para recopilar múltiples firmas antes de ejecutar una transacción
  • Integración con Hedera SDK — Funciona sin problemas con @hiero-ledger/sdk para la creación de transacciones
  • Compatibilidad con Reown AppKit — Integra con el AppKit de Reown (anteriormente WalletConnect) para una experiencia de modal plug-and-play
  • TypeScript — Completamente tipado, 100% TypeScript

Primeros Pasos

Opción 1: Integración Directa de la Librería

Instala las dependencias necesarias:

npm install @hashgraph/hedera-wallet-connect @hiero-ledger/sdk @walletconnect/modal

Inicializa el DAppConnector:

import {
  HederaSessionEvent,
  HederaJsonRpcMethod,
  DAppConnector,
  HederaChainId,
} from "@hashgraph/hedera-wallet-connect";
import { LedgerId } from "@hiero-ledger/sdk";
 
const metadata = {
  name: "Mi dApp de Hedera",
  description: "Ejemplo de dApp usando Hedera Wallet Connect",
  url: "https://example.com",
  icons: ["https://example.com/icon.png"],
};
 
const dAppConnector = new DAppConnector(
  metadata,
  LedgerId.Mainnet,
  projectId,
  Object.values(HederaJsonRpcMethod),
  [HederaSessionEvent.ChainChanged, HederaSessionEvent.AccountsChanged],
  [HederaChainId.Mainnet, HederaChainId.Testnet]
);
 
await dAppConnector.init({ logger: "error" });

Luego conéctate a un wallet:

await dAppConnector.openModal();

Opción 2: Usando Reown AppKit

Para una integración más simplificada con una interfaz de modal prediseñada:

npm install @hashgraph/hedera-wallet-connect @hiero-ledger/sdk @walletconnect/universal-provider
import {
  HederaAdapter,
  HederaChainDefinition,
  HederaProvider,
  hederaNamespace,
} from "@hashgraph/hedera-wallet-connect";
 
// Configurar adaptador EVM
const hederaEVMAdapter = new HederaAdapter({
  projectId,
  networks: [
    HederaChainDefinition.EVM.Mainnet,
    HederaChainDefinition.EVM.Testnet,
  ],
  namespace: "eip155",
});
 
// Configurar adaptador Nativo (recomendado)
const hederaNativeAdapter = new HederaAdapter({
  projectId,
  networks: [
    HederaChainDefinition.Native.Mainnet,
    HederaChainDefinition.Native.Testnet,
  ],
  namespace: hederaNamespace,
});
 
// Crear AppKit con ambos adaptadores
createAppKit({
  adapters: [hederaEVMAdapter, hederaNativeAdapter],
  projectId,
  metadata,
  networks: [
    HederaChainDefinition.EVM.Mainnet,
    HederaChainDefinition.EVM.Testnet,
    HederaChainDefinition.Native.Mainnet,
    HederaChainDefinition.Native.Testnet,
  ],
});

Transacciones Multi-Firma

Una de las características más potentes de Hedera Wallet Connect es el soporte para flujos de trabajo multi-firma. Esto permite que múltiples partes firmen una transacción antes de ejecutarla — esencial para:

  • Operaciones de tesorería que requieren múltiples aprobaciones
  • Servicios de escrow
  • Cuentas conjuntas
  • Co-firmado desde el backend para seguridad adicional

Ejemplo de Co-Firmado Frontend + Backend

Paso 1: El usuario firma la transacción en su wallet (sin ejecutarla):

import { DAppConnector } from "@hashgraph/hedera-wallet-connect";
import { TransferTransaction, Hbar } from "@hiero-ledger/sdk";
 
const transaction = new TransferTransaction()
  .addHbarTransfer(userAccountId, new Hbar(-10))
  .addHbarTransfer(recipientAccountId, new Hbar(10));
 
// Solicitar solo la firma (NO ejecuta)
const signer = dAppConnector.getSigner(userAccountId);
const signedTransaction = await signer.signTransaction(transaction);
 
// Enviar al backend para co-firmado
const response = await fetch("/api/execute-transaction", {
  method: "POST",
  body: JSON.stringify({
    signedTransaction: Buffer.from(signedTransaction.toBytes()).toString(
      "base64"
    ),
  }),
});

Paso 2: El backend añade su firma y ejecuta:

import { Transaction, PrivateKey, Client } from "@hiero-ledger/sdk";
import { addSignatureToTransaction } from "@hashgraph/hedera-wallet-connect";
 
const signedTransaction = Transaction.fromBytes(
  Buffer.from(req.body.signedTransaction, "base64")
);
 
const backendPrivateKey = PrivateKey.fromStringED25519(
  process.env.BACKEND_PRIVATE_KEY
);
 
const fullySignedTransaction = await addSignatureToTransaction(
  signedTransaction,
  backendPrivateKey
);
 
const txResponse = await fullySignedTransaction.execute(client);
const receipt = await txResponse.getReceipt(client);

Wallets Compatibles

Los siguientes wallets implementan el estándar Hedera Wallet Connect:

Contribución de Kabila

Kabila es tanto contribuidor de la librería Hedera Wallet Connect como uno de los wallets que implementa nativamente el estándar. El Kabila Wallet utiliza Hedera Wallet Connect para permitir interacciones fluidas entre dApps de Hedera y los usuarios de Kabila, proporcionando una experiencia de firmado segura y fluida.

Open Source

Hedera Wallet Connect es completamente open-source bajo la licencia Apache-2.0. Kabila contribuye activamente a su desarrollo y mantenimiento como parte del ecosistema Hedera.

Recursos

¿Te resultó útil esta página?