SSB ( Secure Scuttlebutt ) ist ein dezentrales soziales Netzwerk und das Protokoll, mit dem es arbeitet. git-ssb umschließt mit diesem Protokoll reguläre Git-Repositorys. SSB will Facebook ersetzen und git-ssb will GitHub ersetzen. Unter dem Schnitt - eine Kurzanleitung zu git-ssb. Relevant für diejenigen, denen die Idee, zentralisierte Dienste als Vermittler zu nutzen, unangenehm ist. Eine Art rote Pille mit unerwarteten Folgen in diesem Fall.
Scuttlebutt sichern
Das SSB-Protokoll beschreibt die Regeln für die Synchronisierung Ihrer Daten zwischen den daran interessierenden Knoten des Netzwerks. Ihre Daten sind eine Historie Ihrer Aktionen im Netzwerk, eine verknüpfte Liste von JSON-Objekten. Die Verbindung wird durch die Hash-Summe des vorherigen Objekts festgelegt (wie in der Blockchain). Somit sind Objekte nach ihrer Veröffentlichung unveränderlich und nicht entfernbar. Sie können nur am Ende der Liste hinzufügen. Ein typischer Anwendungsfall setzt voraus, dass jedes Element in der Liste ein Blog-Beitrag oder Kommentar ist. Bilder und andere schwere Objekte werden in Form von Blobs aus der Liste gespeichert und separat repliziert. Objekte in der Liste können auf sie verweisen.
Die meisten Internetnutzer bloggen über die Patchwork- und Manyverse-Apps . Es gibt ungefähr ein Dutzend Blogging-Anwendungen, die größtenteils miteinander kompatibel sind und sich in der Benutzeroberfläche unterscheiden. Darüber hinaus gibt es Schach, Chat, Paketmanager (ssb-npm) und git (git-ssb) . Einige SSB-Entwickler verwenden git-ssb als Haupt-Quellcodeverwaltungsdienst. Wir werden es auch versuchen.
Installieren Sie ssb-server und git-ssb
SSB-Server wird benötigt, um mit anderen Knoten im P2P-Netzwerk zu synchronisieren. Es sollte ausgeführt werden, wenn Sie ein Repository pushen, ziehen, abrufen, eine Pull-Anforderung erstellen oder ein Repository aufteilen.
Das git-ssb-Paket enthält:
Programm zur Verwaltung von Repositorys (git-ssb)
git-remote-helper , der Adressen versteht, die mit ssb: // beginnen
web-, GitHub
ssb-server.
$ sudo apt install git nodejs npm
$ npm install ssb-server git-ssb
ssb-server git-ssb $HOME/node_modules
. , ~/.profile
:
if [ -d "$HOME/node_modules/.bin/" ] ; then
PATH="$HOME/node_modules/.bin/:$PATH"
fi
$PATH
,
$ source ~/.profile
~/.profile
. (, Xfce) . $PATH
, .xsessionrc
~/.profile
:
. ~/.profile
ssb-server .
$ ssb-server start
identity ~/.ssb
.
, . , , . . , .
. , . . , .
$ ssb-server invite.accept <-->
: , - .
@cel
@cel - git-ssb.
$ ssb-server publish --type contact --contact "@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519" --following
~/.ssb
1Gb - ( git-) , . , .
. :
web-
$ git-ssb-web
, issue . , , , , . activity log, - , GitHub.
web- (, , issue ) . , : , issue ... ssb-server ( ) .
$ mkdir my-new-repo
$ cd my-new-repo
$ git init
Initialized empty Git repository in /tmp/my-new-repo/.git/
$ git-ssb create ssb my-new-repo
Created repo: ssb://<hash-code>.sha256 (my-new-repo)
Added remote: ssb
$ git remote -v
ssb ssb://<hash-code>.sha256 (fetch)
ssb ssb://<hash-code>.sha256 (push)
git init
git-ssb create ssb my-new-repo
, my-new-repo
URL remote ssb
. remote .
ssb remote . .
: - SSB. .
$ git push ssb master
, . git-ssb pack- blob, 5Mb. . , , :
$ git push ssb master -o allow-big
pack- - , git- pack- 5Mb.
git-ssb git-ssb. SSB DNS . ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256
web-.
$ git clone ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 git-ssb
$ cd git-ssb
$ git remote -v
origin ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (fetch)
origin ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (push)
remote, SSB.
$ git-ssb fork my-fork
Created repo: ssb://<new-hash-code>.sha256 (git-ssb)
Added remote: my-fork
$ git remote -v
my-fork ssb://<new-hash-code>.sha256 (fetch)
my-fork ssb://<new-hash-code>.sha256 (push)
origin ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (fetch)
origin ssb://%n92DiQh7ietE+R+X/I403LQoyf2DtR3WQfCkDKlheQU=.sha256 (push)
, remote.
-
.
$ git-ssb pull-request
, . , .
, . (git-ssb-intro), . @-/master
(git checkout -b @-/master
), (git push ssb
), - (git ssb pull-request
). master -.
, identity ( identity - . ) . git-ssb , . . identity, , . , , . , - , .
Identity ~/.$ssb_appname/secret
. ssb_appname
, identity (~/.ssb
). secret
, ssb-server .
permissionless , , identity.
, : - , , sudo make install
. , - . , , git pull
. , .
?
git-ssb-intro: a guide to hacking together on the distributed web
git:
GitTorrent ( BitTorrent)
HyperGit ( Dat)
igis-remote ( IPFS)
ipld-remote ( IPFS)
GitCenter ( ZeroNet)
Mango (Ethereum + IPFS)
-
-
Die ersten vier werden in Daniel Aleksandersens Artikel " Vier P2P-Verteilungstools für Git-Repositories im Vergleich " ausführlich analysiert . Es gibt Kommentare von den SSB-Entwicklern dazu.
Vielen Dank für Ihre Aufmerksamkeit. Hoffe es war nicht zu langweilig. Gute Dezentralisierung für diejenigen, die sich interessieren.
Das Bild in der Kopfzeile wurde mit dem Dienst myoctocat.com erstellt .