Skip to content

Determinism? #441

Open
Open
@MatejVukosav

Description

@MatejVukosav

Discussed in https://github.com/orgs/calimero-network/discussions/435

Originally posted by miraclx May 12, 2024
The general idea was that with #186, we're able to be non-deterministic while executing state mutation calls on the author node, and with #194, all those non-deterministic data would be baked into the broadcast to aid other nodes in arriving at the same state.

One interesting case I just thought about is - for example, time dependence.

Say, at the start of some function call, I get the current timestamp, run through a couple of loops, pull the current timestamp, compute the difference, and then commit that to the state.

Naturally, I'd expect some variance with something like this being executed on different machines.

This is of course solved by #194 tracking all the non-deterministic sources to eventually be baked into the transaction.

We need to investigate how this plays with #190.

Might come down to changing our update propagation model to distributing the diff of the "state update" instead of just the "state transition", worth investigating. #272

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions