Polygon.

Publicación

Comparte tu conocimiento.

loth.broke.
Jan 27, 2025
P&R expertos

¿Las cadenas CDK poligonales personalizadas son totalmente compatibles con EVM?

Trabajo con cadenas CDK poligonales personalizadas y necesito saber si son totalmente compatibles con EVM. En concreto, ¿hay algún código de operación que no sea compatible? ¿Hay alguna diferencia en las salidas de variables globales como block.timestamp y block.number en comparación con las de la cadena Ethereum? Cualquier enlace a la documentación sobre la compatibilidad de EVM sería muy apreciado.

  • Polygon zkEVM
0
2
Cuota
Comentarios
.

Respuestas

2
Gojo.
Jan 28 2025, 06:13

Sí, las cadenas CDK son totalmente equivalentes a EVM. Puedes encontrar los códigos de operación compatibles en la documentación enlazada aquí: Documentación de actualización de Etrog y Documentación de CDK. No hay diferencia en el resultado de variables globales como block.timestamp y block.number; por lo tanto, son equivalentes.

0
Comentarios
.
0x4a19...e1b5.
Jan 29 2025, 14:38

Las cadenasPolygon CDKpersonalizadas están diseñadas para sercompatibles con EVM, lo que permite a los desarrolladores implementar contratos inteligentes basados en Ethereum e interactuar con ellos mediante herramientas conocidas comoMetaMask, Hardhat y Foundry. Sin embargo, aunque su objetivo es ofrecer una compatibilidad total con EVM, pueden surgir algunas diferencias debido a lasconfiguraciones personalizadas, los entornos de ejecución y las opciones de infraestructura. Esta guía explora la compatibilidad concódigos de operación, el comportamiento de las variables globales y las posibles diferencias de compatibilidadcuando se trabaja con cadenas de CDK de Polygon personalizadas.

PolygonCDK permite a los desarrolladores crear cadenas personalizadas de capa 2 (L2) con componentes modulares. Estas cadenas heredan muchas de las funcionalidades principales de Ethereum, pero al tratarse deacumulaciones soberanas o cadenas laterales, pueden introducirpequeñas diferencias en la lógica de ejecución.

Una cadena de bloques se consideratotalmente compatible con EVMsi: -admite todos los códigos de operación de Etereumsin modificaciones: bla bla bla... -Procesa las transacciones de forma idénticaa Ethereum, incluidos los cálculos de gas y los cambios de estado.

  • Los contratos inteligentes implementados en Ethereumpueden ejecutarse sin modificacionesen la cadena personalizada.

Las cadenas basadas en PolygonCDK están diseñadas para cumplir estos criterios, pero ciertas configuraciones pueden introducir desviaciones.

##Primer trimestre: ¿Se admiten todos los códigos de operación de Ethereum?

Por lo general, las cadenas de CDK de Polygonadmiten todos los códigos de operación de EVM, lo que significa que puede ejecutar contratos inteligentes de Solidity y Vyper sin modificaciones. Sin embargo, el comportamiento de ejecución realdepende de la capa de ejecución elegida(por ejemplo, Polygon ZKevM, Optimistic Rollups o un entorno de ejecución personalizado).

Por ejemplo: -Las cadenas de CDK basadas en zKEVMpuedengestionar ciertos códigos de operación de forma diferentedebido a lasrestricciones de prueba de conocimiento cero.

  • Lospaquetes acumulativos optimistasprocesan las transacciones fuera de la cadena yenvían pruebas por lotes, lo que puede introducir sutiles diferencias de ejecución.

Para comprobar la compatibilidad de los códigos de operación, puedes consultar elLibro Amarillo de Etereum(EVM Opcodes) comparándolo con la implementación de la cadena Polygon CDK.

Si sospechas que un código de operación podría no ser compatible o tener un comportamiento diferente, puedes probarlo con un sencillo contrato de Solidity.

CREATE2Ejemplo: comprobar la compatibilidad con y SELFDESTRUCT

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract OpcodeTest {
    event ContractCreated(address newContract);
    
    function testCreate2(bytes32 salt, bytes memory bytecode) public {
        address newContract;
        assembly {
            newContract := create2(0, add(bytecode, 0x20), mload(bytecode), salt)
        }
        emit ContractCreated(newContract);
    }

    function testSelfDestruct(address payable recipient) public {
        selfdestruct(recipient);
    }
}

