Интерфейсы контрактов

Разработчики протоколов должны использовать эти интерфейсы для отправки кросс-чейн сообщений и инициирования кросс-чейн чтений через Metalayer.

Создание протоколов через Metalayer

Metalayer требует, чтобы разработчики протоколов реализовывали два контракта - один на сети источника, а другой на сети назначения. Эта схема одинакова независимо от того, собирается ли разработчик выполнять чтение или запись.

Оба контракта взаимодействуют с контрактом MetalayerRouter на каждой сети - и на обеих сторонах разработчик должен разрешить список конкретных контрактов MetalayerRouter на локальной сети как часть конфигурации своего протокола.

Отправка сообщения в сети источнике

В сети источника контракт отправки вызывает функцию dispatch контракта MetalayerRouter. Эта функция принимает домен назначения, адрес получателя, чтение, данные вызова записи, а также логическое значение, указывающее, нужно ли дожидаться завершения сети источника перед передачей сообщения.

/**
    * @notice Dispatches a message to the destination domain & recipient with the given reads and write.
    * @param _destinationDomain Domain of destination chain
    * @param _recipientAddress Address of recipient on destination chain as bytes32
    * @param _reads Read operations
    * @param _writeCallData The raw bytes to be called on the recipient address.
    * @param _useFinalized Whether or not to wait for finality before relaying the message.
    */
function dispatch(
    uint32 _destinationDomain,
    address _recipientAddress,
    ReadOperation[] memory _reads, // can be empty
    bytes memory _writeCallData,
    bool _useFinalized
) external payable;


function quoteGasPayment(
    uint32 _destinationDomain,
    uint256 _gasLimit
) public view virtual override returns (uint256);

Оплата газа

Функция quoteGasPayment используется для расчета количества газа, которое будет заплачено за сообщение. Эта функция принимает домен назначения и лимит газа и возвращает количество газа, необходимое для передачи сообщения. Эта плата за газ покрывает стоимость ретрансляции сообщения, а также стоимость газа, необходимого для доставки сообщения по сети назначения. Эта функция также работает при передаче сообщений на сети с токеном газа, отличным от токена на вашей локальной сети. Плата должна быть включена в значение, отправляемое функцию dispatch.

Получение сообщения в сети назначения

В сети назначения контракт должен реализовать интерфейс IMetalayerRecipient. MetalayerRouter в сети назначения вызовет функциюhandle в контракте получателя, чтобы доставить сообщение.

Last updated