Skip to content

Commit 7482343

Browse files
feat: add engine simulator with message passing and pretty printing (#355)
Implements a simulator function that steps from an initial network state, delivering messages and accumulating the delivered messages in a list, which can be processed into, for example, a message passing diagram. Also implements a nockma runnable instance and fixed bugs associated with sim implementaion. --------- Co-authored-by: Jonathan Cubides <[email protected]>
1 parent f2979bd commit 7482343

File tree

81 files changed

+3336
-850
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+3336
-850
lines changed

docs/arch/node/engines/commitment.juvix.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ maintaining the security of the underlying signing keys.
6060
```juvix
6161
CommitmentEngine : Type :=
6262
Engine
63-
CommitmentCfg
63+
CommitmentLocalCfg
6464
CommitmentLocalState
6565
CommitmentMailboxState
6666
CommitmentTimerHandle

docs/arch/node/engines/commitment_behaviour.juvix.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ CommitmentActionArguments : Type := List CommitmentActionArgument;
158158
```juvix
159159
CommitmentAction : Type :=
160160
Action
161-
CommitmentCfg
161+
CommitmentLocalCfg
162162
CommitmentLocalState
163163
CommitmentMailboxState
164164
CommitmentTimerHandle
@@ -175,7 +175,7 @@ CommitmentActionArguments : Type := List CommitmentActionArgument;
175175
```juvix
176176
CommitmentActionInput : Type :=
177177
ActionInput
178-
CommitmentCfg
178+
CommitmentLocalCfg
179179
CommitmentLocalState
180180
CommitmentMailboxState
181181
CommitmentTimerHandle
@@ -203,7 +203,7 @@ CommitmentActionArguments : Type := List CommitmentActionArgument;
203203
```juvix
204204
CommitmentActionExec : Type :=
205205
ActionExec
206-
CommitmentCfg
206+
CommitmentLocalCfg
207207
CommitmentLocalState
208208
CommitmentMailboxState
209209
CommitmentTimerHandle
@@ -242,11 +242,11 @@ commitAction
242242
case getEngineMsgFromTimestampedTrigger tt of {
243243
| some emsg :=
244244
case emsg of {
245-
| EngineMsg.mk@{msg := Anoma.PreMsg.MsgCommitment (CommitmentMsg.Request request)} :=
245+
| EngineMsg.mk@{msg := Anoma.Msg.Commitment (CommitmentMsg.Request request)} :=
246246
let
247247
signedData := Signer.sign
248-
(CommitmentCfg.signer (EngineCfg.cfg cfg))
249-
(CommitmentCfg.backend (EngineCfg.cfg cfg))
248+
(CommitmentLocalCfg.signer (EngineCfg.cfg cfg))
249+
(CommitmentLocalCfg.backend (EngineCfg.cfg cfg))
250250
(RequestCommitment.data request);
251251
responseMsg := ReplyCommitment.mkReplyCommitment@{
252252
commitment := signedData;
@@ -259,7 +259,7 @@ commitAction
259259
sender := getEngineIDFromEngineCfg cfg;
260260
target := EngineMsg.sender emsg;
261261
mailbox := some 0;
262-
msg := Anoma.PreMsg.MsgCommitment (CommitmentMsg.Reply responseMsg)
262+
msg := Anoma.Msg.Commitment (CommitmentMsg.Reply responseMsg)
263263
}
264264
];
265265
timers := [];
@@ -292,7 +292,7 @@ commitActionLabel : CommitmentActionExec := ActionExec.Seq [ commitAction ];
292292
```juvix
293293
CommitmentGuard : Type :=
294294
Guard
295-
CommitmentCfg
295+
CommitmentLocalCfg
296296
CommitmentLocalState
297297
CommitmentMailboxState
298298
CommitmentTimerHandle
@@ -311,7 +311,7 @@ commitActionLabel : CommitmentActionExec := ActionExec.Seq [ commitAction ];
311311
```juvix
312312
CommitmentGuardOutput : Type :=
313313
GuardOutput
314-
CommitmentCfg
314+
CommitmentLocalCfg
315315
CommitmentLocalState
316316
CommitmentMailboxState
317317
CommitmentTimerHandle
@@ -328,7 +328,7 @@ commitActionLabel : CommitmentActionExec := ActionExec.Seq [ commitAction ];
328328
```juvix
329329
CommitmentGuardEval : Type :=
330330
GuardEval
331-
CommitmentCfg
331+
CommitmentLocalCfg
332332
CommitmentLocalState
333333
CommitmentMailboxState
334334
CommitmentTimerHandle
@@ -348,12 +348,12 @@ Condition
348348
```juvix
349349
commitGuard
350350
(tt : TimestampedTrigger CommitmentTimerHandle Anoma.Msg)
351-
(cfg : EngineCfg CommitmentCfg)
351+
(cfg : CommitmentCfg)
352352
(env : CommitmentEnv)
353353
: Option CommitmentGuardOutput :=
354354
case getEngineMsgFromTimestampedTrigger tt of {
355355
| some EngineMsg.mk@{
356-
msg := Anoma.PreMsg.MsgCommitment (CommitmentMsg.Request _);
356+
msg := Anoma.Msg.Commitment (CommitmentMsg.Request _);
357357
} := some GuardOutput.mk@{
358358
action := commitActionLabel;
359359
args := [];
@@ -371,7 +371,7 @@ commitGuard
371371
```juvix
372372
CommitmentBehaviour : Type :=
373373
EngineBehaviour
374-
CommitmentCfg
374+
CommitmentLocalCfg
375375
CommitmentLocalState
376376
CommitmentMailboxState
377377
CommitmentTimerHandle

docs/arch/node/engines/commitment_config.juvix.md

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ tags:
1818
import prelude open;
1919
import arch.node.engines.commitment_messages open;
2020
import arch.system.identity.identity as Identity;
21+
import arch.system.identity.identity as Identity;
2122
import arch.node.types.engine open;
2223
import arch.node.types.messages open;
2324
import arch.node.types.identities open;
@@ -29,20 +30,20 @@ tags:
2930

3031
The commitment engine configuration contains static information for commitment engine instances, namely the signer and the backend.
3132

32-
## The Commitment Configuration
33+
## The Commitment Local Configuration
3334

34-
The configuration of a Commitment Engine instance includes the identity's signing capabilities.
35+
### `CommitmentLocalCfg`
3536

36-
### `CommitmentCfg`
37+
The type for engine-specific local configuration.
3738

38-
<!-- --8<-- [start:CommitmentCfg] -->
39+
<!-- --8<-- [start:CommitmentLocalCfg] -->
3940
```juvix
40-
type CommitmentCfg := mk@{
41+
type CommitmentLocalCfg := mk@{
4142
signer : Identity.Signer Backend Signable Commitment;
4243
backend : Backend;
4344
};
4445
```
45-
<!-- --8<-- [end:CommitmentCfg] -->
46+
<!-- --8<-- [end:CommitmentLocalCfg] -->
4647

4748
???+ code "Arguments"
4849

@@ -52,17 +53,29 @@ type CommitmentCfg := mk@{
5253
`backend`:
5354
: The backend to use for signing.
5455

56+
## The Commitment Configuration
57+
58+
### `CommitmentCfg`
59+
60+
<!-- --8<-- [start:CommitmentCfg] -->
61+
```juvix
62+
CommitmentCfg : Type :=
63+
EngineCfg
64+
CommitmentLocalCfg;
65+
```
66+
<!-- --8<-- [end:CommitmentCfg] -->
67+
5568
#### Instantiation
5669

5770
<!-- --8<-- [start:commitmentCfg] -->
5871
```juvix extract-module-statements
5972
module commitment_config_example;
6073
61-
commitmentCfg : EngineCfg CommitmentCfg :=
74+
commitmentCfg : CommitmentCfg :=
6275
EngineCfg.mk@{
6376
node := PublicKey.Curve25519PubKey "0xabcd1234";
6477
name := "commitment";
65-
cfg := CommitmentCfg.mk@{
78+
cfg := CommitmentLocalCfg.mk@{
6679
signer := Identity.Signer.mkSigner@{
6780
sign := \{_ x := Signature.Ed25519Signature "0xabcd1234"};
6881
};

docs/arch/node/engines/decryption.juvix.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ decryption keys.
6464
```juvix
6565
DecryptionEngine : Type :=
6666
Engine
67-
DecryptionCfg
67+
DecryptionLocalCfg
6868
DecryptionLocalState
6969
DecryptionMailboxState
7070
DecryptionTimerHandle

docs/arch/node/engines/decryption_behaviour.juvix.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ DecryptionActionArguments : Type := List DecryptionActionArgument;
168168
```juvix
169169
DecryptionAction : Type :=
170170
Action
171-
DecryptionCfg
171+
DecryptionLocalCfg
172172
DecryptionLocalState
173173
DecryptionMailboxState
174174
DecryptionTimerHandle
@@ -185,7 +185,7 @@ DecryptionActionArguments : Type := List DecryptionActionArgument;
185185
```juvix
186186
DecryptionActionInput : Type :=
187187
ActionInput
188-
DecryptionCfg
188+
DecryptionLocalCfg
189189
DecryptionLocalState
190190
DecryptionMailboxState
191191
DecryptionTimerHandle
@@ -215,7 +215,7 @@ DecryptionActionArguments : Type := List DecryptionActionArgument;
215215
```juvix
216216
DecryptionActionExec : Type :=
217217
ActionExec
218-
DecryptionCfg
218+
DecryptionLocalCfg
219219
DecryptionLocalState
220220
DecryptionMailboxState
221221
DecryptionTimerHandle
@@ -254,12 +254,12 @@ decryptAction
254254
case getEngineMsgFromTimestampedTrigger tt of {
255255
| some emsg :=
256256
case EngineMsg.msg emsg of {
257-
| Anoma.PreMsg.MsgDecryption (DecryptionMsg.Request request) :=
257+
| Anoma.Msg.Decryption (DecryptionMsg.Request request) :=
258258
let
259259
decryptedData :=
260260
Decryptor.decrypt
261-
(DecryptionCfg.decryptor (EngineCfg.cfg cfg))
262-
(DecryptionCfg.backend (EngineCfg.cfg cfg))
261+
(DecryptionLocalCfg.decryptor (EngineCfg.cfg cfg))
262+
(DecryptionLocalCfg.backend (EngineCfg.cfg cfg))
263263
(RequestDecryption.data request);
264264
responseMsg := case decryptedData of {
265265
| none := ReplyDecryption.mkReplyDecryption@{
@@ -278,7 +278,7 @@ decryptAction
278278
sender := getEngineIDFromEngineCfg cfg;
279279
target := EngineMsg.sender emsg;
280280
mailbox := some 0;
281-
msg := Anoma.PreMsg.MsgDecryption (DecryptionMsg.Reply responseMsg)
281+
msg := Anoma.Msg.Decryption (DecryptionMsg.Reply responseMsg)
282282
}
283283
];
284284
timers := [];
@@ -309,7 +309,7 @@ decryptActionLabel : DecryptionActionExec := ActionExec.Seq [ decryptAction ];
309309
```juvix
310310
DecryptionGuard : Type :=
311311
Guard
312-
DecryptionCfg
312+
DecryptionLocalCfg
313313
DecryptionLocalState
314314
DecryptionMailboxState
315315
DecryptionTimerHandle
@@ -326,7 +326,7 @@ decryptActionLabel : DecryptionActionExec := ActionExec.Seq [ decryptAction ];
326326
```juvix
327327
DecryptionGuardOutput : Type :=
328328
GuardOutput
329-
DecryptionCfg
329+
DecryptionLocalCfg
330330
DecryptionLocalState
331331
DecryptionMailboxState
332332
DecryptionTimerHandle
@@ -345,7 +345,7 @@ decryptActionLabel : DecryptionActionExec := ActionExec.Seq [ decryptAction ];
345345
```juvix
346346
DecryptionGuardEval : Type :=
347347
GuardEval
348-
DecryptionCfg
348+
DecryptionLocalCfg
349349
DecryptionLocalState
350350
DecryptionMailboxState
351351
DecryptionTimerHandle
@@ -365,12 +365,12 @@ Condition
365365
```juvix
366366
decryptGuard
367367
(tt : TimestampedTrigger DecryptionTimerHandle Anoma.Msg)
368-
(cfg : EngineCfg DecryptionCfg)
368+
(cfg : DecryptionCfg)
369369
(env : DecryptionEnv)
370370
: Option DecryptionGuardOutput :=
371371
case getEngineMsgFromTimestampedTrigger tt of {
372372
| some EngineMsg.mk@{
373-
msg := Anoma.PreMsg.MsgDecryption (DecryptionMsg.Request _);
373+
msg := Anoma.Msg.Decryption (DecryptionMsg.Request _);
374374
} := some GuardOutput.mk@{
375375
action := decryptActionLabel;
376376
args := []
@@ -388,7 +388,7 @@ decryptGuard
388388
```juvix
389389
DecryptionBehaviour : Type :=
390390
EngineBehaviour
391-
DecryptionCfg
391+
DecryptionLocalCfg
392392
DecryptionLocalState
393393
DecryptionMailboxState
394394
DecryptionTimerHandle

docs/arch/node/engines/decryption_config.juvix.md

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ tags:
2020
import arch.node.types.engine open;
2121
import arch.node.types.messages open;
2222
import arch.system.identity.identity as Identity;
23+
import arch.system.identity.identity as Identity;
2324
import arch.node.types.identities open;
2425
```
2526

@@ -29,21 +30,23 @@ tags:
2930

3031
The decryption engine configuration contains static information for decryption engine instances.
3132

32-
## The Decryption Configuration
33+
## The Decryption Local Configuration
3334

3435
The configuration of a Decryption Engine instance includes the identity's
3536
decryption capabilities.
3637

37-
### `DecryptionCfg`
38+
### `DecryptionLocalCfg`
3839

39-
<!-- --8<-- [start:DecryptionCfg] -->
40+
The type for engine-specific local configuration.
41+
42+
<!-- --8<-- [start:DecryptionLocalCfg] -->
4043
```juvix
41-
type DecryptionCfg := mk@{
44+
type DecryptionLocalCfg := mk@{
4245
decryptor : Identity.Decryptor Backend Plaintext Ciphertext;
4346
backend : Backend;
4447
};
4548
```
46-
<!-- --8<-- [end:DecryptionCfg] -->
49+
<!-- --8<-- [end:DecryptionLocalCfg] -->
4750

4851
???+ code "Arguments"
4952

@@ -53,17 +56,29 @@ type DecryptionCfg := mk@{
5356
`backend`:
5457
: The backend to use for decryption.
5558

56-
### Instantiation
59+
## The Decryption Configuration
60+
61+
### `DecryptionCfg`
62+
63+
<!-- --8<-- [start:DecryptionCfg] -->
64+
```juvix
65+
DecryptionCfg : Type :=
66+
EngineCfg
67+
DecryptionLocalCfg;
68+
```
69+
<!-- --8<-- [end:DecryptionCfg] -->
70+
71+
#### Instantiation
5772

5873
<!-- --8<-- [start:decryptionCfg] -->
5974
```juvix extract-module-statements
6075
module decryption_config_example;
6176
62-
decryptionCfg : EngineCfg DecryptionCfg :=
77+
decryptionCfg : DecryptionCfg :=
6378
EngineCfg.mk@{
6479
node := PublicKey.Curve25519PubKey "0xabcd1234";
6580
name := "decryption";
66-
cfg := DecryptionCfg.mk@{
81+
cfg := DecryptionLocalCfg.mk@{
6782
decryptor := Identity.Decryptor.mkDecryptor@{
6883
decrypt := \{_ x := some x};
6984
};

docs/arch/node/engines/encryption.juvix.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ recipient, but also to other identities with approved access rights.
8080
```juvix
8181
EncryptionEngine : Type :=
8282
Engine
83-
EncryptionCfg
83+
EncryptionLocalCfg
8484
EncryptionLocalState
8585
EncryptionMailboxState
8686
EncryptionTimerHandle

0 commit comments

Comments
 (0)