Add --sha256 to SRP so haskell.nix/Hydra uses our contra-tracer
Jun 05, 7-8 AM (12)
Jun 05, 8-9 AM (8)
Jun 05, 9-10 AM (11)
Jun 05, 10-11 AM (12)
Jun 05, 11-12 PM (8)
Jun 05, 12-1 PM (52)
Jun 05, 1-2 PM (61)
Jun 05, 2-3 PM (26)
Jun 05, 3-4 PM (24)
Jun 05, 4-5 PM (17)
Jun 05, 5-6 PM (7)
Jun 05, 6-7 PM (14)
Jun 05, 7-8 PM (12)
Jun 05, 8-9 PM (6)
Jun 05, 9-10 PM (2)
Jun 05, 10-11 PM (20)
Jun 05, 11-12 AM (9)
Jun 06, 12-1 AM (6)
Jun 06, 1-2 AM (0)
Jun 06, 2-3 AM (3)
Jun 06, 3-4 AM (4)
Jun 06, 4-5 AM (0)
Jun 06, 5-6 AM (24)
Jun 06, 6-7 AM (1)
Jun 06, 7-8 AM (2)
Jun 06, 8-9 AM (3)
Jun 06, 9-10 AM (0)
Jun 06, 10-11 AM (3)
Jun 06, 11-12 PM (6)
Jun 06, 12-1 PM (2)
Jun 06, 1-2 PM (2)
Jun 06, 2-3 PM (2)
Jun 06, 3-4 PM (18)
Jun 06, 4-5 PM (1)
Jun 06, 5-6 PM (6)
Jun 06, 6-7 PM (0)
Jun 06, 7-8 PM (6)
Jun 06, 8-9 PM (0)
Jun 06, 9-10 PM (1)
Jun 06, 10-11 PM (27)
Jun 06, 11-12 AM (9)
Jun 07, 12-1 AM (14)
Jun 07, 1-2 AM (2)
Jun 07, 2-3 AM (0)
Jun 07, 3-4 AM (0)
Jun 07, 4-5 AM (1)
Jun 07, 5-6 AM (1)
Jun 07, 6-7 AM (3)
Jun 07, 7-8 AM (0)
Jun 07, 8-9 AM (0)
Jun 07, 9-10 AM (1)
Jun 07, 10-11 AM (2)
Jun 07, 11-12 PM (2)
Jun 07, 12-1 PM (5)
Jun 07, 1-2 PM (35)
Jun 07, 2-3 PM (2)
Jun 07, 3-4 PM (4)
Jun 07, 4-5 PM (2)
Jun 07, 5-6 PM (4)
Jun 07, 6-7 PM (0)
Jun 07, 7-8 PM (0)
Jun 07, 8-9 PM (17)
Jun 07, 9-10 PM (1)
Jun 07, 10-11 PM (21)
Jun 07, 11-12 AM (9)
Jun 08, 12-1 AM (9)
Jun 08, 1-2 AM (5)
Jun 08, 2-3 AM (3)
Jun 08, 3-4 AM (4)
Jun 08, 4-5 AM (2)
Jun 08, 5-6 AM (9)
Jun 08, 6-7 AM (5)
Jun 08, 7-8 AM (25)
Jun 08, 8-9 AM (36)
Jun 08, 9-10 AM (40)
Jun 08, 10-11 AM (24)
Jun 08, 11-12 PM (22)
Jun 08, 12-1 PM (40)
Jun 08, 1-2 PM (48)
Jun 08, 2-3 PM (33)
Jun 08, 3-4 PM (27)
Jun 08, 4-5 PM (12)
Jun 08, 5-6 PM (23)
Jun 08, 6-7 PM (14)
Jun 08, 7-8 PM (3)
Jun 08, 8-9 PM (6)
Jun 08, 9-10 PM (19)
Jun 08, 10-11 PM (29)
Jun 08, 11-12 AM (8)
Jun 09, 12-1 AM (5)
Jun 09, 1-2 AM (3)
Jun 09, 2-3 AM (1)
Jun 09, 3-4 AM (3)
Jun 09, 4-5 AM (26)
Jun 09, 5-6 AM (5)
Jun 09, 6-7 AM (23)
Jun 09, 7-8 AM (50)
Jun 09, 8-9 AM (35)
Jun 09, 9-10 AM (45)
Jun 09, 10-11 AM (51)
Jun 09, 11-12 PM (46)
Jun 09, 12-1 PM (86)
Jun 09, 1-2 PM (84)
Jun 09, 2-3 PM (36)
Jun 09, 3-4 PM (38)
Jun 09, 4-5 PM (16)
Jun 09, 5-6 PM (18)
Jun 09, 6-7 PM (18)
Jun 09, 7-8 PM (19)
Jun 09, 8-9 PM (16)
Jun 09, 9-10 PM (16)
Jun 09, 10-11 PM (28)
Jun 09, 11-12 AM (10)
Jun 10, 12-1 AM (11)
Jun 10, 1-2 AM (16)
Jun 10, 2-3 AM (11)
Jun 10, 3-4 AM (19)
Jun 10, 4-5 AM (5)
Jun 10, 5-6 AM (2)
Jun 10, 6-7 AM (46)
Jun 10, 7-8 AM (82)
Jun 10, 8-9 AM (18)
Jun 10, 9-10 AM (59)
Jun 10, 10-11 AM (46)
Jun 10, 11-12 PM (134)
Jun 10, 12-1 PM (48)
Jun 10, 1-2 PM (33)
Jun 10, 2-3 PM (32)
Jun 10, 3-4 PM (28)
Jun 10, 4-5 PM (35)
Jun 10, 5-6 PM (12)
Jun 10, 6-7 PM (12)
Jun 10, 7-8 PM (38)
Jun 10, 8-9 PM (11)
Jun 10, 9-10 PM (9)
Jun 10, 10-11 PM (20)
Jun 10, 11-12 AM (7)
Jun 11, 12-1 AM (10)
Jun 11, 1-2 AM (2)
Jun 11, 2-3 AM (0)
Jun 11, 3-4 AM (2)
Jun 11, 4-5 AM (8)
Jun 11, 5-6 AM (12)
Jun 11, 6-7 AM (34)
Jun 11, 7-8 AM (106)
Jun 11, 8-9 AM (36)
Jun 11, 9-10 AM (20)
Jun 11, 10-11 AM (105)
Jun 11, 11-12 PM (25)
Jun 11, 12-1 PM (38)
Jun 11, 1-2 PM (37)
Jun 11, 2-3 PM (14)
Jun 11, 3-4 PM (20)
Jun 11, 4-5 PM (5)
Jun 11, 5-6 PM (7)
Jun 11, 6-7 PM (26)
Jun 11, 7-8 PM (90)
Jun 11, 8-9 PM (11)
Jun 11, 9-10 PM (5)
Jun 11, 10-11 PM (25)
Jun 11, 11-12 AM (5)
Jun 12, 12-1 AM (8)
Jun 12, 1-2 AM (2)
Jun 12, 2-3 AM (2)
Jun 12, 3-4 AM (4)
Jun 12, 4-5 AM (7)
Jun 12, 5-6 AM (15)
Jun 12, 6-7 AM (40)
Jun 12, 7-8 AM (1)
3,132 commits this week
Jun 05, 2026
-
Jun 12, 2026
Fix SRP tag: correct full commit hash for runTracerA INLINE fix
fix(database): Updated example app drep changes of adding this new tag
Signed-off-by: Akhil Repala <[email protected]>
Bump next from 15.3.2 to 15.5.18 in /examples/bootcamp/10-web3-services
Bumps [next](https://github.com/vercel/next.js) from 15.3.2 to 15.5.18. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v15.3.2...v15.5.18) --- updated-dependencies: - dependency-name: next dependency-version: 15.5.18 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]>
Lessons update and example framework (#1803)
* Add examples/ folder with bootcamp companion code * Restructure smart contract lessons into Theory and Practical tracks Replace the eight flat lessons with their updated versions under a Practical group, add a 15-lesson Theory track before them, and give each track a course overview landing page (Blockchain Theory, Hello Cardano). Wire both groups in the sidebar and redirect the old lesson URLs to their new paths. * Add Pyth oracle integration doc Document Pyth Pro price feeds on Cardano and add the page to the Oracles sidebar. Drop the now-redundant Related footers from charli3 and orcfax. * Fix broken link in the governance lesson Point the end-of-course next step to the Hello Cardano overview instead of the old curriculum path. * Fix broken link in the token registry docs Link the Token Registry Server page via its .md file so it resolves from the question-named page, instead of nesting under it. * Credit Cardano Builders and point the wallet link to cardano.org/apps Add a one-line attribution to the Theory and Practical course overviews, and swap the multisig lesson's old developer-showcase wallet link for the CIP30 wallet filter on cardano.org/apps.
Merge branch 'staging' into docs/lessons-and-examples
Merge branch 'master' into fix/hydra-node/snapshot-handling
Merge branch 'master' into noon/faster-nix-check
fix(database): Made changes address transaction lookup to throw errors if tag deviates and added credential tag to stake deregistration in conformance db account rows
Signed-off-by: Akhil Repala <[email protected]>
Update contra-tracer SRP: inline runTracerA to fix Hydra OOM
Bumps the pinned tag to include the runTracerA INLINE fix. Without INLINE, every traceWith call with a nullTracer (Squelching constructor) allocates a fresh Kleisli wrapper via arr (const ()). In the network-mux bearer hot path this amounts to 5 such calls per SDU. With messages chunked into 1260-byte SDUs, a single 3 MB payload generates thousands of SDUs and therefore thousands of spurious Kleisli allocations per traceWith call, producing hundreds of MB of short-lived GC pressure that pushes the test suite past the 900 MB Hydra limit. With INLINE on runTracerA and the existing INLINE on traceWith, GHC reduces traceWith nullTracer x to pure () at the call site: zero allocation, no GC overhead.
Allow loading logs; allow loading multiple dbs for comparision
deploy: 67e3c6794459422954fda63b75e6b136e83a3a03
fix(governance): detect on-chain DRep registration in Hydra budget vote (#279)
HydraBudgetVote gated the vote UI on `multisigWallet.getDRepId()` being
truthy, but that is a local key/script derivation that always succeeds —
it is NOT proof of on-chain registration. So a wallet that is a fully
registered, active DRep (shown correctly by the DRep Information card)
was still told to "Register this wallet as a DRep first."
Detect registration the same way the DRep Information card does: look up
the DRep on-chain and check `active === true`. Done via a React Query
hit to Blockfrost `/governance/dreps/{cip105}` (the same endpoint and
getDRepIds helper the global wallet-data loader uses), which also gives a
clean loading state so we no longer flash "register first" before the
status is known. While the wallet or registration lookup is resolving we
show "Checking DRep registration…" instead of the register prompt.
Co-authored-by: Claude Fable 5 <[email protected]>
fix(governance): detect on-chain DRep registration in Hydra budget vote
HydraBudgetVote gated the vote UI on `multisigWallet.getDRepId()` being
truthy, but that is a local key/script derivation that always succeeds —
it is NOT proof of on-chain registration. So a wallet that is a fully
registered, active DRep (shown correctly by the DRep Information card)
was still told to "Register this wallet as a DRep first."
Detect registration the same way the DRep Information card does: look up
the DRep on-chain and check `active === true`. Done via a React Query
hit to Blockfrost `/governance/dreps/{cip105}` (the same endpoint and
getDRepIds helper the global wallet-data loader uses), which also gives a
clean loading state so we no longer flash "register first" before the
status is known. While the wallet or registration lookup is resolving we
show "Checking DRep registration…" instead of the register prompt.
Co-Authored-By: Claude Fable 5 <[email protected]>
refactor(wallet): consolidate all wallet ops on the Mesh 1.9 bridge + ESLint guardrail (#278)
* fix(auth): use Mesh 1.9 wallet so signData args aren't swapped (VESPR -2)
WalletAuthModal signed the nonce with react-2.0's useWallet().wallet, a
low-level CIP-30 wallet whose signData(address, payload) argument order
is swapped relative to Mesh 1.9's signData(payload, address). The call
signData(nonce, address) therefore passed the nonce as the *address* and
the address as the *payload*, so VESPR tried to sign with a bogus signing
address and returned CIP-30 InternalError {code: -2}. (It also explains
the wallet dialog showing the address as the "Nachricht".)
Switch to the 1.9 BrowserWallet via useMeshWallet — the same instance and
(payload, address) order every other signing flow in the app uses. The
UTXOS MeshWallet path is also payload-first, so the single
signData(nonce, address) call is now correct for both wallet types.
Co-Authored-By: Claude Fable 5 <[email protected]>
* refactor(wallet): route all wallet ops through the Mesh 1.9 bridge + guardrail
Every signing/wallet call must use useMeshWallet()/useActiveWallet() (the
Mesh 1.9 IWallet), never react-2.0's useWallet().wallet — the latter is a
low-level CIP-30 wallet whose signData(address, payload) / signTx(tx,
partialSign) signatures differ from 1.9, so a wrong-order call compiles
but signs the wrong bytes.
Fixes 3 live latent copies of that bug (same root cause as the WalletAuth
modal fix):
- HydraBudgetVote: signData on the react-2.0 wallet — the likely source of
the ballot witness/body-hash divergence.
- instance-tab (cross-instance import): would fail with CIP-30 -2 on VESPR.
- api-docs bearer-token generation: same swapped-args failure.
Also migrates the remaining read-only useWallet().wallet sites (address /
network-id lookups, identical across versions) to the bridge so the
boundary is uniform, and adds null guards where the bridge wallet is
transiently null while enabling.
Guardrail: an ESLint no-restricted-syntax rule makes destructuring
`wallet` from useWallet() a build error, so this bug class can't regress.
useWallet() stays allowed for connection state (name/connected/connect/
disconnect). Verified the rule fires on a violation and passes the bridge.
Co-Authored-By: Claude Fable 5 <[email protected]>
---------
Co-authored-by: Claude Fable 5 <[email protected]>
Merge pull request #33 from blockfrost/chore/1.0.0-rc.1
chore: release 1.0.0-rc.1