diff --git a/docu/Concepts/DLT/overview.md b/docu/Concepts/DLT/overview.md new file mode 100644 index 000000000..8a5461434 --- /dev/null +++ b/docu/Concepts/DLT/overview.md @@ -0,0 +1,67 @@ +# DLT-Connector Overview + +What the DLT Connector does roughly. + +- create transaction +- receive transactions from iota +- warmup, load missing transactions from iota on startup + +## create transaction +- called from backend with transaction details + - sender user | signing user (in case of contribution) + - uuid + - account nr | default = 1 + - community uuid + - recipient user + - uuid + - account nr | default = 1 + - community uuid + - amount + - memo + - type + - createdAt +- load or create accounts +- compose protobuf transaction +- derive correct private key for signing account and sign transaction +- validate transaction +- write transaction into transaction_recipes table +- send transaction to iota +- update iota message id in transaction_recipes table +- return to backend with iota message id + + +## receive transactions from iota +- listen on all registered community topics on iota +- make sure we have everything from milestone +- sort per community by iota milestone, createdAt ASC +- per message: + - deserialize to protobuf object + - validate + - if valid: + - calculate running_hash and account_balance + - write into confirmed_transactions + - if invalid: + - write into invalid_transactions + - send request to backend with final transaction data for comparison + - sender user | signing user (in case of contribution) + - uuid + - account nr + - community uuid + - recipient user + - uuid + - account nr + - community uuid + - amount + - memo + - createdAt + - confirmedAt + - type + - iota message id + - balance for createdAt + - decay for createdAt + +## warmup, load missing transactions from iota or Chronicle on startup +- read all iota message ids from all registered topics +- check if already exist +- load details for not existing message ids +- do for every message [receive](#receive-transactions-from-iota) \ No newline at end of file