TL;DR

注:本文为作者个人在现阶段的观点,一些思考可能存在事实上的错误和观点上的偏见,仅作为交流之用,期待来自其他同学的指正。

  • BTC 提出电子现金,开辟区块链行业从 0 到 1
  • ETH 提出智能合约,率领区块链行业从 1 到 100
  • ICP 提出 Chainkey 技术,驱动区块链行业可以从 100 到 100,000,000

Introduction

2009 年 1 月 3 日,BTC 第一个区块被挖出,自此区块链激荡发展 14 年。

纵观过去 14 年,BTC 的精妙与伟大,Ethereum 的横空出世,EOS 的激情众筹,PoS&PoW 的宿命之争,Polkdadot 的万链互连,一项项惊为天人的技术,一个个美妙绝伦的故事,让无数圈内人竞折腰!

当前,2023 年,整个区块链的格局是怎样?以下是我的思考,详见此文中的公链格局解读部分

  • BTC 凭借着引入电子现金的正统性,屹立不倒,是行业的巨石
  • ETH 凭借着引入智能合约的可编程性,L2 生态的可组合性,百花齐放,是行业的领导者
  • Cosmos,Polkadot 等凭借着跨链互操作性,试图一统天下
  • 各类以太坊杀手层出不穷,小领域内各领风骚

但未来 10 年,整个区块链行业会如何发展?以下是我的思考

  • 主权是区块链唯一需要解决的一个问题,包括资产主权,数据主权,言论主权等,否则没必要有区块链这个东西;
  • 不可篡改性是充分条件,但不是必要条件,只要你能保证我的主权不受损害,我随便你篡改,世界上每个人的资产都被篡改同比例翻倍,有什么区别?
  • 完全的去中心化不可能做到,不管怎么设计,总有“天赋”异禀者/既得利益者占据更大话语权,也总有人会主动选择不参与,【去中心化的多点中心化】是最终格局;
  • 透明化是必须,这场全人类的社会实验不就是为了让每个人都说得上话,都能有权利保护自己的主权吗?虽然总有人懒,总有人愿意相信更专业的人,总有人为了效率最大化主动选择放弃投票,但是,这也是他们主动做出的选择,他们有权利但主动选择不行使。只要一切是透明的,没有暗箱操作,死个明白我也愿意接受,输了是我技不如人,优胜劣汰,这也符合市场经济;
  • 去中心化代码执行的控制权才是核心,否则就是脱裤子放屁,投票公示一周,最后项目方还是部署了作恶版本的代码,哪怕不是作恶版本,也是在戏弄大家。可以说现在半个世界都是代码组成的,去中心化的实体不包括代码执行的控制权,那人们包括政府怎么敢让区块链行业做大?
  • 线性成本的无限扩展性,随着区块链与现实生活结合得越来越紧密,参与的人越来越多,需求越来越大,基础设施上无法支持无限的扩展性,或者扩展起来太贵,都是不可接受的。

Why ICP

这里先引入一个故事,2009 年阿里巴巴提出 “去 IOE” 战略,这也是后来成就阿里 “双十一” 的一大里程碑。

去 IOE

“去 IOE” 战略的核心内容就是要去除 IBM 小型机、Oracle 数据库及 EMC 存储设备,将 “云计算” 的本质植入阿里的 IT 基因。其中

  • I 指 IBM p 系列小型机,操作系统是 AIX(IBM 专有的 Unix 系统);
  • O 指 Oracle 数据库(RDBMS);
  • E 指 EMC 中高端 SAN 存储。
img

去 IOE 的原因主要有以下三点,但第一点是本质原因,后两者更间接:

  • 无法满足需求,传统 IOE 系统难以适应互联网企业高并发需求,无法支持大规模分布式计算架构;
  • 成本太高,维护 IOE 成本太高,比如 IBM 小机 50 万,Oracle 年保数十万等;
  • 依赖性太强,IOE 系统依赖性太强,被 IBM 和 Oracle 等厂商 “绑架”,难以根据自身需求进行灵活配置。

那为什么是 2009 年提出 “去 IOE” 战略而不是更早呢?

  • 在此之前,
    • 阿里业务规模和数据量还没有达到使传统 IOE 系统难以适应的程度,因此去 IOE 的需求不急;
    • 国内数据库产品在技术和质量上还不够成熟,无法很好替代 IOE 作用;
    • 互联网思想和云计算概念在国内还未普及,分布式架构未成流行方向;
    • 管理层和技术人员可能需要一段时间的实践积累,才意识到存在的问题和必须采取的措施。
  • 2009 年,
    • 阿里快速扩张业务,IOE 系统难支持规模,成本更易显现出问题;
    • 一些开源数据库产品如 MySQL 成熟程度较高,可以作为替代品;
    • 互联网思想和云计算在国内开始广泛流传、应用,更便于推广 "去 IOE" 概念;
    • 前微软技术大牛,王坚,带着全球性的技术视角在 08 年加入阿里,深受马云信任,提出了 "去 IOE"。

但是 “去 IOE” 不是简单地改变软件和硬件本身,用新的软硬件取代旧的软硬件,而是用新的方式取代旧的方式,是用云计算彻底改变 IT 基础架构。换句话说,这是行业的变化导致的,而不是仅仅是简单的技术升级。

企业发展三大阶段

