Skip to content

Commit

Permalink
Initial docs closing M1
Browse files Browse the repository at this point in the history
  • Loading branch information
uhbif19 committed Dec 15, 2023
1 parent 8b8072e commit a5d62e7
Show file tree
Hide file tree
Showing 4 changed files with 476 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
Define and reuse Cardano DApp logic via annotated CEM-machines, resulting in free implementations for:

* On-chain scripts
* Tx building/submission/resubmission on L1/L2/emulated testnet
* Tx building/submission/resubmission on L1/emulated testnet
* Tx parsing/indexing
* Automatically testing invariants
* Human-readable specs
Expand Down
43 changes: 43 additions & 0 deletions docs/arch_principles.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Constraints design

## Principles

* Generic compilation across: on-chain code,
offchain Tx construction and indexing backend
* Simple normalization and SMT conversion for:
* Equivalence checking
* Bi-simulation checking
* Constraints determine TxIn/Outs up to UTxO coin-selection
(we call it almost-determinacy)
@todo #3: wording for almost-determinacy
* Datum properties encoded as class types
* Common on-chain optimizations are perfomed if possible
* Constraints normalization, and CSE
* Best error short-cutting
* Common security problems prevention

## Potential obstacles

* Ease and optimality of backend compilation
* Robustnes of SMT conversion and overall normalization
* Possibility for parsing and correct offchain usage
of almost-determinacy
* Having enough information for Tx submit retrying strategies
* Desing for using custom Datum properties is not obvious

# CEM machine design

As it is done on top of constraints language,
all their principles and obstacles are affecting CEM as well.

## Principles

* State-machine is deterministic modulo coin-change
* Transaction can always be parsed back into SM transitions
* Potential non-deterministic on-chain optimizations
should not affect this principle.

## Potential obstacles

* Some scripts inexpressible by such model (as it happens in PAB)
* Sub-optimal code from determenistic transitions model
Loading

0 comments on commit a5d62e7

Please sign in to comment.