Publication
Partagez vos connaissances.
Les chaînes CDK polygonales personnalisées sont-elles entièrement compatibles avec EVM ?
Je travaille avec des chaînes CDK polygonales personnalisées et j'ai besoin de savoir si elles sont entièrement compatibles avec EVM. Plus précisément, y a-t-il des opcodes non pris en charge et y a-t-il une différence dans les sorties de variables globales telles que block.timestamp et block.number par rapport à la chaîne Ethereum ? Tous les liens vers la documentation sur la compatibilité EVM seraient grandement appréciés.
- Polygon zkEVM
Réponses
2Oui, les chaînes CDK sont totalement équivalentes à l'EVM. Vous pouvez trouver les opcodes pris en charge dans la documentation liée ici : Etrog Upgrade Documentation et CDK Documentation. Il n'y a aucune différence dans la sortie de variables globales telles que block.timestamp et block.number. Elles sont donc équivalentes.
Leschaînes CDK Polygon personnaliséessont conçues pour êtrecompatibles avec EVM, permettant aux développeurs de déployer des contrats intelligents basés sur Ethereum et d'interagir avec eux à l'aide d'outils familiers tels queMetaMask, Hardhat et Foundry. Cependant, bien qu'ils visent à fournir une compatibilité EVM totale, certaines différences peuvent survenir en raison desconfigurations personnalisées, des environnements d'exécution et des choix d'infrastructure. Ce guide explorela prise en charge des opcodes, le comportement des variables globales et les différences de compatibilitépotentielles lorsque vous travaillez avec des chaînes CDK Polygon personnalisées.
PolygonCDK permet aux développeurs de créer des chaînes de couche 2 (L2) personnaliséesavec des composants modulaires. Ces chaînes héritent de nombreuses fonctionnalités de base d'Ethereum, mais comme il s'agit derollups souverains ou sidechains, elles peuvent introduiredes différences mineures dans la logique d'exécution.
Une blockchain est considérée commeentièrement compatible EVMsi :
- Ilsupporte tous les opcodes Ethereuhsans modification - bla bla bla...
- Iltraite les transactions de la même façonqu'Ethereum, y compris les calculs de gaz et les changements d'état.
- Les contrats intelligents déployés sur Ethereumpeuvent être exécutés sans modificationsur la chaîne personnalisée.
PolygoneLes chaînes basées sur CDK sont conçues pour répondre à ces critères, mais certaines configurations peuvent introduire des écarts.
##Q1 : Tous les opcodes Ethereum sont-ils pris en charge ?
Les chaînes CDK Polygonprennent généralement en charge tous les opcodesEVM**, ce qui signifie que vous pouvez exécuter des contrats intelligents Solidity et Vyper sans modification. Cependant, le comportement d'exécution réeldépend de la couche d'exécution choisie(par exemple, Polygon ZKevm, Optimistic Rollups ou un environnement d'exécution personnalisé).
Par exemple : -Les chaînes CDK basées sur ZKEVMpeuventgérer certains opcodes différemment en raison decontraintes de preuve à connaissance nulle.
- Lescumuls optimistestraitent les transactions hors chaîne etsoumettent des preuves par lots, ce qui peut introduire de subtiles différences d'exécution.
Pour vérifier la compatibilité des opcodes, vous pouvez consulter leLivre jaune Ethereum(EVM Opcodes) par rapport à l'implémentation de la chaîne Polygon CDK.
Si vous pensez qu'un opcode n'est pas pris en charge ou se comporte différemment, vous pouvez le tester à l'aide d'un simple contrat Solidity.
Exemple : vérification de l'assistance pour CREATE2
et 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);
}
}
Le déploiement de ce contrat à la fois surEthereum et sur une chaîne Polygon CDKpeut aider à déterminer si ces opcodes se comportent comme prévu.
##Q2. Quelles sont les différences entre les variables globales (block.timestamp, block.number, etc.)
###block.timestamp
block.timestamp
se comporte généralement de la même manière que sur Ethereum, reflétant l'heure du dernier bloc. Cependant, certaines chaînes CDK Polygon peuvent :
- Utilisezdes temps de blocage plus rapides ou plus lents, ce qui affecte la précision de l'horodatage.
- Ajustez les horodatages en raison dutraitement par lotsdans les chaînes CDK basées sur le cumul.
Par exemple, si la chaîne L2regroupe les transactionsavant de les soumettre à Ethereum, l'horodatage peutrefléter le temps de traitement par lots au lieu de l'heure de soumission de la transaction initiale.
####Test du comportement 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);
}
}
Le déploiement de ce contrat et la comparaison des résultats sur les chaînesEthereum et Polygon CDKpeuvent révéler des divergences.
###Numéro de bloc Lenuméro de blocreprésente la hauteur de la blockchain et, en général,augmente comme prévu. Toutefois :
- Sur leschaînes CDK basées sur le rollup, elles peuventêtre
block.number
incrémentées dans le contexte L2etdifférer de la hauteur de bloc de L1 Ethereuh. - Dans certains cas,la soumission par lots à Ethereum peut introduire des lacunes, ce qui signifie qu'une transaction L2 peut être enregistrée sous un numéro de bloc différent de celui prévu.
####Tester le comportement des numéros de blocs
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract BlockNumberTest {
event BlockNumberLogged(uint256 blockNumber);
function logBlockNumber() public {
emit BlockNumberLogged(block.number);
}
}
L'exécution de ce contrat surEthereum et une chaîne Polygon CDKpeut mettre en évidence d'éventuelles incohérences.
##Q3. Quelles sont les principales différences entre les chaînes Polygon CDK et Ethereum ?
Fonctionnalité | Ethereum | Polygon CDK (L2, Sidechain) |
---|---|---|
Prise en charge des opcodes EVM | Complet | Presque complet (dépend du rollup/ZKEVM) |
Frais d'essence | Plus élevé | Plus bas, peut varier selon la chaîne |
block.timestamp | Heure de blocage exacte | Peut refléter le temps de traitement par lots |
block.number | Séquentiel | Peut varier en fonction de la production de blocs L2 |
Finalité | Immédiatement | Dépend de l'architecture de la chaîne |
Alors... Pour faire court :
Les chaînes CDK Polygon personnalisées sont largement compatibles avec EVM, ce qui signifie que la plupart des contrats intelligents basés sur Ethereum devraient fonctionnersans modification. Cependant, des différences mineures existent selon que la chaîne estbasée sur ZKEVM, un cumul optimiste ou une sidechain.
Points clés à retenir : -Les opcodes sont pour la plupart pris en charge, mais lescumuls à connaissance nulle peuvent en gérer certains différent. -block.timestamp et block.number peuvent se comporter légèrement différent, en particulier sur leschaînes CDK basées sur le rollup. -Les frais de gaz et leur finalité différenten fonction de l'infrastructure de la chaîne.
Pour des tests de compatibilité complets,déployez des contrats simples pour comparer les résultats d'exécution entre Ethereum et la chaîne Polygon CDK. Si vous avez besoin de conseils plus spécifiques, ladocumentation officielle et les forums communautairesde Polygon sont les meilleurs endroits pour obtenir des mises à jour.
Connaissez-vous la réponse ?
Veuillez vous connecter et la partager.
Polygon is a decentralised Ethereum scaling platform that enables developers to build scalable user-friendly dApps with low transaction fees without ever sacrificing on security.
- Comment ajouter Polygon Amoy Testnet sur MetaMask : un guide13
- Récupération de l'USDT envoyé à Smart Contract sur Polygon14
- Envoyer des pièces en USD depuis le portefeuille Ethereum vers PayPal avec Moonpay17
- Résolution des transactions non confirmées sur le réseau Polygon13
- Affichage des transactions pour les contrats B, C et D dans le contrat A17