@aere/cloud 1.2.1: pqFinality(block, network, client) with client=besu|nethermind|both (two-client agreement, postQuantumConfirmedByBoth)

This commit is contained in:
Liviu 2026-09-18 06:32:29 +03:00
parent c08858710a
commit 986fac6688
3 changed files with 9 additions and 1 deletions

View File

@ -45,6 +45,7 @@ const full = await aere.proof('0x' + sha256Hex); // { block, txHash, finality
// quantum readiness of a domain's public TLS edge (free, no key); attest:true notarizes the report digest on chain // quantum readiness of a domain's public TLS edge (free, no key); attest:true notarizes the report digest on chain
const scan = await aere.readiness('example.com'); // { score, verdict, summary, findings, … } const scan = await aere.readiness('example.com'); // { score, verdict, summary, findings, … }
const attested = await aere.readiness('example.com', { attest: true }); // + attestation: { reportHash, txHash, proof, … } const attested = await aere.readiness('example.com', { attest: true }); // + attestation: { reportHash, txHash, proof, … }
const fin = await aere.pqFinality('latest', 'testnet', 'both'); // AIP-21: { finality, agreement, postQuantumConfirmedByBoth, besu: {…}, nethermind: {…} }
// pqVerify: pass interface:'external' to verify a standard FIPS 204/205 signature (the precompile implements the // pqVerify: pass interface:'external' to verify a standard FIPS 204/205 signature (the precompile implements the
// internal interface; the gateway builds M' = 0x00 || len(ctx) || ctx || message for you) // internal interface; the gateway builds M' = 0x00 || len(ctx) || ctx || message for you)

View File

@ -87,6 +87,13 @@ export class AereCloud {
} }
readinessReport(domain) { return this._req('GET', `/pq/readiness/${encodeURIComponent(domain)}`, { auth: false }); } readinessReport(domain) { return this._req('GET', `/pq/readiness/${encodeURIComponent(domain)}`, { auth: false }); }
// AIP-21 (2026-09-18): the per-block post-quantum finality record (seals heard by a validator, re-verified, quorum
// verdict). Free, no key. Testnet 28001 first; `network` is reserved for chain 2800 once the method reaches its validators.
// `client`: 'besu' (default), 'nethermind', or 'both' (two independent implementations, with `agreement` computed by the gateway).
pqFinality(block = 'latest', network = 'testnet', client = 'besu') {
return this._req('GET', `/pq/finality/${encodeURIComponent(block)}?network=${encodeURIComponent(network)}&client=${encodeURIComponent(client)}`, { auth: false });
}
// audit log of every keyed request of this account for one UTC day (append-only, paged), with the day file's sha256 // audit log of every keyed request of this account for one UTC day (append-only, paged), with the day file's sha256
auditLog({ day, offset = 0, limit = 1000 } = {}) { auditLog({ day, offset = 0, limit = 1000 } = {}) {
const q = new URLSearchParams({ offset: String(offset), limit: String(limit) }); const q = new URLSearchParams({ offset: String(offset), limit: String(limit) });

View File

@ -1,6 +1,6 @@
{ {
"name": "@aere/cloud", "name": "@aere/cloud",
"version": "1.2.0", "version": "1.2.1",
"description": "Official client for the Aere Cloud API: keyed RPC, post-quantum verification, chain data, notarization, webhooks and gas sponsorship on Aere Network (chain 2800).", "description": "Official client for the Aere Cloud API: keyed RPC, post-quantum verification, chain data, notarization, webhooks and gas sponsorship on Aere Network (chain 2800).",
"type": "module", "type": "module",
"main": "index.mjs", "main": "index.mjs",