馃毀 La documentacion de Bloque est谩 en desarrollo

Polygon

Crea y gestiona billeteras de criptomonedas en la red Polygon usando el SDK de Bloque.

Descripci贸n General

Las cuentas Polygon son billeteras de criptomonedas en la red Polygon (MATIC). Son ideales para:

  • Transacciones Web3: Interacci贸n con contratos inteligentes y dApps
  • Baja Fricci贸n: Comisiones de transacci贸n m铆nimas comparadas con Ethereum
  • Creaci贸n Autom谩tica: Generaci贸n instant谩nea de billeteras sin entrada adicional
  • Escalabilidad: Alta velocidad de transacci贸n y bajo costo

Crear una Cuenta Polygon

Creaci贸n B谩sica

Crea una billetera Polygon sin necesidad de proporcionar datos adicionales:

crear-cuenta-polygon.ts
import { SDK } from '@bloque/sdk';

const bloque = new SDK({
  origin: 'tu-origen',
  auth: {
    type: 'apiKey',
    apiKey: process.env.BLOQUE_API_KEY!,
  },
  mode: 'production',
});

// Conectar a sesi贸n de usuario
const session = await bloque.connect('did:bloque:tu-origen:alias-usuario');

// Crear una cuenta Polygon
const account = await session.accounts.polygon.create({
  metadata: {
    proposito: 'transacciones-web3',
    proyecto: 'mi-dapp',
  },
});

console.log('Cuenta creada:', account.urn);
console.log('Direcci贸n:', account.address);
console.log('Red:', account.network); // "polygon"
console.log('Estado:', account.status);

Par谩metros

tipos.ts
interface CreatePolygonAccountParams {
  ledgerId?: string;       // Opcional: ID de cuenta ledger (se crea autom谩ticamente si no se proporciona)
  webhookUrl?: string;     // Opcional: Webhook para eventos de la cuenta
  metadata?: Record<string, string>; // Opcional: Metadata personalizada (debe ser strings)
}
Creaci贸n Autom谩tica

Las cuentas Polygon no requieren ninguna entrada de datos. La direcci贸n de la billetera y las claves se generan autom谩ticamente de forma segura.

Respuesta

tipos.ts
interface PolygonAccount {
  urn: string;              // Nombre de recurso 煤nico
  id: string;               // ID de la cuenta
  address: string;          // Direcci贸n de la billetera Polygon (0x...)
  network: string;          // Red blockchain ("polygon")
  status: AccountStatus;    // Estado de la cuenta
  ownerUrn: string;         // URN del propietario
  ledgerId: string;         // ID de cuenta ledger
  webhookUrl: string | null;
  metadata?: Record<string, string>;
  createdAt: string;        // Timestamp ISO 8601
  updatedAt: string;        // Timestamp ISO 8601
}

type AccountStatus =
  | 'creation_in_progress'  // Creaci贸n en progreso
  | 'active'               // Activa
  | 'disabled'             // Deshabilitada
  | 'frozen'               // Congelada
  | 'deleted'              // Eliminada
  | 'creation_failed';     // Creaci贸n fallida

Gestionar Cuentas Polygon

Actualizar Metadata

Actualiza metadata personalizada en una cuenta Polygon:

actualizar-metadata.ts
const actualizada = await session.accounts.polygon.updateMetadata({
  urn: 'did:bloque:account:polygon:0x05B10c9B6241b73fc8c906fB7979eFc7764AB731',
  metadata: {
    actualizado_por: 'admin',
    proyecto: 'dapp-v2',
    entorno: 'produccion',
  },
});

console.log('Metadata actualizada:', actualizada.metadata);
Restricciones de Metadata

El campo source est谩 reservado y no puede modificarse a trav茅s de actualizaciones de metadata. Todos los valores de metadata deben ser strings.

Estados de Cuenta

Gestiona el estado de las cuentas Polygon:

gestionar-estado.ts
const accountUrn = 'did:bloque:account:polygon:0x05B10c9B6241b73fc8c906fB7979eFc7764AB731';

// Activar cuenta
const activada = await session.accounts.polygon.activate(accountUrn);
console.log('Estado:', activada.status); // 'active'

// Congelar cuenta (suspender temporalmente)
const congelada = await session.accounts.polygon.freeze(accountUrn);
console.log('Estado:', congelada.status); // 'frozen'

// Deshabilitar cuenta (permanentemente)
const deshabilitada = await session.accounts.polygon.disable(accountUrn);
console.log('Estado:', deshabilitada.status); // 'disabled'

Estados Disponibles

EstadoDescripci贸nPuede Transicionar A
creation_in_progressLa cuenta se est谩 creandoactive, creation_failed
activeCuenta activa y usablefrozen, disabled, deleted
frozenCuenta temporalmente suspendidaactive, disabled
disabledCuenta permanentemente deshabilitada-
deletedCuenta eliminada-
creation_failedCreaci贸n de cuenta fallida-
stateDiagram-v2
    [*] --> creation_in_progress
    creation_in_progress --> active
    creation_in_progress --> creation_failed
    active --> frozen
    active --> disabled
    active --> deleted
    frozen --> active
    frozen --> disabled
    creation_failed --> [*]
    disabled --> [*]
    deleted --> [*]

Casos de Uso