一个企业的发展可以分为 3 个阶段,

  • 塑造基因,组织文化,Start-up,从 0 到 1
  • 快速成长,小步快跑,Scale-up,从 1 到 100
  • 无限扩展,拓宽边界,Scale-out,从 100 到 100,000,000

下面把整个区块链行业当成是一个企业来分析

Start-up / 区块链 1.0 / BTC

比特币的创新之处在于它解决了数十年来困扰计算机科学家的一个问题,即如何创建一个可以在无需信任任何中央机构的情况下运行的数字支付系统。

但 BTC 在其设计和开发中,也确实存在一些局限性,这些局限性为以太坊(ETH)等后续的区块链项目提供了市场机会。以下是一些主要的局限性:

  1. 交易吞吐量和速度:比特币的区块生成时间约为 10 分钟,且每个区块的大小限制导致了其交易处理能力的上限。这意味着在网络繁忙时,交易确认可能需要较长时间,且可能需要支付较高的交易费用。
  2. 智能合约功能有限:比特币的设计主要是作为一种数字货币,它支持的交易类型和脚本语言功能相对有限。这限制了比特币在复杂的金融交易和去中心化应用(DApps)方面的应用。
  3. 不易升级和改进:由于比特币的去中心化和保守的设计原则,对其进行大的升级和改进通常需要社区的广泛共识,在实践中很难达成,这也使得比特币的进步相对缓慢。
  4. 能耗问题:比特币的共识机制是基于工作量证明(PoW)的,这意味着大量的计算资源被用于矿工之间的竞争,导致了大量的能耗。这在环保和可持续性方面受到了人们的批评。关于这一点,大家也可以关注一下 EcoPoW,算是部分缓解了这个局限性。

Scale-up / 区块链 2.0 / ETH

当前以太坊的 Layer 2 扩容形式可以看作是一种 “纵向扩展”,依赖于底层 Layer 1 的安全性和数据可用性保证。虽然看似是 2 层结构,但是最后还是会被 Layer 1 的处理能力所限制,即使换成多层结构,即打造 Layer 3,Layer 4,无非也只是增加整个系统的复杂性,拖延一点时间而已。更何况根据边际递减效应,后面每多加一层,多出来的 overhead 就会导致扩容效果大打折扣。这种纵向分层的方式可以看作是单机硬件升级,只不过这个单机指的是整个 ETH 生态。

且随着使用量增加,用户对低廉费用和高性能需求也会增加。而 Layer 2 作为 Layer 1 上的一个应用,其费用只能降低到一定程度,最终仍受制于 Layer 1 的基础费用和吞吐量。这类似经济学中的需求曲线理论 - 随着价格下降,总需求量会增加。纵向扩展很难从根本上解决可扩展性问题。

以太坊是一棵参天巨树,所有的人都依靠着那个根,一旦那个根汲取养分的速度跟不上,人们的需求也就得不到满足;

因此,只有横向扩展才是更容易拥有无限性的。

有人认为多链跨链也算是一种横向扩展方式,

  • 拿 Polkadot 来举例子,它是异构王国,每一个国家长得不一样,但每做一个东西就要建一个王国;
  • Cosmos 是同构王国,每个国家的经脉骨骼长得一样,但也是每做一个东西就要建立一个王国;

但从 Infra 角度来看,以上这两者的模式略显奇怪,每多做一个应用就要多建立一整个王国?我们举个例子来看看有多奇怪,

  • 3 个月前我买了一台 Mac,在它上面开发了一个 Gmail 应用;
  • 现在我想开发一个 Youtube 应用,但我必须要重新买一台 Mac 来开发,这太奇怪了。

且以上这两种方式都面临新增链时跨链通信复杂度高的问题,因此它们并不是我的首选。

Scale-out / 区块链 3.0 / ICP

想要 scale-out,需要一整套底层的基础设施,支持快速地横向扩展,不用重复造轮子。

一个比较典型的支持 scale-out 的例子就是云计算,【VPC+子网+网络ACL+安全组】这些底层模版大家都一模一样,所有的机器都带着编号和类型,上层的 RDS,MQ 等核心组件支持无限扩展,如果需要更多的资源,点击一个按钮就可以快速启动。

之前有一位 Leader 给我分享过,如果你想了解互联网企业需要哪些基础设施和组件,那你只需要去 AWS 看一下他们提供的所有服务就行了,那是最全最强的组合。

同理,我们来 high-level 看看 ICP,看看为什么它满足 Scale-out 的要求。

这里先说明几个概念,

  • Dfinity Foundation:是一个非营利性组织,致力于推动去中心化计算机技术的发展和应用。它是 Internet Computer 协议的开发者和维护者,旨在通过创新的技术和开放的生态系统,实现去中心化应用的全面发展。
  • Internet Computer (IC):是 Dfinity Foundation 开发的一种高速区块链网络,专门为去中心化应用设计。它采用了一种新的共识算法,可以实现高吞吐量和低延迟的交易处理,同时支持智能合约和去中心化应用的开发和部署。
  • Internet Computer Protocol (ICP):是 Internet Computer 协议中的原生代币,它是一种数字货币,用于支付网络使用费用和奖励节点。

What’s ICP

以下许多内容会有一些些硬核,但是我已经进行了大白话描述,希望大家都可以跟得上。如果有更多细节内容希望与我讨论,可以在文章最上方找到我的联系方式。

