去中心化是对可变共享状态的去中心化
这个世界绝大多数的可变共享状态都集中在各大数据中心里。
虽然读个什么状态可能是从任何地方任何品种的缓存里面拉取的,但是只要写一下,就只有一条唯一的路径,通往唯一的终点。
可变状态通通共享有些时候是必要的。你若真是有什么需要全世界每一个人都找到全世界每一个人的应用,那么除了全局一份的中心化可变状态也别无他法。
但是这个世界上也有很多状态不是这样的,不是必须如此的。也许这个世界绝大多数状态都不是这样的。
比如像Slack/Telegram/Discord这种在线通讯设施,所有的工作区(workspace)都寄存在一个公用服务器上就是一种不必要的中心化。相对应的,自建服务器方案比如Zulip所提供的用户体验就没有什么区别。
用户甚至可以接受一定程度的对于状态去中心化的感知。比如美国大选,就是以几十个二级局部共享状态和一个一级共享状态搭配的层级化形式。
对可变共享状态执行去中心化这个定义一定程度上是向后兼容的。影响力最大的项目,即各种链和分布式账本,都可以视作是对账本这一共享可变状态的去中心化的尝试。
一方面,状态中心化以后,对于手握全部状态的实体我们难以管控。
另一方面,这其实是一种通用低效架构,没有为特定的应用做针对性优化。
去中心化的状态存放在哪里?
如果数据中心以外的设备存在耐久性(durability)问题,那么我们可以存一些用后即焚的状态。
如果进一步还存在可用性(availibility)问题,那么我们只能把这一点暴露给用户,做一些尽力而为(best effort)应用,这就有点太受限了,应该考虑从设备一侧解决问题。
现在的端侧设备资源利用率低得出奇。纷纷适配了AI芯片/引擎,但是几乎没时候用。带宽资源也常常闲置。
从另一个角度,我们也可以从最为世人接受的去中心化系统——DNS入手,借鉴它的设备形制。
如果苹果把所有的信息都端到端加密了,然后又全都存在自己的服务器上,那么这是对状态的去中心化吗?