作者:chroalist | 来源:互联网 | 2022-11-28 17:12
我想显示全息链中特定应用程序的所有用户列表,以使活跃用户能够与某人达成协议。给定数据流的链接性质,获取所有用户列表的最佳实践是什么?
创建一个链接到所有用户以访问完整用户列表的中央代理是否有意义?有没有一种更好的方法?
1> Jonathan Hab..:
来自DNA哈希的链接(不推荐;请阅读下面的锚点)
每个用户都可以在genesis()
函数中从DNA哈希链接到他们自己-DNA哈希是DHT上每个人都知道的一个哈希。然后,您所需要做的就是getLinks(App.DNA.Hash, "user")
全部获取它们。(当心,它可能会成为一个庞大的清单。对于DNA哈希附近的可怜节点,我也感到难过……要存储的元数据很多。
在创世记中这样做
这可以在创世函数中完成。如果您不介意,我会以古老的全息链原始语言进行处理:
function genesis() {
commit({ Links: [ { Base: App.DNA.Hash, Link: App.Key.Hash, Tag: "registered_user" } ] };
}
这将为每个新加入的人创建一种“注册代理人”的东西。
这种方法的问题
这有点反模式,因为DNA的冗余副本也存在于DHT中,而其节点位于DNA的DHT散列邻域中的可怜灵魂将具有比其他人更高的负载。现在,我建议使用锚点。锚只不过是由字符串条目和链接组成的模式。因此,您将创建一个内容为的锚点"registered_users"
,并将该锚点链接到船上的任何座席。仍然为那些持有锚条目的人创建了一个热点,但可以预期您的应用程序将具有一些这样的锚,至少它们不必完全依赖一个DNA哈希。
与锚链接
该锚混入(目前只有HC-原兼容)功能的幂函数,来创建锚,因此每个用户可以安全地调用anchor()
而无需重新创建一个现有的锚。