架构概述 / Architecture Overview

  • 从分层结构看,从下至上分别为
    • P2P 层,收集和发送来自用户、子网中的其他副本和其他子网的消息。保障消息能传递到到子网中的所有节点,以确保安全性、可靠性和弹性。
    • 共识层:主要任务是对 input 进行排序,以确保同一子网内部的所有节点以相同的顺序处理任务。为了实现这一目标,共识层使用了一种新的共识协议,该协议旨在保证安全性和活性,并具有抗 DOS / SPAM 攻击的能力。同一子网内部对处理各种消息的顺序达成共识后,这些区块会被传递到消息路由层。
    • 消息路由层:根据共识层传来的任务,准备好各 Canister 的输入队列。执行完毕后,它还负责接收 Canister 产生的输出,并按需转发给本地或其他区的 Canister。此外,它还负责记录和验证用户请求的响应。
    • 执行层,为 Canister 提供运行时环境,按照调度机制有序读取输入,调用相应Canister 完成任务,并将更新后的状态和产生的输出返回给消息路由层。它利用随机数带来的非确定性,以保证计算的公平性和可审计性。因为在某些情况下,Canister 的行为需要是不可预测的。例如,在进行加密操作时,需要使用随机数来增加加密的安全性。此外,Canister 的执行结果需要具有随机性,以避免攻击者通过分析 Canister 的执行结果来发现漏洞或者预测 Canister 的行为。
4-layers of ICP

4-layers of ICP

关键组件 / Key Components

img
  • 从组成成分看,
    • 子网(Subnet):支持无限扩展,每一个子网就是一个小型区块链。Subnet 之间通过 Chain Key 技术通信,因为已经在子网内部达成共识了,所以只要通过 Chain Key 验证就行了。
    • 副本(Replica):每一个 Subnet 中可以有很多个节点,每一个节点都是一个 Replica,IC 的共识机制会保证同一个 Subnet 中的每一个 Replica 都会以相同的顺序去处理相同的 input,使得每一个 Replica 的最终状态都是相同的,这种机制被称为 Replicated State Machine,
    • 罐子(Canister):Canister 是一种智能合约,它是一种运行在 ICP 网络上的计算单元,可以存储数据和代码,并且可以与其他 Canister 或者外部用户进行通信。ICP 提供了一个运行时环境,用于在 Canister 中执行 Wasm 程序,并通过消息传递与其他 Canister 和外部用户进行通信。可以简单地认为就是跑代码用的一个 docker,然后你自己注入 Wasm Code Image 在里面运行。
    • 节点(Node):独立的服务器,Canister 还是需要有一个实体机器来跑的,这些实体机器就是真实的机房里面的机器了。
    • 数据中心(Data Center):数据中心的节点通过节点软件 IC-OS 虚拟化为一个副本(Replica),从多个数据中心中随机选取一些 Replica 组成一个子网(Subnet)。这样可以保证即使一个数据中心被黑了或者是遭遇天灾了,整个 ICP 网络还是正常运行的,有点像阿里巴巴 “两地三中心” 容灾高可用方案的升级版。数据中心可以分布在全世界各地,甚至以后可以在火星搭建一个数据中心。
    • 边界节点(Boundary Nodes):提供外部网络和 IC 子网之间的入口和出口,验证响应。
    • 身份主体(Principal):外部用户的标识符,由公钥派生,用于权限控制。
    • 网络神经系统(NNS):使用抵押 ICP 进行治理的算法 DAO,用于管理 IC。
    • 注册表(Registry):由 NNS 维护的数据库,包含实体(如 Replica、canister、Subnet)之间的映射关系,跟现在的 DNS 工作原理有点像。
    • Cycles:本地代币,代表用于支付 canister 运行时消耗的资源的 CPU 配额。非要用中文表示的话,我会用 “计算周期” 这个词,因为 cycles 主要是指用于支付计算资源的单位。
img

关键创新技术 / Key Innovative Technologies

