我正在考虑实现一个DHT,其中数据项通过添加后继地址来链接,如果每个节点都可以有三个有序状态:空 -> 数据 -> 数据和后继地址,那么所有的同行是否都能得到一致和正确的排序?是否有可能出现永久性的分叉?
原则上,有一些限制和节点的支持是可能的。
要处理多个版本,您需要价值版本控制。为了可靠地增加它们而不发生冲突,您需要一个单一的起始者。为了确保单一的起始者,您将不得不对数据进行签名。 签名的数据通常存储在从公钥派生的密钥下。因此,搜索节点将不得不以某种方式获取公钥,或者您将需要另一个间接方法来将人类可读的键解析为公钥。
DHT.put("keyword", Pubkey)
DHT.get("keyword") => List<Pubkey>
DHT.put(Pubkey, Tuple<Value, ForwardPointer, VersionNumber>, Pubkey, Signature)
DHT.get(Pubkey) => List<Tuple<Tuple<Value, ForwardPointer, VersionNumber>, Signature>>