interface IMetaLayerRead { function fetchCrossChainData( uint32[] calldata sourceChains, address user, bytes calldata queryData ) external view returns (bytes[] memory); }
ReadOperation
struct ReadOperation { uint32 sourceChain; address contractAddress; bytes callData; }
sourceChain
contractAddress
callData
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); } }