Wiki source code of B210 Decentralized Systems

Version 63.1 by Thomas Schwotzer on 2024/03/21 10:08

Show last authors
1 Es ist schon erstaunlich. Das Internet geht auf eine Initiative aus den 1960ern zurück, ein resilientes Netzwerk aufzubauen, das buchstäblich dem Angriff einer feindlichen Macht widerstehen könne [1]. In der Gegenwart sehen wir, dass das dominierende Architekturprinzip von verteilten IT-Anwendungen das Client-Server-Prinzip ist. Das ist exakt das Prinzip, dass wir (als Community) mit dem Internet überwinden wollten. Lief dann wohl eher so mittel. Distributed Denial-of-Service (DDoS) Attacken funktionieren nur auf zentralen Systemen. Wir gehen nur am Rande der Frage nach, warum so viele Systeme auf diesen so leicht verletzbaren Prinzip basieren. Nur in Stichworten:
2
3 * Basis der Geschäftspläne (Wenn Nutzer:innendaten das eigentliche Produkt einer App sind, dann braucht man die an einer Stelle.)
4 * Einfachheit (zentrale App lassen sich halt enorm einfach programmieren und wer mag schon gern IT studieren? Eben. Echt schwer auch.)
5
6 Umgekehrt gilt das gleiche. Ein pur dezentrales System bietet keinen zentralen Speicher für Nutzer:innendaten und damit funktionieren die leider üblichen Geschäftsmodelle des //E-Commerce// nicht. Es gibt dezentrale Systeme; die Anzahl wächst und wir sollten uns damit beschäftigen. Cloud-Systeme können dezentral sein. Blockchain-Anwendungen sind stark diskutiert; sie erscheinen als Goldstandard verteilter Systeme, vor allem bei denen die die Grundlagen so gar nicht verstehen (wollen). In social networks werden dezentrale Alternativen zu den allseits bekannte pur zentralen populärer. Es ist schon erstaunlich, dass in solchen Systemen die alten Geschäftsmodelle dann doch funktionieren. Wie das?
7
8 Hier sollten wir aus IT-Sicht genauer hinschauen:
9
10 * Kann man noch von einer dezentralen App sprechen, wenn nur //eine// Entität //alle Peers// eines P2P Systems betreibt. Technisch: ja - aus Sicht der Anwendung?
11 * Man kann viele P2P System durchaus auch mit nur einem Peer betreiben. Ist das dezentral?
12 * Viele Blockchain-Apps (Wallet) sind keine Peers, sondern vertrauen einem Peer über das mit dem P2P System kommuniziert wird. Was ist hier dezentral?
13 * Das gilt auch für viele (praktisch alle) dezentralen social networks.
14
15 Wissen hilft.
16
17 In diesem Kurs werden wir uns mit den Grundlagen dezentraler Systeme beschäftigen. Teilnehmer:innen werden danach verstehen wie diese Systeme funktionieren, sie wären in der Lage solche Systeme selber zu implementieren und Schwachstellen zu identifizieren. Sie kennen die Grundlagen der Programmierung solcher Systeme, wenn sie denn eine API anbieten.
18
19 Aus IT-Sicht sind es vor allem folgende Dinge, an denen sich die Unterschiede zwischen festmachen lassen und die wir diskutieren werden:
20
21 * Datenverteilung: Wie werden Daten in einem System verteilt, dass keine zentrale Einheit hat.
22 * Security: Die erste Anwendung der Blockchain war die Bereitstellung eines digitalen dezentralen Geldes. Unverfälschbarkeit, Nicht-Abstreitbarkeit sind offenbar wichtige Themen.
23 * APIs. Technik ist das eine, deren Anwendbarkeit das andere. Gerade auf diesem Gebiet gibt es viele Anwendungen und wenige Framework mit denen man programmieren kann.
24
25 Auch in diesem Kurs folge ich strikt meinem Credo: Man versteht eine IT-Sache erst dann richtig, wenn man sie einmal programmiert hat. Wir werden daher in den Übungen ein P2P System implementieren, wahlweise eine Blockchain oder ein DHT-System; mal schauen. Ich meine damit nicht, dass wir uns z.B. Ethereum her nehmen und ein paar DApps zusammen klicken. Nein. Das ist enorm simpel, deshalb reden auch so viele so viel über P2P Systeme was leider nur manchmal nicht nur falsch ist.
26
27 Wir werden so etwas wie Ethereum (stark vereinfacht) re-implementieren. Das schafft man in einem Semester. Danach wissen Sie wirklich Bescheid. Sie müssen das nicht machen; ist ein Wahlpflichtmodul. Es ist halt schon eher [[die rote Pille>>url:https://de.wikipedia.org/wiki/Matrix_%28Film%29||shape="rect"]].
28
29 Im Laufe des Kurses werden wir schauen wie sich Ihre Interessen entwickeln. Wenn sich genug finden, werde wir ein oder max zwei Themen definieren, die sie im folgende Semester im Rahmen des Projektstudiums durchführen können. Sie haben dann alle Grundlagen und können auch ein nicht triviales Projekt ablegen. Wenn Sie mögen. Und dann kann man auch sehr gern eine DApp zusammen schrauben. Denn nun wissen Sie was Sie da machen.
30
31 Einige [[Videos finden Sie in unserer Mediathek>>url:https://mediathek.htw-berlin.de/album/manageMedias/type/user/aid/329||shape="rect"]]. Das wird ausgebaut.
32
33 Prüfungsrelevante Leistungen:
34
35 * **Semesterbegleitendes Projekt (50%)** - Sie implementieren ein P2P System und beweisen, dass es geht. Ähnlich wie in [[Betriebssystemen und Netzwerken>>doc:fb4mobileapplicatio.Lehre.FB4 Angewandte Informatik.B23 Betriebssysteme und Netzwerke.WebHome]]: Wenn Sie das gesamte Semester kontinuierlich an dem Projekt arbeiten ist das kein Aufwand. Wenn nicht wird es ein echtes Problem.
36 * **Klausur (50%)** - im Prüfungszeitraum gibt es eine schriftliche Klausur.
37
38 Das folgende ist nur ein Plan. Inhalt und Reihenfolge der Themen können sich jederzeit ändern. Ich mache im laufenden Semester rechtzeitig darauf aufmerksam, welche nächsten Schritte wir tun.
39
40 (% class="wrapped" %)
41 |=(((
42 #
43 )))|=(((
44 Lehreinheit
45 )))|=(((
46 Inhalt
47 )))|=(((
48 Links auch zum Selbststudium
49 )))|=(((
50 Übung
51 )))
52 |(((
53 **1**
54 )))|(((
55 **Einstieg**
56 )))|(((
57 Was ist Dezentralität. Wir reden über das große Bild und skizzieren die Herausforderungen. Wir reden über Baran, das Internet, MANETs, Gossipprotokolle und den ganzen Rest.
58 )))|(((
59 [1]
60 )))|(((
61 Wir setzen unser Projekt auf das wir im Laufe des Semesters zu einem P2P System ausbauen. Und dann machen wir in jeder Übung weiter.
62 )))
63 |(((
64 **2**
65 )))|(((
66 **DHT**
67 )))|(((
68 Distributed Hash Table - ein P2P Prinzip von mehreren.
69 )))|(((
70 [4]
71 )))|(((
72 \\
73 )))
74 |(((
75 \\
76 )))|(((
77 \\
78 )))|(((
79 \\
80 )))|(((
81 \\
82 )))|(((
83 \\
84 )))
85 |(((
86 \\
87 )))|(((
88 \\
89 )))|(((
90 \\
91 )))|(((
92 \\
93 )))|(((
94 \\
95 )))
96 |(((
97 3
98 )))|(((
99 PKI / Enryption, PGP
100 )))|(((
101 Wiederholung. Ich muss sicher sein, dass Sie stabile Kenntnisse dazu haben. Wir werden damit programmieren.
102 )))|(((
103 \\
104 )))|(((
105 Wir schauen uns an, wie wir eine PKI in unser System einbinden können.
106 )))
107 |(((
108 4
109 )))|(((
110 Merkle-Tree
111 )))|(((
112 Das ist die Basis, um Blockchain, konkret Bitcoin wirklich zu verstehen. Verstehen Sie das, verstehen Sie, ob und wann ein BC sicher ist und ob und wie man die hacken kann.
113 )))|(((
114 [10]
115 )))|(((
116 (% class="content-wrapper" %)
117 (((
118 \\
119 )))
120 )))
121 |(((
122 \\
123 )))|(((
124 digitale Währungen
125 )))|(((
126 Die Grundlagen. Es geht eigentlich nur darum, dass Sie das Double-Spending-Problem verstehen. Ich meine, wirklich verstehen. Wir wollen und werden es lösen. Theoretisch und vermutlich in unserem semesterbegleitenden Projekt.
127 )))|(((
128 \\
129 )))|(((
130 \\
131 )))
132 |(((
133 \\
134 )))|(((
135 Blockchain / Bitcoin
136 )))|(((
137 Noch ein P2P Prinzip von mehreren.
138 )))|(((
139 [8], [9]
140 )))|(((
141 \\
142 )))
143 |(((
144 \\
145 )))|(((
146 Ethereum, Solana
147 )))|(((
148 \\
149 )))|(((
150 [2], [3]
151 )))|(((
152 \\
153 )))
154 |(((
155 \\
156 )))|(((
157 Dezentrale Online Social Network (DOSN); Mastodon und Co.)
158 )))|(((
159 Die basieren praktisch alle auf DHT. Was schon erstaunlich ist, weil die Technologie nun gar nicht so perfekt dafür ist, aber sie ist das einzige was wir zur Hand haben.
160 )))|(((
161 [7]
162 )))|(((
163 \\
164 )))
165 |(((
166 \\
167 )))|(((
168 Matrix
169 )))|(((
170 Das dezentrale Systeme
171 )))|(((
172 [6]
173 )))|(((
174 \\
175 )))
176 |(((
177 \\
178 )))|(((
179 ASAP/Shark
180 )))|(((
181 \\
182 )))|(((
183 \\
184 )))|(((
185 \\
186 )))
187 |(((
188 \\
189 )))|(((
190 Synchronisation dezentraler Daten.
191 )))|(((
192 \\
193 )))|(((
194 \\
195 )))|(((
196 \\
197 )))
198 |(((
199 \\
200 )))|(((
201 MANETs
202 )))|(((
203 Ein P2P Prinzip von mehreren nun auf Layer2. Mal schauen, ob das zeitlich und thematisch in den Kurs passt.
204 )))|(((
205 \\
206 )))|(((
207 \\
208 )))
209 |(((
210 \\
211 )))|(((
212 \\
213 )))|(((
214 \\
215 )))|(((
216 \\
217 )))|(((
218 \\
219 )))
220 |(((
221 \\
222 )))|(((
223 Ausblick (nicht klausurrelevant)
224 )))|(((
225 Verteile Vokabulare - verteilte Agentensysteme. Letzteres ist eine spannende Technologie, die die Entwicklung von Java inspirierte, die aber praktisch niemand mehr benutzt. Schade eigentlich. Das Problem der verteilten Vokabulare bleibt und wird gerade im Zeitalter IoT praktisch sehr relevant. Wir reden von einen Web of Things oder gar einem Semantic Web of Things.
226 )))|(((
227 \\
228 )))|(((
229 \\
230 )))
231
232 \\
233
234 \\
235
236 == {{id name="B210DecentralizedSystems-Literatur"/}}Literatur ==
237
238 [1] Paul Baran: [[//On Distributed Communications: 1. Introduction to Distributed Communications Networks//>>url:https://www.rand.org/content/dam/rand/pubs/research_memoranda/2006/RM3420.pdf||shape="rect"]]. Rand Corperation, 1964
239
240 [2] [[Solana>>url:https://solana.com||shape="rect"]]
241
242 [3] [[Ethereum>>url:https://ethereum.org||shape="rect"]]
243
244 [4] Petar Maymounkov and David Mazieres: [[Kademlia: A Peer-to-peer Information System Based on the XOR Metric>>url:http://www.sharksystem.net/htw/DS/kpos.pdf||shape="rect"]]
245
246 [5] Satoshi Nakamoto: Bitcoin: [[A Peer-to-Peer Electronic Cash System>>url:https://bitcoin.org/bitcoin.pdf||shape="rect"]]
247
248 [6] [[Matrix: Open Network for secure, decentralized communication>>url:https://matrix.org/||shape="rect"]]
249
250 [7] [[Mastodon: Decentralized Social Network>>url:https://joinmastodon.org/||shape="rect"]]
251
252 [8] [[Nour El Madhoun, Ioanna Dionysiou, Emmanuel Bertin: Blockchain and Smart-Contract Technologies for Innovative Applications>>url:https://link.springer.com/book/10.1007/978-3-031-50028-2||shape="rect"]]
253 (Aus dem HTW-Netz heraus ist das E-Book für Studierenden frei zugänglich.)
254
255 [9] [[Sami Basly>>url:https://link.springer.com/book/10.1007/978-3-031-49515-1#author-1-0||shape="rect"]]: [[Decentralized Finance>>url:https://link.springer.com/book/10.1007/978-3-031-49515-1||shape="rect"]]
256 (Aus dem HTW-Netz heraus ist das E-Book für Studierenden frei zugänglich.)
257
258 [10] [[Hash-Baum / Merkle-Tree>>url:https://de.wikipedia.org/wiki/Hash-Baum||shape="rect"]]
259
260 [11] (% class="details-header__info--2VnMWGSh" %)[[(% class="details-header__info--2VnMWGSh search" %)US4309569(% class="details-header__info--2VnMWGSh" %)A>>url:https://worldwide.espacenet.com/patent/search?q=pn%3DUS4309569A||shape="rect" class="h4--nqnqNMt6 details-header__section--link--5GeGqAWx"]](%%) (% class="details-header__info--2VnMWGSh h2--2VrrSjFb" lang="en" %)Method of providing digital signatures (inventor: Merkle, Ralph C.), published Jan, 5th1982
261
262
263 (% class="details-header__info--2VnMWGSh h2--2VrrSjFb" lang="en" %)[10] Abdollah Amirkhani, Amir Hossein Barshooi: [[Consensus in multi‑agent systems: a review>>url:https://link.springer.com/article/10.1007/s10462-021-10097-x||shape="rect"]]
264
265
266 (% class="details-header__info--2VnMWGSh h2--2VrrSjFb" lang="en" %)[[ >>url:https://link.springer.com/article/10.1007/s10462-021-10097-x||shape="rect"]]
267
268 \\
269
270 == {{id name="B210DecentralizedSystems-Links"/}}Links ==
271
272 [[https:~~/~~/www.freepastry.org/>>url:https://www.freepastry.org/||shape="rect"]]