Re-enable link to cost-estimator
Apr 18, 7-8 PM (2)
Apr 18, 8-9 PM (4)
Apr 18, 9-10 PM (9)
Apr 18, 10-11 PM (21)
Apr 18, 11-12 AM (23)
Apr 19, 12-1 AM (1)
Apr 19, 1-2 AM (4)
Apr 19, 2-3 AM (1)
Apr 19, 3-4 AM (0)
Apr 19, 4-5 AM (0)
Apr 19, 5-6 AM (3)
Apr 19, 6-7 AM (0)
Apr 19, 7-8 AM (2)
Apr 19, 8-9 AM (1)
Apr 19, 9-10 AM (1)
Apr 19, 10-11 AM (4)
Apr 19, 11-12 PM (7)
Apr 19, 12-1 PM (6)
Apr 19, 1-2 PM (8)
Apr 19, 2-3 PM (23)
Apr 19, 3-4 PM (7)
Apr 19, 4-5 PM (4)
Apr 19, 5-6 PM (3)
Apr 19, 6-7 PM (8)
Apr 19, 7-8 PM (3)
Apr 19, 8-9 PM (8)
Apr 19, 9-10 PM (6)
Apr 19, 10-11 PM (25)
Apr 19, 11-12 AM (23)
Apr 20, 12-1 AM (4)
Apr 20, 1-2 AM (5)
Apr 20, 2-3 AM (2)
Apr 20, 3-4 AM (7)
Apr 20, 4-5 AM (1)
Apr 20, 5-6 AM (8)
Apr 20, 6-7 AM (12)
Apr 20, 7-8 AM (29)
Apr 20, 8-9 AM (42)
Apr 20, 9-10 AM (37)
Apr 20, 10-11 AM (95)
Apr 20, 11-12 PM (42)
Apr 20, 12-1 PM (39)
Apr 20, 1-2 PM (53)
Apr 20, 2-3 PM (68)
Apr 20, 3-4 PM (47)
Apr 20, 4-5 PM (41)
Apr 20, 5-6 PM (31)
Apr 20, 6-7 PM (24)
Apr 20, 7-8 PM (10)
Apr 20, 8-9 PM (7)
Apr 20, 9-10 PM (16)
Apr 20, 10-11 PM (28)
Apr 20, 11-12 AM (18)
Apr 21, 12-1 AM (24)
Apr 21, 1-2 AM (5)
Apr 21, 2-3 AM (13)
Apr 21, 3-4 AM (4)
Apr 21, 4-5 AM (3)
Apr 21, 5-6 AM (8)
Apr 21, 6-7 AM (15)
Apr 21, 7-8 AM (44)
Apr 21, 8-9 AM (119)
Apr 21, 9-10 AM (36)
Apr 21, 10-11 AM (35)
Apr 21, 11-12 PM (98)
Apr 21, 12-1 PM (57)
Apr 21, 1-2 PM (71)
Apr 21, 2-3 PM (60)
Apr 21, 3-4 PM (33)
Apr 21, 4-5 PM (31)
Apr 21, 5-6 PM (27)
Apr 21, 6-7 PM (38)
Apr 21, 7-8 PM (35)
Apr 21, 8-9 PM (37)
Apr 21, 9-10 PM (14)
Apr 21, 10-11 PM (34)
Apr 21, 11-12 AM (12)
Apr 22, 12-1 AM (2)
Apr 22, 1-2 AM (3)
Apr 22, 2-3 AM (3)
Apr 22, 3-4 AM (4)
Apr 22, 4-5 AM (3)
Apr 22, 5-6 AM (17)
Apr 22, 6-7 AM (34)
Apr 22, 7-8 AM (21)
Apr 22, 8-9 AM (37)
Apr 22, 9-10 AM (18)
Apr 22, 10-11 AM (47)
Apr 22, 11-12 PM (45)
Apr 22, 12-1 PM (56)
Apr 22, 1-2 PM (64)
Apr 22, 2-3 PM (44)
Apr 22, 3-4 PM (86)
Apr 22, 4-5 PM (46)
Apr 22, 5-6 PM (17)
Apr 22, 6-7 PM (10)
Apr 22, 7-8 PM (18)
Apr 22, 8-9 PM (15)
Apr 22, 9-10 PM (23)
Apr 22, 10-11 PM (31)
Apr 22, 11-12 AM (17)
Apr 23, 12-1 AM (7)
Apr 23, 1-2 AM (4)
Apr 23, 2-3 AM (4)
Apr 23, 3-4 AM (6)
Apr 23, 4-5 AM (3)
Apr 23, 5-6 AM (8)
Apr 23, 6-7 AM (17)
Apr 23, 7-8 AM (26)
Apr 23, 8-9 AM (33)
Apr 23, 9-10 AM (33)
Apr 23, 10-11 AM (29)
Apr 23, 11-12 PM (30)
Apr 23, 12-1 PM (51)
Apr 23, 1-2 PM (69)
Apr 23, 2-3 PM (65)
Apr 23, 3-4 PM (26)
Apr 23, 4-5 PM (21)
Apr 23, 5-6 PM (7)
Apr 23, 6-7 PM (7)
Apr 23, 7-8 PM (11)
Apr 23, 8-9 PM (14)
Apr 23, 9-10 PM (6)
Apr 23, 10-11 PM (28)
Apr 23, 11-12 AM (18)
Apr 24, 12-1 AM (7)
Apr 24, 1-2 AM (4)
Apr 24, 2-3 AM (7)
Apr 24, 3-4 AM (5)
Apr 24, 4-5 AM (8)
Apr 24, 5-6 AM (13)
Apr 24, 6-7 AM (12)
Apr 24, 7-8 AM (33)
Apr 24, 8-9 AM (40)
Apr 24, 9-10 AM (41)
Apr 24, 10-11 AM (71)
Apr 24, 11-12 PM (57)
Apr 24, 12-1 PM (37)
Apr 24, 1-2 PM (53)
Apr 24, 2-3 PM (34)
Apr 24, 3-4 PM (19)
Apr 24, 4-5 PM (16)
Apr 24, 5-6 PM (38)
Apr 24, 6-7 PM (25)
Apr 24, 7-8 PM (12)
Apr 24, 8-9 PM (41)
Apr 24, 9-10 PM (17)
Apr 24, 10-11 PM (30)
Apr 24, 11-12 AM (16)
Apr 25, 12-1 AM (8)
Apr 25, 1-2 AM (1)
Apr 25, 2-3 AM (10)
Apr 25, 3-4 AM (5)
Apr 25, 4-5 AM (3)
Apr 25, 5-6 AM (13)
Apr 25, 6-7 AM (1)
Apr 25, 7-8 AM (4)
Apr 25, 8-9 AM (24)
Apr 25, 9-10 AM (17)
Apr 25, 10-11 AM (4)
Apr 25, 11-12 PM (4)
Apr 25, 12-1 PM (12)
Apr 25, 1-2 PM (3)
Apr 25, 2-3 PM (10)
Apr 25, 3-4 PM (6)
Apr 25, 4-5 PM (10)
Apr 25, 5-6 PM (16)
Apr 25, 6-7 PM (10)
Apr 25, 7-8 PM (0)
3,707 commits this week
Apr 18, 2026
-
Apr 25, 2026
Re-style cost estimator and project storage over a year
fix: repair mithril snapshot bootstrap correctness and resume handling
Signed-off-by: Chris Gianelloni <[email protected]>
Remove amortization / computatin of perpetual of storage cost
Pin term namespace to a stable, domain-controlled URL
The previous cips.cardano.org/CIP-XXXX# placeholder embedded an unassigned CIP number; tooling that hardcoded the URL would have to migrate once a number is assigned. Pinning the namespace to a URL we control (314pool.com/cips/governance-feedback#) keeps the IRI stable regardless of CIP number assignment or upstream URL changes, and gives consumers a single place to dereference for both the JSON-LD context and a redirect back to the spec itself.
add companion code for practical lessons
add module stubs for patterns, optimization, and security
add bootcamp practical course (10 lessons, 3 projects, images)
add bootcamp theory curriculum (15 lessons)
add bootcamp landing page, sidebar, and navbar entry
Fix sim-rs Cargo.lock via cargo update
Regenerate lock file with cargo to get correct checksums and version references for rand 0.8.6 and 0.9.4. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Remove build infrastructure and outdated Agda model from cost-dashboard
The cost-dashboard is now just 3 static files (index.html, controller.js, view.css) with no build step. The controller.js uses an IIFE pattern to expose the Controller global, eliminating the need for webpack bundling. Removed: - CostModel.agda, Main.agda (outdated Short Leios model) - webpack.config.js, package.json, package-lock.json (build infra) - build.sh, debug.sh (nix-shell scripts) - shell.nix symlink, .envrc, .gitignore Updated site/static/cost-estimator/ and site docs to match. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Deployed aefaf50 with MkDocs version: 1.6.1
feat(asteria-player): bootstrap submits self-pay tx end-to-end (#56)
Iteration 5.
- src/Asteria/Wallet.hs: reads /utxo-keys/genesis.3.skey at startup,
decodes the CBOR-wrapped 32-byte ed25519 key, derives the Shelley
payment address, and exposes pickWalletUtxo over a Provider.
Picks genesis.3 deliberately to avoid the race with tx-generator
(which takes genesis.1).
- app/BootstrapMain.hs: connects via withN2C, reads the wallet,
picks a seed UTxO (200_000 ADA at fresh cluster boot), builds
a self-pay 5 ADA tx via the TxBuild DSL, signs with the genesis
key, submits, and polls queryUTxOs for confirmation. Emits SDK
events at every milestone (starting / wallet_loaded /
seed_picked / tx_built / self_pay / completed) so the
hypervisor sees each step land.
Verified locally:
asteria_bootstrap_starting reachable
asteria_bootstrap_wallet_loaded reachable {"addr":"..."}
asteria_bootstrap_seed_picked reachable {"seed_coin":200000000000000}
asteria_bootstrap_tx_built reachable {"outputs":2}
asteria_bootstrap_self_pay sometimes true
asteria_bootstrap_completed reachable
Iteration 5b will replace the no-op self-pay with the real asteria
shape: mint admin NFT (always-true policy), lock at asteria spend
address with inline AsteriaDatum, deploy the four validators as
inline ref-scripts, mint+lock N pellets at known coordinates.
feat(asteria-player): bootstrap submits self-pay tx end-to-end (#56)
Iteration 5.
- src/Asteria/Wallet.hs: reads /utxo-keys/genesis.3.skey at startup,
decodes the CBOR-wrapped 32-byte ed25519 key, derives the Shelley
payment address, and exposes pickWalletUtxo over a Provider.
Picks genesis.3 deliberately to avoid the race with tx-generator
(which takes genesis.1).
- app/BootstrapMain.hs: connects via withN2C, reads the wallet,
picks a seed UTxO (200_000 ADA at fresh cluster boot), builds
a self-pay 5 ADA tx via the TxBuild DSL, signs with the genesis
key, submits, and polls queryUTxOs for confirmation. Emits SDK
events at every milestone (starting / wallet_loaded /
seed_picked / tx_built / self_pay / completed) so the
hypervisor sees each step land.
Verified locally:
asteria_bootstrap_starting reachable
asteria_bootstrap_wallet_loaded reachable {"addr":"..."}
asteria_bootstrap_seed_picked reachable {"seed_coin":200000000000000}
asteria_bootstrap_tx_built reachable {"outputs":2}
asteria_bootstrap_self_pay sometimes true
asteria_bootstrap_completed reachable
Iteration 5b will replace the no-op self-pay with the real asteria
shape: mint admin NFT (always-true policy), lock at asteria spend
address with inline AsteriaDatum, deploy the four validators as
inline ref-scripts, mint+lock N pellets at known coordinates.
CIP-???? | Governance Proposal Feedback and Addenda
Adds a draft CIP-100 extension defining three new JSON-LD document types — DraftProposal, ProposalFeedback, and ProposalAddendum — for signed pre-submission drafts, signed public commentary, and binding author clarifications against governance proposals.
Update cost-dashboard to CIP-164 (Linear Leios) protocol model
Replace the old Short Leios model (IBs, pipelines, phases) with the Linear Leios (CIP-164) cost model as documented in docs/cost-estimate/. Key changes: - Remove Input Blocks (IBs); EBs now carry 32-byte tx hash references - Main input is confirmed throughput (TxkB/s) instead of tx/s - Add P(cert) = (1-f)^voting_window certification probability - CPU model: Apply + Reapply + EB header + Vote + Cert validation (matches doc values exactly: 97.1 ms/s at 5 TxkB/s) - Egress model: per-component with network topology parameters (inbound peers, fetch multiplicity M, vote spanning-tree) - Storage: tx closure + EB body (P(cert) cancels) + EB headers + RB - IOPS: UTxO-HD model with tx data + UTxO state updates - All default values from CIP-164 simulation config and benchmarks - Add CPU breakdown display (Apply, Reapply, EB, Vote, Cert) Cross-checked against cost-estimate doc tables at all throughput levels. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
fix: repair mithril snapshot bootstrap correctness and resume handling
Signed-off-by: Chris Gianelloni <[email protected]>
feat(asteria-player): apply parameters to validators (#56)
Iteration 4.
- aiken/apply-params.sh: chains `aiken blueprint apply` calls to
bake admin_token + game constants + cross-validator hashes into
the four asteria validators. Documents each parameter's CBOR
encoding (computed once with Python cbor2). Re-runnable when
parameters change.
- aiken/plutus-applied.json: the produced blueprint with all four
validators parameter-applied:
pellet: 13d2d459de8ad483d2958859fcf192ac90dfcf00ad92a4e78e870e6e
deploy: 019a7253f89d99d5ee03ffec5ac77a78f862bfb53e0174af3390110f
asteria: 70ad11758e5c32c6abb385977c7999b041ca4e9c9bc7775b05941b8d
spacetime: edf8ee06686bf59f412c7c49ba13ff0270d2735ba879f8baf48f4d68
- src/Asteria/Validators.hs: embed plutus-applied.json (was
plutus.json, now redundant); rename `unappliedBlueprint` →
`appliedBlueprint`. The four script accessors (asteriaScript,
spacetimeScript, pelletScript, deployScript) now return
parameter-applied bytes ready for use.
Parameter values baked in:
admin_token = AssetClass { policy: 00..00 (28 zeros)
, name: "asteriaAdmin" }
ship_mint_lovelace_fee = 3_000_000
max_asteria_mining = 50
min_asteria_distance = 50
initial_fuel = 100
max_speed = Speed 1 30000
max_ship_fuel = 100
fuel_per_step = 5
Iteration 5 will replace admin_token's static value with a
bootstrap-time one-shot mint tied to a specific TxOutRef.
Verified: docker container's asteria_player_validators_loaded
event now reports the parameter-applied hashes above.
feat(asteria-player): apply parameters to validators (#56)
Iteration 4.
- aiken/apply-params.sh: chains `aiken blueprint apply` calls to
bake admin_token + game constants + cross-validator hashes into
the four asteria validators. Documents each parameter's CBOR
encoding (computed once with Python cbor2). Re-runnable when
parameters change.
- aiken/plutus-applied.json: the produced blueprint with all four
validators parameter-applied:
pellet: 13d2d459de8ad483d2958859fcf192ac90dfcf00ad92a4e78e870e6e
deploy: 019a7253f89d99d5ee03ffec5ac77a78f862bfb53e0174af3390110f
asteria: 70ad11758e5c32c6abb385977c7999b041ca4e9c9bc7775b05941b8d
spacetime: edf8ee06686bf59f412c7c49ba13ff0270d2735ba879f8baf48f4d68
- src/Asteria/Validators.hs: embed plutus-applied.json (was
plutus.json, now redundant); rename `unappliedBlueprint` →
`appliedBlueprint`. The four script accessors (asteriaScript,
spacetimeScript, pelletScript, deployScript) now return
parameter-applied bytes ready for use.
Parameter values baked in:
admin_token = AssetClass { policy: 00..00 (28 zeros)
, name: "asteriaAdmin" }
ship_mint_lovelace_fee = 3_000_000
max_asteria_mining = 50
min_asteria_distance = 50
initial_fuel = 100
max_speed = Speed 1 30000
max_ship_fuel = 100
fuel_per_step = 5
Iteration 5 will replace admin_token's static value with a
bootstrap-time one-shot mint tied to a specific TxOutRef.
Verified: docker container's asteria_player_validators_loaded
event now reports the parameter-applied hashes above.
Increase mempool capacity\nCopy MempoolCapacityBytesOverride from https://github.com/input-output-hk/ouroboros-leios/blob/ebc1f7c76b34e3d4f1b28485b720ed324633a6b3/demo/proto-devnet/config/config.yaml#L9
feat(asteria-player): vendor Aiken validators + Haskell loader (#56)
Iteration 3.
- components/asteria-player/aiken/: vendored from txpipe/asteria's
onchain/src — the four Aiken validators (asteria, spacetime,
pellet, deploy) plus their lib/ helpers and aiken.toml /
aiken.lock for deterministic builds.
- components/asteria-player/aiken/plutus.json: the unapplied
blueprint produced by `aiken build` from the vendored sources,
committed for review and so the Haskell layer can embed it
without an aiken-toolchain build dep at docker-image time.
- src/Asteria/Validators.hs: embedFile-based loader that decodes
plutus.json at compile time and exposes asteriaScript /
spacetimeScript / pelletScript / deployScript as Plutus V3
Script ConwayEra values.
- app/PlayerMain.hs: at startup, hashScript each validator and
emit asteria_player_validators_loaded_<id> sdk_reachable with
the four hashes in the details body — proves the load
machinery works end-to-end inside the running container.
The validators are still parameterized — they're not yet usable
on-chain. Iteration 4 will add an aiken blueprint apply step
(admin token, game constants, cross-validator hashes) and
replace the unapplied bytes; the player code already references
each validator by name so iteration 4 only swaps the JSON file.
Verified:
- nix build .#asteria-player succeeds.
- nix build .#docker-image && docker load produces a 158 MB image.
- docker compose up shows asteria_player_validators_loaded_<id>
events with the expected four script hashes
(69090085... / 443d84cd... / 74f43ee1... / 845cbd52...).
Merge pull request #749 from pragma-org/rk/preprod-sync
run e2e sync test until epoch 185 (was reduced from 182 to 176 due to regression)