p2p应用一直有市场,只是之前开发难度大,没有普及开。ssb(Secure Scuttlebutt) 出现降低了开发难度,但是普通用户使用还是有障碍。手机作为p2p终端并不理想,dht网络初始化时间长,不能开屏就用。如果后台跑节点,又耗网耗电。
holo代理为中心和托管市场解决了这些问题。hApp 应用运行在应用服务商租用的holo主机上,这样普通用户通过浏览器就可以使用P2P应用程序(hApp)。
holo托管市场并不直接面向消费者(至少不是主要目的)。托管版hApp就像互联网应用一样,是由开发者租用主机为用户提供软件和服务。差别在于,hApp即可以运行在托管主机,也可以运行在用户自己电脑上(甚至是手机上)。托管的hApp应用也可以随时下载到本地运行。
hApp是完全去中心化的,既没有服务器也没有数据库。hApp的数据分为私有和全局,私有数据以源链形式保存,全局数据分散在p2p dht网络上。
holochain框架是前后端分离的,所以hApp程序分为两部分:分为前端(用户界面)和后端(Agent代理)。
用户界面负责响应用户请求并转发到Agent代理。(网页,移动端、都可以作为hApp 用户界面)。
Agent代理是基于holochain框架开发的全功能节点。Agent负责实现p2p dht网络功能(和其他邻居节点保持通讯协议)、实现hApp的核心功能并为用户界面提供API。
由于用户界面和Agent代理是分离的,Agent代理即可以运行在自己电脑上也可以托管。(你的Agent代理运行在别人电脑上就是被托管的。)
应用示例:
微博hApp
用户在网页中输入要发布的推文,然后点击确认发送。此时网页端会把文字发送给运行在后台Weibo Agent代理程序,Agent收到文字后,先会验证规则(过滤掉脏话等等),然后写入到私有源链,最后把文字发送给至少10个随机邻居Agent。(10个不是绝对的,某些应用可能有更少的邻居/或者更多。)
Agent发送消息时,还要把源链的最终hash值一起发送给邻居。用户每次写入消息都会重新计算源链最终hash值,并广播给邻居,防止作弊。因此用户Agent代理中的源链最终hash值,始终和邻居节点中保存的一致。
微博的主要功能是向关注者推送内容,但在hApp中如果关注了某人,就是要定期查询dht网络,获得对方的最终hash值,如果hash值有变化,就重新请求最新推文。(注:在dht网络不能直接联系某人的Agent,需要通过邻居转发。)
在dht网络协议中,邻居之间是无偿为对方保存数据的。加入dht网络协议,就必须为每位邻居贡献几KB内存空间(大小根据应用而定)。必须限制存储空间大小,不能给邻居带去负担。邻居数量根据hApp安全等级而定(holo fuel hApp默认是25个邻居)。
网友评论