SSB ( Secure Scuttlebutt ) é uma rede social descentralizada e o protocolo em que opera. git-ssb envolve repositórios git regulares com este protocolo. SSB deseja substituir o Facebook e git-ssb deseja substituir o GitHub. Sob o corte - um guia rápido para git-ssb. Relevante para aqueles que não se sentem confortáveis com a própria ideia de usar serviços centralizados como intermediários. Uma espécie de comprimido vermelho com consequências inesperadas neste caso.
Boato seguro
O protocolo SSB descreve as regras para sincronizar seus dados entre os nós da rede interessados neles. Seus dados são um histórico de suas ações na rede, uma lista vinculada de objetos json. A conexão é definida pela soma hash do objeto anterior (como no blockchain). Assim, uma vez publicados, os objetos são imutáveis e não removíveis. Você só pode adicionar ao final da lista. Um caso de uso típico assume que cada item da lista é uma postagem ou comentário de blog. Imagens e outros objetos pesados são armazenados fora da lista na forma de blobs e replicados separadamente. Os objetos da lista podem se referir a eles.
A maioria dos internautas tem um blog nos aplicativos Patchwork e Manyverse . Existem cerca de uma dúzia de aplicativos de blog, em sua maioria, são compatíveis entre si e diferem na interface. Além disso, há xadrez, chat, gerenciador de pacotes (ssb-npm) e git (git-ssb) . Alguns desenvolvedores SSB usam git-ssb como seu principal serviço de controle de origem. Vamos tentar também.
Instale ssb-server e git-ssb
O ssb-server é necessário para sincronizar com outros nós na rede p2p. Deve ser executado quando você faz push, puxa, busca, cria uma solicitação de pull ou bifurca um repositório.
O pacote git-ssb inclui:
programa para gerenciar repositórios (git-ssb)
git-remote-helper , que entende endereços começando com ssb: //
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)
-
-
Os quatro primeiros são analisados em detalhes no artigo de Daniel Aleksandersen " Comparação de quatro ferramentas de distribuição P2P para repositórios Git ". Há comentários dos desenvolvedores do SSB sobre isso.
Obrigado pela atenção. Espero que não tenha sido muito chato. Boa descentralização para quem cuida.
A imagem no cabeçalho foi gerada usando o serviço myoctocat.com .