DFINITY 基金会以不到 1000 行代码开发了一个抖音类链上应用 CanCan,证明了自身的可用性,也吸引来一众优秀开发者前来试水。

2020 年是 DeFi 大爆发的一年,不仅产生了新的造富效应,而且证明了区块链的价值。DeFi 应用在经历去泡沫化后继续扬帆起航,在 CeFi 原本的领地内“攻城拔寨”。从市值上来看,DeFi 新龙头们也陆续超越了不少“老主流”。

不过,站在的应用角度,Dapp 所属场景目前仍主要围绕交易、借贷、理财等金融业务,公链们也依附在 DeFi 热点之上,试图复制以太坊生态。反而是像抖音、滴滴、美团等更高频的“传统互联网应用”,由于当前的区块链基础设施难以支撑,而未被搬到链上。

伴随着 DFINITY 的成熟,一个基于区块链的互联网计算机诞生了。这套兼顾链上治理和传统开发习惯的系统希望能降低开发者的准入门槛,同时放大创业者的业务想象力,并借此撼动传统互联网应用时代,制造出下一巨大的链上创业风口。

就像仅有几百行代码的 Uniswap 通过以太坊智能合约对 CEX 发起冲击一样,DFINITY 基金会以不到 1000 行代码开发了一个抖音类链上应用 CanCan,证明了自身的可用性,也吸引来一众优秀开发者前来试水。但在新时代公链们都快马加鞭的 2021 年,DFINITY 的进度能否跟上大部队,也是开发者关心的重点。

考虑到 DFINITY 是一个异常庞大的区块链计算机工程项目,我们将在下文先带读者从外部鸟瞰一下 DFINITY 的大体架构(对其技术有一定了解的读者可以直接跳至第二部分),再对比 DFINITY 与其他公链以及传统互联网的异同,最终,在理解 DFINITY 的架构和对链上开发体验的革命性改变的基础上,一幅波澜壮阔的未来互联网蓝图将呈现在大家眼前。

在此,Odaily 星球日报也要特别感谢多位资深的区块链开发者,SNZ 技术总监 NEO、DfinityFun 社区主理人/OureaGroup 联合创始人 Punk、HashQuark 高级区块链研发工程师 Flanker、DFINITY 核心开发者 Paul(排名不分先后),从不同的视角评价 DFINITY,提供了宝贵的观点和见解。

从技术架构上理解DFINITY

DFINITY 最初的构想始于 2015 年,团队在 2016 年十月创立了 DFINITY 基金会,并在 2017 年 1 月建立了网络层,彼时的核心目标还是希望解决以太坊的一些缺陷。伴随技术发展,以及团队获得更多资金支持并吸纳更多人才,DFINITY 在之前的基础上重设了愿景, 致力于成为互联网计算机。

DFINITY 基于区块链计算协议 ICP 运行,采用了分层结构,主要包含软件容器、子网、节点以及数据中心。它可以看作是由很多个子网(Subnet)组成,在每个特定功能和属性的子网中有多个软件容器(注:软件容器 Canister 是 DFINITY 中的可互操作的基础单元),在软件容器中包含了用户上传的代码和状态。DFINITY 的最底层是托管专用硬件的独立数据中心,数据中心之上运行节点(Node),节点负责处理子网容器中的数据和状态执行。

DFINITY结构图

我们可以借用生物书中的“生命体构成来”理解 DFINITY 的架构:数据中心就像支撑生命构成的基础物质元素,节点则像是神经元,这些神经元连接和控制众多器官组织。每一个软件容器则像一个独立的细胞,一组软件容器组合形成的子网就像一群细胞聚集形成的器官,不同的器官具有不同的功能,当众多器官和神经元网络连接就会形成一个完整的个体,实现非常复杂的功能和操作。

“以太坊们”向左,DFINITY向右

2021 年 1 月 10 日,EOS 创始人 BM 宣布辞去自己在 EOS 母公司 Block.one 的 CTO 职位。这一当年最被寄予厚望的以太坊竞争者,就这样退居后位,曾经的一票以太坊竞争选手,都也逐渐失去颠覆以太坊的实力。而讲着跨链扩容故事们的新兴公链们则更多像是以太坊的补充者,重复着以太坊生态的建筑风格。