La implementación de este contrato tanto enEthereum como en una cadena de CDK de Polygonpuede ayudar a determinar si estos códigos de operación se comportan como se esperaba.


#Q2. ¿Cuáles son las diferencias en las variables globales (block.timestamp, block.number, etc.)

###block.timestamp block.timestampgeneralmente se comporta de la misma manera que en Ethereum, reflejando lahora del último bloque. Sin embargo, algunas cadenas de CDK de Polygon pueden:

  • Utilicetiempos de bloque más rápidos o lentos, lo que afecta a la precisión de la marca de tiempo.
  • Ajusta las marcas de tiempo gracias alprocesamiento por lotesen las cadenas de CDK acumuladas.

Por ejemplo, si la cadena L2agrupa las transaccionespor lotes antes de enviarlas a Ethereum, la marca de tiempo puedereflejar el tiempo de procesamiento por lotes en lugar del tiempo de envío de la transacción original.

####Probando el comportamiento de block.timestamp

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract TimestampTest {
    event TimestampLogged(uint256 blockTimestamp);

    function logTimestamp() public {
        emit TimestampLogged(block.timestamp);
    }
}

La implementación de este contrato y la comparación de los resultados en las cadenas de CDK de Ethereum y Polygon**pueden revelar discrepancias.


###número de bloque Elnúmero de bloquerepresenta la altura de la cadena de bloques y, por lo general,aumenta según lo esperado. Sin embargo:

  • En lascadenas de CDK acumulativas, pueden block.numberincrementarse en el contexto L2ydiferir de la altura de bloque de L1 de Etereum.
  • En algunos casos,el envío por lotes a Ethereum puede introducir vacíos, lo que significa que una transacción de nivel 2 podría registrarse con un número de bloque diferente al previsto.

####Probando el comportamiento de los números de bloques

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract BlockNumberTest {
    event BlockNumberLogged(uint256 blockNumber);

    function logBlockNumber() public {
        emit BlockNumberLogged(block.number);
    }
}

La ejecución de este contrato enEthereum y una cadena de CDK de Polygonpuede poner de manifiesto cualquier incoherencia.


#TERCER TRIMESTRE. ¿Cuáles son las principales diferencias entre las cadenas CDK de Polygon y Ethereum?

| Característica | Ethereum | Polygon CDK (L2, cadena lateral) | -------------------------------------------------------------| | | | |Soporte de código de operación EVM| Completo | Casi lleno (depende de Rollup/zKEVM) | |Tarifas de gas| Más altas | Más bajas, pueden variar según la cadena | |block.timestamp| Tiempo exacto de bloqueo | Puede reflejar el tiempo de procesamiento por lotes | |block.number| Secuencial | Puede variar según la producción del bloque L2 | |Finalidad| Inmediato | Depende de la arquitectura de la cadena |

Así que... Para resumir una historia larga:

Las cadenas CDK personalizadas de Polygon son en gran medida compatibles con EVM, lo que significa que la mayoría de los contratos inteligentes basados en Ethereum deberían funcionarsin modificaciones. Sin embargo, existen pequeñas diferencias en función de si la cadena está basada enzKEVM, si se trata de una cadena acumulativa optimista o de una cadena lateral.

Puntos clave que hay que recordar: -La mayoría de los códigos de operación son compatibles, pero lospaquetes acumulativos sin conocimiento pueden gestionar algunos diferentes. -block.timestamp y block.number pueden comportarse de forma ligeramente diferente, especialmente encadenas de CDK acumulativas. -Las tarifas y la finalidad del gas diferen, según la infraestructura de la cadena.

Para realizar pruebas de compatibilidad completas,implementa contratos sencillos para comparar los resultados de ejecución entre Ethereum y la cadena Polygon CDK. Si necesitas orientación más específica, ladocumentación oficial y los foros comunitariosde Polygon son los mejores lugares para obtener actualizaciones.

0
Comentarios
.

Sabes la respuesta?

Inicie sesión y compártalo.

Usamos cookies para asegurarnos de que obtenga la mejor experiencia en nuestro sitio web.
Más información