Garantía de la actualización de Ethereum EIP-7702: un modelo de agente para una transición segura de EOA a Billetera inteligente.

robot
Generación de resúmenes en curso

Desarrollamos EIP7702Proxy, un contrato de proxy ERC-1967 liviano diseñado para servir como el reenvío lógico básico delegado de EIP-7702 para EOA... que aborda algunos de los desafíos exclusivos de las cuentas delegadas EIP-7702. Este artículo es de un artículo escrito por la comunidad de Boardlink y es compilado, compilado y contribuido por ForesightNews. (Sinopsis: Ethereum Pectra actualiza "hacker flip", Wintermute advierte: EIP-7702 automatiza el despliegue de una gran cantidad de contratos) (Suplemento de antecedentes: El "Proyecto de seguridad de un billón de dólares" de la Fundación Ethereum publica su primer informe: Ordenando los contratos inteligentes, la infraestructura y la seguridad en la nube... Seis desafíos ecológicos EIP-7702 permite que las billeteras simples de Ethereum (EOA) se actualicen a billeteras de contratos inteligentes, lo que brinda mayor seguridad, funciones avanzadas, oportunidades de patrocinio de gas y otros beneficios. Históricamente, las billeteras inteligentes tenían que construirse desde cero, pero con la introducción de EIP-7702, las billeteras tradicionales se pueden actualizar y mantener todos sus activos e historial en la cadena, con la misma dirección de billetera. Es como cambiar de un teléfono fijo a un teléfono inteligente sin tener que obtener un nuevo número. EOA se actualiza configurando una "designación de delegación", es decir, un puntero a un contrato inteligente delegado, y luego delegando la lógica del contrato inteligente para administrar EOA. Como resultado, un EOA actualizado puede tener funciones, establecer almacenamiento, emitir eventos y realizar todas las demás operaciones que puede realizar un contrato inteligente. La EOA puede cambiar o eliminar este delegado en cualquier momento con una nueva autorización EIP-7702 firmada. Si bien esto desbloquea muchas posibilidades nuevas, esta poderosa característica también presenta nuevos desafíos de seguridad que requieren una consideración cuidadosa y soluciones innovadoras. Para permitir que EOA actúe como una billetera de contrato inteligente, desarrollamos EIP7702Proxy, un contrato de proxy ERC-1967 liviano diseñado para servir como delegado de EIP-7702 para EOA. Además del reenvío lógico básico realizado por el agente, EIP7702Proxy incluye características adicionales y opciones de diseño que abordan algunos de los desafíos exclusivos de las cuentas delegadas EIP-7702. Uno de los objetivos del diseño de EIP7702Proxy es mantener la mayor capacidad de emparejamiento posible entre una billetera inteligente de Coinbase "implementada de estándar" y una billetera inteligente de Coinbase delegada EIP-7702, lo que significa abstraer la complejidad adicional requerida para el mecanismo EIP-7702 en un proxy dedicado y continuar confiando en la implementación original de CoinbaseSmartWallet. La solución a este desafío se puede aplicar de manera efectiva a cualquier lógica de implementación, no solo a la implementación de CoinbaseSmartWallet, al mismo tiempo que ayuda a EOA a mantenerse seguro en un entorno habilitado para 7702. A continuación, presentamos desafíos específicos y las soluciones de diseño correspondientes que nos permiten adaptar de manera segura cualquier implementación de billetera de contrato inteligente existente para las actualizaciones de EIP-7702. Desafío #1: Aplicación de la inicialización segura El primer obstáculo importante para la implementación de EIP-7702 proviene de sus restricciones de inicialización. Las billeteras de contratos inteligentes tradicionales, incluida CoinbaseSmartWallet, generalmente manejan la inicialización segura (establecer la propiedad de la cuenta) de forma atómica durante su implementación, generalmente a través de un contrato de fábrica separado. Esta atomicidad significa que muchas de estas implementaciones tienen funciones de inicializador no protegidas a las que solo se puede llamar una vez. Sin embargo, el diseño de EIP-7702 no permite que los datos de llamada de inicialización se realicen durante el proceso de delegación de código (el paso equivalente de "implementación"), por lo que esto no se puede hacer de forma atómica. Esta separación de pasos crea una ventana de vulnerabilidad crítica. Cuando el contrato de implementación se "despliega" en EOA a través de EIP-7702, no hay garantía de que la transacción EVM estándar para esta billetera de actualización e inicialización de 7702 se ejecute de forma atómica. Técnicamente, incluso si se confirma al mismo tiempo, el código que establece la autorización puede ser independiente de la aplicación de transacción de inicialización, lo que puede permitir a un atacante ejecutar de forma preferente la transacción de inicialización y reclamar la propiedad de la cuenta inteligente. Solución: Se requiere la firma EOA para configurar atómicamente la implementación e inicializar Tenga en cuenta que la billetera inteligente Coinbase existente se implementa después del proxy ERC-1967 con la implementación UUPSUpgradeable (la lógica real de CoinbaseSmartWallet). El código de la dirección de la cuenta real es un proxy que utiliza una ubicación de almacenamiento normal definida por ERC-1967 para almacenar punteros a su lógica de implementación. Nuestra solución a la vulnerabilidad de inicialización en el contexto de 7702 incluye reconocer que cualquier lógica de implementación se vuelve activa (y, por lo tanto, peligrosa) solo cuando el agente realmente establece una conexión con ella. Por lo tanto, si no podemos forzar la implementación y la inicialización de la atomicidad, podemos forzar la configuración y la inicialización de la implementación de la atomicidad. EIP-7702Estructura del contrato de CoinbaseSmartWallet y proceso de delegación lógica En el contexto de EIP-7702, la EOA en sí misma es la autoridad inicial para realizar cualquier cambio en su cuenta, y se debe proporcionar una firma para autorizar a cualquier propietario que inicialice y establezca una nueva cuenta inteligente. Nuestro contrato EIP7702Proxy implementa una función setImplementation que configura de forma atómica nuevas implementaciones lógicas e inicializa cuentas. Función setImplementation: Verifica la firma de EOA, que incluye datos clave como la dirección del nuevo contrato de implementación, la inicialización de los datos de llamada, la dirección del contrato del validador que evaluará la seguridad del estado final de la cuenta y la protección básica de reproducción de firmas, como el nonce y la hora de vencimiento. Establezca el valor del puntero ERC-1967 en la nueva implementación y ejecute los datos de llamada proporcionados en la nueva implementación lógica. Llame a la función validateAccountState, que debe implementar el certificador incluido en la firma. Un validador es un contrato específico de la implementación que contiene lógica para evaluar si considera seguro el estado final de la cuenta. Por ejemplo, para CoinbaseSmartWallet, CoinbaseSmartWalletValidator comprueba si el estado de propiedad de la cuenta no está vacío y, por lo tanto, ya no es vulnerable a la inicialización arbitraria. Desafío #2: Almacenamiento compartido delegado a través de EIP-7702 Los desafíos más complejos de EIP-7702 pueden estar relacionados con la administración del almacenamiento. EOA es libre de volver a delegar su lógica a un contrato diferente en cualquier momento, o eliminar el delegado por completo. Todos los delegados comparten direcciones de EOA en...

Ver originales
El contenido es solo de referencia, no una solicitud u oferta. No se proporciona asesoramiento fiscal, legal ni de inversión. Consulte el Descargo de responsabilidad para obtener más información sobre los riesgos.
  • Recompensa
  • Comentar
  • Compartir
Comentar
0/400
Sin comentarios
  • Anclado
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)