Polygon.

Пост

Поделитесь своими знаниями.

loth.broke.
Jan 27, 2025
Экспертные Вопросы и Ответы

Полностью ли совместимы с EVM настраиваемые полигональные цепочки CDK?

Я работаю с настраиваемыми полигональными цепо��ками CDK, и мне нужно знать, полностью ли они совместимы с EVM. В частности, существуют ли какие-либо коды операций, которые не поддерживаются, и есть ли разница в выходных данных глобальных переменных, таких как block.timestamp и block.number, по сравнению с цепочкой Ethereum? Мы будем очень признательны за любые ссылки на документацию по совместимости с EVM.

  • Polygon zkEVM
0
2
Поделиться
Комментарии
.

Ответы

2
Gojo.
Jan 28 2025, 06:13

Да, цепочки CDK полностью эквивалентны EVM. Поддерживаемые коды операций можно найти в документации по этой ссылке: Документация по обновлению Etrog и Документация CDK. Нет никакой разницы в выходных данных глобальных переменных, таких как block.timestamp и block.number, поэтому они эквивалентны.

0
Комментарии
.
0x4a19...e1b5.
Jan 29 2025, 14:38

Настраиваемые цепочки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 и на форумах сообщества.

0
Комментарии
.

Знаете ответ?

Пожалуйста, войдите в систему и поделитесь им.

Мы используем файлы cookie, чтобы гарантировать вам лучший опыт на нашем сайте.
Подробнее