img
  • 从底层来看,采用了 Chain-key 技术,其中
    • Threshold BLS signatures:ICP 实现了阈值签名方案,对于每一个 Subnet,有一个公共的可验证的公钥,而它对应的私钥却是拆分成多份 share 的,每一份 share 由这个 Subnet 中的一个 Replica 去持有,只有同一个 Subnet 中超过阈值数量的 Replica 对消息签名了才被认为是有效。这样 Subnet 之间,Replica 之间传递的消息都是加密但可快速验证的,既保证了隐私性,又保证了安全性。其中 BLS 算法就是比较著名的一种阈值签名算法,它是唯一能产生非常简单且高效的阈值签名协议的签名方案,且签名是唯一的,这意味着对于给定的公钥和消息,只有一个有效的签名。
    • Non-interactive Distributed Key Generation (NIDKG):为了安全地部署阈值签名方案,Dfinity 设计、分析并实现了一种新的 DKG 协议,该协议在异步网络上运行且具有很高的健壮性(即使子网中多达三分之一的节点崩溃或损坏,它仍然可以成功),同时仍然能够提供可接受的性能。除了生成新密钥外,此协议还可用于重新共享现有密钥。此功能对于实现 IC 拓扑的自主演进至关重要,因为子网随着时间推移会发生成员变化。
      • Publicly Verifiable Secret Sharing scheme (PVSS Scheme):即公开可验证秘密共享方案。在 Internet Computer 协议的白皮书中,PVSS scheme 被用于实现去中心化密钥生成(DKG)协议,以确保节点的私钥在生成过程中不会被泄露。
      • 前向安全公钥加密方案(forward-secure public-key encryption scheme):前向安全公钥加密方案可以确保即使私钥被泄露,以前的消息也不会被解密,从而提高了系统的安全性。
      • Key resharing protocol:一种基于阈值签名的密钥共享方案,用于在 Internet Computer 协议中实现密钥管理。该协议的主要优点是它可以在不创建新的密钥的情况下,将现有的密钥共享给新的节点,从而减少了密钥管理的复杂性。此外,该协议还使用阈值签名来保护密钥共享的安全性,从而提高了系统的安全性和容错性。
    • PoUWPoUW 比 PoW 多了一个 U,它代表 Userful,主要是提高了不少性能,让节点机器少做无用功。PoUW 不会人为制造困难的哈希计算,它将算力尽可能的放在为用户服务上。大部分资源(CPU、内存)用于实际 canister 中代码的执行上。
    • Chain-evolution technology:是一种用于维护区块链状态机的技术,它包括了一系列的技术手段,可以确保区块链的安全性和可靠性。在 Internet Computer 协议中,Chain-evolution technology 主要包括以下两个核心技术:
      1. Summary blocks:每个 epoch 的第一个区块是一个 summary block,它包含了一些特殊的数据,用于管理不同的阈值签名方案。其中,一个低阈值方案用于生成随机数,而一个高阈值方案用于认证子网的复制状态。
      2. Catch-up packages (CUPs):CUPs是一种用于快速同步节点状态的技术,它可以让新加入的节点快速地获取到当前状态,而不需要重新运行共识协议。
img

我对整个 IC 底层技术的逻辑性推导为:

  • 在传统的公钥密码学中,每个节点都有自己的公私钥对,这意味着如果一个节点的私钥被泄露或被攻击,那么整个系统的安全性都会受到威胁。而阈值签名方案将一个密钥分成多个部分,分配给不同的节点,只有当足够数量的节点合作才能生成签名,这样即使某些节点被攻击或泄露,也不会对整个系统的安全性造成太大影响。此外,阈值签名方案还可以提高系统的去中心化程度,因为它不需要一个中心化的机构来管理密钥,而是将密钥分散到多个节点中,这样可以避免单点故障和中心化风险。因此,IC 使用阈值签名方案来提高系统的安全性和去中心化程度,希望用阈值签名的方式来完成一个安全性高,可扩展,可快速验证的通用区块链。
  • 而 BLS 就是一种著名的阈值签名算法,它是唯一能产生非常简单且高效的阈值签名协议的签名方案。且 BLS 签名还有一个优点就是不需要保存签名状态,只要消息内容不变,签名就是固定的,这意味着对于给定的公钥和消息,只有一个有效的签名。这都保证了极高的扩展性,因此 ICP 选择了 BLS 方案。
  • 因为用了阈值签名,所以需要有一个分发者来分发密钥片段给不同的参与者,但是这个分发密钥片段的人就是一个单点,容易导致单点故障问题,因此 Dfinity 设计了一种分布式的密钥分发技术,也就是 NIDKG,在子网创建的初始化时期,所有参与的 Replica 共同非交互式地生成一个公钥 A,对于对应的私钥 B,每个参与者通过数学方式分别算出和持有其中的一个衍生计算出来的 secret share。
  • 要想做 NIDKG,就得保证分布式的每一个参与方都没有作假,因此每个参与者不仅可以得到自己的 secret share,还可以公开让别人验证自己的 secret share 是否正确,这是实现分布式密钥生成的一个非常重要的点。
  • 那如果万一某个历史时刻的子网密钥被泄漏了呢?怎么保证历史数据的不可篡改性呢?Dfinity 采用了一种前向安全的签名方案,这保证了即使某个历史时刻的子网密钥被泄露,攻击者也无法更改历史区块的数据,这样也防止了后期腐败攻击对区块链历史数据的威胁。如果这个限制更强一些,其实也可以保证信息在传输时不会被窃听成功,因为时间戳对不上,即使短时间内密钥被破解了,也无法破解过去的通信内容。
  • 有了 NIDKG 之后,如果某一段 secret share 长期被一个节点持有,一旦各个节点逐渐被黑客侵蚀,整个网络有可能会出现问题。因此需要不停地进行密钥更新,但是密钥更新也不能要求所有参与者 Replica 必须齐聚一堂交互通信,而是也必须非交互式地进行。但是因为公钥 A 已经在 NNS 里面注册好了,别的子网也都会用这个公钥 A 来进行验证,因此子网公钥最好不要变。可是子网公钥如果不变的话,节点间的 secret share 怎么更新呢?因此 Dfinity 设计了一种 Key resharing protocol,在不创建新公钥的前提下,所有持有当前版本 secret share 的 Replica 非交互式地生成新一轮的衍生 secret share 给到新版本的 secret share 持有者,这样
    • 既保证了新版本的 secret share 是经过当前所有合法 secret share 持有者的认证的
    • 也保证了旧版本的 secret share 不再合法
    • 还保证了即使未来新版本的 secret share 泄漏了,旧版本的 secret share 也不会泄漏,因为两者之间的多项式毫不相关,是无法反推出来的。这也是前面刚刚介绍的前向安全性。
    • 另外保证了高效重新随机分发,当受信任节点或访问控制发生变化时,可以随时修改访问策略和控制者,无需重新启动系统。这在许多场景下都大大简化了密钥管理机制。例如,这在子网成员变化的情况下非常有用,因为重新共享将确保任何新成员都有适当的 secret share,而任何不再是成员的副本将不再有 secret share。此外,如果在任何一个时期或甚至每个时期中泄露了少量的 secret share 给攻击者,这些 secret share 对攻击者也没有任何帮助,因为旧版本的 secret share 已经是非法的了。而只有当前的子网节点才能生成合法的当前 epoch 的签名,因此即使旧的子网节点合谋,生成的签名对现在也没有用。
  • 因为传统的区块链协议需要存储从创世块开始的所有块信息,随着区块链的增长,这会导致可扩展性问题,这也是为什么很多公链想开发一个轻客户端都非常麻烦。于是 IC 想解决这个问题,因此 IC 开发了 Chain-evolution Technology,在每个 epoch 结束时,已处理的所有 input 和需要 consensus 信息都可以安全地从每个 Replica 的内存中清除,这极大地降低了每一个 Replica 的存储要求,它使得 IC 能够扩展以支持大量的用户和应用程序。此外,Chain-evolution technology 还包含 CUPs 技术,它可以让新加入的节点快速地获取到当前状态,而不需要重新运行共识协议,这大大降低了新节点加入 IC 网络的门槛和同步时间。
  • 综上,IC 的所有底层技术都是一环扣一环,基于密码学(来自理论),也充分考虑了整个行业的难题如快速同步节点(来自实践)。真乃集大成者也!

