【问题标题】:Is there a framework for writing a decentral application?是否有编写去中心化应用程序的框架?
【发布时间】:2015-05-30 10:57:07
【问题描述】:

如果我想为 P2P 应用程序(如比特币、Bitorrent 等)编写一个节点,有很多部分是相同的:

  • 我需要引导到网络(发现其他对等方)
  • 我需要管理对等点列表并监控它们的状态
  • 我需要从邻居节点中检索更多节点列表
  • 等等等等

既然我不想重新发明轮子,那么它们是我可以作为一种基础库构建的框架吗?

【问题讨论】:

  • 您是出于学术目的还是实用目的?我认为可能存在一些这样的库,但现实世界的应用程序似乎由于不同的需求而自行推出。
  • @the8472 实用目的
  • 我通常会检查 this out 是否有任何 p2p 库。此外,为了引导网络比特币正式使用 this repo 。但不确定它是否仍在使用。

标签: client-server distributed p2p bittorrent dht


【解决方案1】:

您提到了比特币和 bittorrent,它们完全不同,所以我假设您不想被绑定到任何特定的协议甚至序列化格式。

但您提到对等发现和统计管理是高级问题,它们建立在某些网络协议之上。 但协议规定了这种机制如何工作。

听起来你在问是否有预制屋顶既适合摩天大楼也适合木屋。

因此,如果您真的想设计自己的协议,您可能应该首先更多地了解基础。

  • 您要使用哪种语言
  • 有哪些可用的 IO/事件处理库
  • 有哪些协议解析器和序列化程序可用
  • 您的目标是吞吐量吗?内存占用少?低延迟?花费最少的程序员时间?
  • 需要什么样的安全措施?在协议级别大量使用加密将需要一个值得信赖的加密库(不要自己动手!)
  • 你需要什么样的辅助东西(数据去哪了?文件系统?数据库?你需要 UI 吗?)

或者,取决于人们如何解释您的问题,如果您想为特定网络编写客户端,那么您应该简单地寻找一个实现该特定网络核心概念的库,同时解放您实现应用程序的其余部分。
在 bittorrent 的情况下,这样的例子是 libtorrent

【讨论】:

  • 比特币和Bittorrent的操作完全一样?只是协议不同。但我想自己编写协议。更喜欢 C。所有其他的东西,如 GUI、DB 和平台都无关紧要,因为它只是一个网络库?
  • C?我对此几乎没有经验,但是我怀疑您会在问题中要求的抽象级别找到一个库。此外,在我看来,比特币和 bittorrent 在许多概念层面上看起来都不同。
  • 我认为你并没有真正理解这个问题,我可能表述的有点太模糊了。但我已经为这两个项目提交了代码,在实际握手之前的所有内容都非常相似。
  • 这让我觉得这是相当通用的网络/消息(反)序列化内容,其中包含一些加密。不是真正的 p2p 特定的。
猜你喜欢
  • 2020-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 2012-07-22
相关资源
最近更新 更多