[Freifunk Franken] Blockchains für das Freifunk-Netz
Florian Schimmer
f.schimmer at posteo.de
Mi Mai 10 00:24:44 CEST 2017
Hi Leute, Hi Tim,
Am 27.04.2017 20:51 schrieb Tim Niemeyer:
> Moin Flo
>
> ...
> Ein einleitendes Treffen macht, denke ich, Sinn. Es wäre aber auch
> extrem gut, wenn man bereits vorab auf das ein oder andere Konzept
> drauf
> gucken könnte.
>
Das ist relativ schwierig für mich. Ein ganzes Konzept bekomme ich nicht
so einfach hin.
Aber ich versuche einfach mal ein mögliches Szenario zu skizzieren um
vorab mal Ideen zu geben, was man machen könnte:
Ausgangssituation:
Es gibt verschiedene Teilnehmer. Mögliche Kategorien:
* Freifunker
* Freifunk-Entwickler-Gruppe
* Router
Das sind die, die Aktionen auslösen können. Das heißt, jeder kann
Einträge in der Chain erzeugen. So ein Aktor kann erst einmal jeder
werden, ohne irgendwelche Einschränkungen.
Dann sind alle untereinander verbunden und teilen die Chain und alle
Einträge der Chain. Also ein p2p-Netzwerk.
Alle Teilnehmer erzeugen sich ein Key-Pair, bestehend aus private- und
public-key. Diese Key-pair identifiziert jeden Teilnehmer eindeutig.
Kommt ein Freifunker dazu, veröffentlicht er seinen Public Key und z.B.
seinen Nick Name.
Möchte jemand eine eigene Firmware entwickeln erzeugt dieser eine
Freifunk-Entwickler-Gruppe, veröffentlicht den Public-Key und
"unterschreibt" das mit seinem Key-Pair.
In dem Zuge wird auch noch ein Subject Firmware definiert. Eine Firmware
kann nur von einer Gruppe Freifunk-Entwickler-Gruppe erzeugt werden. Das
heißt, eine Firmware muss von so einer Gruppe unterschrieben werden.
** Als kleine Zwischen-Anmerkung: Das sind genau solche Dinge, die von
uns erarbeitet werden müssten, also welche Optionen gibt es in der
Chain, was ist möglich und was wollen wir abbilden.
Über solche Regeln wird dann von jedem Client entschieden, ob er etwas
mit in die Chain mit aufnimmt oder verwirft **
Damit ist dann erst einmal eine Gruppe vorhanden mit einem Mitglied.
Bringt noch nicht soviel.
So eine Gruppe könnte aber jetzt Datenfelder enthalten, die Regeln für
diese Gruppe enthalten, wie z.B. eine Firmware muss von mindestens 3
Entwicklern unterschrieben sein (wie bei uns), erst dann akzeptiert die
Firmware-Gruppe die Firmware als offizielle Firmware.
Zusätzlich könnte enthalten sein, dass mindestens zwei Mitglieder
zustimmen müssen, damit ein neuer Entwickler aufgenommen wird.
Jetzt finden sich nochmal zwei Leute, die in die Gruppe möchten schicken
diesen Request in die Chain und der Gruppen-Owner fügt die beiden hinzu,
also bestätigt ihren Request mit seiner Unterschrift.
Damit ist jetzt im ganzen Netz bekannt:
* Es gibt eine neue Gruppe
* Diese Gruppe hat drei Mitglieder
* Es sind zwei Mitglieder nötig, um aufgenommen zu werden
* Es sind drei Mitglieder nötig, um eine Firmware frei zu geben
Das sind jetzt die Regeln in der Chain und jeder kann, muss aber nicht
mitmachen.
Die, die die Regeln der Chain akzeptieren, werden alle Einträge, die den
Regeln widersprechen, aussortieren und nicht weiter veröffentlichen.
Alle Einträge, die den Regeln entsprechen werden weiter gereicht und
irgendwer bestätigt die dann in der Chain (kennt man unter Mining. Das
Ergebnis ist dann der "Proof of Work").
** Genau dieser Absatz ist eigentlich das, was neu ist und was die
Block-Chains zu dem "neuen heißen scheiß" macht.
Wie einigt man sich jetzt in so einem Netzwerk? Jeder kann weiterreichen
was er will. Wie soll das gehen?
Wie sichert man den Betrieb des Ganzen und schließt Störer aus? Alles
Sonstige kann einfach mit ner Shared Table machen, wie sie in jedem p2p
Netzwerk üblich ist.
Das werde ich dann morgen versuchen anhand des Bitcoin-Netzes zu
erklären **
Also wieder weiter (werde langsam müde ;) ) :
Ein Mitglied der Gruppe erstellt jetzt eine Firmware und veröffentlicht
den Hash dieser. Die beiden weiteren Mitglieder unterschreiben und damit
ist die Firmware offiziell freigegeben.
Wir haben jetzt Freifunker, Entwickler und eine Firmware, aber noch
keine Router.
Jetzt meldet sich der erste Router in der Chain. Der Router teilt mit,
dass er dem Freifunker xy gehört.
Der Freifunker xy bestätigt das. Damit ist der Router eindeutig
zugeordnet.
Jetzt teilt z.B. der Freifunker xy der Chain mit, dass alle seine Router
sich mit der offiziellen Firmware der Gruppe XY aktualisieren sollen
(also von drei Leuten bestätigt).
Der neue Router scannt die Blockchain, sieht die Nachricht, überprüft
den Unterzeichner und aktualisiert sich danach mit der letzen
offiziellen Firmware der Entwicklergruppe xy.
Danach veröffentlicht der Router, dass er jetzt die neue Firmware
betreibt.
Das ist jetzt eine Möglichkeit. Eine andere Möglichkeit wäre jetzt,
"aktualisiere dich schon dann, wenn einer der Gruppe die Firmware
unterschrieben hat" (z.B. Beta-Tester).
Das ist jetzt für den Router ganz net, aber vielleicht möchten andere
Freifunker nur mit Routern meshen, die eine offizielle Firmware
betreiben.
Jetzt gibt es vielleicht mehrere Firmwaren von verschiedenen Teams. Der
Freifunker will aber nur mit routern mit stable Firmware vom Team X und
Team Y meshen, aber nicht mit Team Z, weil die seiner Meinung nach
dauernd misst veröffentlichen und das Netz stören ;)
Sowas könnte dann so laufen: Die Geräte meshen, das eine Gerät frägt
beim anderen den Hash der Firmware an und überprüft dann den Stand der
Firmware in der Chain, also ob diese für ihn akzeptabel ist. Danach
entscheidet der Router selbständig, ob er akzeptiert oder nicht.
** Ist jetzt alles ein bisschen überspitzt und in der Ausbaustufe gar
nicht notwendig, soll aber einfach mal zeigen, was man so machen könnte
**
Man könnte jetzt auch den Ownership für ein Gerät übertragen, ohne das
alles zu resetten, ein neues Key-Pair zu erzeugen und wieder alles
einzurichten.
Dafür würde der Owner einfach an die Chain eine Nachricht schicken mit
einem Ownership-Wechsel zu Freifunker YZ. Der Freifunker würde
bestätigen und das Gerät gerhört jetzt (zumindest in der Chain) Herrn YZ
und würde keine Anweisungen mehr von seinem alten Owner entgegennehmen.
************************
Das waren jetzt nur ein paar Teilnehmer mit ein paar Optionen. So könnte
man z.B. auch mal anfangen und dann immer weiter ausbauen (z.B. Votings,
Gateways, Software-Commits, Credits für Gateways als "Bezahlsystem",
etc. etc. etc.)
müde... bett...
Hoffe, das war jetzt nicht alles zu verwirrend und hat euch alle
verschreckt und hilft ein bisschen dabei eine Idee davon zu bekommen, um
was es morgen geht.
Viele Grüße,
Flo
Mehr Informationen über die Mailingliste franken