Integraci贸n con dApp

integracion-dapp.ts
import { SDK } from '@bloque/sdk';

const bloque = new SDK({
  origin: 'mi-dapp',
  auth: { type: 'apiKey', apiKey: process.env.BLOQUE_API_KEY! },
  mode: 'production',
});

async function crearBilleteraUsuario(userAlias: string) {
  const session = await bloque.connect(`did:bloque:mi-dapp:${userAlias}`);

  // Crear billetera Polygon para el usuario
  const wallet = await session.accounts.polygon.create({
    metadata: {
      user_id: userAlias,
      created_via: 'dapp-onboarding',
      purpose: 'nft-marketplace',
    },
  });

  console.log('Billetera creada para usuario:', userAlias);
  console.log('Direcci贸n:', wallet.address);
  console.log('URN:', wallet.urn);

  return wallet;
}

// Usar en tu aplicaci贸n
const userWallet = await crearBilleteraUsuario('usuario123');

Gesti贸n de M煤ltiples Billeteras

multiples-billeteras.ts
import { SDK } from '@bloque/sdk';

const bloque = new SDK({
  origin: 'mi-app',
  auth: { type: 'apiKey', apiKey: process.env.BLOQUE_API_KEY! },
  mode: 'production',
});

async function configurarBilleterasProyecto() {
  const session = await bloque.connect('did:bloque:mi-app:admin');

  // Crear billetera para tesorer铆a
  const treasury = await session.accounts.polygon.create({
    metadata: {
      type: 'treasury',
      purpose: 'project-funds',
    },
  });

  // Crear billetera para recompensas
  const rewards = await session.accounts.polygon.create({
    metadata: {
      type: 'rewards',
      purpose: 'user-incentives',
    },
  });

  // Crear billetera para staking
  const staking = await session.accounts.polygon.create({
    metadata: {
      type: 'staking',
      purpose: 'token-staking',
    },
  });

  return { treasury, rewards, staking };
}

const wallets = await configurarBilleterasProyecto();
console.log('Billeteras del proyecto configuradas:', {
  treasury: wallets.treasury.address,
  rewards: wallets.rewards.address,
  staking: wallets.staking.address,
});

Manejo de Errores

Maneja los errores apropiadamente al trabajar con cuentas Polygon:

manejo-errores.ts
import {
  BloqueValidationError,
  BloqueNotFoundError,
  BloqueAuthenticationError,
} from '@bloque/sdk';

try {
  const account = await session.accounts.polygon.create({
    metadata: {
      proyecto: 'mi-dapp',
    },
  });

  console.log('Cuenta creada:', account.urn);
} catch (error) {
  if (error instanceof BloqueValidationError) {
    console.error('Validaci贸n fallida:', error.validationErrors);
    // Manejar entrada inv谩lida
  } else if (error instanceof BloqueNotFoundError) {
    console.error('Recurso no encontrado:', error.resourceId);
    // Manejar usuario/sesi贸n faltante
  } else if (error instanceof BloqueAuthenticationError) {
    console.error('Autenticaci贸n fallida');
    // Manejar problemas de autenticaci贸n
  } else {
    console.error('Error inesperado:', error);
  }
}

Mejores Pr谩cticas

  1. Metadata Descriptiva: Agrega metadata para identificar el prop贸sito de cada billetera
  2. Gesti贸n de Seguridad: Usa estados de cuenta (frozen, disabled) para controlar el acceso
  3. Webhooks: Configura webhooks para recibir notificaciones de eventos de la blockchain
  4. Manejo de Errores: Siempre envuelve las operaciones en bloques try-catch
  5. Aislamiento por Prop贸sito: Crea billeteras separadas para diferentes funciones (tesorer铆a, recompensas, etc.)
  6. Monitoreo: Registra los URNs y direcciones de billeteras para auditor铆a y seguimiento
  7. Verificaci贸n de Estado: Verifica el estado de la cuenta antes de realizar operaciones cr铆ticas

Diferencias con Otros Tipos de Cuenta

Caracter铆sticaPolygonCuentas VirtualesTarjetas Virtuales
TipoBilletera CriptoCuenta de PruebaTarjeta de Pago
Informaci贸n RequeridaNingunaNombre, ApellidoURN del usuario
Tiempo de Creaci贸nInstant谩neoInstant谩neoInstant谩neo
Caso de UsoWeb3/BlockchainPruebas/DesarrolloPagos
Direcci贸n BlockchainS铆 (0x...)NoNo
RedPolygon (MATIC)N/AN/A
ComisionesMuy bajasN/AN/A

Consideraciones de Seguridad

Gesti贸n de Claves Privadas

Las claves privadas de las billeteras Polygon son gestionadas de forma segura por la plataforma Bloque. Nunca compartas el URN de la cuenta o las credenciales de API con terceros no autorizados.

Recomendaciones

  • Control de Acceso: Limita qui茅n puede crear y gestionar cuentas Polygon
  • Auditor铆a: Registra todas las operaciones de creaci贸n y modificaci贸n de cuentas
  • Monitoreo: Configura alertas para actividades inusuales
  • Congelamiento Preventivo: Congela cuentas sospechosas de inmediato
  • Rotaci贸n de API Keys: Rota regularmente las claves de API

Pr贸ximos Pasos