转发、隐私和缓存在 Swarm 中,消息的路由通过将其递归地转发到更接近其目的地的位置,然后沿着相同的路由传回一个响应来实现。此路由算法具备两个重要属性:
发起请求的节点发送的消息,与仅转发请求的节点发送的消息,从任何层面来看都相同。这种模糊性使得请求的发起人能够确保他们的隐私不受侵犯,从而促进无需许可的内容发布和私密浏览。 由于参与路由检索请求的节点也许会选择存储由它们所转发出去的块,因此便要启用可自动扩展式分发系统。下面讨论的带宽激励机制为这种投机缓存(opportunistic caching)提供了经济动力。 Swarm 记帐协议Swarm 记账协议(Swarm Accounting Protocol,SWAP)确保节点运营者在对消息进行路由时会去协作,同时保护网络免于胡乱使用带宽。 当节点转发请求和响应时,它们会跟踪它们与每个节点之间的相对带宽消耗。在一定限度内,节点间以服务换服务。然而,一旦达到限度外,负债方既可以选择等待,直到其债务随着时间的推移被摊销,或者也可以通过发送支票来进行支付,这些支票可在区块链上兑现为 BZZ 。 这个协议能够确保那些下载或上传少量内容的人免费使用 Swarm,还有那些愿意等待的人,在与各节点进行互惠服务直到获得足够的信用(credit)后,也可以免费使用 Swarm。与此同时,当上传或下载更大的内容量时,为那些希望付费的人提供了一种更迅捷的体验。 在帮助每个节点转发消息时,节点存在经济动机,因为每个成功地将请求路由到更靠近目的地的节点,在该请求成功被送达时都可以获得 BZZ。如果该节点本身没有存储数据,那么它只需支付少量的费用就可以从更近的节点请求数据块。通过这样的交易,节点在处理请求时可以获得一点利润。这意味着节点存在对块进行缓存的动机,因为在从较近的节点购入一次块之后,对同一块的任何后续请求都将获得纯利润。 容量不足和垃圾收集随着 Swarm 中新内容的添加,每个节点的有限存储容量迟早会被耗尽。此时,节点需要一个策略来决定应该删除哪些块,以便为新的块让路。 每个 Swarm 节点的本地存储内置两个子系统,即「储备(reserve)」和「缓存(cache)」。 「储备」是一个固定大小的存储空间,专门用于存储属于节点邻域的块。一个块是否保留在「储备」内,取决于它所附的「邮戳(postage stamp)」。区块链上的合约允许通过 BZZ 购买「邮批(postage batch)」。「批(batch)」的所有者有权发行数量有限的邮戳。然后,这些邮戳充当某种信托标志,向用户指明在 Swarm 中保存某相关内容的具体价值。通过使用这个值的大小来确定哪些在「储备」中的块要被优先删除,这样一来存储者的节点便能最大限度地提高 DISC 的效用。每个邮戳的价值会随着时间的推移而减少,就好像储存租金是定期从「批」的余额中扣除的一样;一旦邮戳的价值不足,相关的块就会被逐出「储备」并置入「缓存」。 (责任编辑:admin) |