IPFS続編(その3)Git、BitTorrentのような仕組みとは
Gitについて
Gitは元々LinuxOSのソースコードの変更履歴の記録や追跡を可能にしたバージョン管理システムとして作られた分散型プログラム管理システムである。
【前回の記事】 IPFSとは?(その2)分散型ファイル共有システム
開発者はLinuxOSを作ったリーナス・トーバルズ氏でプログラマーの中では「Benevolent Dictator For Life(優しい終身の独裁者)」と呼ばれる神様に近いような存在でもある。
そのリーナス氏と日本人である濱野 純氏が共同開発者で、現在Gitのメンテナンスは濱野氏が従事されているそうです。
また、GitとGitHubって関係あるの?と思われた方も多いでしょう、仮想通貨の世界ではソースコードを公開しているものが殆どで、その公開先が「GitHub」になっていることが多いです。
実は、大いに関係あるのです。
「GitHub」は「Git」を使用したソフトウエアのソースコードを格納すると共にコードのバージョン管理やマイルストーンの進行状況が確認でき、SNS機能も持った優れたシステムです。
暗号通貨のホームページやホワイトペーパーのリンクを辿って「GitHub」を覗いた方も多いでしょう。
2018年6月マイクロソフトがGitHubを買収(75億US$)したというニュースも記憶に新しいところです。
Gitは元々ローレベルなエンジンとして設計されているので他の開発者がそのコア部分に手足を付けるようにフロントエンドを容易に開発できる事を目的としてシステム設計がなされているので、このような優れたシステムが構築できるのです。
Gitの仕組み
さて、本題に戻ります。
Gitの仕組みについて概略を記すと以下のようになります。
まず、リモートサーバーに最初のバージョンがアップロードされているとします。(これを、「v1.0」とします)
- リモートサーバにある最新バージョン(サーバーには常に最新バーションが置かれている)のデータをローカルに複製(ダウンロード)する。
- ローカルでコンテンツの修正・追加・削除を行い、そのデーター郡(リポジトリ)に変更履歴を記録(v1.0.1)する。(変更が加えられたのでバージョンが0.1上がります。実際にはコミュニティー内でバージョン管理ルールをあらかじめ決めておきます)
- 自分が作業中に加えられた他のメンバーによる変更をローカルに反映させる 。
(他メンバーの変更内容が自分の変更内容と衝突することもあるが、基本的にGitが自動で解決する仕様になっています) - ローカルの変更内容をリモートサーバーに戻す。(これでバージョンアップされたデータと変更履歴を更新した新しいデーター郡(リポジトリ)が公開されます)
この繰り返しによりバージョン管理(変更履歴)が行われます。
概略おわかりいただけたでしょうか?
IPFSは実際このGitのコア部分のソースコードを使用しているか定かではありませんが、同様の分散型バージョン管理システムであるということが分かります。
BitTorrentについて
BitTorrentはブラム・コーエン氏(Bram Cohen)によって開発されました。
BitTorrentはP2P(Peer to Peer)によるファイル転送を行うプロトコルを実装したソフトウエアです。
2001年に彼一人で開発が始まり、2003年にクライアントソフトをリリース、その4月に「RedHatLinux9」がリリースされ、そのISOイメージをBitTorrentで配布され3日間で3万個のISOイメージを配布できたことにより一躍注目を浴びるようになりました。
元々コンテンツなど大きなファイルを速く転送できるシステムとして作られているので当時の遅いインターネット環境では、たいへん重宝したものでした。
BitTorrentの仕組み
もう少し掘り下げてBitTorrentのファイル転送の仕組みを説明しますと、
当時のP2Pプロトコルでは多数のユーザーがある一つのファイルをダウンロード要求をするとネット回線が太い(回線速度が速い)ノードに集中して中央集権型とさほど変わらない状況になってしまいます。
しかし、BitTorrentの場合は要求したファイルはそのファイルを所有しているノードからダウンロードが始まります。
ダウンロード中、他のノードから同じファイル要求があった場合このファイルが断片的であってもリレーするようにその要求先へファイルを送ります。
つまり、ダウンロードしながら他のノードにアップロードすることが可能なプロトコルなのです。
このように同じファイルを「やり取り」しているグループをスウォーム (swarm)と表現しています。
こうした仕組み(プロトコル)によってインターネット回線をより均等に使う事が出来、ネットワーク回線のトラフィックを分散させることにより、大きなファイルでも短時間で多くのユーザーに行き渡ることが可能になるのです。
また、もう一つの特徴として左の図において中央に位置する「Uploader」と表現されている中間コンピュータはP2Pでファイルを効率良くやり取りする為の制御機能を持っています。
(図:WIKIPEDIAより引用)
昨年(2018年8月)TRONによって買収され、その後新しいプロジェクトが進んでおり、その一つであるBitTorrentトークンの「BTT」は2月(2019年)にBinanceによるトークンセールとTRONホルダーへのエアドロップイベントがありました。
最近ではIPFSの改良版として「BTFS」というプロジェクトも始動しています。
ということで、IPFSはGitのいいところとBitTorrentのいいとこ取りをした分散型ファイルシステムであったのです。(笑
次回は、実際にIPFSを使ってみようと思います。
BitTorrentの(BTT)に関して、以前当ブログでも紹介していますのでご参考までに以下リンクを示しておきます。
https://bitcoin-fx.jp/?s=bittorrent
またIPFSについてコチラの連載も参考にしてみてください。
実際にIPFSを使いた人は、下記記事で操作手順を紹介しています。