Itzamna (2242c6ea) at 18 Mar 02:43
fix(cardano): wait for cardano-rpc block indexing before ready
Three fixes for the backfill block processing pipeline that was hanging with processed_blocks stuck at 0:
WithDelayProtocolStart from backfill connections
In full-duplex NtN mode, gouroboros creates DemuxerChannels for all server protocols even with DelayProtocolStart. Without Start(), no goroutine reads from them — after 10 buffered messages the muxer blocks, halting ALL incoming TCP data including BlockFetch responses.
Replace manual Start() calls with auto-start + GetCurrentTip()/Sync() so the node treats workers as synced peers and serves BlockFetch requests.
minSlot on resume
The Ouroboros ChainSync rollback point is the last common ancestor between forks — it must be preserved, not deleted.
slot < to slot <= so the rollback point stays in the bufferslot >= ? to slot > ? so the rollback point row is keptminSlot from the highest processed point on resume, preventing the forward sync from picking up backfill headers and causing muxer deadlocksPhase 1 inserts ~2.4M headers, bloating the WAL to 200+ MB. The query planner chose idx_point_height for UPDATE queries, which degrades to a full table scan when most rows have height = -1.
INDEXED BY idx_point_hash to force the correct index_busy_timeout=5000 and reduce wal_autocheckpoint to 1,000 pages-race
Bitol Maya (2bf18d46) at 18 Mar 02:10
fix(radix): add StakeSafe community seed node (official seeds down)
... and 1 more commit
Bitol Maya (04cf15be) at 18 Mar 02:10
Official Radix Foundation seed nodes are all unreachable (port 30000 closed, DNS removed) as part of their 2026 infrastructure transition. Added StakeSafe community seed node as primary, keeping official ones as fallback
Official Radix Foundation seed nodes are all unreachable (port 30000 closed, DNS removed) as part of their 2026 infrastructure transition. Added StakeSafe community seed node as primary, keeping official ones as fallback
Itzamna (909e6c8d) at 18 Mar 02:03
fix(cardano): add missing RpcClient methods to test mock
Official Radix Foundation seed nodes are all unreachable (port 30000 closed, DNS removed) as part of their 2026 infrastructure transition. Added StakeSafe community seed node as primary, keeping official ones as fallback
Itzamna (2bd32d3e) at 18 Mar 01:22
deps: upgrade cardano-go to MR !7 (backfill fixes, testing infra)
... and 1 more commit
Itzamna (f18b1b16) at 18 Mar 00:57
fix: backfill Phase 2 muxer deadlock, rollback off-by-one, SQLite perf
Itzamna (f35bb68f) at 18 Mar 00:55
fix: backfill Phase 2 muxer deadlock, rollback off-by-one, SQLite perf
... and 14 more commits
Official Radix Foundation seed nodes are all unreachable (port 30000 closed, DNS removed) as part of their 2026 infrastructure transition. Added StakeSafe community seed node as primary, keeping official ones as fallback
Bitol Maya (7492a96c) at 17 Mar 18:28
[V129-specific] score streaming swaps by sub-swap size
... and 3 more commits
Bitol Maya (94a477c4) at 17 Mar 18:22
Bitol Maya (c6f57888) at 17 Mar 18:22
[Version-unspecific] Update zec ts #check-lint-warning
New Features
Breaking Changes
Build & Infrastructure
deposit / remaining_sub_swaps instead of full deposit in scoreMsgs(), preventing large streaming swaps from monopolizing block spaceCloses #259
manager_swap_queue_v128.go with renamed types1.129.0 entry in GetSwapQueue() switch in managers.go
scoreMsgs(), create a local sourceCoin for streaming swaps that divides the deposit by remaining sub-swaps (Quantity - Count). Uses persisted streaming swap from keeper when available (accurate Count), falls back to msg-based swap for new entries (Count=0)TestScoreMsgsStreamingSwap verifies fee-based scoring for streaming vs non-streaming, persisted progress, and Quantity=1 edge casesourceCoin is a new local variable — does NOT mutate item.msg.Tx.Coins[0] (execution amounts unaffected)remaining > 0 guard prevents division by zero for completed swapsGetStreamingSwap falls back to msg-based swap (conservative scoring)TestSwapQueueVCURSuite — all 5 tests pass (4 existing + 1 new)TestSwapQueueV128Suite — all 4 frozen tests passgo build ./x/mayachain/... — clean build deadline := time.Now().Add(5 * time.Minute)
for {
if time.Now().After(deadline) {
log.Fatal().Msg("timed out waiting for cardano to be ready")
}
res, err := http.Get(chainRPCs[common.ADAChain] + "/status")
if err == nil && res.StatusCode == 200 {
break
}
log.Info().Msg("waiting for cardano to be ready")
time.Sleep(time.Second)
}Let's add a timeout for this. Not sure if 5 minutes it's enough.
Itzamna (a37f2527) at 17 Mar 17:16
fix(cardano): increase reorgwindow to handle devnet startup rollbacks
deposit / remaining_sub_swaps instead of full deposit in scoreMsgs(), preventing large streaming swaps from monopolizing block spaceCloses #259
manager_swap_queue_v128.go with renamed types1.129.0 entry in GetSwapQueue() switch in managers.go
scoreMsgs(), create a local sourceCoin for streaming swaps that divides the deposit by remaining sub-swaps (Quantity - Count). Uses persisted streaming swap from keeper when available (accurate Count), falls back to msg-based swap for new entries (Count=0)TestScoreMsgsStreamingSwap verifies fee-based scoring for streaming vs non-streaming, persisted progress, and Quantity=1 edge casesourceCoin is a new local variable — does NOT mutate item.msg.Tx.Coins[0] (execution amounts unaffected)remaining > 0 guard prevents division by zero for completed swapsGetStreamingSwap falls back to msg-based swap (conservative scoring)TestSwapQueueVCURSuite — all 5 tests pass (4 existing + 1 new)TestSwapQueueV128Suite — all 4 frozen tests passgo build ./x/mayachain/... — clean build