[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