2015-03-26 2 views
0

Если я хочу написать узел для P2P-приложения (например, Bitcoin, Bitorrent и т.д.) Есть много частей, которые являются такими же:Есть ли рамки для написания децентрализованного приложения?

  • мне нужно для начальной загрузки в сеть (открыть другие сверстники)
  • мне нужно управлять списком пиров, а также контролировать их состояние
  • Мне нужно, чтобы получить списки больше коллег из моего соседа всматривается
  • Etc и т.д.

Поскольку я не вес ant, чтобы изобретать колесо, является ли их основой, которую я мог бы использовать в качестве базовой библиотеки для построения?

+0

Вы ищете академические или практические цели? Я думаю, что некоторые такие библиотеки могут существовать, но приложения реального мира кажутся рулонами из-за разных потребностей. – the8472

+0

@ the8472 Практические цели – Muis

+0

Обычно я проверяю [this out] (https://github.com/kgryte/awesome-peer-to-peer) для любых библиотек p2p. Также для начальной загрузки в биткойне сети используется [this repo] (https://github.com/TheBlueMatt/dnsseed). Не уверен, что он все еще используется. –

ответ

0

Вы упомянули и биткойн и битторант, которые совершенно разные, поэтому я предполагаю, что вы не хотите привязываться к какому-либо конкретному протоколу или даже к формату сериализации.

И все же вы упомянули о том, что одноранговое обнаружение и управление статистикой, которые относятся к проблемам высокого уровня, должны быть построены сверху некоторых сетевых протоколов. Но протокол диктует, как будет работать такой механизм.

Это похоже на то, что вы спрашиваете, есть ли заранее построенные крыши, которые бы поместились на небоскребах так же, как и на деревянной каюте.

Итак, если вы действительно хотите разработать свой собственный протокол, вам, вероятно, стоит сначала взглянуть на фундамент.

  • , какой язык вы хотите использовать
  • , что IO/обработки событий библиотек доступны
  • , что протокол парсеры и сериализаторы доступны
  • вы стремитесь к пропускной способности? низкий объем памяти? низкая латентность? минимальное количество потраченных часов программиста?
  • Какая защита необходима? для использования криптографии на уровне протокола потребуется достоверная криптова библиотека (не сворачивайте свои собственные!)
  • Какие вспомогательные вещи вам нужны (где хранятся данные? filesystem? databases? нужен ли вам интерфейс?)

в качестве альтернативы, в зависимости, как интерпретировать ваш вопрос, если вы хотите написать клиент для конкретной сети, то вы должны просто искать библиотеку реализации основных концепций этой конкретной сети, освобождая вас до реализовать остальную часть приложения.
В случае bittorrent такой пример будет libtorrent

+0

Bitcoin и Bittorrent работают точно так же? Просто протокол отличается. Но я хочу написать протокол сам. Предпочитаете C. И все другие вещи, такие как GUI, DB и платформа, не имеют значения, потому что это просто сетевая библиотека? – Muis

+0

C?У меня мало опыта с этим, но я сомневаюсь, что вы найдете библиотеку на уровне абстракции, о которой вы просили в своем вопросе. Кроме того, для меня биткойн и битторант выглядят по-разному на многих концептуальных уровнях. – the8472

+0

Я думаю, что вы действительно не понимаете вопрос, и я, возможно, сформулировал его слишком туманно. Но Ive совершил код для обоих проектов, и все, до тех пор, пока фактическое рукопожатие довольно похоже. – Muis

Смежные вопросы