特性 / Key Features

  • 从特性上来看
    • 反向 Gas 模型:传统的区块链系统大多要求用户先持有原生代币,例如 ETH,BTC,然后消耗原生代币来支付交易手续费。这增加了新用户的进入障碍,不符合人们的使用习惯。为什么我刷个 Tiktok 一定要先持有 Tiktok 的股票?而 ICP 采用了反向 Gas 模型设计,用户可以直接使用 ICP 网络,项目方会负责手续费,这降低了使用门槛,更契合了互联网服务的习惯,有利于获得更大规模的网络效应,从而支持更多用户的加入
img
  • 稳定的 Gas:对于市面上的其他公链来说,为了链的安全性,也为了转账需要,就会有人去买原生代币,矿工就去拼命地挖,或者有人拼命地屯原生代币,这样就为这条公链贡献了算力例如 Bitcoin,或者为这条公链提供了质押经济安全性例如 Ethereum。可以说我们对 btc/eth 的需求其实是来源于 Bitcoin/Ethereum 公链对于算力/质押的要求,本质上也是链的安全要求。因此,只要是直接用原生代币来付 gas 的链,以后还是会贵的,也许现在原生代币便宜,但是只要链本身生态起来了,后面都会变贵。而 ICP 不一样,ICP 区块链中消耗的 Gas 叫 Cycles,这是通过消耗 ICP 兑换而来的,Cycles 在算法调节下处于稳定,与 1 SDR 锚定(SDR 可以看作综合多国法币计算后的稳定单位)。因此不管 ICP 以后涨到多少,你在 ICP 里面做任何事情消耗的金钱跟今天都是一样的(不考虑通胀)。
img
  • Wasm:使用 WebAssembly (Wasm) 作为代码执行的标准,开发者可以使用多种流行的编程语言(比如 Rust,Java,C++,Motoko 等)去写代码,从而支持更多开发者的加入
  • 支持跑 AI 模型:Python 语言也可以编译为wasm,Python 用户量世界名列前茅,也是 AI 的第一语言,比如矩阵和大整数计算。已经有人在 IC 上跑 Llama2 模型了,如果说未来 AI + Web3 的概念发生在 ICP 上,我一点也不会惊讶。
  • Web2 速度的体验:目前 ICP 上的很多应用都做到了毫秒级查询、秒级更新的惊人成绩。如果不信你可以直接去使用 OpenChat,一个纯链上的去中心化聊天应用。
  • 链上运行前端:你只听说过后端的部分内容写成简单的智能合约,然后放在链上跑,这样可以保证数据资产等核心逻辑不被篡改。但是前端其实也需要完全跑在链上才安全,因为前端攻击是非常典型和频繁发生的问题。试想一下大家可能觉得 Uniswap 代码很安全,智能合约经过这么多年的这么多人的验证,代码也简单,肯定不会出问题吧。但是突然有一天如果 Uniswap 的前端被劫持了,跟你交互的合约其实是黑客部署的一个恶意合约,你可能瞬间就会倾家荡产。但是如果你将前端代码全都存储和部署在 IC 的 Canister 里,最起码通过 IC 的共识安全保证了前端代码无法被黑客攻击篡改,这个防护就比较完善了,且 IC 上可以直接运行和渲染前端,并不影响应用的正常运作。在 IC 上,开发者可以直接构建应用程序,无需传统云服务、数据库或支付接口,也没有必要购买一个前端服务器或担心数据库、负载均衡、网络分布、防火墙等问题。而用户通过浏览器或移动端 App 就可以直接访问 ICP 上部署的前端网页,例如我之前部署的一个个人博客
  • DAO 控制代码升级:现在许多 DeFi 协议,项目方拥有完全控制权,可以任意发起重大决定如暂停运营、卖出资金等,完全不经过社区投票商议,这种 case 相信大家都有见证或者听说过。相比之下,ICP 生态下的 DAPP 代码运行在 DAO 控制的容器内,即使某个项目方在投票中占较大比重,但也实行公示投票流程,满足了本文最开始描述的区块链透明化的必要条件。这种流程保证机制更能反映社区意愿,相对目前的其他公链项目来说在治理上实现程度更优
  • 协议自动升级:当需要升级协议时,可以在summary block中添加新的阈值签名方案,从而实现自动协议升级。这种方式可以确保网络的安全性和可靠性,同时避免了硬分叉所带来的不便和风险。 具体来说,ICP 中的 Chain Key 技术可以确保网络的安全性和可靠性,它通过一种特殊的签名方案来维护区块链状态机。在每个 epoch 的开始,网络会使用一个低阈值签名方案来生成随机数,然后使用一个高阈值签名方案来认证子网的复制状态。这种签名方案可以确保网络的安全性和可靠性,同时也可以实现自动协议升级,从而避免了硬分叉所带来的不便和风险
