Descubre en qué se diferencian las cuentas al construir en Ethereum y en EmpoorioChain.
Tabla de contenidos
¿Está implementada la abstracción de cuentas en EmpoorioChain?
Tanto Ethereum como EmpoorioChain son cadenas basadas en cuentas, pero estructuran las cuentas de forma muy diferente. Ethereum une la lógica de ejecución y el almacenamiento dentro de una cuenta de contrato; EmpoorioChain, al ser una cadena Substrate, mantiene un único modelo de cuenta global (AccountId32) y almacena la mayor parte del estado de las aplicaciones dentro de los pallets, en lugar de en almacenamiento por contrato.
En Ethereum, una 'cuenta' es una entidad que posee Ether y puede enviar transacciones. Incluye las direcciones necesarias para depósitos y retiros, y se clasifica de la siguiente manera:
Una diferencia clave entre EOA y CA en Ethereum es que, al no ser un contrato inteligente, la EOA normalmente no tiene almacenamiento propio.
Una cuenta de propiedad externa (EOA) es una cuenta con clave privada; poseer una clave privada implica controlar el acceso a fondos o contratos.
Las direcciones son valores de 20 bytes, con prefijo 0x, derivados de la clave pública de la cuenta.
| Campo | Descripción |
address | La dirección de 20 bytes con prefijo 0x de una cuenta |
balance | La cantidad de ETH (en wei) que posee una dirección |
nonce | Un contador de transacciones enviadas desde la cuenta, que evita ataques de repetición |
code hash | Hash del bytecode desplegado, para cuentas de contrato |
storage hash (storage root) | Raíz del almacenamiento Merkle Patricia Trie de la cuenta |
Una cuenta de contrato contiene el bytecode del contrato inteligente, algo que una EOA no puede tener. No tiene clave privada: está controlada totalmente por su propio código, que se ejecuta dentro de la EVM cada vez que una transacción la tiene como destino.
Como una cuenta de contrato no puede firmar, no puede originar una transacción por sí misma. Esta es la causa raíz del problema de abstracción de cuentas que ERC-4337 aborda en Ethereum.
EmpoorioChain, construida sobre Substrate, identifica cada cuenta mediante un AccountId32 — una clave pública de 32 bytes, que normalmente se muestra en formato SS58 (una dirección codificada en base58 con un prefijo específico de red y un checksum, similar en espíritu al Base58Check de Bitcoin pero distinto de las direcciones hexadecimales 0x de Ethereum). No existe una separación entre EOA y cuenta de contrato a nivel de tipo de cuenta.
El estado no se almacena dentro del almacenamiento de contrato por cuenta, como ocurre en Ethereum. En cambio, cada pallet (un módulo nativo del runtime, consulta la página de Contratos inteligentes) posee sus propios elementos de almacenamiento — saldos, activos, NFT, propuestas de gobernanza, etc. — indexados por AccountId32 cuando corresponde. EmpoorioChain también incluye un pallet de compatibilidad EVM, por lo que también existen direcciones H160 al estilo 0x, pero solo dentro de ese entorno de ejecución EVM (con el chain ID EVM registrado 2026), y se asignan de vuelta a un AccountId32 nativo.
| Campo | Descripción |
AccountId32 | La clave pública de 32 bytes de la cuenta, mostrada en formato SS58 |
data.free / data.reserved | Saldo libre y reservado de DMS, gestionado por el pallet balances — el equivalente aproximado de balance |
nonce | Contador de transacciones, con el mismo propósito que el nonce de Ethereum |
| [sin equivalente único] | La lógica ejecutable reside en pallets compilados dentro del runtime, no en código por cuenta |
| Existential Deposit (ED) | El saldo mínimo que una cuenta debe mantener para existir en el estado — las cuentas por debajo de él son eliminadas ('reaped'), un concepto similar a los costes de almacenamiento de Ethereum pero aplicado de forma distinta |
Como los pallets se compilan dentro del runtime en lugar de desplegarse por aplicación, no existe un equivalente a 'desplegar una nueva cuenta de contrato' para la lógica de aplicación ordinaria en EmpoorioChain. Añadir nuevo comportamiento on-chain implica añadir o extender un pallet mediante una actualización del runtime (gobernada on-chain) o, para los equipos que prefieran un flujo de despliegue por aplicación más familiar, desplegar Solidity en el pallet EVM integrado de EmpoorioChain.
En la práctica, las cuentas de EmpoorioChain se dividen según un eje distinto al de la separación EOA/CA de Ethereum:
EmpoorioChain llama 'pallet' a un módulo del runtime, no 'contrato' — la terminología señala intencionadamente que se compila dentro de la cadena, no que se despliega en ella.
| Cuenta de Ethereum | Cuenta de EmpoorioChain |
address (20-byte, 0x-prefixed) | AccountId32 (32-byte, SS58-encoded) |
balance | pallet balances: data.free / data.reserved |
nonce | nonce |
code hash + storage hash | [sin equivalente] — la lógica y la mayor parte del estado residen en pallets, no por cuenta |
| [sin equivalente] | Existential Deposit (ED) |
| Contract Account (CA) | Cuenta del pallet EVM (H160), asignada a un AccountId32 |
| EOA (cuenta de propiedad externa, wallet) | -> AccountId32 | Firma extrínsecos con sr25519/ed25519. |
| CA (cuenta de contrato) | -> Pallet, o cuenta H160 del pallet EVM | Los pallets se compilan dentro del runtime, no se despliegan por aplicación. |
Ethereum lleva mucho tiempo explorando la abstracción de cuentas. Como las EOA y las CA están estrictamente separadas, y las CA no pueden firmar ni originar transacciones, toda acción debe ser iniciada, en última instancia, por una EOA que paga el gas — lo que limita las wallets multisig, las claves de sesión, las transacciones patrocinadas y la recuperación social.
ERC-4337 flexibiliza esto permitiendo que una wallet basada en contrato inteligente origine una 'UserOperation' similar a una transacción a través de un mempool independiente y un contrato bundler/EntryPoint, sin cambiar el protocolo base:
El compromiso es arquitectónico: ERC-4337 se implementa como un estándar superpuesto a Ethereum, usando un mempool alternativo, bundlers y un contrato EntryPoint con el que toda wallet basada en contrato inteligente debe integrarse.
Resuelve una limitación real, a nivel de protocolo, de la separación EOA/CA — una limitación que, de entrada, no existe en el modelo de cuentas de EmpoorioChain (ver más abajo).
En resumen, la abstracción de cuentas persigue beneficios como:
EmpoorioChain aborda el patrocinio de comisiones y la autorización flexible de forma nativa, en lugar de mediante un estándar añadido encima. pallet-paymaster permite que un tercero patrocine las comisiones de transacción, y pallet-account-abstraction ofrece autorización programable para cuentas nativas, sin necesidad de un mempool, bundler o contrato EntryPoint independientes. Los contratos en Solidity desplegados en el pallet EVM de EmpoorioChain pueden seguir adoptando ERC-4337 de la forma habitual en Ethereum si un equipo quiere esa vía de integración concreta, pero los usuarios de los pallets no lo necesitan.
EVM A EMPOORIOCHAIN