@@ -6,9 +6,6 @@ module Parser where
6
6
{-# LANGUAGE OverloadedStrings #-}
7
7
#-}
8
8
9
- open import Leios.Foreign.Defaults 2 fzero
10
- open import Leios.Foreign.Types hiding (EndorserBlock)
11
-
12
9
{-# FOREIGN GHC
13
10
import Data.Word
14
11
import Data.Fixed
@@ -56,33 +53,52 @@ record Endorsement : Type where
56
53
57
54
data Event : Type where
58
55
Cpu : String → Time → String → Event
59
-
60
- IBSent EBSent VTBundleSent RBSent IBReceived EBReceived VTBundleReceived RBReceived :
61
- Maybe Node → Node → Maybe Bytes → Maybe Time → Maybe String → Maybe (List String) → Event
62
-
56
+ IBSent EBSent VTBundleSent RBSent IBReceived EBReceived VTBundleReceived RBReceived : Maybe Node → Node → Maybe Bytes → Maybe Time → Maybe String → Maybe (List String) → Event
63
57
IBEnteredState EBEnteredState VTBundleEnteredState RBEnteredState : String → String → Word64 → Event
64
-
65
58
IBGenerated : String → String → SlotNo → Maybe Bytes → Maybe Bytes → Maybe String → Event
66
-
67
59
EBGenerated : String → String → Word64 → Word64 → List BlockRef → Event
68
-
69
60
RBGenerated : String → Maybe String → Maybe Int → Word64 → Maybe Word64 → Maybe Endorsement → Maybe (List Endorsement) → Maybe Word64 → Event
70
-
71
61
VTBundleGenerated : String → String → Word64 → Word64 → Map String Word64 → Event
72
62
73
63
{-# COMPILE GHC Event = data Event (Cpu | IBSent | EBSent | VTBundleSent | RBSent | IBReceived | EBReceived | VTBundleReceived | RBReceived
74
- | IBEnteredState | EBEnteredState | VTBundleEnteredState | RBEnteredState
75
- | IBGenerated | EBGenerated | RBGenerated | VTBundleGenerated) #-}
64
+ | IBEnteredState | EBEnteredState | VTBundleEnteredState | RBEnteredState | IBGenerated | EBGenerated | RBGenerated | VTBundleGenerated) #-}
76
65
77
66
record TraceEvent : Type where
78
67
field time_s : Time
79
68
message : Event
80
69
81
70
{-# COMPILE GHC TraceEvent = data TraceEvent (TraceEvent) #-}
82
71
83
- -- FIXME: Implementation
84
- verifyTrace : List TraceEvent → Bool
85
- verifyTrace [] = false
86
- verifyTrace (_ ∷ _) = true
72
+ open import Leios.SpecStructure using (SpecStructure)
73
+ open import Leios.Trace.Verifier
74
+
75
+ open import Leios.Defaults 2 fzero using (st)
76
+ open import Leios.Short st
77
+
78
+ EventLog = List TraceEvent
79
+
80
+ traceEvent→action : TraceEvent → Maybe (Action × LeiosInput)
81
+ traceEvent→action record { message = Cpu x x₁ x₂ } = nothing
82
+ traceEvent→action record { message = IBSent x x₁ x₂ x₃ x₄ x₅ } = nothing
83
+ traceEvent→action record { message = EBSent x x₁ x₂ x₃ x₄ x₅ } = nothing
84
+ traceEvent→action record { message = VTBundleSent x x₁ x₂ x₃ x₄ x₅ } = nothing
85
+ traceEvent→action record { message = RBSent x x₁ x₂ x₃ x₄ x₅ } = nothing
86
+ traceEvent→action record { message = IBReceived x x₁ x₂ x₃ x₄ x₅ } = nothing
87
+ traceEvent→action record { message = EBReceived x x₁ x₂ x₃ x₄ x₅ } = nothing
88
+ traceEvent→action record { message = VTBundleReceived x x₁ x₂ x₃ x₄ x₅ } = nothing
89
+ traceEvent→action record { message = RBReceived x x₁ x₂ x₃ x₄ x₅ } = nothing
90
+ traceEvent→action record { message = IBEnteredState x x₁ x₂ } = nothing
91
+ traceEvent→action record { message = EBEnteredState x x₁ x₂ } = nothing
92
+ traceEvent→action record { message = VTBundleEnteredState x x₁ x₂ } = nothing
93
+ traceEvent→action record { message = RBEnteredState x x₁ x₂ } = nothing
94
+ traceEvent→action record { message = IBGenerated p _ s _ _ _ } = just (IB-Role-Action , SLOT)
95
+ traceEvent→action record { message = EBGenerated p _ s _ ibs } = just (EB-Role-Action , SLOT)
96
+ traceEvent→action record { message = RBGenerated x x₁ x₂ x₃ x₄ x₅ x₆ x₇ } = nothing
97
+ traceEvent→action record { message = VTBundleGenerated x x₁ x₂ x₃ x₄ } = just (V-Role-Action , SLOT)
98
+
99
+ verifyTrace : EventLog → Bool
100
+ verifyTrace l =
101
+ let αs = L.catMaybes $ L.map traceEvent→action l
102
+ in ¿ ValidTrace αs ¿ᵇ
87
103
88
104
{-# COMPILE GHC verifyTrace as verifyTrace #-}
0 commit comments