DfinityFun 社区主理人、OureaGroup 联合创始人 Punk 在接受星球日报采访时就表示,目前包括以太坊在内的很多公链还是聚焦在 TPS 等问题上,但如果不解决用户体验与脆弱的中心化连接点这些问题,都谈不上带来很大的变革。但是 DFINITY 从底层开始就进行了巨大的创新,站在新赛道的角度向世界介绍区块链。

DFINITY 基金会创始人兼首席科学家 Dominic Williams 在「2020 FAT 价值时代高峰论坛暨颁奖盛典」上曾表示:“互联网计算机是区块链的第三次伟大创新,第一个创新是比特币,它引入了货币的概念,现在正在扮演着数字黄金的角色;第二个创新是以太坊,它引入了智能合约,也推动了去中心化金融DeFi的革命;这第三项重大创新,就是互联网计算机,这是第一台真正的、通用的区块链计算机,它让我们重新去构想,我们构建一切的方式,一种无缝的、无限性能的区块链。”

Dominic 的这段话简述了 DFINITY 三大特性:可以构建各类应用、无缝连接、无限性能。我们也就这三个维度具体展开。

1. DFINITY 可以构建各类应用。以太坊主导的区块链生态目前集中在 DeFi、加密艺术和游戏等领域(后两者相对更为早期),同时这些 Dapp 在功能实现上还较为基础。目前的公链市场上暂未出现一个可以支撑各类型多功能应用的底层。

DFINITY 则“以举例的方式”挑战了这一现状。DFINITY 基金会为了证明开发者可在其上构建一切应用,用不到一千行代码开发出一个类似抖音的应用 CanCan。不同于 DeFi,短视频应用每时每刻都在接收 C 端用户上传的海量数据,同时也需要随时处理这些数据,让视频流畅播放、用户自由互动。这不失为“用拳头产品证明底层可能性”的好案例。

那假设以太坊实现 2.0 的全部功能,也能支持短视频 DAPP 的顺利运行吗?

SNZ 技术总监 NEO 在接受采访时表示,以太坊 2.0 功能如果全部实现了,有可能产生一些更复杂应用的。但是以太坊在底层架构上并没有自身的数据存储层,目前区块上只能保存通证转账交易等一系列数据,未来也是很难解决存储类似抖音这样的海量数据。而 DFINITY 在开发设计时,在底层就设计了原生数据存储功能(注:DFINITY 具有自动存储、正交持久化功能,后文会进一步介绍)。这也让 DFINITY 具有强大的后发优势。

对此,我们追问了以太坊和 IPFS 结合的可能性。NEO 认为,从目前看,IPFS 更多是进行静态数据存储,大家对其网络可用性存疑,还不太适合做大量应用型动态数据存储。整体上,以太坊目前更适合作为资产结算层,存储则是更多放在中心化的一些存储上;未来,以太坊也可能本着分散化原则采用更去中心化的存储方案。

此外,Punk 认为,相比在以太坊等公链上开发,DFINITY 在代码实现上非常灵活高效。公链上的智能合约是“死”的东西,需要外部触发;但 DFINITY 上的容器一直处于一个激活状态,编写的程序通过一个通讯协议,可以实现主动触发。

由此可见,DFINITY 的初始设置考虑到了更多类型应用的需求。

2. DFINITY 可以做到无缝连接。在 DFINITY 上,开发者可以直接在互联网本体上构建程序和应用,不需要云服务、数据库或支付接口等。开发者由于不需要考虑很多中间件,因而可以实现无缝连接地构建应用。

Punk 谈到这样一个事情:“前些日子,Metamask 更新,它的接口也发生了变化,因为我的前后端是分开的,就需要修,前前后后花了很长时间。作为一个独立开发者,如果想要开发很复杂的应用,这样的事情会占去我大部分时间,那我基本上什么也做不了。而在前后端一体的 DFINITY上,不需要自己买前端服务器,或处理中间关于连接的 dirty work。”

Punk 进一步补充道:“在以太坊上构建应用,这种连接点的中心化问题是很难避免的。为了方便普通用户使用,目前大多应用都需要构建一个 Dapp 前端,那就需要购买服务器或者托管在 IPFS 上,且中间需要构建‘桥’来连接。对于开发者而言,构建起来会耗时费力;更重要的是,如果要开发社交等应用,用户体验会非常差。如果是 DeFi 挖矿,耽搁一会儿就还好;如果是聊天之类,很多用户是受不了的。”

