1.什么是互联网计算机?
互联网计算机(IC)为开发者、组织和企业提供一个计算基础设施,从而构建部署安全、自主且可信的软件程序。在IC的开放平台上,软件和服务是直接在互联网上运行的,而传统的云和分布式架构中,是运行在私有的基础设施或者特定的托管服务里。作为应用开发者,你可以理解IC提供了以下关键的基础设施:
- 一个让通用计算任务在互联网上直接运行的开发通信协议
- 一个连接独立计算中心的分布式网络,为计算任务提供计算能力,例如硬件、CPU、内存等
- 一个运行软件应用的全球接入扩展平台
开放架构平台
IC不是运行在某个地方运行的硬件实物,而是由全球的独立数据中心提供的计算资源。IC整合这些资源,为用户和机构提供安全的应用服务和事务处理服务。你可以认为IC是计算基础设施平台,就像亚马逊Web服务(AWS)、Google云平台(GCP)、微软Azure和企业内部部署的私有云。和公有云、私有云不同的是,IC平台不属于任何人,也不是由单独一家企业所运营。相反的,IC平台的更新和运营是通过协议定义的分布式治理体系所管理。其架构将多个计算机组合成一个更强大的虚拟机。组成虚拟机的计算机在全球形成多个数据中心子网。分布式架构确保在没有防火墙和防攻击技术安全的情况下,能够进行安全的通信。独立的数据中心根据其在IC平台贡献的计算资源,获得奖励。
构架下一代软件与服务
独立的数据中心根据其在IC平台贡献的计算资源,获得奖励。
构架下一代软件与服务
IC协议降低了平台系统的风险,为软件开发、部署和使用提供了创新的机制。例如,通过IC,开发者只需要关心代码开发,而不用操心运行环境相关的杂事:
- 物理、虚拟网络配置需求
- 负载平衡服务
- 防火墙,网络拓扑和端口管理
- 数据库配置和维护
- 存储容量和存储设备
因为区块链安全性,运行在IC上的应用不会被黑客攻击,从而保障了用户和组织的软件使用成本。此外,因为软件服务是自主公开的在IC上运行,开发者能够编写服务互相调用,从而提升了开发效率,为协作创新提供了广阔的空间。
开发者通过密码安全的认证方式访问IC资源,从而避免了对外部认证系统上的用户名和密码登录方式的的依赖。
2.节点和子网络
IC 子网提供软件运行所需要的物理硬件和资源,比如 CPU和内存。每个子网由一组点对点连接,称之为Node的独立机器组成。节点上运行遵循IC协议的软件。运行在节点上的IC软件,称之为replica,因为他们在子网中的各个节点上都有副本。replica的核心组件由以下逻辑层组成:
- 点对点网络层:收集传播子网中以及子网间用户和节点的通信消息。该层收到的消息会复 制到子网中的所有节点,以确保平台的安全、可靠与弹性。
- 共识层:选择并序列化来自用户和其他子网的消息,形成输入块,在发送到路由层之前进 行最终证实确认。
- 消息路由层:转发不同子网间用户和系统产生的消息,与应用建立消息的输入输出队列, 调度消息的执行。
- 执行环境:执行程序、处理来自路由层的消息,保证计算的确定性。
作为开发者,并不需要知道用户通过IC架构与你的应用交互的细节。不过,对一些核心组件的基础知识,有助于你理解本地开发环境和生产环境的工作流。
3.分布式数据中心
IC并不是实体硬件。相反的,IC是由全球独立运营的数据中心提供的计算资源组成的。不像公有云、私有云,IC并不是由单独一家私人公司运营。相反,IC是一个由算法、分布式治理协议所管理的公共计算设施。其架构可以让多个计算机组成一个强大的虚拟机。组成这个虚拟机的计算机分成分布在全球的多个子网数据中心。分布式架构上的安全通信不需要借助防火墙和防攻击技术。独立数据中心提供商通过贡献计算资源、运行应用服务,从而得到相应奖励。
子网与数据中心
这种完全的分布式网络,可以支持颠覆性的服务。组成任何子网的物理节点分布在多个地点。这些节点本身可能属于不同的地方的数据中心。下图展示了分布在四个数据中心的子网
在这个简图中:- 有四个独立的数据中心- 每个数据中心的硬件由多个节点提供商提供- 任何一个节点提供商可能在多个数据中心都有设尽管这个例子中展示了一个子网的节点分布在多个数据中心,其实如果需要,任何节点都可以从这个子网中挪出来,形成新的子网。网络拓扑变更由IC治理系统中的网络神经系统(Network Nervous System, MNS)管理。
节点提供商和数据中心运营商
在大多数情况下,节点提供商,或者由节点提供商和数据中心运营商共同负责监控、维护计算资源。比如说,节点提供商和数据中心运营商可能需要修复或者替换有故障的和性能不够的设备。而网络的运营和升级则是由分布式治理系统MNS监控管理。4.Canister(程序罐)和代码
我们需要注意的最重要的原则是Internet Computer主要是运行软件的分布式和去中心化平台。为运行在Internet Computer上的应用程序编写源代码时,会将源代码编译为WebAssembly模块。 当您在Internet Computer副本上部署包含程序的WebAssembly模块时,该程序将在称为软件Canister的概念性计算单元内执行。部署后,用户可以通过前端客户端(例如浏览器)访问您为Canister定义的入口点功能与之交互。
Canister包含了程序和状态
软件Canister与容器相似,两者都部署为包含为应用或服务编译后的代码和依赖的软件单元。容器化允许将应用程序与环境分离,从而实现简单而可靠的部署。 但是,Canister与容器的不同之处在于,它还存储有关当前软件状态的信息以及先前事件和用户交互的记录。尽管容器化的应用程序可能包含有关该应用程序运行环境的状态的信息,但是Canister能够保留应用程序功能使用而导致的状态更改的记录。
查询和更新方法
这种由程序和状态组成的Canister的概念非常重要,因为当通过向其入口点之一发送消息来调用Canister功能时,只有两种类型的调用:非提交查询调用和提交更新调用
类型 | 关键点 |
查询调用 | 允许用户查询Canister当前状态或调用一个Canister的不改变状态的函数
|
更新调用 | 允许用户修改Canister状态并保留更改
|
作为开发人员,重要的是要认识到查询的调用与更改状态的调用之间的这种关系。 特别是,您应牢记安全性和性能之间的内在平衡。
如何为Internet Computer开发应用程序
对于程序员和软件开发人员而言,Internet Computer平台在提供了独特功能和机会的框架,从而简化了您设计,构建和部署应用程序的方式。 该框架的关键部分是一种新的通用编程语言Motoko。 Motoko是一种编程语言,经过专门设计,可以充分利用Internet Computer提供的独特功能,包括:
- 直接使用actor对象和类定义程序的能力。
- 使用async和await语法来像处理同步消息一样处理异步消息
- 自动支持消息序列化和反序列化。
- 无需外部数据库或存储即可使用数据结构持久性的能力。
作为一种现代的高级编程语言,Motoko提供了一些自己的关键功能,包括:
- 支持大整数运算和溢出保护。
- 一种声音类型系统,它会静态检查每个程序,以确保其可以在所有可能的输入上都没有类型错误的情况下执行。
- 支持抽象函数,用户定义类型和用户定义Actor
有关Motoko编程语言更多详细信息,包括语法约定和受支持的功能,请参阅《 Motoko编程语言》。下图提供了作为Internet Computer生态系统一部分的开发环境的简化drill-down视图。
Canister、Actor和生成的代码
用motoko语言编写程序时最重要的原则是,Motoko使用基于Actor的编程模型Actor是一种特殊的对象,它以隔离状态处理消息,从而使消息可以远程和异步地进行处理。 Internet Computer平台的许多关键功能都依赖于这种类型的安全有效的异步消息处理。通常,每个软件Canister都包含一个Actor对象的已编译代码。 每个Canister还包括一些其他信息,例如界面描述或前端资源。 您可以创建包含多个Canister的项目,但是每个Canister只能包含一个Actor。
为什么代码被编译为WebAssembly
当编译Motoko代码时,结果是WebAssembly模块。 WebAssembly是一种可移植的抽象低级计算机指令格式,可在大多数现代计算机硬件上执行。 它在互联网上运行的程序得到广泛支持,并且天然适合于部署哪计划在Internet Computer平台上运行的应用程序。使用Motoko,开发人员可以编译为可移植WebAssembly,同时仍可以发布为简单的高级语言应用程序。Motoko语言提供了其他高级现代语言所共有的许多特性,例如类型安全和模式匹配。 此外,Motoko提供了内置的支持,以使用actor定义消息传递服务的方式特别适合Internet Computer平台,并且无论您是新手还是经验丰富的程序员,都可以轻松了解。本指南介绍了Motoko编程语言基本特性,更多详细信息请参见Motoko编程语言
身份和认证
用户调用容器操作与容器间操作之间的主要区别之一是,容器在[IC]上具有明确注册的身份。IC上没有存储用户身份的中央注册表。 每个用户通过一个或多个公私钥对与访问的Canister相关联。 用户的私钥用于签名消息,消息与公钥一起发送到Canister。 [IC]对用户进行身份验证,然后将委托人传递给Canister以授权其操作。较高层级上,用户首次在与Internet Computer进行交互时会生成一个未签名的密钥对,并从公用密钥中获取其用户信息。使用已由用户代理安全存储的私钥(或多个私钥)对返回的用户进行身份验证。可以访问多个Canister的用户可以管理用于与每个Canister关联的身份验证的密钥和设备。单个用户可以具有多个公私钥对,以从不同的设备(例如在不同的计算机,移动电话或平板电脑上运行的浏览器)访问Canister,但是这些派生的密钥都映射到主身份。
资源消耗和Cycles
通常,所有Canister都会以以下形式消耗资源:CPU执行,路由消息带宽和持久数据内存。 Canister维护帐户的Cycles余额,以支付其应用程序消耗的通信,计算和存储成本。Cycles反映实际的操作成本,包括物理硬件,机架空间,能源,存储设备和带宽,以使程序执行的成本保持不变或随着操作效率的降低而降低。
- 程序必须能够支付完整执行费用(全部或全部不付),但与单位Cycles相关的成本将使高效的程序具有成本效益。
- 通过设置Canister可以消耗多少个Cycle的限制,该平台可以防止恶意代码消耗资源。
5.Tokens和cycles
在Internet Computer生态系统中,ICP代币是种原生的,实用的,价值在公开市场上确定的代币。 ICP代币在Internet Computer的治理和经济方面均发挥着关键作用。
如何获得ICP代币
作为Internet Computer的实用代币,您可以通过几种不同的方式来获取。 例如:
- 交易所购买
- 投资认领
- 通过Internet Computer协会(ICA)或DFINITY 基金会获得
- 以节点提供者或数据中心提供计算能力来获取
如何使用ICP代币
如果您有ICP代币,但不确定如何使用它们,下图将提供简化的概述,以说明三种最常见的情况。
如该图所示,如何使用ICP代币主要取决于您获取ICP的目标。 例如,如果您是开发人员或企业家,则ICP可以转换为Cycle。 然后可以使用Cycle来构建和部署应用程序,以将产品和服务推向市场。 如果您是有兴趣参与治理并影响Internet Computer方向的社区成员,则可以锁定ICP(称为神经元),以便您可以提交提案并对其进行投票。
Cycles如何运作
对于开发人员来说,ICP代币很重要,因为可以将其转换为Cycles,可以用来支付计算和资源消耗。例如,假设您有一所房子,天然气用于热水器,厨房炉灶,烘干机和供暖器。 使用这些设备时,会消耗天然气,所以需要定期与供应商联系以补充气源,以便您可以继续使用设备而不会受到干扰。 这与Canister类似,因为每个Canister都必须有一个具有可用Cycles的帐户,以支付应用程序消耗的通信,计算和存储费用。当Canister账户需要补充Cycles时,ICP代币持有人可以将代币转换为cycles。
计算成本
- Cycles反映了Internet Computer平台中托管的应用程序的实际运营成本,包括物理硬件,机架空间,能源,存储设备和带宽等资源。
- 简而言之,Cycles代表执行每个应用程序的WebAssembly指令的成本。
- 程序必须能够支付全部执行费用(全部执行或不执行任何操作),但是平台对Canister可持有和消耗的Cycles数设置了限制,以防止恶意代码浪费资源。
- 运营成本的相对稳定性使得更容易预测处理例如一百万条消息所需的Cycles。
- 与通信,计算和存储相关的成本,随着时间的推移会降低,例如,因为磁盘空间变得更便宜或硬件效率更高。
- 尽管可以使用ICP代币向Canister添加Cycles,但是Cycles本身不是货币,也没有流动性或资产属性。
- Cycles不能转换回到ICP代币,但可以在Canister之间转移。
代币价值和波动
- 代币反映了网络的价值并且会波动。 为了防止代币价值影响Canister可以处理的消息数量,代币不用于直接支付网络资源。
- 代币可以在持有者之间交换,也可以锁定在神经元中,作为平台治理系统的一部分来确保投票权利。
- 代币奖励给提供计算能力的数据中心和参与平台治理系统中对提案投票的利益相关者。
支付给数据中心和节点提供者
借助此模型,Internet Computer平台为数据中心提供者提供了计算能力的可预测经济模型。 数据中心提供者可以为活动节点和备用节点获得补偿,从而使网络具有处理正常流量和工作量高峰的能力。如果Internet Computer网络需要额外的容量,则可以向潜在的数据中心提供商招标。 如果出价被接受,则数据中心提供商会与之签约,以在给定的时间内为给定数量的服务器提供可接受的服务可用性级别。 例如,某数据中心提供商可能合同约定提供10台30天内正常运行的服务器。 即使这些节点没有托管任何Canister,仅用作备用节点,数据中心提供商也将作为网络的一部分获得可用性补偿。Internet Computer经济模型将管理能力的大部分权力和责任置于治理系统(即网络神经系统)上。 有关补偿和服务水平要求的特定详细信息不在本文档范围之内。6 Neuron(神经元)和治理模式
作为一个去中心化的平台,对Internet Computer的配置和行为的所有更改均由称为网络神经系统(NNS)的管理机构控制。 NNS控制Internet Computer平台的许多方面,包括:
- 哪些数据中心提供商参与网络
- 数据中心提供商接受的节点的数量,位置和所有权
- 将节点分配给子网
- 是否允许升级Canister软件或管理服务
此外,只有管理机构的成员才能投票批准或拒绝升级Internet Computer副本或修改ICP协议的请求。
互联网计算机IC基本概念