Proposal Voting

Proposal Voting

  • Fast fowarding:是 Internet Computer 协议中的一种快速同步节点状态的技术,它可以让新加入的节点快速地获取到当前状态,而不需要重新运行共识协议。具体来说,Fast forwarding 的过程如下:
    1. 新加入的节点获取当前 epoch 的 Catch-up package (CUP),其中包含了当前 epoch 的 Merkle 树根、summary block 和随机数。
    2. 新加入的节点使用 state sync subprotocol 从其他节点获取当前 epoch 的完整状态,同时使用 CUP 中的 Merkle 树根验证状态的正确性。
    3. 新加入的节点使用 CUP 中的随机数和其他节点的协议消息运行共识协议,从而快速地同步到当前状态。

Fast forwarding的优点是可以让新加入的节点快速地获取到当前状态,不需要像一些其他公链一样必须从头开始出块。这样可以加速网络的同步和扩展,同时,它也可以减少节点之间的通信量,从而提高网络的效率和可靠性。

fast forwarding

fast forwarding

  • 去中心化的互联网身份:在 IC 上的身份系统,真的让我觉得 DID 问题完全可以被解决掉了,而且是彻底解决掉,不管是扩展性还是隐私性。IC 上的身份系统目前有一个实现版本被称为 Internet Identity,还有基于它开发的更强大的 NFID
    • 它的原理如下:
      • 注册时,它会为用户生成一对公钥和私钥。私钥储存在用户设备内的 TPM 安全芯片中且永远不会泄漏,而公钥会被分享给网络上的服务。
      • 当用户要登录一个 DApp 时,DApp 会为用户创建一个临时会话密钥。这个会话密钥会被用户通过授权电子签名的方式签名,这样 DApp 就获得了验证用户身份的权限。
      • 会话密钥的签名后,DApp 就可以使用该密钥代表用户访问网络服务,而用户无需每次都进行电子签名。这类似 Web2 中的代表授权登录。
      • 会话密钥只有短时间的有效期,过期后用户需要重新通过生物识别授权签名来获得新的会话密钥。
      • 用户的私钥一直保存在本地的 TPM 安全芯片中,不会离开设备。这保证了私钥的安全和用户的匿名属性。
      • 通过使用临时会话密钥,不同 DApp 无法互相追踪用户身份。实现真正的匿名和私密访问。
      • 用户可以方便地在多设备间同步管理自己的 Internet Identity,但设备本身也需要相应的生物识别或硬件钥匙进行授权。
img
  • Internet Identity 的一些优点如下:
    • 不需要记住密码。使用 biometrics 功能如指纹识别直接登录,无需设置和记住复杂密码。
    • 私钥不离开设备,安全性更高。私钥保存在 TPM 的安全芯片内,无法被窃取,解决 Web2 中用户名密码被盗的问题。
    • 匿名登录,无法被跟踪。不同于 Web2 用邮箱作为用户名可跨平台追踪,Internet Identity 解除了这种跟踪。
    • 多设备管理更便利。可以在任何支持 biometrics 的设备登录同一个账号,而不是单设备限定。
    • 不依赖中心服务商,实现真正去中心化。不同于 Web2 中 usernames 对应邮箱服务商的模式。
    • 采用委托认证流程,每次登录无需重复签名,用户体验更好。
    • 支持使用专用安全设备如 Ledger 或 Yubikey 登录,安全性提升。
    • 隐藏用户实际公钥,无法通过公钥查询交易记录从而保障用户隐私。
    • 与 Web3 区块链无缝兼容,可以安全高效地登录和签名区块链 DApp 或交易。
    • 架构更先进,代表了 Web2 和 Web3 优点的有机融合,是未来网络账号和登录的标准。
  • 除了能提供新的用户体验,同时也采取了以下技术手段来保证其安全性:
    • 使用 TPM 安全芯片储存私钥,该芯片被设计成即使开发人员也无法接触或提取私钥,防止私钥被窃取。
    • 生物认证如指纹或面容识别等二次认证机制,需要结合所在设备进行验证,使得只有持有设备的用户能使用该身份。
    • 会话密钥采用短期失效设计,限制被盗用的时间窗口,并强制在会话结束时销毁相关密文,降低风险。
    • 公钥加密技术使得传输过程中的数据被加密,外部监听者无法得知用户私密信息。
    • 不依赖第三方身份提供商,PRIVATE KEY 由用户自行生成和控制,不信任第三方。
    • 结合 IC 区块链共识机制带来的不可篡改性,确保整个系统运转的可靠性。
    • 正在不断更新升级相关密码学算法和安全流程,例如加入多重签名等更安全的机制。
    • 开放源代码和去中心化设计优化透明度,利于社区协作提升安全性。