相比传统互联网,在 DFINITY 上开发非常方便,不用操心数据库,不用考虑负载均衡、网络分发以及防火墙等等。这为开发者解放出更多时间和精力。

3. DFINITY 具有较强性能优势。当 DFINITY 上的应用需要扩展性能时,原容器可以创建新的容器,或者 fork 自身。每个额外的容器都会增加整体内存容量,在增加容器数量的同时也会增加整体更新和查询调用的吞吐量。这就是所谓的无限性能。

另外,容器的更新虽然只有一个执行线程,但 DFINITY 可以允许应用并行地执行很多个容器。这是因为,在 DFINITY 中不同容器具有不同功能,一个应用会涉及到多个容器,有些容器可能是数据容器,有些可能是信任容器等,容器之间是互相调用的关系,在应用更新时,也互不影响。

除此,DFINITY 对“需要更新容器状态的更新请求”和“会修改容器状态的查询请求”进行了区分。后者不会对内存进行永久更改。这样一来,在任何给定时间,容器内可以有任意数量的并发线程来处理查询调用。这些查询调用针对最后确定的状态根中记录的内存快照运行。当进行跨容器更新调用时,如果该调用发生阻塞,DFINITY 会允许将执行线程移至新的更新调用。

贴近传统互联网的开发体验和优于传统互联网的特性

不知大家是否发现,上文中 Dominic 对于 DFINITY 优势的叙说主要面向开发者群体。这皆因公链 B2D2C 的传导路径。在底层基础设施的展业过程中,得开发者,则得天下。而对于 DFINITY 而言,征服“小撮”其他公链开发者只是一小步,“征用”广大传统互联网开发者才是一大步。

我们询问了几位兼具互联网和区块链开发经验的老手,他们选择某个底层最核心的考虑要素。在我们收集到的答案中,开发门槛(包括语言、环境、中间件)和迁移成本是高度重叠的两点。关于在 DFINITY 上的开发体验,几位开发者也有话要说。

1. DFINITY 通过简化技术栈和简化开发存储,大幅降低了开发难度。DFINITY 核心开发者 Paul 对此进行了详细解释:“程序员在传统互联网编程时非常复杂,因为很多传统技术都被可靠性和安全性所局限,但 DFINITY 在将这两个问题有效解决后,很多中间件不再必要,所以通过简化传统的技术栈就可以有效降低开发难度(注:技术栈一般来指是指将 N 种技术互相组合在一起,作为一个有机的整体来实现某种功能)。更进一步的简化在于存储方面。从前由于存储的不稳定性,我们需要在硬盘上做出备份,但这完全没有必要,最新的硬件技术已经可以解决这样的问题。DFINITY 在这个领域进行了较大开拓并发布了数据持久化方案。这个方案使开发者不需要再担心持久化问题,只要程序被写出并没有被删除,它将会一直运行。这从逻辑上对开发者来讲是一个巨大的简化,他们不再把程序想像成一个存在于复杂环境中的应用,而可以在虚拟空间持续运行。”

2. DFINITY 的开发语言具有很强简洁性,同时具有很大包容性。目前在 DFINITY 上用于开发的两个主要语言是:Rust 和 Motoko。据官方介绍,未来 DFINITY 将会支持所有的开发语言。HashQuark 高级区块链研发工程师 Flanker 在接受采访时表示,根据最近在 DFINITY 上开发的经验来看,首推新的编程语言 Motoko,当然它也支持其他很多语言,比如 C 还有 Rust 等等。“总体上说开发起来是比较舒服的,而且我们可以直接将前端和后端的代码一起编写,非常像开发一个普通的应用程序。开发完成后部署也是非常的简单,可以支持一键部署,然后还可以通过前端页面进行测试和调试。”

可见,只是贴近互联网还不足以吸引到大量开发者,在体验友好之外,还需要有优于互联网的特性,才能让创业者“不得不”选择新底层。我们也将收集到的开发者眼中的 DFINITY 优势特点归纳如下:

