Skip to content

Commit

Permalink
Initialize HeadParameters from InitTx
Browse files Browse the repository at this point in the history
  • Loading branch information
ch1bo committed Jun 8, 2021
1 parent 67fe5b8 commit e82e1e8
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 8 deletions.
2 changes: 1 addition & 1 deletion hydra-node/exe/hydra-node/Main.hs
Expand Up @@ -35,7 +35,7 @@ main = do
withMonitoring monitoringPort tracer' $ \tracer -> do
let env = Environment nodeId
eq <- createEventQueue
let headState = createHeadState [] (HeadParameters 3 []) SnapshotStrategy
let headState = createHeadState [] (HeadParameters 3 mempty) SnapshotStrategy
hh <- createHydraHead headState Ledger.mockLedger
oc <- createMockChainClient eq (contramap MockChain tracer)
withOuroborosHydraNetwork (show host, port) peers (putEvent eq . NetworkEvent) $ \hn -> do
Expand Down
11 changes: 6 additions & 5 deletions hydra-node/src/Hydra/HeadLogic.hs
Expand Up @@ -75,7 +75,7 @@ data HydraMessage tx
deriving (Eq, Show)

data OnChainTx
= InitTx (Set.Set ParticipationToken)
= InitTx (Set ParticipationToken)
| CommitTx ParticipationToken Natural
| CollectComTx
| CloseTx
Expand Down Expand Up @@ -115,7 +115,7 @@ type PendingCommits = Set ParticipationToken
-- | Contains at least the contestation period and other things.
data HeadParameters = HeadParameters
{ contestationPeriod :: DiffTime
, parties :: [Party]
, parties :: Set Party
}
deriving (Eq, Show)

Expand Down Expand Up @@ -166,9 +166,10 @@ update ::
Outcome tx
update Environment{party} ledger (HeadState p st) ev = case (st, ev) of
(InitState, ClientEvent (Init parties)) ->
newState (p{parties}) InitState [OnChainEffect (InitTx $ makeAllTokens parties)]
newState p InitState [OnChainEffect (InitTx $ makeAllTokens parties)]
(InitState, OnChainEvent (InitTx tokens)) ->
newState p (CollectingState tokens mempty) [ClientEffect ReadyToCommit]
let parties = Set.map thisToken tokens
in newState (p{parties}) (CollectingState tokens mempty) [ClientEffect ReadyToCommit]
--
(CollectingState remainingTokens _, ClientEvent (Commit amount)) ->
case findToken remainingTokens party of
Expand Down Expand Up @@ -210,7 +211,7 @@ update Environment{party} ledger (HeadState p st) ev = case (st, ev) of
Set.insert
otherParty
(fromMaybe Set.empty $ Map.lookup tx (signatures headState))
if sigs == Set.fromList (parties p)
if sigs == parties p
then
newState
p
Expand Down
2 changes: 1 addition & 1 deletion hydra-node/test/Hydra/BehaviorSpec.hs
Expand Up @@ -241,7 +241,7 @@ startHydraNode nodeId connectToChain = do
createHydraNode response = do
let env = Environment nodeId
eq <- createEventQueue
let headState = createHeadState [] (HeadParameters 3 []) SnapshotStrategy
let headState = createHeadState [] (HeadParameters 3 mempty) SnapshotStrategy
hh <- createHydraHead headState mockLedger
let hn' = HydraNetwork{broadcast = const $ pure ()}
let node = HydraNode{eq, hn = hn', hh, oc = OnChain (const $ pure ()), sendResponse = putMVar response, env}
Expand Down
3 changes: 2 additions & 1 deletion hydra-node/test/Hydra/HeadLogicSpec.hs
Expand Up @@ -7,6 +7,7 @@ import Cardano.Prelude
import Control.Monad.Fail (
fail,
)
import qualified Data.Set as Set
import Hydra.HeadLogic (
Environment (..),
Event (NetworkEvent),
Expand All @@ -31,7 +32,7 @@ import Test.Hspec (
spec :: Spec
spec = describe "Hydra Head Logic" $ do
it "confirms tx given it receives AckTx from all parties" $ do
let allParties = [1, 2, 3]
let allParties = Set.fromList [1, 2, 3]
reqTx = NetworkEvent $ MessageReceived $ ReqTx (ValidTx 1)
ackFrom1 = NetworkEvent $ MessageReceived $ AckTx 1 (ValidTx 1)
ackFrom2 = NetworkEvent $ MessageReceived $ AckTx 2 (ValidTx 1)
Expand Down

0 comments on commit e82e1e8

Please sign in to comment.