DfinityWorld致力于成为全球最具影响力的Dfinity中文社区,关注DfinityWorld,便可全面聚焦Dfinity各类生态应用,探索更多可能,共建互联网计算机新时代。
DfinityWorld将对Dfinity所有项目进行逐一介绍,在产品功能以及实战操作等多维度层面上,为您提供合理化建议和专业性指导。
上个月的月底,基于Dfinity打造的CanCan应用公开了所有源代码(网址是https://github.com/dfinity/cancan。感兴趣的伙伴可以进入查看)。Dfinity此举是希望将其作为模型提供给开发人员社区,用以激励他们在互联网计算机上创建开放的互联网服务。通过代码,开发人员会发现:一个带有JavaScript前端和Motoko后端的全栈Web dapp;Motoko包管理器容器等高级Motoko功能;API中的许多系统功能,例如时间和授权;与互联网身份服务集成;端到端测试和持续集成的最佳实践,等等……
可以说,CanCan几乎涵盖了大部分互联网计算机和Motoko编程语言的技术门类。所以,如果想在Dfinity生态上开发应用,CanCan的源代码是非常具有参考价值的。
当然,回归到项目本身,也有很多值得我们关注的亮点。接下来,我们就对CanCan做一个全面的了解。
CanCan的简介与特点
CanCan号称“去中心化的抖音”,是DFINITY基金会开发的一个开放式、可扩展的视频分享应用。虽然目前来看,只是个demo,相关团队也没有进一步的进展披露,但它却成为了互联网计算机功能一个很好的示例。
最典型的特点莫过于,相比社交巨头Facebook包含了超过6,200万行编程代码,CanCan则用了不到1000行编程代码在互联网计算机上构建而成,这就像当下大火的DeFi之中,仅有几百行代码的Uniswap通过以太坊智能合约对CEX大范围冲击一样,CanCan对现今主流的互联网应用发起了挑战。
该挑战无疑会引起全球企业家、开发者乃至投资者的广泛注意,继而让他们发现构建一个像抖音那样的高规模的互联网服务会更加容易。毕竟,在互联网计算机上,开发者直接可以在网络本体上构建程序和应用,不需要云服务、数据库或支付接口等,除此之外,基于互联网计算机的架构优势,开发者无需考虑很多中间件,就能无缝实现应用与应用间的连接与交互,节约了开发时间的同时,也降低了大量的人工运维成本。
而使用传统的IT技术在AWS上开发应用程序,不仅周期长,在费用上,也会随着终端用户的逐年增多和程序本身扩展的需求而大幅增加。
另外一个更为显著的特点是,作为抖音的一种可行性的开放式替代方案,CanCan并非由公司或政府实体拥有或运营,而是由代币机制建立的治理系统将作为互联网结构的一部分自动运行,这将使得用户在自主掌控身份和数据、共同决定平台发展的层面上,享受到平台服务过程的全透明化和公开化,促使他们的信心倍增。例如,这些年我们多多少少都听说过或亲身经历过Facebook等传统主流社交平台的频繁发生的“信息泄露”事件。而开放的代币化治理系统会保证此类事情不会发生。
CanCan的功能
CanCan和抖音类似,上面可以播放用户自己上传的各类短视频,在此基础上,由于提供了一种视频共享社交网络服务,CanCan还可让人们直接从互联网将视频流式传输和共享到他们的移动设备上。
不过,CanCan最大的功能,来自于它别具一格的代币经济系统——激励用户制作、参与和管理内容,从而让用户真正成为该应用共同的管理者:
在CanCan,用户每24小时可以获得10个“超级赞”。当用户看到一些他们认为会红的视频时,可以给出超级赞。当一个视频火了之后,CanCan会按顺序查看给出超级赞的用户。最早给出超级赞的用户就可以获得大量的奖励积分。定期会有“drop days”(俗称掉落日),在这些日子里,用户可以用奖励积分换取CanCan治理通证,并因参与治理而获得奖励。或者也可以用奖励积分兑换奖品,这些奖品由赞助商提供,赞助商可以用奖励积分支付广告费。
CanCan还允许用户通过以奖励积分的形式向创作者发送提示消息来表达他们对创作者的喜爱之情。所以,视频创作者在上传视频、收到提示以及他们的视频通过超级喜欢传播时都可以获得奖励积分。
CanCan同样可以激励用户帮助审核内容。在应用的个人资料设置中,用户可以在其Feed信息流选项中选择接收新上传但未经审核的内容(只要他们可以验证自己已年满18岁)。当他们看到他们认为不合适的内容时,就可以标记它。如果其他版主也将该内容标记为不当,并到达了某个阀值,则用户最终将因采取行动而获得奖励积分。
然而纵观现今主流的视频共享社交网络平台,它们几乎都由运营公司自我掌控,用户和创作者很少能参与到平台的治理当中,加之不完善的审核规则和机制,使平台逐渐背离了“以用户为本”的初心。
比如就拿我们常用的抖音来说,它的视频推荐方式是一种随机性的流量池推荐机制。也就是说,在用户发布视频、不违规的前提下,官方会进行一个随机推荐,第一次会推荐200-500人,这200-500人如果播放量、点赞量、评论、转发、关注、完播这几个数据达到官方的初步标准,官方就会进行第二次推荐,第二次推荐的播放量在3000左右,第三次推荐在1.2万-1.5万左右,第四次推荐在10万-12万左右,第五次推荐在40-60万左右,第六次推荐在200-300万左右……以此类推。
这似乎看起来没什么问题,不过,其中第四次推荐会介入人工审核,人工审核后才会决定给不给你大的曝光量,这也就说明一个作品能不能火,最终是由平台来控制的,用户并无实质上的权益。而且,人为地控制流量和内容输出,这种偏执的做法尤其对于创作爱好者是极为不公平的。很显然,CanCan在这点上提供了一个好的思路。
除此之外,使用CanCan还能让用户免受隐私困扰和掠夺性的广告技术伤害。
我们经常在抖音上遇到这样一个现象,自己在淘宝上搜索过某些商品后,下次打开抖音,就会被推送与这些商品相关的广告。这是由于淘宝和抖音等平台都内嵌了网络追踪功能,用以标识用户,实现网络追踪分析,目的其实就是为客户提供定制化的服务、广告等。
但是,网络追踪技术也是一把“双刃剑”。对于用户而言,他们能够有更大的可能性接收到自己所需要的广告内容,减少了大量无关广告的污染,定制化的服务可最大化改善用户的访问体验。
同时该技术也存在风险,倘若一个网络追踪器同时出现在多个站点上,当用户的使用时间增加,用户的完整个人信息可能会被暴露,将给用户带来许多隐私安全方面的隐患。因为当前,网络追踪的采集信息面已经十分广泛,其中包括用户访问的网站信息、在线购物搜索记录、视频的浏览记录、社交网站活动等。甚至可以获取到用户个人财务信息、健康状况、宗教信仰、政治背景等相关私密信息。若这些信息泄露或被不法分子采集,将会对人们的生命财产安全造成重大威胁。
而在由区块链技术和互联网计算机技术驱动和支持的CanCan中,用户所有在网络上的信息都是经过加密处理,并且记录在一个公共的区块链上,除了用户自己,没有其他人或组织可以访问和控制。这意味着凡涉及用户在网络上的身份或者数据的东西,平台都无能为力。包括广告商和其他外部平台都无法从网络中取下信息。当然了,如果真的想要获取信息,必须通过相关用户的授权和验证才能使用。这样一来,就彻底将数据权益和身份权益归还给了用户,而且还从源头上避免了大量垃圾广告信息的干扰,可谓一举两得。
CanCan还能帮助开发者和用户实现数据的永久保存,因为它不需要Web服务器、内容交付网络、防火墙、外部数据库来保存状态。该分布式应用由多个有状态模块或容器组成,只需在容器内声明标准数据结构(如数组或映射)即可持久保存所有数据。
CanCan的另一个挑战
除了前文所提及的CanCan对于传统中心化平台发起的挑战,CanCan的开发组成员也公开表示了他们的另一个挑战,他们将制作一个可以不受协议限制地扩展的Dapp。这意味着新的Dapp将处理数百万个视频和数万亿字节。他们的第一种方法是基于Kademlia(一种基于异或运算的点对点信息系统)并在Motoko中实现的分布式哈希表(DHT)。通过与该技术的集成,Dapp的前端会从后端请求视频,后端会直接响应数据或递归地从DHT中的一个对等端请求数据。
团队成员对此表示,“跨多个容器对存储进行分片和重新平衡的能力为应用程序的无限扩展带来了可能性。我们能够在没有传统后端API的情况下编写CanCan,而它的前端则直接建立在DHT相对简单的界面及其“get”和“put”方法之上。不过,我们仍然需要付出大量的努力。事实上,只要保持相同的接口,就可以用不同的语言编写,实现完全替换,比如用Rust编写的容器——这正是我们所做的。”
因此,在DfinityWorld看来,CanCan并不单单只是一个demo那么简单,里面还暗示了开发者们的技术路径和未来挑战。
相信大部分人和我们一样,也特别期望CanCan或者类CanCan应用的上线。毕竟,大家都想看看,在区块链这样一个对数据处理速度比较慢的基础设施上,Dfinity是如何能够做到运行CanCan这样的应用的。