1. DFINITY 提供了安全随机性通道,扩展了互联网应用边界。虽然比特币逐渐走向主流,以太坊上的 DeFi 应用蓬勃发展,各区块链生态愈加丰富,但仍与传统互联网无法完美连接或兼容。DFINITY 的安全随机性通道,可能会是两个世界的桥梁,以 API 签名比特币和以太坊的合约,创建更符合数字时代的新型互联网。

2. DFINITY 具有高度容错性能,不会因为故障而崩溃。从后台来看,进程和容器最大的区别在于,容器在 DFINITY 子网的所有节点上都存在一个副本,因此是高度容错的。这就是说,当某一进程发生故障时会崩溃,但容器遇到这种情况则将状态会被回滚到当前消息请求开始执行之前,回滚之后的容器可以继续执行新的消息请求。

3. DFINITY 具有自动存储,正交持久性功能。DFINITY 的底层数据中心使用的是专业内存服务器,容器就相当于运行在内存环境中,开发者在容器内编程,会自动在底层存储,而且可以直接调用,也就是说开发者的读写都在容器中完成,不需要像传统互联网那样先存储在硬盘中,然后需要用时再从硬盘中调用。在 DFINITY 中,开发人员不必考虑持久性问题,而只需编写代码就可以。

4. DFINITY 展示出更多无感的互联网设计原则,同时保护隐私。在(传统)互联网上,想要连接到某些软件,需要知道运行该软件的计算机 IP 地址和该软件正在侦听的 TCP 端口。在 DFINITY 上,如果希望调用函数,则只需要知道容器的身份和函数签名即可。另外,为了运行托管的代码,数据中心会向应用开发者以加密货币的形式收取费用,但却无法访问数据,这使得广告商很难在互联网上收集用户活动,起到保护隐私的作用。

由DFINITY带来的创业新风口

既然相比传统互联网,DFINITY 有这么多优势,那开发者/创业者将会如何利用“神器”、掀起巨变呢?

Flanker 回答说:“你可以想象在我们这个巨大的互联网上运行着一台公共的、虚拟的计算机,其计算资源是足够大的,而且我们可以充分信任在上面的使用和数据安全,因为它是去中心化的、防篡改的、无须信任的。人们可以自由的在上面上传并部署自己的应用供别人使用,而不用投入巨大的服务器租用成本。我认为 DFINITY 与传统互联网最本质的区别在于,它没有运营主体,任何人可以无需信任就使用上面的应用。”

Dominic 曾表示,对于创业者和投资者来说,最大的机会或许与构建“开放式互联网服务”有关。而发布 CanCan,也是想以此为应用程序范本,给创业者一些代码展示,激励大家来 DFINITY 上实现他们自己想要实现的各种应用和功能,创造有高价值的应用。

如果其他涉及海量数据和事务的应用可以在 DFINITY 上更快速地搭建,那么创业者无需很高的启动成本,即可快速试错,把精力投入到代码之外的业务逻辑上。

Flanker 对这一观点表示认同:“之所以看好 DFINITY,是因为 DFINITY 有优秀的区块链共识机制、较快的区块最终确认性以及无限扩容的能力这三大基础,因此能够支持在上面做企业级应用,做出来的项目更有可能是真正能让区块链落地于实体经济的杀手级产品。”

2 月 18 日,由福布斯和 DFINITY 合办的“万亿美元机遇:新型互联网是如何重塑商业模型想象力”线上活动将围绕这一主题展开讨论。目前已确认嘉宾包括 Dominic、EFF 执行经理 Cindy Cohn、Mediapolis 院长 Alan Emtage、ClariNet创始人Brad Templeton、Forbes 加密与区块链频道副主编 Michael del Castillo。

路漫漫其修远兮,吾将上下而求索

客观来看,虽在技术上受到不小的认可,但在新生代公链环伺的 2021 年,仍处于早期阶段的 DFINITY 需要加快步伐,优先处理紧急且重要的事项。

Odaily 星球日报在与开发者们交流的过程中,也收获到他们眼中 DFINITY 需要解决的问题,以及走向长远目标的更短路径。

Flanker 就认为,在选择一个底层前,除了考察开发环境、辅助工具、指导性文档、示例程序代码库这些是否完备等之外,最重要的是开发是否有持续性激励和扶持。一个再优秀的互联网产品如果没有多少人用,也不会成功。“因此 DFINITY 不仅要能够吸引开发者,同样还要想办法吸引用户来使用,持续性激励和扶持则是很重要的一个推广方式。”

