Skip to content

Commit 6d17279

Browse files
committed
Align InitObservatin further with OnInitTx
This allows us to define a backwards compatible JSON parser only using the HeadObservation type.
1 parent a1e45ca commit 6d17279

File tree

3 files changed

+17
-33
lines changed

3 files changed

+17
-33
lines changed

hydra-node/src/Hydra/Chain/Direct/Handlers.hs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -322,14 +322,8 @@ chainSyncHandler tracer callback getTimeHandle ctx localChainState =
322322
convertObservation :: TimeHandle -> HeadObservation -> Maybe (OnChainTx Tx)
323323
convertObservation TimeHandle{slotToUTCTime} = \case
324324
NoHeadTx -> Nothing
325-
Init InitObservation{headId, contestationPeriod, parties, seedTxIn, participants} ->
326-
pure
327-
OnInitTx
328-
{ headId
329-
, headSeed = txInToHeadSeed seedTxIn
330-
, headParameters = HeadParameters{contestationPeriod, parties}
331-
, participants
332-
}
325+
Init InitObservation{headId, headSeed, headParameters, participants} ->
326+
pure OnInitTx{headId, headSeed, headParameters, participants}
333327
Abort AbortObservation{headId} ->
334328
pure OnAbortTx{headId}
335329
Commit CommitObservation{headId, party, committed} ->

hydra-node/src/Hydra/Chain/Direct/State.hs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ import Hydra.Tx (
8787
deriveParty,
8888
getSnapshot,
8989
headIdToPolicyId,
90+
headSeedToTxIn,
9091
mkSimpleBlueprintTx,
9192
partyToChain,
9293
registryUTxO,
@@ -765,26 +766,21 @@ observeInit _ctx _allVerificationKeys tx = do
765766
let initialThreadUTxO = (mkTxIn tx 0, toCtxUTxOTxOut headOut)
766767
pure (toEvent observation, toState initialThreadUTxO observation)
767768
where
768-
toEvent InitObservation{contestationPeriod, parties, headId, seedTxIn, participants} =
769-
OnInitTx
770-
{ headId
771-
, headSeed = txInToHeadSeed seedTxIn
772-
, headParameters = HeadParameters{contestationPeriod, parties}
773-
, participants
774-
}
769+
toEvent InitObservation{headParameters, headId, headSeed, participants} =
770+
OnInitTx{headId, headSeed, headParameters, participants}
775771

776-
toState initialThreadUTxO InitObservation{parties, contestationPeriod, headId, seedTxIn} =
772+
toState initialThreadUTxO InitObservation{headParameters, headId, headSeed} =
777773
InitialState
778774
{ initialThreadOutput =
779775
InitialThreadOutput
780776
{ initialThreadUTxO
781-
, initialParties = partyToChain <$> parties
782-
, initialContestationPeriod = toChain contestationPeriod
777+
, initialParties = partyToChain <$> headParameters.parties
778+
, initialContestationPeriod = toChain headParameters.contestationPeriod
783779
}
784780
, initialInitials = initials
785781
, initialCommits = mempty
786782
, headId
787-
, seedTxIn
783+
, seedTxIn = fromJust $ headSeedToTxIn headSeed
788784
}
789785

790786
indexedOutputs = zip [0 ..] (txOuts' tx)

hydra-tx/src/Hydra/Tx/Init.hs

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ import Hydra.Contract.Initial qualified as Initial
1111
import Hydra.Contract.MintAction (MintAction (..))
1212
import Hydra.Ledger.Cardano.Builder (addTxInsSpending, mintTokens, unsafeBuildTransaction)
1313
import Hydra.Plutus (initialValidatorScript)
14-
import Hydra.Tx.ContestationPeriod (ContestationPeriod, fromChain, toChain)
15-
import Hydra.Tx.HeadId (HeadId, mkHeadId)
14+
import Hydra.Tx.ContestationPeriod (fromChain, toChain)
15+
import Hydra.Tx.HeadId (HeadId, HeadSeed, mkHeadId, txInToHeadSeed)
1616
import Hydra.Tx.HeadParameters (HeadParameters (..))
1717
import Hydra.Tx.OnChainId (OnChainId (..))
18-
import Hydra.Tx.Party (Party, partyFromChain, partyToChain)
18+
import Hydra.Tx.Party (partyFromChain, partyToChain)
1919
import Hydra.Tx.Utils (assetNameToOnChainId, findFirst, hydraHeadV1AssetName, mkHydraHeadV1TxName, onChainIdToAssetName)
2020

2121
-- * Construction
@@ -83,14 +83,9 @@ mkInitialOutput networkId seedTxIn participant =
8383
-- | Data which can be observed from an `initTx`.
8484
data InitObservation = InitObservation
8585
{ headId :: HeadId
86-
, -- XXX: This is cardano-specific, while headId, parties and
87-
-- contestationPeriod are already generic here. Check which is more
88-
-- convenient and consistent!
89-
seedTxIn :: TxIn
90-
, contestationPeriod :: ContestationPeriod
91-
, parties :: [Party]
92-
, -- XXX: Improve naming
93-
participants :: [OnChainId]
86+
, headSeed :: HeadSeed
87+
, headParameters :: HeadParameters
88+
, participants :: [OnChainId]
9489
}
9590
deriving stock (Show, Eq, Generic)
9691
deriving anyclass (ToJSON, FromJSON)
@@ -136,9 +131,8 @@ observeInitTx tx = do
136131
pure $
137132
InitObservation
138133
{ headId = mkHeadId pid
139-
, seedTxIn
140-
, contestationPeriod
141-
, parties
134+
, headSeed = txInToHeadSeed seedTxIn
135+
, headParameters = HeadParameters{contestationPeriod, parties}
142136
, participants = assetNameToOnChainId <$> mintedTokenNames pid
143137
}
144138
where

0 commit comments

Comments
 (0)