Internet Identity

Internet Identity

核心团队 / Core Team

  • 团队来看,共有 200+ 员工,都是非常精英的人才。员工共发表论文 1600+,被引用 10w+,共持有专利 250+。
    • 创始人 Dominic Williams 是一名加密理论家,也是连续创业的企业家。
      • 从学术上看,他最近的数学理论包括 Threshold Relay 和 PSC 链,Validation Towers and Trees 和 USCID。
      • 从技术背景上看,他具备深厚的技术研发背景,早年就从事大数据和分布式计算领域的研究,这为建设复杂的 ICP 网络奠定技术基础。
      • 从创业上来看,他之前利用自己的分布式系统运营了一个 MMO 游戏,该系统托管了数百万用户。2015 年 Dominic 开始启动 Dfinity ,同时他也是 String labs 的总裁和 CTO。
      • 从视野上来看,他早在10多年前就提出了去中心化互联网的概念,长期推进这个宏伟项目是一个不易之举,目前来看他的设计思路很具备前瞻性。
    • 在技术团队上,Dfinity 的实力非常强大。Dfinity 基金会集结了大量顶尖的密码学和分布式系统专家,例如 Jan Camenisch, Timothy Roscoe, Andreas Rossberg, Maria D., Victor Shoup 等,甚至 BLS 密码算法作者中的 “L” - Ben Lynn 也在 Dfinity 任职。这为 ICP 的技术创新提供了强有力的支持。区块链项目的成功离不开技术,而顶尖人才的聚集能带来技术突破,这也是 ICP 一个关键的优势所在。
Dfinity Foundation Team

Dfinity Foundation Team

融资与经济模型 / Fund-raising & Tokenomics

这一块内容如果也讲的话,本文就太长了,因此我决定后面单独写一篇文章给大家详细分析下。本文更侧重从区块链行业的发展方向看,为什么 ICP 机会很大。

img

应用 / Applications

  • ICP 上可以开发所有类型的应用,社交平台,创作者平台,聊天工具,游戏,甚至元宇宙游戏。
  • 有很多人说 IC 上由于很难做到全局状态一致,因此天然不适合做 DeFi,但是我觉得这个问题本身就是错误的。不是全局状态一致难做,是低延迟下的全局状态一致难做。如果你能接受 1 分钟的时间,全球 1 万台机器也可以做全局一致性。Ethereum 和 BTC 现在这么多节点,不是已经被迫实现了高延迟下的全局状态一致嘛,也因此它们目前无法做到横向的无限扩展。IC 通过切分子网的方式首先解决横向无限扩展的问题,至于低延迟下的全局状态一致,通过强一致性的分布式一致性算法,良好设计的网络拓扑,高性能的分布式数据同步,时间戳有效校验,成熟的容错机制,也是可以达成的。但是实话实说,在 IC 应用层面上做一个交易平台和现在华尔街那批人做的高性能交易平台难度会更大,不仅仅是多机房达成一致。但是,难度大不代表完全不能做,而是要先解决很多技术问题,终归会找到一种适中的状态,既保证了安全性,也保证了人们可以接受的体验。比如下面的 ICLightHouse。
  • ICLightHouse,一个全链上的 orderbook dex,全链上什么概念?多少技术难点要解决?在别的公链上这连想都不敢想,但是在 IC 上最起码 it’s doable,让我们看到了希望。
img
  • OpenChat,一个体验非常棒的去中心化聊天应用,我目前在整个区块链行业没有看见过第二个这样的产品,之前有很多其他团队也在这个方向做过尝试,最终都因为各种各样的技术问题失败了,归根结底还是用户觉得体验不行,比如速度实在是太慢了,发一条消息要 10 秒,接收别人的消息也要 10 秒。但是,在 ICP 上三个人的一个小团队就做出了这么成功的产品,到底有多丝滑大家自己去体验。欢迎加入组织,在这里你可以享受到思想的碰撞,且一定程度上可以享受到言论自由的爽感。
img
  • Mora,一个属于超级创作者的平台,在这里每一个人都可以创建一个星球,打造自己的个体品牌,且你输出的内容永远是属于你自己的,甚至可以支持付费阅读。堪称是去中心化的知识星球了,我现在已经每天都要在上面刷新文章了。
Mora - 0xkookoo

Mora - 0xkookoo

  • OpenChat 和 Mora 应用是我真真实实基本上每天都在用的产品,让人有一种离不开的舒适感,两个词形容就是自由和充实。
  • 目前已经有一些团队在 IC 上开发游戏应用了,我觉得全链游戏这个叙事可能最终会由 IC 来接管。就像我之前写的这篇文章里面的 GameFi 部分所说的,游戏可玩性和趣味性是项目方要考虑的事情,可玩性在 IC 上是更容易实现的,期待 Dragginz 的大作。
img

