Polygon.

Допис

Діліться своїми знаннями.

loth.broke.
Jan 27, 2025
Питання та відповіді експертів

Чи сумісні власні багатокутні ланцюги CDK повністю з EVM?

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

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

Відповіді

2
Gojo.
Gojo134
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**без модифікації - bla bla bla...
  • Вінобробляє транзакції ідентичноEthereum, включаючи розрахунки газу та зміни стану.
  • Розумні контракти, розгорнуті на Ethereum,** можуть працювати без змін у спеціальному ланцюжку.

БагатокутникиЛанцюги на основі CDK розроблені так, щоб відповідати цим критеріям, але певні конфігурації можуть вводити відхилення.

##Q1: Чи підтримуються всі операційні коди Ethereum?

Багатогранні ланцюги CDK загаліпідтримують усі опкоди EVM, тобто ви можете виконувати смарт-контракти Solidity та Vyper без змін. Однак фактична поведінка виконуваннязалежить від обраного шару виконання(наприклад, Polygon zKevm, Optimistic Rollups або спеціальне середовище виконання).

Наприклад: -Ланцюги CDK на основі ZKEVMможутьобробляти певні операційні коди по-різнічерезобмеження доказу нульових знань. -Оптимістичні злитиобробляють транзакції поза ланцюгом танадсилають пакетні докази, що може спричинити незначні відмінності у виконанні.

Щоб перевірити сумісність операційного коду, ви можете перевіритиYellow PaperEthereum (EVM Opcodes) щодо реалізації ланцюга 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зазвичай поводиться так само, як і на Ethereum, відображаючичас останнього блоку. Однак деякі ланцюги CDK Polygon можуть:

  • Використовуйтешвидший або повільніший час блокування, що впливає на точність міток часу.
  • Відрегулюйте часові мітки завдякипакетній обробців ланцюгах CDK на основі згортання.

Наприклад, якщо ланцюжок L2об'єднує транзакціїперед надсиланням їх до Ethereum, часова мітка можевідображати час обробки пакетів замість початкового часу подання транзакції.

####Тестування блоку.поведінка часової позначки

// 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 на основі згортанняможезбільшуватися в контексті L2block.numberі**відрізнятися від висоти блоку 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. Які ключові відмінності між багатогранними ланцюгами CDK та Ethereum?

ОсобливістьЕфіріумБагатокутник CDK (L2, Бічний ланцюг)
Підтримка OPCODE EVMПовнаМайже повна (залежить від Rollup/ZKEVM)
Плата за газВищіНижчі, можуть відрізнятися залежно від ланцюга
block.timestampТочний час блокуванняМоже відображати час обробки пакетів
block.numberПослідовністьМоже відрізнятися залежно від виробництва блоків L2
КінцевістьНегайноЗалежить від архітектури ланцюга

Отже... Коротше кажучи довгу історію:

Власні ланцюги CDK Polygon значною мірою сумісні з EVM, тобто більшість смарт-контрактів на основі Ethereum повинні працюватибез модифікацій. Однак існують незначні відмінності залежно від того, чи є ланцюжкна основі ZKEVM, оптимістичним згортанням чи бічним ланцюжком.

Ключові моменти, які слід пам'ятати: -Операційні коди в основному підтримуються, алезведення з нульовими знаннями можуть обробляти дещо по-різні. -block.timestamp та block.number можуть поводитися дещо по-різні, особливо наланцюгах CDK на основі зборів. -Плата за газ та остаточність різниться, залежно від інфраструктури мережі.

Для повного тестування сумісностірозгорніть прості контракти для порівняння результатів виконання між Ethereum та ланцюгом Polygon CDK. Якщо вам потрібні більш конкретні вказівки, найкращими місцями для отримання оновлень є офіційна документація Polygon та форуми спільноти.

0
Коментарі
.

Ви знаєте відповідь?

Будь ласка, увійдіть та поділіться нею.

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.

93Пости198Відповіді
Sui.X.Peera.

Зароби свою частку з 1000 Sui

Заробляй бали репутації та отримуй винагороди за допомогу в розвитку спільноти Sui.

Ми використовуємо файли cookie, щоб гарантувати вам найкращий досвід на нашому сайті.
Детальніше