毫无疑问,我们的目标是雄心勃勃的。为了让事情变得易于管理(而不是完全是汽化的),我们采取了分层的方法,并在进行过程中发布了演示。
小妖精使编写安全的分布式程序变得更容易、更安全,即使在相互可疑的网络中也是如此。它的准功能性质使它很容易进行交易,甚至可以进行时间旅行。(是的,时间旅行!)。
Goblins实现了CapTP,即能力传输协议,它具有分布式非循环垃圾收集和通过Promise流水线减少网络往返等特性。但它最大的特点是编写安全的分布式代码非常容易,这是通过遵循对象功能安全性来实现的,这与传递对象引用的常规编程模式非常相似。
Goblins被实现为一个球拍类库(虽然我们计划提供一个到Guile的端口,我们希望CapTP能够与Agric';的CapTP实现进行互操作),并且受到了E编程语言的很大启发。它是精灵最基础的一层。
Porta&;Bella允许存储和分发文件,同时只允许那些通过接收适当的功能URI被授权访问它们的人知道它们的内容。Porta指的是我们的蘑菇朋友,他提供不变的文件存储,而Bella指的是藤蔓,它通过将多个Porta条目串在一起来允许更新。
除了它们的安全属性之外,Porta&;Bella还允许可移植性,因为这些文件的名称不依赖于它们所在的位置。无论这些文件是保存在您的硬盘上、个人服务器上、云服务提供商上,还是放在床下鞋盒的USB密钥中(或以上所有内容),相同的Porta-Bella URI都可以引用所有这些文件。
这意味着,例如,如果ActivityPub网络上的节点出现故障,但其内容和配置文件都存储为Porta-Bella文档,则用户可以轻松地将其帐户指向新服务器,而不会丢失功能或历史记录。(请参阅GOEM演示作为示例。)。因此,将Bella可更新文档与ActivityPub配置文件相结合也是一种实用的分散身份解决方案。
请注意,Porta和Bella在这一点上已经建立了原型并演示了它们的功能,但是这个原型还没有准备好供公众使用,它们的实现可能会发生变化。原型被命名为Magenc和Crystal,不久将被重新命名。Porta-Bella的设计在很大程度上来自Tahoe-LAFS项目,但稍微调整了一下,以满足SPRITY的需求。在从这项工作衍生出来的Datashards项目中,也在探索统一这些想法的一些探索。
如果你曾经看过分散的身份系统,你可能已经注意到他们的名字看起来像一堆乱七八糟的字母和数字。不幸的是,这是去中心化身份必须采取的权衡:为了全球安全和去中心化,我们必须牺牲对人类有意义的名字。(关于这一点的理论背景,请参阅佐科三角形。)乍一看,这似乎是一个真正的问题,因为如果我们的系统对人类没有意义,那么它们又有什么意义呢?
Brux是一个为SPRISTY计划的Petname系统,它满足这一需求的方式与手机上的联系人列表几乎相同:你不需要记住所有的电话号码,因为你的手机为你提供了一个从名字到数字的本地有意义的映射。这正是petname的含义:映射到全球系统上的本地有意义的名称。然而,petname系统提供了更多的功能:您可以利用您的社交网络来发现网络中的其他参与者。(事实证明,petname系统也有助于防止网络钓鱼攻击…。(真是一笔丰厚的奖金!)。
Brux还没有写出来,但是我们已经参与了一个(基本完成的)解释Petname的白皮书和一个(不太完整,但经过分析和很好概述的)关于如何构建类似于现有社交网络UI的安全用户界面的白皮书。
我们想让用小精灵编写的程序与现有的ActivityPub语音联合社交网络连接起来变得更容易。谢天谢地,这应该是一个非常干净的映射,因为小精灵和ActivityPub都遵循经典的演员模型。Mandy的设计是通过在分布式小精灵程序和ActivityPub之间提供一个简单的映射,将它们连接起来。
在这个过程中,我们可以添加比ActivityPub生态系统中现有的更丰富的交互和更好的防止滥用行为的保护(以及对合作、故意行为的更好支持)。请参阅OcapPub的文章,了解其中一些想法(其中大多数不需要Mandy来实现,但Mandy将使它们的实现变得容易得多)。
Hyptis提供分布式小世界金融系统,适用于游戏或社区,如您的邻里互助网络。
Hyptis建立在对象能力金融理论的基础上,该理论研究得很好,并且很容易在分布式OCAP风格的系统(如精灵小精灵)上实现。正如所说,我们的目标是小世界的金融系统(尽管Agric的人们正在致力于大世界的金融系统,如果我们实现了与他们的CapTP互操作性,他们的系统也应该可以通过SPRSPRY使用)。然而,令人惊讶的是,通过Goblins的设计,在如此少量的代码中就可以轻松完成很多事情:一个简单的Money实现,即使在发生错误的情况下也能保持交易完整性,并允许账户持有人从整个网络访问,在Goblins中只需25行代码就可以实现。不需要区块链!(此设计直接从基于功能的Financial Instruments文档移植。)。
如果有人建造了一个看起来很棒的火元素怪物,你真的想把它放到你的游戏中,但你担心如果你添加了它,它会把你所有的密码和信用卡信息上传给一些令人讨厌的人,然后继续删除你系统上的所有文件,这不是很滑稽吗?
计算的一般观点是,如果您运行不受信任的代码,并且不受信任的代码想要做一些危险的事情(无论是恶意的还是由于无意的错误),您就会被淘汰。但它不一定非得是那样的。
Oaken还没有写出来,但它的计划是基于E的EMaker设计和Frozen Realms对Javascript的提议。
这里是精灵变得格外有趣的地方。社交网络与游戏相遇的地方!毕竟,现代社交网络只不过是虚拟世界的退化版本……。你可以在这两个地方聊天和发信息,但你不能和朋友一起解决鬼魂之谜,不能和怪物打架,也不能递给朋友一杯让他们喝得头晕目眩的饮料。这些天来,我们有分布式的社交网络和虚拟世界,但还没有很好的组合。Fantasary的目标是改变这一点,同时让在线空间恢复一种乐趣和协作感。通过与你的朋友一起建立世界,Fantasary应该提供一个探索有趣环境的环境,并将学习编程作为一种教育和合作工具进行探索。(更不用说以一种看起来很有趣的方式将安全通信工具掌握在用户手中!)。
诚然,这既是精灵系统中最复杂、最雄心勃勃的一部分(尽管也是最令人兴奋的)。然而,它是可以建造的;在20世纪90年代中后期,Electric Communities Habit确实做到了这一点,但该公司在实现所有目标之前就关闭了,而且它是一个专有系统(当然,SPRITRY中的一切都是免费的开源软件)。
但这也是一个很好的例子,说明了为什么建造如此雄心勃勃的东西是值得的:作为强大而有趣的技术的推动者。在电子社区栖息地关闭后,它的想法仍然存在于E编程语言中,我们已经说过,妖精是建立在E编程语言之上的(就像精灵中的许多其他想法一样)。因此,在这种情况下,如果在总体上推进了分布式社交网络的工具,即使失败也可能是一条成功之路。
Fantasary计划在2021年至2022年之间推出两个演示:一个文本虚拟世界演示(类似于为地精的前身构建的Mudsync演示,但比它更复杂)和一个使用遵循解放的Pixel Cup风格指南的资源的图形系统(有关更新的资源和大量兼容的资源,请参阅Universal LPC Spritesheet)。
那么,地精有时间旅行。太棒了!但这实际上是在实时运行时中使用的。如果我们想要保存整个世界的状态和它的物体,然后再把它带回来,会发生什么呢?我们如何才能安全地做到这一点,特别是当对象可能想要声称下次它们重新构建时,它们拥有比实际更多的权力和权威?(哦,是的.。你难道不知道我是国王吗?我有一根魔杖,可以让我放逐任何我指着它的东西,而且我的账户里还有一百万枚金币呢?“。”是的,是的……)。
通过遵循在相互怀疑下的安全序列化中列出的模式,应该可以序列化、恢复和升级在程序运行时动态生成的对象及其关系的图形。不需要担心如果您的游戏服务器崩溃,一切都会分崩离析。把它转回来就行了!
好的,那么你已经建立了一个复杂的网络程序……。但是现在所有这些信息都在网络上飞来飞去,你不能再知道是什么导致了什么!Questie用一个高度受Causeway面向消息的分布式调试器启发的设计解决了这个问题(更多:精彩的屏幕视频、技术报告、错误页面)。多亏了妖精的设计,我们还应该能够添加一些很好的功能,能够在相关的点上快照程序的运行状态,让开发人员探索有问题的世界的当地状态。