Saltar al contenido principal

Sistema de Wallet de ULedgerNET

Descripción General

ULedgerNET implementa un sistema de wallet jerárquico que soporta relaciones padre-hijo, control de acceso basado en permisos y gestión de wallets en cascada. Esta arquitectura permite la gestión de identidades a nivel empresarial mientras mantiene la seguridad criptográfica.

Arquitectura de Wallet

Estructura Jerárquica

🔍 click to expand

Tipos de Wallet

TipoDescripciónCampo Padre
Wallet PadreWallet de nivel raíz sin padreVacío
Wallet HijoCreado por un wallet padreDirección del padre
Wallet SatéliteTérmino para cualquier wallet descendienteRastreado por el padre

Estructura de Wallet

Propiedades Principales

🔍 click to expand

Detalles de Propiedades

PropiedadTipoDescripción
publicKeystringLa clave pública del wallet (codificada en hex)
addressstringHash SHA256 de la clave pública en minúsculas
parentstringDirección del wallet padre (vacío para wallets raíz)
enabledbooleanSi el wallet puede realizar transacciones
satelliteWalletsstring[]Lista de direcciones de wallets hijo
authGroupsmapGrupos de permisos para control de acceso
keyTypeenumAlgoritmo criptográfico (secp256k1, ED25519, BLS12-377, ML-DSA-87)

Sistema de Permisos

Grupos de Autorización

ULedgerNET utiliza un sistema de permisos flexible basado en grupos de autorización:

🔍 click to expand

Estructura de Permisos

Cada grupo de autorización contiene permisos CRUD:

PermisoDescripción
CreateCrear nuevas entradas de este tipo
ReadLeer entradas existentes
UpdateModificar entradas existentes
DeleteEliminar entradas

Grupos Integrados

GrupoPropósito
adminAcceso administrativo completo (CRUD completo en todos los recursos)
walletPermisos de gestión de wallet (crear, actualizar wallets hijo)

Lógica de Verificación de Administrador

Un wallet se considera administrador si tiene el grupo admin con los cuatro permisos habilitados:

🔍 click to expand

Operaciones de Wallet

Creación de Wallets

🔍 click to expand

Payload de Transacción: Crear Wallet

CampoTipoRequeridoDescripción
publicKeystringClave pública para el nuevo wallet
keyTypeenumTipo de clave criptográfica
authGroupsmapNoPermisos iniciales para el wallet

Requisitos del Wallet Padre

Para crear un wallet hijo, el padre debe:

  1. Existir en el blockchain
  2. Estar habilitado (no deshabilitado)
  3. Tener permiso - ya sea:
    • Ser administrador (grupo admin con CRUD completo)
    • Tener el grupo wallet con permiso create

Modificación de Wallet

Operación de Modificación de Wallet

🔍 click to expand

Payload de Transacción: Modificar Wallet

CampoTipoRequeridoDescripción
targetstringDirección del wallet a modificar
enabledbooleanNuevo estado de habilitación
authGroupsmapNoPermisos actualizados

Reglas de Autorización

EscenarioAutorización Requerida
Padre modificando hijoEl padre debe tener wallet.update o ser administrador
Wallet modificándose a sí mismoDebe tener wallet.update o ser administrador
No existe padreSolo el wallet mismo puede modificarse

Deshabilitación en Cascada

Deshabilitación Automática de Hijos

Cuando un wallet padre es deshabilitado, todos los wallets descendientes son deshabilitados automáticamente:

🔍 click to expand

Algoritmo en Cascada

🔍 click to expand

Esto garantiza que:

  • Ningún wallet hijo huérfano permanezca activo
  • La suspensión de cuentas empresariales se propague correctamente
  • La revocación de seguridad sea integral

Validación de Transacciones

Verificaciones Previas a la Validación

Antes del procesamiento, las transacciones se validan contra las transacciones pendientes:

🔍 click to expand

Requisitos de Validación

VerificaciónDescripción
Wallet ExistenteEl wallet objetivo debe existir (para modificar)
Wallet HabilitadoEl wallet debe estar habilitado para realizar transacciones
Coincidencia de Tipo de ClaveEl tipo de clave de la transacción debe coincidir con el wallet
Firma VálidaVerificación de firma criptográfica
Autorización del PadreEl padre debe autorizar las operaciones del hijo

Identidad del Wallet

Derivación de Dirección

Las direcciones de wallet se derivan de forma determinista a partir de las claves públicas:

🔍 click to expand

Esto garantiza:

  • Generación consistente de direcciones entre nodes
  • Imposibilidad de colisión de direcciones
  • La dirección puede verificar la propiedad de la clave pública

Tipos de Clave Soportados

Tipo de ClaveAlgoritmoResistente a Quantum
secp256k1ECDSA
ED25519EdDSA
BLS12-377BLS Signatures
ML-DSA-87Dilithium

Referencia de API

Obtener Wallet

GET /blockchains/{blockchain_id}/wallets/{address}

Respuesta:

{
"publicKey": "04a1b2c3...",
"address": "abc123...",
"parent": "",
"enabled": true,
"satelliteWallets": ["def456...", "ghi789..."],
"authGroups": {
"admin": {"create": true, "read": true, "update": true, "delete": true}
},
"keyType": 0
}

Transacción de Creación de Wallet

POST /blockchains/{blockchain_id}/transactions

Cuerpo de la Solicitud:

{
"from": "parent_address",
"to": "new_wallet_address",
"payloadType": "CREATE_WALLET",
"payload": "{\"publicKey\":\"04abc...\",\"keyType\":0,\"authGroups\":{}}",
"senderSignature": "signature_hex"
}

Transacción de Modificación de Wallet

POST /blockchains/{blockchain_id}/transactions

Cuerpo de la Solicitud:

{
"from": "parent_or_self_address",
"payloadType": "ALTER_WALLET",
"payload": "{\"target\":\"wallet_address\",\"enabled\":false}",
"senderSignature": "signature_hex"
}

Casos de Uso Empresarial

Jerarquía Organizacional

🔍 click to expand

Revocación de Acceso

Cuando un empleado se va:

  1. Deshabilitar el wallet del empleado
  2. Todos sus wallets hijo son deshabilitados automáticamente
  3. No se pueden iniciar más transacciones
  4. Las transacciones confirmadas existentes permanecen en la cadena

Gestión de Departamentos

  • Los jefes de departamento pueden crear wallets para sus equipos
  • Los líderes de equipo pueden crear wallets para los miembros del equipo
  • Cada nivel tiene los permisos apropiados

Consideraciones de Seguridad

Gestión de Claves

PrácticaRecomendación
Wallets RaízUsar HSM o almacenamiento seguro de claves
Rotación de ClavesCrear nuevo wallet hijo, deshabilitar el antiguo
RespaldoRespaldo seguro de claves privadas
Registros de AccesoMonitorear operaciones del wallet

Mejores Prácticas de Permisos

PrácticaRecomendación
Mínimo PrivilegioOtorgar los permisos mínimos requeridos
Administrador con ModeraciónLimitar la asignación del grupo admin
Profundidad de JerarquíaMantener la jerarquía manejable
Auditorías RegularesRevisar los permisos del wallet periódicamente

Comportamiento de Wallets Deshabilitados

  • Los wallets deshabilitados no pueden enviar transacciones
  • Los wallets deshabilitados no pueden firmar operaciones de wallets hijo
  • Las transacciones existentes permanecen válidas
  • La rehabilitación requiere autorización del padre

Fin de la Serie de Documentación Técnica