Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
8b3346c
Modify PerasCertDB (and to some extent, ChainDB) to allow snapshot of…
amesgen Aug 6, 2025
5657065
Replace hardcoded miniprotocol parameters by default ones in unstable…
tbagrel1 Aug 6, 2025
b12d4de
Introduce the (generic) ObjectDiffusion protocol, ObjectPool, and the…
tbagrel1 Aug 6, 2025
a840ac5
Introduce the PerasCertDiffusion protocol (instance of ObjectDiffusio…
tbagrel1 Aug 6, 2025
5d9e9b2
Wire-in the PerasCertDiffusion protocol in NodeToNode
tbagrel1 Aug 6, 2025
37e5bb8
Add codec for PerasCert and PerasCertDiffusion
tbagrel1 Sep 2, 2025
50def7b
Integrate `NodeToNodeV_16`
amesgen Sep 4, 2025
8bf583d
Peras: add a few `ShowProxy` instances
amesgen Sep 3, 2025
4b4f539
Adapt to removal of `initAgency`
amesgen Sep 4, 2025
bc75e37
Adapt to changed agency of `MsgDone`
amesgen Sep 4, 2025
3e23e6c
`O.C.Network.NodeToNode`: plumbing for Peras cert diffusion
amesgen Sep 3, 2025
d0f13ad
Add basic API for certificate validation
amesgen Sep 2, 2025
11d47de
Adapt the HFC time translation layer for Peras
geo2a Jul 22, 2025
7bd5d6d
Peras.SelectView: use fragment length instead of tip `BlockNo`
amesgen Sep 9, 2025
4b0aae5
Avoid exposing Peras boostPerCert in tests
agustinmista Sep 10, 2025
78bb0fa
Refactor ChainDB q-s-m test to carry gap blocks between commands
agustinmista Sep 10, 2025
d246270
Tweak generation frequencies in ChainDB q-s-m tests
agustinmista Sep 12, 2025
79e237b
Generate security parameter for ChainDB q-s-m test on the fly
agustinmista Sep 15, 2025
7da3375
Propagate feature flags down to NodeKernelArgs
agustinmista Oct 9, 2025
a5f5f3b
Bump ouroboros-network to match peras-staging/pr-5202
agustinmista Oct 13, 2025
9ce9a39
Break Idling into its own module
agustinmista Oct 6, 2025
11791ad
Introduce O.C.MiniProtocol.ObjectDiffusion.Inbound.State
agustinmista Oct 6, 2025
2f81272
Introduce PerasCertDiffusion type synonyms
agustinmista Oct 13, 2025
221ae99
Generalize chainSyncState to peerState in the GSM
agustinmista Oct 9, 2025
ccc68e9
Store NodeToNodeVersion in GSM peer state components
agustinmista Oct 9, 2025
ee039a1
Introduce O.C.Node.GSM.PeerState
agustinmista Oct 13, 2025
f2e90d6
Enhance GSM view with PerasCertDiffusion information
agustinmista Oct 13, 2025
d5a82bb
Define WithArrivalTime combinator
agustinmista Oct 15, 2025
50bcede
Tweak and extend Peras cert field projection typeclasses
agustinmista Oct 15, 2025
437f972
Wrap validated Peras certificates with arrival time
agustinmista Oct 15, 2025
a38b664
Revert "Peras.SelectView: use fragment length instead of tip `BlockNo`"
agustinmista Oct 29, 2025
b51669d
Disable EBB generation in ChainDB q-s-m tests when k>2
agustinmista Oct 29, 2025
5da78b6
Simplify HasPerasCertX field accessors
agustinmista Oct 27, 2025
3c34b71
Add onPerasRoundNo helper and Num instance
agustinmista Oct 27, 2025
a7d50e3
Add explainable boolean predicate evaluator
agustinmista Oct 27, 2025
a754eae
Introduce O.C.Peras.Params
agustinmista Oct 27, 2025
3688bc3
Move geometric into Test.Util.QuickCheck
agustinmista Oct 28, 2025
eef954f
Add pure Peras Voting rules
agustinmista Oct 27, 2025
9e0d3db
Store previous epoch nonce in PraosState
agustinmista Oct 29, 2025
c009de8
Store most recent cert in the PerasCertDB
agustinmista Nov 3, 2025
f462de1
Move current ObjectDiffusion implementation to `Ouroboros.Consensus.M…
tbagrel1 Nov 10, 2025
53fd6f7
Experimental implementation of ObjectDiffusion V2 (Inbound side)
tbagrel1 Nov 10, 2025
7219242
Add bench for `makeDecision` (ObjectDiffusion V2)
tbagrel1 Nov 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ index-state:
-- Bump this if you need newer packages from Hackage
, hackage.haskell.org 2025-09-26T20:57:57Z
-- Bump this if you need newer packages from CHaP
, cardano-haskell-packages 2025-10-01T14:54:25Z
, cardano-haskell-packages 2025-10-07T11:20:00Z

packages:
ouroboros-consensus
Expand Down Expand Up @@ -50,6 +50,12 @@ if impl (ghc >= 9.10)
-- https://github.com/phadej/regression-simple/pull/14
, regression-simple:base

allow-newer:
-- https://github.com/phadej/vec/issues/121
, ral:QuickCheck
, fin:QuickCheck
, bin:QuickCheck

source-repository-package
type: git
location: https://github.com/IntersectMBO/cardano-ledger
Expand Down Expand Up @@ -80,12 +86,14 @@ source-repository-package
eras/byron/ledger/impl
eras/byron/crypto

-- Backported version of https://github.com/IntersectMBO/ouroboros-network/pull/5161
-- Using https://github.com/IntersectMBO/ouroboros-network/tree/peras-staging/pr-5202-v2
source-repository-package
type: git
location: https://github.com/IntersectMBO/ouroboros-network
tag: 1385b53cefb81e79553b6b0252537455833ea9c4
--sha256: sha256-zZ7WsMfRs1fG16bmvI5vIh4fhQ8RGyEvYGLSWlrxpg0=
tag: peras-staging/pr-5202-v2
--sha256: sha256-vEO721Xab0RTVKFQFKal5VCV5y+OUzELo8+7Z8TETJQ=
subdir:
ouroboros-network
ouroboros-network-protocols
ouroboros-network-api
ouroboros-network
6 changes: 3 additions & 3 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,7 @@ byronEraParams genesis =
, eraSlotLength = fromByronSlotLength $ genesisSlotLength genesis
, eraSafeZone = HardFork.StandardSafeZone (2 * k)
, eraGenesisWin = GenesisWindow (2 * k)
, eraPerasRoundLength = HardFork.NoPerasEnabled
}
where
k = unNonZero $ maxRollbacks $ genesisSecurityParam genesis
Expand All @@ -345,6 +346,7 @@ byronEraParamsNeverHardForks genesis =
, eraSlotLength = fromByronSlotLength $ genesisSlotLength genesis
, eraSafeZone = HardFork.UnsafeIndefiniteSafeZone
, eraGenesisWin = GenesisWindow (2 * Gen.unBlockCount (Gen.configK genesis))
, eraPerasRoundLength = HardFork.NoPerasEnabled
}

instance HasHardForkHistory ByronBlock where
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,7 @@ instance
Map.fromList $
[ (NodeToNodeV_14, CardanoNodeToNodeVersion2)
, (NodeToNodeV_15, CardanoNodeToNodeVersion2)
, (NodeToNodeV_16, CardanoNodeToNodeVersion2)
]

supportedNodeToClientVersions _ =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ import Ouroboros.Consensus.Config
import Ouroboros.Consensus.HardFork.Abstract
import Ouroboros.Consensus.HardFork.Combinator.PartialConfig
import qualified Ouroboros.Consensus.HardFork.History as HardFork
import Ouroboros.Consensus.HardFork.History.EraParams (EraParams (..))
import Ouroboros.Consensus.HardFork.History.Util
import Ouroboros.Consensus.HardFork.Simple
import Ouroboros.Consensus.HeaderValidation
Expand Down Expand Up @@ -173,6 +174,8 @@ shelleyEraParams genesis =
, eraSlotLength = mkSlotLength $ SL.fromNominalDiffTimeMicro $ SL.sgSlotLength genesis
, eraSafeZone = HardFork.StandardSafeZone stabilityWindow
, eraGenesisWin = GenesisWindow stabilityWindow
, -- TODO(geo2a): enabled Peras conditionally in the Dijkstra era
eraPerasRoundLength = HardFork.NoPerasEnabled
}
where
stabilityWindow =
Expand All @@ -188,6 +191,7 @@ shelleyEraParamsNeverHardForks genesis =
, eraSlotLength = mkSlotLength $ SL.fromNominalDiffTimeMicro $ SL.sgSlotLength genesis
, eraSafeZone = HardFork.UnsafeIndefiniteSafeZone
, eraGenesisWin = GenesisWindow stabilityWindow
, eraPerasRoundLength = HardFork.NoPerasEnabled
}
where
stabilityWindow =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ instance SupportedNetworkProtocolVersion (ShelleyBlock proto era) where
Map.fromList
[ (NodeToNodeV_14, ShelleyNodeToNodeVersion1)
, (NodeToNodeV_15, ShelleyNodeToNodeVersion1)
, (NodeToNodeV_16, ShelleyNodeToNodeVersion1)
]
supportedNodeToClientVersions _ =
Map.fromList
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -993,11 +993,11 @@ instance Arbitrary History.EraEnd where
]

instance Arbitrary History.EraSummary where
arbitrary =
History.EraSummary
<$> arbitrary
<*> arbitrary
<*> arbitrary
-- Note: this generator may produce EraSummary with nonsensical bounds,
-- i.e. with existing PerasRoundNo at era start and Nothing for it at the end.
-- However, we only use this generator to check that the serialisation roundtrips,
-- and the internal structure of EraSummary is irrelevant for that.
arbitrary = History.EraSummary <$> arbitrary <*> arbitrary <*> arbitrary

instance (Arbitrary a, SListI xs) => Arbitrary (NonEmpty xs a) where
arbitrary = do
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ library
Ouroboros.Consensus.Node.Exit
Ouroboros.Consensus.Node.ExitPolicy
Ouroboros.Consensus.Node.GSM
Ouroboros.Consensus.Node.GSM.PeerState
Ouroboros.Consensus.Node.Genesis
Ouroboros.Consensus.Node.Recovery
Ouroboros.Consensus.Node.RethrowPolicy
Expand All @@ -77,6 +78,7 @@ library
build-depends:
base >=4.14 && <4.22,
bytestring >=0.10 && <0.13,
cardano-base,
cardano-slotting,
cborg ^>=0.2.2,
containers >=0.5 && <0.8,
Expand All @@ -97,8 +99,10 @@ library
random,
resource-registry ^>=0.1,
safe-wild-cards ^>=1.0,
semialign,
serialise ^>=0.2,
text,
these,
time,
transformers,
typed-protocols:{stateful, typed-protocols},
Expand Down
Loading