HelloZeroNet / HelloZeroNet/ZeroNet

Use BitTorrent for file sharing

オープン
#2,781 コメント 6 件 リアクション 4 件 担当者 0 名 GitHub で見る
主要言語
JavaScript
スター
18.8k
フォーク
2.3k
PR マージ指標
30日以内にマージされた PR はありません

説明

I think ZeroNet should transition over to using BitTorrent directly instead of trying to imitate it.

BitTorrent is a much more robust and well-developed protocol. I mean no disrespect to ZeroNet, but projects like [libtorrent](https://github.com/arvidn/libtorrent) have very large budgets devoted to them, probably greater than all of ZeroNet, and it's just for transferring data and nothing else. BitTorrent can also handle larger files, as well as other things.

BitTorrent is an open standard. If ZeroNet started to use it, it'd be possible to interact with other BitTorrent-based projects. This is useful. For example, you could embed videos from BitTorrent directly into zites, and people could download zites in their BitTorrent clients.

If ZeroNet started using BitTorrent for new sites, it could focus on the core functionality, like building decentralized interactive websites, like using Tor instead of trying to re-invent the wheel. With that, making new implementations would also become much easier, because you could use a ready-made BitTorrent library instead of having to re-write the entire file sharing module.

Two semi-recent developments on BitTorrent have made this situation more interesting, and cleared away the last blockers:
* [BEP 52](https://www.bittorrent.org/beps/bep_0052.html) switches the hash algorithm from SHA-1 to SHA-256, changes hashing to the level of individual files, and implements something similar to [TTH](https://en.wikipedia.org/wiki/Merkle_tree#Tiger_tree_hash) to get smaller torrents while keeping piece sizes at 16 KiB
* [BEP 46](https://www.bittorrent.org/beps/bep_0046.html) (or possibly [BEP 50](https://www.bittorrent.org/beps/bep_0050.html), or a custom solution as an extension) allows to dynamically update content

BEP 50 is a good example of this: ZeroNet handles updates (correct me if I'm wrong here) by naively gossiping them, whereas BEP 50 has a very clever structure for making sure updates are propagated in an efficient manner, basically creating an overlay network. Using BitTorrent allows ZeroNet to make use of all of these improvements, while still giving it the freedom to create extensions as needed. If useful, these extensions could be made into a BEP and pawned off onto upstream maintainers.

To be clear here, I'm not proposing that anything be explosively decommissioned, like Tor or Python v2. There's no urgent security flaw that mandates it.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

まず、ZeroNet の既存のファイル共有モジュールと、issue にリンクされている BitTorrent BEP 46、BEP 50、BEP 52 の提案を確認してください。移行経路によって現在のサイト更新と互換性を維持できるか判断してください。完了とみなすには、単一の局所的な変更ではなく、合意された設計と実装計画が必要です。

索引モデルが issue の本文から書いたものです。

評価

領域
distributed-systems, networking
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
15/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。