EVM frente a EmpoorioChain: Cuentas

Descubre en qué se diferencian las cuentas al construir en Ethereum y en EmpoorioChain.

Tabla de contenidos

La 'cuenta' en Ethereum

La 'cuenta' en EmpoorioChain

Abstracción de cuentas

¿Está implementada la abstracción de cuentas en EmpoorioChain?

Resumen

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.

La 'cuenta' en Ethereum

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:

  • EOA (cuenta de propiedad externa): Una cuenta de propiedad externa, que posee una clave privada. Piénsala como la cuenta de la wallet de una persona.
  • CA (cuenta de contrato): Una cuenta para contratos, que contiene el código del contrato inteligente.

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.

CampoDescripción
addressLa dirección de 20 bytes con prefijo 0x de una cuenta
balanceLa cantidad de ETH (en wei) que posee una dirección
nonceUn contador de transacciones enviadas desde la cuenta, que evita ataques de repetición
code hashHash 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.

  • EOA -> EOA (OK)
  • EOA -> CA (OK)
  • EOA -> CA -> CA (OK)
  • CA -> CA (Imposible sin una EOA en la cadena)

La 'cuenta' en EmpoorioChain

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.

CampoDescripción
AccountId32La clave pública de 32 bytes de la cuenta, mostrada en formato SS58
data.free / data.reservedSaldo libre y reservado de DMS, gestionado por el pallet balances — el equivalente aproximado de balance
nonceContador 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:

  • Cuentas nativas (AccountId32): Mantienen DMS y activos gestionados por pallets, y firman extrínsecos con claves sr25519 o ed25519.
  • Cuentas EVM (H160): Se usan solo dentro del pallet EVM para contratos en Solidity; cada una se asigna internamente a un AccountId32 nativo.

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 EthereumCuenta de EmpoorioChain
address (20-byte, 0x-prefixed)AccountId32 (32-byte, SS58-encoded)
balancepallet balances: data.free / data.reserved
noncenonce
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 con un par de claves sr25519/ed25519 correspondiente
  • El equivalente más cercano en EmpoorioChain a una EOA controlada por wallet.

CA (cuenta de contrato)

  • -> Un pallet (compilado dentro del runtime) o, para Solidity, una cuenta H160 dentro del pallet EVM
  • A diferencia de la CA de Ethereum, un pallet no se despliega por aplicación — se incluye con el runtime.
EOA (cuenta de propiedad externa, wallet)-> AccountId32Firma extrínsecos con sr25519/ed25519.
CA (cuenta de contrato)-> Pallet, o cuenta H160 del pallet EVMLos pallets se compilan dentro del runtime, no se despliegan por aplicación.

Abstracción de cuentas

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:

  • EOA -> EOA (OK)
  • EOA -> CA (OK)
  • EOA -> CA -> CA (OK)
  • Wallet basada en contrato inteligente -> CA, vía bundler ERC-4337 (ahora OK, con infraestructura adicional)

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:

  • Que otra persona pague tus comisiones de transacción, o que tú pagues las de otra persona.
  • Pagar comisiones en un activo distinto del token nativo de gas.
  • Reglas de firma/autorización personalizadas.
  • Recuperación de la cuenta en caso de pérdida de claves.
  • Seguridad de cuenta compartida entre dispositivos de confianza.
  • Agrupar varias acciones de forma atómica.
  • Más margen para que los desarrolladores de wallets y dApps innoven en la experiencia de usuario.

¿Está implementada la abstracción de cuentas en EmpoorioChain?

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.

Resumen

  • El modelo AccountId32 de EmpoorioChain no divide las cuentas en EOA/CA como hace Ethereum — los pallets se compilan dentro del runtime, no se despliegan por aplicación.
  • El patrocinio de comisiones y la autorización flexible son nativos mediante pallet-paymaster y pallet-account-abstraction; el pallet EVM de EmpoorioChain puede seguir ejecutando wallets en Solidity basadas en ERC-4337 si un equipo lo necesita específicamente.

Empieza a construir en EmpoorioChain

Introducción al desarrollo en EmpoorioChain

Leer

Referencia de pallets de EmpoorioChain

Leer

Guía rápida de emp-cli

Leer

Más herramientas para desarrolladores de EmpoorioChain

Leer
De EVM a EmpoorioChain: Cuentas | empoorio