3.1 Protocol Requirements
For a protocol to integrate with the ASP system, it must satisfy the following requirements:
-
State Machine Representation
The protocol must be representable as a state machine with the following tuple:
Where:
- : Hash function to compute unique identifier of the protocol instance
- Implementation of a protocol in a specific chain (i.e. Contract deployed in ethereum) is an instance of a protocol
- The Scope function computes the unique identifier of the protocol instance
- I.e. Keccak256 Hash of (address, chainID, contractCode)
- : State space
- The agreed upon state space of the protocol
- : Input dictionary
- The agreed upon inputs that can trigger a state transition in the protocol
- : Output dictionary
- The agreed upon outputs that are returned by the state transition function of the protocol
- : Transition function,
- s = the agreed upon prestate satisfying S,
- s’ = the post state satisfying S,
- i = the state transition inputs satisfying I
- : State hash function,
- = the state of the protocol
- = reference to the state-transition event which can be a singular value or a tuple of values (i.e. block number, transaction number, log number)
- = the hash of the state and must be a unique identifier of the state at
- : Verification function,
- A function that can verify that is the pre-image of at satisfying the transition function
- : State comparator function,
- A function that can compare two states and return the difference between them.
- indicates a state transition
-
Deterministic State Transitions: The protocol must have deterministic state transitions to ensure consistent record generation.
-
Observable State: The protocol must expose sufficient information to reconstruct its state at any given epoch.
-
Unique Identifiers: Each protocol instance must have a unique identifier computable by the function.
-
Event Emission: The protocol should emit events for all state-changing operations to facilitate efficient monitoring.