Sia移动应用开发的新篇章

3 个月前 · 原创文章

..几天前我有个主意。如果我可以让我的家庭服务器从iCloud自动下载我的照片库并使用最近发布的SiaSync工具将更改同步到Sia 怎么办?如果我可以在其他设备上访问和浏览这些文件,例如我的iPhone或iPad,该怎么办?




首先,我需要一种从iOS上传和下载Sia文件的方法。虽然Sia第三方移动应用程序,但它是Android独有的,需要在设备上运行完整节点。有更好的方法吗?

我联系了Nebulous核心开发人员Luke Champine来了解情况。事实证明,他也有兴趣使用他的us项目为Sia编写移动应用程序!我们很快就开始组建一个简单的应用程序,Luke处理特定于Sia的代码和us绑定,以及我自己处理UI / UX。(我们也在这个博客文章上合作。)到周末结束时,我们兴奋得头晕目眩,因为我们成功上传和下载了一个文件,直接与真实的iPhone上的Sia主机交谈,没有完整的节点。你自己看:

https://youtu.be/mmRve4_u9-0


那么,幕后发生了什么?怎么了QR码,什么是“碎片服务器?”为什么上传一个小图片需要这么长时间?请继续阅读以了解答案。但是,如果你想直接进入代码,你可以在这里找到应用程序的GitHub仓库:https//github.com/DangerCZ/SiaUs-iOS


这个怎么运作

我们首先扫描包含Sia文件合同的QR码。我们不在设备本身上签订合同; 至少就目前而言,我们需要从外部来源获得合同。查看us-bindings存储库以获取有关如何获取合同并将其转换为QR代码的详细信息。

合同告诉我们正在与之通信的主机的公钥,但不是它的IP地址。主机只在Sia区块链上公布他们的IP地址,我们不希望将整个区块链存储在我们的手机上。这是shard服务器发挥作用的地方。与DNS服务器非常相似,该服务器监视区块链并为主机IP地址提供公共查找表。任何人都可以运行shard服务器; 在演示中,我们连接到Luke的实例。

感谢Sia v1.4.0中引入的新协议,这是我们上传和下载所需的所有信息!移动应用程序使用us为iOS编译的文件系统代码gomobile。由于us处理了所有Sia特定的细节,移动应用程序开发人员可以专注于他们最擅长的事情。

最后:为什么上传速度慢?这是因为Sia必须一次上传至少4 MiB,因此我们必须在上传前将照片填充到4 MiB。有计划在Sia协议的更高版本中改进此限制,但是现在我们必须解决它。例如,在我们向主机发送任何内容之前,我们可以等到用户“上传”了4 MiB的照片。或者我们可以像许多云存储应用程序一样异步上传,以使延迟不那么明显。


未来的工作

演示应用程序使用单个合同,这意味着我们的数据受单个主机的支配。一个真正的应用程序应该使用许多合同并冗余地存储其文件。此外,由于us不会自动续订您的合同,因此应用程序开发人员对此负责。当合同有可能到期时,应用应显示警告通知。

这两个问题都可以通过合同管理服务来解决。比如shard,这将是一个外部服务器(由您或第三方运营)处理形成和更新Sia合同。然后,移动应用程序可以直接从服务器下载一组合同,无需QR码扫描,并定期查询服务器以接收续订合同。也许应用程序开发人员甚至可以通过应用内购买直接提供合同,从而为开发人员提供收入来源。


结论

我们已经证明,可以编写在Sia网络上存储和检索数据的移动应用程序。虽然我们的演示应用程序是为iOS编写的,但us绑定也与Android兼容。我们希望这个演示能够激励其他移动开发人员创建比我们简单的概念验证更复杂的应用程序。:)

如果您有兴趣开发移动应用程序,请在Sia Discord上与@ Danger#1924或@ nemo#4926联系。该us绑定还远远没有完成,所以反馈,将不胜感激。让我们共同创造一些酷!

Siacoin

一个运用区块链技术的去中心化的云储存平台