Gitのバージョン管理+ビットコインのP2P Gitchain(ギットチェイン)

スポンサーリンク

gitchain3
Gitchain(ギットチェイン)は、バージョン管理ツールのGitと、ビットコインで使われている発想を合体させた新しいツールです。「git+ビットコインのアイデア」です。
Gitchainという名前ですが、gitと互換性はありません。全く別個のツールです。またビットコインの発想を使っているだけで、ビットコインとも関連性、互換性はありません。

作者

gitchain_yurii
作者は、Yurii Rashkovskii(ユーリィ ラシュコフスキー)さんです。現在はカナダ在住ですが、ウクライナの大学を出られており、ウクライナの方ではないかと思います。
以前はBitcoin関連の会社にいましたが、一念発起して今度は自力で何かしようということで、Gitchainを始められたとのことです。ウクライナ->Bitcoinの会社->Gitchainってすごいですね。旧ソビエト科学力の伝統なんでしょうか。
このKickstarterのプロジェクトでお金を集め、それを作者に対する開発費として使い、Gitchainの開発を進めるという計画です。開発費というのは具体的に言うと、家賃や食費ということだと思います。生活しないとソフトウェアも作れないので。

メリット

Gitchain(ギットチェイン)の何がいいのか、というのは次のような話です。
githubを使って開発している状況を考えます。
gitchain1
githubが動いているときはいいですが、なんかの障害でサーバーが動いていない場合はどうでしょうか。
もちろんこの場合でも、自分の手元(ローカルリポジトリ)に変更を加えることができますし(コミット)、変更記録(ログ)を見ることもできます。
しかしこの状態では、他の人と作業を共有しようとすると面倒です。
gitchain2
そこで、サーバーの中身を自動で複製し、複数用意すればいいのではないか。そうすればどこかが落ちても、落ちていないサーバーにアクセスすれば困らないのではないか?というのがGitchainです。
Gitchainネットワークに参加しているコンピューター同士が通信するP2Pにより、データの複製が行われます。
gitchain3

gitを置き換えるのか?

8137188956_d30fbc1e5b
作者によれば、gitの置き換えを狙ったものではなく、補間関係にあるものを目指すということです。
gitchainはgitにないメリットもあるが、デメリットもあります。たとえば公開したくないデータをGitchainに置くというのは、よくないでしょう(データを暗号化したとしても)。
自分がもしGithubの社員なら、危機感は感じないだろう、とも作者は言っています。 https://medium.com/@yrashk/why-github-will-like-gitchain-6878558984ac
そもそも、Githubや他のサービスがそんなに落ちるのか、というのもあると思います。普通にgitを使えばいいじゃないか、と。作者によるとGitchainを作成する目的のひとつは、Bitcoinで使っているアイデアを他のところで使うのが面白いとのことです。
Bitcoinの場合、Bitcoinのソフトを開発している人間しかP2Pシステムに関わらないです。しかしGitchainで一般のプログラマーも使えば、P2Pの勉強になるし面白いんじゃないか、というのが開発動機の一つとのことです。
Kickstarterでは既に目標額に到達していますが、このお金(生活費?)でまずは論文を書くとのことです。プロトコルの仕様を明文化すれば他の人もGitchainツールを作れるようになるので、いいことだと思います。

デモ

実際にGitchainを動かしている動画です。この動画では1つのPCで自分のリポジトリをGitchainネットワーク上に作り、ファイルを格納しています。
そうするとGitchainネットワークに参加している他のPCにも内容がコピーされます。Gitchainネットワーク上のリポジトリをcloneで自分のPC上に取得し、内容を見ることができます。

仕組み

gitchainGitchainには、Gitchainネットワークという一種の「グループ」があります。このグループに参加すると、参加しているコンピューター同士が相互に通信して接続します。
そして、この複数のコンピューターからなる「Gitchainネットワーク」の中に、個人のリポジトリを作ります。作った個人リポジトリは、Gitchainネットワークに参加しているコンピューター間で複製が行われます。
gitchain4
Gitchainによるデータの管理は、二つの部分に分かれています。
・データ本体(管理したいソースコードファイル)の管理
・データ本体がどこのIPアドレスにあるのかという情報(メタ情報)の管理
後者のどのIPアドレス(やホスト名)にあるのか、という部分をBitcoinにあるようなブロックチェインで管理しています。この部分だけ、多数決による決定で決めています。
データ本体はサイズが大きいので、多数決で管理はしていません。
またデータの場所を管理する以外にも、名前の管理もしています。Gitchainでは自分のデータ(リポジトリ)に名前をつけて管理しますが、名前が重複しないようにしなくてはなりません。そこで名前の割り当てというのを行います。これもGitchainで管理しています。
Gitchainのソースはこちらで公開されています。Apache 2.0ライセンスです。
https://github.com/gitchain/gitchain

まとめ

Gitchainは、gitにBitcoinのアイデアを加えた、新しいツールです。
2014/6/16まで資金募集中です。
https://www.kickstarter.com/projects/612530753/gitchain

コメント