总结 / Summary

  • ICP 就像地球一样,Chainkey 技术就像地球内核,它与 ICP 的关系类似于 TCP/IP 协议与整个互联网行业的关系,每一个 Subnet 就像亚非拉大陆一样,当然 Subnet 也可以是太平洋/大西洋,在大陆和海洋中有不同的建筑和区域(Replica 和 Node),每一个区域和建筑上可以种植物(Canister),也有不同的动物快乐地生活着;
  • ICP 支持横向扩展,每个子网自治的同时还可以在不同子网之间进行通信。不管你是什么应用,social media,金融,哪怕是元宇宙,都可以通过这种分布式的网络来达成最终一致性。想要在同步的条件下达成全局账本很容易,但是想在异步的条件下达成 ”全局状态一致” 的挑战就很大了,目前来看只有 ICP 有机会做到这一点
  • 需要注意,这里指的不是 “全球状态一致”,而是 “全局状态一致”。“全局状态一致” 要求所有参与的节点【对所有的操作顺序达成一致】,【最终结果一致】,【客观一致,不依赖于节点是否发生故障】,【时钟一致】,【即时一致,所有的操作都被同步处理】,这在 IC 单子网中是可以保证的。但是如果想要保证 “全球状态一致”,就需要所有的子网作为一个整体都对同一数据和状态达到上面的 “全局状态一致”,在实际实现上,这是不可能在低延迟内达到的,这也是目前 ETH 等公链无法横向扩展的瓶颈所在。因此 IC 选择了在单子网内达成共识,其他子网通过通信的方式快速验证其结果没有造假,以此达到 “最终的全局状态一致”。相当于同时结合了大型公链的去中心化性和联盟链的高吞吐量与低延迟性,并通过数学与加密算法证明的方式实现了子网横向无限扩展

综上,可以看到,按照我在文章最前面思考的区块链最终发展方向,【主权】+【去中心化的多点中心化】+【透明化】+【代码执行的控制权】+ 【线性成本的无限扩展性】

  • 主权是区块链唯一需要解决的一个问题,包括资产主权,数据主权,言论主权等,否则没必要有区块链这个东西;
    • IC 完全做到了
  • 不可篡改性是充分条件,但不是必要条件,只要你能保证我的主权不受损害,我随便你篡改,世界上每个人的资产都被篡改同比例翻倍,有什么区别?
    • IC 也做到了
  • 完全的去中心化不可能做到,不管怎么设计,总有“天赋”异禀者/既得利益者占据更大话语权,也总有人会主动选择不参与,【去中心化的多点中心化】是最终格局;
    • IC 就是目前所有公链中做得最好的,既能够保持一定程度的去中心化,又能够充分利用中心化实体的优势,从而更好地实现网络的治理和运营。
  • 透明化是必须,这场全人类的社会实验不就是为了让每个人都说得上话,都能有权利保护自己的主权吗?虽然总有人懒,总有人愿意相信更专业的人,总有人为了效率最大化主动选择放弃投票,但是,这也是他们主动做出的选择,他们有权利但主动选择不行使。只要一切是透明的,没有暗箱操作,死个明白我也愿意接受,输了是我技不如人,优胜劣汰,这也符合市场经济;
    • IC 完全做到了
  • 代码执行的控制权才是核心,否则就是脱裤子放屁,投票公示一周,最后项目方还是部署了作恶版本的代码,哪怕不是作恶版本,也是在戏弄大家。
    • 目前只有 IC 做到了
  • 线性成本的无限扩展性,随着区块链与现实生活结合得越来越紧密,参与的人越来越多,需求越来越大,基础设施上无法支持无限的扩展性,或者扩展起来太贵,都是不可接受的。
    • 目前只有 IC 做到了

根据上面的这些事实和我的思考分析,我认为,ICP = 区块链 3.0

本文只是为了从区块链行业未来发展方向来聊一聊为什么 ICP 很有可能会是区块链 3.0 的创新驱动者,但不可否认的是 ICP 的 Tokenomics 设计上确实存在一些问题,生态也暂时没有爆发,目前 ICP 距离我心目中最终的区块链 3.0 还需要继续努力。不过不用担心,这个事情本来就很难,即使是 Dfinity Foundation 也已经准备好了 20 年的 Roadmap,主网上线才 2 年就已经达成这么大的成就了,目前也已经利用密码学方式在对接 BTC 和 ETH 生态,相信 3 年后会更上一层楼。

img

Future

  • IC 目前已经完成了从下至上的 Infra 搭建,从上至下的应用也初见端倪。我最近的直接观感是,IC 能打的牌越来越多了,为下一个牛市做足了准备。
  • IC 是一个范式的更新,而不仅仅是简单的技术升级,是单机计算到分布式计算的范式迁移,更是单机系统到分布式系统的范式迁移。去中心化云计算的概念可以让很多小型的公司在初始阶段就享受到一站式的开发体验。
  • 按照俞军老师的产品价值公式:产品价值 = (新体验 – 旧体验)- 迁移成本,未来只要某些人发现加入 IC 生态的体验收益大于 Migration 成本,IC 会有更多人包括项目方和用户的加入,“云计算” 的规模效应就会更容易体现出来。解决掉【先有鸡还是先有蛋】的问题,IC 的正向飞轮也就建立起来了。
  • 当然每个人对于体验的定义是有主观性的,因此总有人会选择先加入,而有的人选择后加入,先加入的人承担更大的风险,但通常也会平均获得更大的收益。