Кросс-чейн чтение
Зачем использовать кросс-чейн чтение?
Многие децентрализованные приложения используют данные из нескольких цепочек. Некоторые ключевые сценарии использования включают:
Агрегирование ликвидности по сетям для лучшего исполнения DeFi.
Получение данных о владении токенами или балансах по цепочкам перед исполнением.
Протоколы управления проверяют голоса по нескольким сетям перед принятием решения.
Как работает кросс-чейн чтение
Контракт на одной сети запрашивает данные из нескольких сетей.
CCIP Read ISM проверяет запрос на чтение и направляет его ретрансляторам сообщений Hyperlane.
Hyperlane получает данные от узлов RPC вне сети, агрегирует их и передает обратно.
Данные возвращаются контракту, инициировавшему чтение.
Интерфейс протокола
interface IMetaLayerRead {
function fetchCrossChainData(
uint32[] calldata sourceChains,
address user,
bytes calldata queryData
) external view returns (bytes[] memory);
}
Объяснение структуры ReadOperation
Каждая операция чтения в кросс-сети заключена в структуру ReadOperation:
struct ReadOperation {
uint32 sourceChain;
address contractAddress;
bytes callData;
}
sourceChain: Идентификатор сети, по которой запрашиваются данные.
contractAddress: Адрес запрашиваемого контракта.
callData: Закодированный вызов функции для получения данных.
Пример: Запрос данных из 4 сетей
Этот пример демонстрирует, как контракт запрашивает данные из нескольких сетей.
Считывание данных из нескольких сетей.
contract MultiChainReader {
IMetaLayerRead public metalayer;
constructor(address _metalayer) {
metalayer = IMetaLayerRead(_metalayer);
}
function getMultiChainData(uint32[] calldata chains, address user, bytes calldata queryData)
external view returns (bytes[] memory) {
return metalayer.fetchCrossChainData(chains, user, queryData);
}
}
Last updated