Aere Network public source. Everything here can be checked against the live chain (chain id 2800, https://rpc.aere.network). Scope note, stated up front rather than buried: consensus on chain 2800 is classical secp256k1 ECDSA QBFT. The post-quantum work in this repository is at the signature, precompile, account and transport layers. Nothing here makes the consensus post-quantum, and no document in it should be read as claiming so.
61 lines
2.5 KiB
Solidity
61 lines
2.5 KiB
Solidity
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
pragma solidity 0.8.23;
|
|
|
|
/**
|
|
* @title IHypMailbox — minimal Hyperlane Mailbox interface used by AERE
|
|
* Warp Routes. Subset of the at-hyperlane-xyz/core canonical interface.
|
|
*
|
|
* @dev We vendor the minimal surface here instead of pulling the full
|
|
* at-hyperlane-xyz/core dependency tree to keep the AERE contracts
|
|
* compilation isolated. When Hyperlane registry merge lands, the
|
|
* deployed Mailbox address gets plugged into our Warp Route
|
|
* constructors and we conform to this same interface.
|
|
*/
|
|
interface IHypMailbox {
|
|
/// @notice Dispatch a message to a remote chain.
|
|
/// @param destinationDomain Hyperlane "domain" (e.g. 1 for Ethereum mainnet, 2800 for AERE).
|
|
/// @param recipientAddress The address (bytes32-padded) of the recipient on the remote chain.
|
|
/// @param messageBody Arbitrary application payload.
|
|
/// @return messageId Hash of the dispatched message.
|
|
function dispatch(
|
|
uint32 destinationDomain,
|
|
bytes32 recipientAddress,
|
|
bytes calldata messageBody
|
|
) external payable returns (bytes32 messageId);
|
|
|
|
/// @notice Quote the IGP (Interchain Gas Paymaster) fee for a dispatch.
|
|
function quoteDispatch(
|
|
uint32 destinationDomain,
|
|
bytes32 recipientAddress,
|
|
bytes calldata messageBody
|
|
) external view returns (uint256 fee);
|
|
|
|
/// @notice The configured local domain id.
|
|
function localDomain() external view returns (uint32);
|
|
}
|
|
|
|
/**
|
|
* @title IHypMessageRecipient — application contract surface invoked by the
|
|
* Mailbox when a verified message arrives.
|
|
*/
|
|
interface IHypMessageRecipient {
|
|
/// @notice Called by the Mailbox after the configured ISM has verified
|
|
/// the message.
|
|
/// @param origin Hyperlane domain id of the source chain.
|
|
/// @param sender The bytes32-padded address of the dispatcher on the
|
|
/// source chain (must match a trusted-router enrolment).
|
|
/// @param body Arbitrary payload set by the sender.
|
|
function handle(uint32 origin, bytes32 sender, bytes calldata body) external payable;
|
|
}
|
|
|
|
/// @dev bytes32 ↔ address conversion helpers used throughout Warp Route enrollment.
|
|
library TypeCasts {
|
|
function addressToBytes32(address a) internal pure returns (bytes32) {
|
|
return bytes32(uint256(uint160(a)));
|
|
}
|
|
|
|
function bytes32ToAddress(bytes32 b) internal pure returns (address) {
|
|
return address(uint160(uint256(b)));
|
|
}
|
|
}
|