wip: GHC 9.14.2 prerelease
Test with 9.14.2
Test with 9.14.2
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
ZK on Cardano has live on-chain primitives (BLS12-381 builtins) and shipped proofs of concept but no home in the curriculum. Add a concept-first earmark under advanced smart contracts, flagged as in active development.
Module 3 already names the gap (native tokens have no built-in transfer logic) but dead-ends there. Add a concept-first earmark for CIP-113: what transfer-time validation buys you, the shared-script and stake-credential model, and an honest in-development status that links out to the reference implementation.
The page gave Mesh's AI context a co-equal section, pushing one SDK ahead of the aggregation layer we want people to start with. Lead with Cardano Dev Skills as the tool-agnostic default and demote Mesh to an optional, SDK-specific deepening.
Fixes #2296 - [x] Allow specifying _everyone_ in the same config and declaring "me myself" somewhere. - [x] Handle mirror nodes a bit more nicely - [x] Document the feature - [x] Changelog --------- Signed-off-by: Sasha Bogicevic <[email protected]> Co-authored-by: Sasha Bogicevic <[email protected]>
Return empty UTxO instead of throwing on BlockfrostNotFound from getAddressUtxos — a 404 means the address is unused, not a transient error. retryOnBlockfrostError now checks isRetryable so both retry paths agree: BlockfrostClientError fails fast everywhere. Signed-off-by: Sasha Bogicevic <[email protected]>
Signed-off-by: Sasha Bogicevic <[email protected]>
Signed-off-by: Sasha Bogicevic <[email protected]>
Two bugs caused the node to crash on HTTP 403 / connection resets: Client.runBlockfrostM threw Client.APIBlockfrostError while retry logic only caught the separate Blockfrost.APIBlockfrostError type, so HTTP errors escaped retry and crashed the node. The genesis query was also entirely outside any retry wrapper. Fix by moving APIBlockfrostError to Client.hs as the single exception type, updating runBlockfrostM to throw it directly, and wrapping the genesis query + catch-up inside retryOnBlockfrostError. Signed-off-by: Sasha Bogicevic <[email protected]>
Two bugs caused the node to crash on HTTP 403 / connection resets:
1. The genesis query in blockfrostChainFollow was outside any retry
wrapper, so a transient failure crashed the node immediately.
Fixed by moving retryOnBlockfrostError to wrap genesis + catchup.
2. retryOnBlockfrostError only caught Blockfrost.APIBlockfrostError
(logic errors) but not Client.APIBlockfrostError (HTTP errors),
because Client.runBlockfrostM throws a different type. Fixed by
adding a second handler for Client.APIBlockfrostError.
Signed-off-by: Sasha Bogicevic <[email protected]>
Client.runBlockfrostM throws Client.APIBlockfrostError on HTTP 403/connection reset, but retryOnBlockfrostError only handles Blockfrost.APIBlockfrostError - a different type - so HTTP errors escape the retry and crash the node. Signed-off-by: Sasha Bogicevic <[email protected]>
Replace fixed attempt counts and epoch-fraction delays with a deadline-based poll_until! macro and bounded backoff, keeping detection responsive on long epochs.
Publish the dual (Ed25519 + Schnorr) genesis verification key bundle for the ivc-snark-preview environment.
Error instead of fabricating an ephemeral Schnorr signer when bootstrapping a Lagrange genesis with a legacy single-Ed25519 key, which produced an unverifiable Schnorr signature.