Punk 表示,DFINITY 的数据中心,要求必须是专业的内存服务器(无硬盘),传统服务器不能用,所以这种门槛和成本会比较高,挡住一批人进来。虽然待生态成熟后,后来的开发者的成本降低完全可以覆盖掉数据中心的高投入,但一开始还是会有中心化的问题。所幸 DFINITY 的治理系统(神经网络元)是完全去中心化的,可以弥补不足。目前大家比较关注的是 DFINITY 什么时候开源源代码,这样一方面可以打消市场上的一些质疑声,另一方面也可以让开者尽快围绕 DFINITY 去构建生态应用。

NEO 对于 DFINITY 的开源进度也表示关切,同时他指出:早期比较关心 DFINITY 生态工具的完善性;其次就是希望整个产品的规划非常清晰,比如社区建设、开发者的复制,以及技术文档等,如果像很多项目仅依靠社区,是挺难发展起来的,官方需要更多做引导工作;再有是希望可以看到在 DFINITY 上跑出一两款现象级应用,让大家更好认识 DFINITY,从而吸引更多人参与进来;最后,比较关心的就是迁移成本和好的迁移工具,比如以太坊上的应用和工具是不是可以很方便的迁移到 DFINITY 上;另外,如果成本可控,针对传统互联网上的一些应用是否可以很方便地迁移,比如设计“一键迁移”功能,可以将传统应用的代码直接部署在 DFINITY 上,如果可以,那将产生非常好的效果,DFINITY 可以很快获得一部分传统互联网的价值,生态也会很好建设和发展起来。

鉴于在采访过程中,很多开发者以及早期项目参与者都热切关心 DFINITY 的进度,我们也在下文简单梳理下 DFINITY 的近期成果和未来规划。

据官方,DFINITY 共有五个主要的里程碑:黄铜、青铜、钨、钠、汞主网上线。

2020 年 12 月 18 日,基于汞(Mercury)的第一阶段完成,DFINITY 基金会初步实现 DFINITY 主网的去中心化,这使网络神经系统(NNS)这一算法治理系统能够搭载数千个独立数据中心和数百万台特殊节点机器。

2021 年 1 月 6 日,DFINITY 主网 Mercury 第一阶段 Alpha 正式发布,代表着互联网计算机将成为公共互联网的一部分,将 ICP 作为 TCP/IP 的补充互联网协议。自主网推出以来,DFINITY 已经创建超过 40 万个区块,NNS 正在筹备在 2021 年第一季度末前入驻 32 个独立数据中心,并计划在 2021 年底前入驻 100 个,到 2030 年入驻数千个独立数据中心的目标。

Mercury 里程碑现在使互联网计算机走上最终“创世”去中心化阶段的短途,涉及 NNS 以表决神经元的形式向持有人释放 ICP 功能性代币,并将在处理触发提议后开启,开启时间预计是在 2021 年第一季度。一旦“创世”的需求被触发,超过 5 万个 ICP 功能性代币持有者将开始参与网络治理,或解散其投票神经元以释放 ICP 功能性代币,并将其转换为 Cycles 用于加强计算。

总结

DFINITY 不仅仅是一个公链项目,而是基于区块链构建了更为完善的互联网服务,这是一次不亚于以太坊和比特币的巨大创新。

DFINITY 改变了开发者构建应用的范式,让开发者不用再操心数据库,不用考虑负载均衡、网络分发以及防火墙等等,而可以把更多时间用于考虑代码逻辑实现上,这就像把开发者从“农耕时代”解放出来,用机器代替繁琐的工作,而大脑进行更多地创造,这样有可能使得更多富有创造性的应用井喷式的爆发。

对于创业者而言,DFINITY 提供了一个巨大的时代风口,一个天才的开发者可以在互联网计算机上低成本构建任何创新性的应用,一旦成功会很难被超越。在以太坊时代,Uniswap 的成功就是一个很好的例子,只需要几百行代码,天才性的创造力就不会被辜负。我们将翘首期盼在互联网计算机上出现下一个伟大的应用产品。

作者:二十三画生(Odaily 星球日报)

排版:Catherine

你关心的 IC 内容

技术进展 | 项目信息 | 全球活动

收藏关注 IC 币安频道

随时答疑解惑