Пост
Поделитесь своими знаниями.
Полностью ли совместимы с EVM настраиваемые полигональные цепочки CDK?
Я работаю с настраиваемыми полигональными цепо��ками CDK, и мне нужно знать, полностью ли они совместимы с EVM. В частности, существуют ли какие-либо коды операций, которые не поддерживаются, и есть ли разница в выходных данных глобальных переменных, таких как block.timestamp и block.number, по сравнению с цепочкой Ethereum? Мы будем очень признательны за любые ссылки на документацию по совместимости с EVM.
- Polygon zkEVM
Ответы
2Да, цепочки CDK полностью эквивалентны EVM. Поддерживаемые коды операций можно найти в документации по этой ссылке: Документация по обновлению Etrog и Документация CDK. Нет никакой разницы в выходных данных глобальных переменных, таких как block.timestamp и block.number, поэтому они эквивалентны.
Настраиваемые цепочкиPolygon CDKспроектированы так, чтобы быть совместимыми с EVM**, что позволяет разработчикам развертывать смарт-контракты на основе Ethereum и взаимодействовать с ними с помощью знакомых инструментов, таких какMetaMask, Hardhat и Foundry. Однако, хотя они нацелены на обеспечение полной совместимости с EVM, некоторые различия могут возникнуть из-занастраиваемых конфигураций, сред выполнения и выбора инфраструктуры. В этом руководстве рассматриваютсяподдержка кода операций, поведение глобальных переменных и потенциальные различия в совместимостипри работе с настраиваемыми цепочками Polygon CDK.
PolygonCDK позволяет разработчикам создавать собственные цепочки уровня 2 (L2) с модульными компонентами. Эти цепочки унаследовали многие основные функции Ethereum, но поскольку они являются «суверенными» объединениями или сайдчейнами**, они могут привести к незначительным различиям в логике исполнения**.
Блокчейн считаетсяполностью совместимым с EVM, если:
- Онподдерживает все коды операций Ethereumбез модификаций — бла-бла-бла...
- Онобрабатывает транзакциитак же, как и Ethereum, включая расчеты по газу и изменение состояния.
- Смарт-контракты, развернутые на Ethereum**, могут работать в настраиваемой цепочке без изменений**.
Цепочки на основе PolygonCDK разработаны с учетом этих критериев, но в некоторых конфигурациях возможны отклонения.
##Q1: Поддерживаются ли все коды операций Ethereum?
Цепочки Polygon CDK обычноподдерживают все коды опционов EVM, что означает, что смарт-контракты Solidity и Vyper можно выполнять без изменений. Однако фактическое поведение исполнениязависит от выбранного уровня исполнения(например, Polygon zkEvm, Optimistic Rollups или специально созданная среда исполнения).
Например: -Цепочки CDK на базе ZKEVMмогутобрабатывать определенные коды операцийиз-заограничений, связанных с отсутствием доказательств, не обладающих достоверностью данных,. -Оптимистичные сводкиобрабатывают транзакции вне блокчейна ипредоставляют пакетные проверки, что может привести к незначительным различиям в исполнении.
Чтобы проверить совместимость кодов операций, вы можете ознакомиться с текстомЖелтой книги Ethereum(Коды операций EVM), в котором представлена реализация цепочки Polygon CDK.
Если вы подозреваете, что код операции может не поддерживаться или вести себя по-другому, вы можете протестировать его с помощью простого контракта Solidity.
CREATE2
Пример: проверка поддержки и 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);
}
}
Развертывание этого контракта как в сети Ethereum, так и в цепочке Polygon CDK**поможет определить, ведут ли эти коды операций ожидаемое поведение.
##Q2. В чем разница между глобальными переменными (block.timestamp, block.number и т. д.)
###block.timestamp
block.timestamp
обычно ведет себя так же, как и на Ethereum, что отражаетвремя последнего блока. Однако некоторые цепочки Polygon CDK могут:
- Используйтеболее быстрое или медленное время блоков, что влияет на точность отметок времени.
- Настройте временные метки с помощьюпакетной обработкив цепочках CDK на основе сворачивания.
Например, если цепочка L2группирует транзакцииперед их отправкой в Ethereum, метка времени можетотражать время пакетной обработки, а не исходное время отправки транзакции.
####Тестирование поведения block.timestamp
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract TimestampTest {
event TimestampLogged(uint256 blockTimestamp);
function logTimestamp() public {
emit TimestampLogged(block.timestamp);
}
}
Развертывание этого контракта и сравнение результатов в цепочкахEthereum и Polygon CDKмогут выявить расхождения.
###блок.номер номер блокасоответствует высоте блокчейна и, как правило, увеличивается по мере ожидания**. Однако:
- В цепочках CDK, основанных на сворачивании**, значение
block.number
можетувеличиваться в контексте L2и**отличаться от высоты блока L1 Ethereum. - В некоторых случаяхпакетная отправка в Ethereum может привести к ошибкам. Это означает, что транзакция L2 может быть записана с другим номером блока, чем ожидалось.
####Тестирование поведения блочных числов
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract BlockNumberTest {
event BlockNumberLogged(uint256 blockNumber);
function logBlockNumber() public {
emit BlockNumberLogged(block.number);
}
}
Выполнение этого контракта наEthereum и сети Polygon CDKможет выявить любые несоответствия.
##Q3. В чем ключевые различия между цепочками Polygon CDK и Ethereum?
| Функция | Эфириум | Полигон CDK (L2, сайдчейн) | -------------------------------------------------------------| | | | |Поддержка кодов операций EVM| Полная | Почти полная поддержка (зависит от Rollup/ZKEVM) | |Тарифы на газ| Выше | Ниже, могут отличаться в зависимости от цепочки | |block.timestamp| Точное время блока | Может отражать время пакетной обработки | |block.number| Последовательный | Может отличаться в зависимости от производства блоков L2 | |Окончательность| Немедленно | Зависит от архитектуры цепочки |
Итак... Короче говоря:
Цепочки Custom Polygon CDK в значительной степени совместимы с EVM, а это значит, что большинство смарт-контрактов на базе Ethereum должны работатьбез модификаций. Однако существуют небольшие различия в зависимости от того, основана ли цепочкана основе ZKEVM, компании Optimistic Rollup или сайдчейн.
Ключевые моменты, которые следует запомнить: -Коды операций в основном поддерживаются, нов копилках с нулевым разглашением некоторые из них могут обрабатываться ина. -block.timestamp и block.number могут вести себя немного разно, особенно в цепочках CDK, основанных на сворачиваниях**. -**Стоимость и стоимость газа различаются в зависимости от инфраструктуры сети.
Для полного тестирования совместимостииспользуйте простые контракты для сравнения результатов исполнения между Ethereum и цепочкой Polygon CDK. Если вам нужны более конкретные рекомендации, лучше всего получать обновления вофициальной документации Polygon и на форумах сообщества.
Знаете ответ?
Пожалуйста, войдите в систему и поделитесь им.
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.
- Как добавить тестовую сеть Polygon Amoy в MetaMask: руководство13
- Восстановление USDT отправлено на смарт-контракт на Polygon14
- Отправка монет в долларах США из кошелька Ethereum на PayPal с помощью Moonpay17
- Разрешение неподтвержденных транзакций в сети Polygon13
- Отображение транзакций по контрактам B, C и D в контракте A17