Como todo el mundo sabe ahora, la fase 0 de Ethereum 2 es inminente. Un paso clave para que esto suceda es que la comunidad acuerde una dirección de contrato de depósito canónico para iniciar el proceso de Genesis.
Para llegar a un acuerdo sobre esto, se requieren numerosos terceros para verificar el contrato y confirmar la aprobación de que todo es correcto. Cuantos más terceros realicen esta validación, mayor será la confianza que se infundirá en la comunidad de que la dirección es válida y correcta.
Este artículo representa la aprobación de Ankr de la dirección del contrato, resultado de nuestra propia verificación realizada de acuerdo con los pasos descritos por otros miembros de la comunidad.
Llegamos a esta decisión después de verificar de forma independiente que el código de bytes implementado en la dirección del contrato es exactamente el mismo que el que podríamos reproducir compilando el código fuente de Solidity del contrato en una compilación local.
Publicamos este importante anuncio para notificar que nos unimos a otros miembros de la comunidad Ethereum para respaldar el uso de esta dirección de contrato de depósito ETH2.0 para el proceso de génesis y más allá.
Verificación independiente
De acuerdo con los mismos pasos descritos por los equipos de Status y Nimbus en su propia declaración de apoyo, Ankr llevó a cabo estos mismos pasos para nuestro proceso de validación. Gracias a los proyectos Status y Nimbus por documentar los pasos de validación que se describen a continuación:
El contrato en la dirección anterior se creó en la marca de tiempo del 14 de octubre de 2020 a las 09:22:52 a.m. + UTC según Etherscan mediante una transacción con el hash 0xe75fb554e433e03763a1560646ee22dcb74e5274b34c5ad644e7c0f619a7e1d0.
El código fuente del contrato se ha verificado en Etherscan, donde señala que el contrato se compiló utilizando la versión del compilador Solidity v0.6.11 + commit.5ef660b1 y la optimización habilitada con 5000000 ejecuciones.
Los siguientes pasos describen nuestro proceso de verificación:
Obtuvimos el código de bytes en esta dirección en la cadena de bloques Ethereum usando el método eth_getCode (a través de Infura). Clonamos el repositorio eth2.0-specs de https://github.com/ethereum/eth2.0-specs y seguimos las instrucciones de compilación para el contrato de depósito. Descargamos la versión v0.6.11 + commit.5ef660b1 del compilador de Solidity para Linux desde aquí. Compilamos deposit_contract.sol en el repositorio eth2.0-specs con este comando: solc – optimizar – optimizar-ejecutar 5000000 – metadatos- literal – bin-runtime deposit_contract.sol que nos dio el bytecode en tiempo de ejecución para este contrato. Comparamos el bytecode que obtuvimos en el Paso (1) con el del Paso (4) y encontramos que eran iguales.
Conclusión
El contrato de depósito crítico de Ethereum 2.0 (que se escribió originalmente en Vyper) fue reescrito en Solidity, revisado por expertos de Solidity y luego verificado formalmente por Runtime Verification como se explica en esta publicación de blog de Ethereum Foundation. Ahora se ha implementado en la red principal en la dirección 0x00000000219ab540356cbb839cbe05303d7705fa.
Por lo tanto, el equipo de Ankr respalda el contrato desplegado en esta dirección para que sea el contrato de depósito canónico para Eth2.