ULedgerNET Smart Contracts & Tokens
Descripción general
ULedgerNET proporciona una plataforma completa de smart contracts basada en WebAssembly (WASM) y un sistema de token nativo que admite tokens fungibles, tokens no fungibles (NFTs) y multi-tokens.
Runtime WASM
Arquitectura
Características del runtime WASM
ULedgerNET utiliza un runtime WASM de alto rendimiento para la ejecución de contratos:
| Característica | Descripción |
|---|
| Runtime | Motor WASM de nivel productivo |
| Modelo de memoria | Memoria lineal con crecimiento |
| Ejecución | Compilación JIT |
| Aislamiento | Ejecución en sandbox |
Medición de gas
Descripción general del sistema de gas
Categorías de operaciones
| Categoría | Descripción |
|---|
| Operaciones base | Instrucciones WASM, llamadas a funciones |
| Memoria | Asignación, crecimiento, acceso |
| Storage | Lectura, escritura, eliminación |
| Funciones host | Llamadas externas al runtime |
Funciones host
Funciones host disponibles
Detalles de funciones host
| Función | Parámetros | Retorna | Descripción |
|---|
get_storage | key: string | value | Recupera el valor almacenado |
set_storage | key: string, value | - | Almacena un valor |
delete_storage | key: string | - | Elimina el valor almacenado |
has_key | key: string | bool | Verifica la existencia de la clave |
get_caller | - | address | Remitente de la transaction |
get_owner | - | address | Propietario del contrato |
get_block_height | - | uint64 | Altura del bloque actual |
emit_event | name, data | - | Emite un evento del contrato |
Ciclo de vida del contrato
Despliegue
Invocación
Actualización/Reversión
Sistema de token nativo
Estándares admitidos
Arquitectura de token
Tokens fungibles (similares a ERC20)
Creación de token
Operaciones de token
| Operación | Descripción | Campos del payload |
|---|
| CREATE | Desplegar nuevo token | name, symbol, decimals, initialSupply |
| TRANSFER | Enviar tokens | tokenAddress, to, amount |
| APPROVE | Permitir gasto | tokenAddress, spender, amount |
| MINT | Crear nuevos tokens | tokenAddress, to, amount |
| BURN | Destruir tokens | tokenAddress, amount |
Tokens no fungibles (similares a ERC721)
Estructura de NFT
Operaciones de NFT
| Operación | Descripción | Campos del payload |
|---|
| CREATE | Desplegar colección de NFT | name, symbol |
| MINT | Crear nuevo NFT | tokenAddress, to, tokenId, uri |
| TRANSFER | Transferir NFT | tokenAddress, from, to, tokenId |
| APPROVE | Aprobar transferencia | tokenAddress, to, tokenId |
| SET_APPROVAL_FOR_ALL | Aprobar operador | tokenAddress, operator, approved |
| BURN | Destruir NFT | tokenAddress, tokenId |
Multi-tokens (similares a ERC1155)
Características de multi-token
Operaciones de multi-token
| Operación | Descripción |
|---|
| CREATE | Desplegar contrato multi-token |
| MINT | Acuñar un tipo de token único |
| MINT_BATCH | Acuñar múltiples tipos de token |
| TRANSFER | Transferir un tipo de token único |
| TRANSFER_BATCH | Transferir múltiples tipos de token |
| CONVERT | Convertir entre fungible/no fungible |
Tipos de transaction
Enumeración de tipos de transaction
Características de seguridad
Seguridad en la ejecución de contratos
Características del gestor de seguridad
| Característica | Descripción |
|---|
| Validación de operaciones | Verificaciones de seguridad previas a la ejecución |
| Seguimiento de pila de llamadas | Prevenir recursión profunda |
| Circuit Breaker | Detener ante fallos repetidos |
| Límites de recursos | Límites de memoria y computación |
Gestión de estado
Ejecución atómica
Almacenamiento de estado
| Tipo de almacenamiento | Formato de clave | Descripción |
|---|
| Estado del contrato | contract:{address}:{key} | Almacenamiento arbitrario de clave-valor |
| Saldos de token | token:{address}:balance:{owner} | Saldos de tokens fungibles |
| Propiedad de NFT | nft:{address}:owner:{tokenId} | Mapeo de propietario de NFT |
| Aprobaciones | {type}:{address}:approval:{...} | Mapeos de aprobación |
Siguiente: Consideraciones de seguridad