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.
90 lines
3.9 KiB
Solidity
90 lines
3.9 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity 0.8.23;
|
|
|
|
/**
|
|
* @title AERE Season 1 "Altitude" — shared interfaces
|
|
* @notice Minimal interfaces so the Season 1 suite can be wired to LIVE chain
|
|
* 2800 contracts without importing their full source. All external
|
|
* oracle references (humanity / passkey) are Foundation-settable and
|
|
* wired POST-DEPLOY to the appropriate live source, so nothing here
|
|
* hardcodes an ABI we cannot verify.
|
|
*
|
|
* HONESTY / DISCLAIMER (mandatory for all user-facing copy that surfaces
|
|
* Altitude Points or Season 1 rewards): Altitude Points (AP) are NOT a
|
|
* token. They are non-transferable and have no guaranteed monetary value.
|
|
* Any future reward depends on the network growing and is not promised.
|
|
* There is no listing. Nothing here is an offer of, or a right to, value
|
|
* or returns.
|
|
*/
|
|
|
|
/// @notice Non-transferable Season 1 points ledger (credit-only).
|
|
interface IAerePointsLedger {
|
|
function credit(address account, uint256 amount, bytes32 questId) external;
|
|
function balanceOf(address account) external view returns (uint256);
|
|
function isAttestor(address who) external view returns (bool);
|
|
}
|
|
|
|
/// @notice Quest configuration registry.
|
|
interface IAereQuestRegistry {
|
|
struct Quest {
|
|
uint256 weight; // points credited per completion
|
|
uint64 startTime; // window open (unix)
|
|
uint64 endTime; // window close (unix); 0 == open-ended
|
|
uint256 perUserCap; // max cumulative points per user for this quest
|
|
bool active; // Foundation kill-switch
|
|
bool requiresVerifiedHuman;
|
|
bool exists;
|
|
}
|
|
|
|
function getQuest(bytes32 questId) external view returns (Quest memory);
|
|
function isOpen(bytes32 questId, uint256 atTime) external view returns (bool);
|
|
}
|
|
|
|
/// @notice First-Flight soulbound check-in attestation.
|
|
interface IAereQuestCheckIn {
|
|
function hasCheckedIn(address account) external view returns (bool);
|
|
}
|
|
|
|
/// @notice Per-account quest completion accounting exposed by the attestor.
|
|
interface IAereQuestAttestor {
|
|
function distinctQuestCount(address account) external view returns (uint256);
|
|
function earned(address account, bytes32 questId) external view returns (uint256);
|
|
}
|
|
|
|
/**
|
|
* @notice Generic "is this account verified as a human?" oracle. The Foundation
|
|
* wires this to an adapter over AereZKScreen (over-18 / EU-residency
|
|
* program clearance) + AereSanctionsRegistry (not sanctioned). Kept as a
|
|
* settable reference so the compliance source can evolve without
|
|
* redeploying the attestor.
|
|
*/
|
|
interface IHumanityOracle {
|
|
function isVerifiedHuman(address account) external view returns (bool);
|
|
}
|
|
|
|
/**
|
|
* @notice Generic boolean flag oracle. Used by the referral registry to check
|
|
* "has this account created a passkey smart account?" The Foundation
|
|
* wires it to a passkey-account indexer/attestor (the live
|
|
* AerePasskeyAccountFactoryV2 emits AccountCreated but keeps no queryable
|
|
* on-chain set, so an attested flag source is used).
|
|
*/
|
|
interface IAccountFlag {
|
|
function isFlagged(address account) external view returns (bool);
|
|
}
|
|
|
|
/// @notice Wrapped-AERE (WETH-style) surface used by the reward distributor to
|
|
/// convert native AERE into WAERE for the sAERE-delivery path.
|
|
interface IWaereWrap {
|
|
function deposit() external payable;
|
|
function approve(address spender, uint256 amount) external returns (bool);
|
|
function transfer(address to, uint256 amount) external returns (bool);
|
|
function balanceOf(address account) external view returns (uint256);
|
|
}
|
|
|
|
/// @notice Minimal ERC-4626 surface for sAERE (deposit WAERE, mint sAERE to receiver).
|
|
interface ISAEREVault {
|
|
function deposit(uint256 assets, address receiver) external returns (uint256 shares);
|
|
function asset() external view returns (address);
|
|
}
|