Dfinity介绍

什么是Internet Computer

互联网电脑是blockchain,使开发人员,组织和企业家建造和部署安全,自主,和防篡改软件程序。

作为应用程序开发人员,您可能会发现将 Internet 计算机视为提供以下关键元素很有用:

  • 一种开放的通信协议,使通用计算能够直接在互联网上透明地运行
  • 网络运行的协议来提供计算能力,例如,所需的硬件,CPU和存储器来运行程序,通过独立的数据中心
  • 一个全局可访问的,可扩展的平台blockchain用于运行软件应用程序。

开放区块链平台

互联网计算机不是存在于任何物理位置的物理硬件。相反,互联网计算机结合了世界各地独立数据中心提供的计算资源,使用户和组织能够安全地访问应用程序和事务处理服务。

互联网计算机区块链使多台计算机能够像一台非常强大的虚拟机一样运行。组成虚拟机的计算机被组织成子网络——子网区块链——数据中心遍布世界各地。分布式架构支持安全通信,无需防火墙或易受攻击的技术。独立数据中心因贡献计算能力和托管服务而获得报酬,以支持在互联网计算机区块链上运行的应用程序。

构建下一代软件和服务

Internet Computer 协议通过重新构想软件的构建、部署和访问方式,降低了基于平台的风险并为创新铺平了道路。

例如,借助 Internet Computer,开发人员可以专注于使用智能合约编写代码,而不会受到与环境相关的干扰,例如:

  • 物理或虚拟网络配置要求
  • 负载均衡服务
  • 防火墙、网络拓扑或端口管理
  • 数据库配置和维护
  • 存储卷和设备

通过使开发人员能够专注于构建应用程序和交付价值,Internet Computer 有助于简化开发过程、缩短上市时间并促进创新。

对于最终用户而言,互联网计算机为访问应用程序提供了一个安全的环境,风险更低。由于区块链的固有安全性,运行在互联网计算机上的程序不会被恶意代码劫持,这也降低了应用程序最终用户或组织的总拥有成本。

此外,由于软件服务可以是“自治的”和公共的,因此开发人员可以编写相互通信的服务,并以提高生产力和效率的方式共享功能,同时留出充满信心的创新和改进项目的空间。

Internet Computer 还使开发人员能够使用加密安全的身份来实施访问控制,从而减少对用户名和密码或外部身份管理插件的依赖。

节点和子网

Internet 计算机子网区块链提供用于执行软件操作的物理硬件和资源(例如 CPU 和内存)。每个子网都是一个区块链,由一定数量的独立机器(称为节点的连接的对等计算机)组成,这些机器运行 Internet 计算机协议的软件组件。

在每个节点上运行的 Internet 计算机软件组件称为**副本,**因为它们在子网区块链中的所有节点之间复制状态和计算。

副本的核心组件组织成以下逻辑层:

  • 一个点对点(P2P) 网络层,它从用户、子网区块链中的其他节点和其他子网络收集和发布消息。对等层接收到的消息被复制到子网中的所有节点,以确保平台的安全性、可靠性和弹性。
  • 一个共识层,它选择和排序从用户和不同子网接收的消息,以创建可以在传递到消息路由层之前进行公证和最终确定的输入块。
  • 一个消息路由层,用于在子网之间路由用户和系统生成的消息,管理应用程序的输入和输出队列,并调度消息以供执行。
  • 一种执行环境,用于计算执行程序所涉及的确定性计算并处理它从消息路由层接收的消息。

下图提供了在开发环境中部署为本地副本的 Internet 计算机协议组件的简化概述。

作为开发人员,没有必要了解有关您的应用程序和用户与应用程序的交互如何通过 Internet 计算机体系结构路由或在网络上复制的详细信息。但是,对关键组件的一般理解可能很有用,因为开发环境包括副本组件,以提供用于部署的本地测试网络和生产部署工作流的真实感。

去中心化数据中心

互联网计算机不是存在于任何物理位置的物理硬件。相反,互联网计算机结合了世界各地独立运营的数据中心提供的计算资源。

与公共云或私有云不同,互联网计算机不是由一家私人公司拥有和运营的。相反,互联网计算机是一种公用事业,其更新和操作通过协议中定义的算法、分散的治理系统进行管理。它的架构使多台计算机能够像一台非常强大的虚拟机一样运行。

构成虚拟机的计算机被组织到全球数据中心的子网络中。分布式架构支持安全通信,无需防火墙或易受攻击的技术。独立数据中心因贡献计算能力和托管服务而获得报酬,以支持在互联网计算机区块链上运行的应用程序。

子网和数据中心

为了提供能够承受潜在服务中断的真正分散的区块链,构成任何给定子网的物理节点分布在不同位置的数据中心。节点本身可能由与它们运营的数据中心位置合作或不附属的不同方拥有或提供。

下图提供了节点位于四个数据中心的子网的简化视图。

在这个简化的场景中:

  • 有四个地理上独立的数据中心。
  • 每个数据中心都有由多个节点提供商提供的硬件。
  • 任何单节点提供商都可能在多个数据中心拥有设备。

尽管此示例代表一个子网,节点位于多个数据中心,但如果需要,可以将任何节点移出该子网以形成新子网。网络拓扑的更改通过称为网络神经系统(NNS)的 Internet 计算机管理系统进行管理。

节点提供商和数据中心运营商

在大多数情况下,节点提供商(或与他们合作的数据中心运营商)负责监控和维护运行 Internet 计算机的设备的计算能力。例如,如果出现硬件故障或系统性能不佳,节点提供商或数据中心运营商可能需要维修或更换设备。但是,网络运营和升级是通过分散的治理系统网络神经系统 (NNS) 进行监控和管理的。

容器和代码

要记住的最重要的原则之一是,互联网计算机主要是一个用于运行软件的分布式和分散式平台。

当您为在 Internet 计算机上运行的应用程序编写源代码时,您将源代码编译成 WebAssembly 模块。当您在 Internet 计算机副本上部署包含您的程序的 WebAssembly 模块时,该程序将在称为软件容器的概念计算单元内执行。

部署后,最终用户可以通过前端客户端(如浏览器)访问您为该容器定义的入口点函数,从而与该软件容器交互。

容器包括程序和状态

软件容器类似于容器,因为两者都被部署为一个软件单元,其中包含应用程序或服务的已编译代码和依赖项。

容器化允许应用程序与环境分离,从而实现轻松可靠的部署。然而,容器与容器的不同之处在于,它还存储有关当前软件状态的信息以及先前事件和用户交互的记录。

虽然容器化应用程序可能包含有关应用程序运行环境状态的信息,但软件容器能够保留由使用应用程序功能导致的状态更改记录。

查询和更新方法

由程序和状态组成的容器的概念很重要,因为当通过向其入口点发送消息来调用容器函数时,只有两种类型的调用:非提交查询调用和提交更新调用.

类型 要记住的要点
查询调用 允许用户查询容器的当前状态或调用对容器状态进行操作而不更改它的函数。同步并立即回答。可以对持有容器的任何节点进行,不需要共识来验证结果。安全性和性能之间存在固有的权衡,因为来自单个节点的回复可能不可信或不准确。不允许持久化容器状态的更改。本质上,程序使用查询调用来执行只读操作。不允许被调用的容器调用其他容器作为容器间调用公开的函数。(请注意,此限制是暂时的,将来处理查询调用时,容器将能够调用其他容器公开的函数。)
更新调用 允许用户更改容器的状态并保留更改。异步应答。必须通过共识才能返回结果。由于需要达成共识,因此更改容器的状态可能需要时间。因此,更新调用使用基于actor 的编程模型(具有状态隔离)来允许并发和异步处理。安全性和性能之间存在固有的权衡,因为子网中三分之二的副本必须就结果达成一致。被调用的容器可以调用其他容器公开的函数

作为开发人员,重要的是要认识到查询容器的调用与更改容器状态的调用之间的这种关系。特别是,您应该牢记安全性和性能之间的固有权衡。

如何为 Internet 计算机开发应用程序

对于程序员和软件开发人员,互联网计算机区块链在简化您设计、构建和部署应用程序的框架内提供了独特的功能和机会。该框架的一个关键部分是一种新的通用编程语言 Motoko。Motoko 是一种专门设计用于充分利用 Internet 计算机提供的独特功能的编程语言,包括:

  • 直接使用actor对象和类定义程序的能力。
  • 使用asyncawait语法使编程异步消息传递就像同步处理一样。
  • 自动支持消息序列化和反序列化。
  • 使用没有外部数据库或存储卷的数据结构来利用正交持久性的能力。

作为一种现代的高级编程语言,Motoko 提供了自己的一些关键特性,包括:

  • 支持大整数运算和溢出保护。
  • 一个健全的类型系统,静态检查每个程序以确保它可以在所有可能的输入上执行而没有类型错误。
  • 支持函数抽象、用户定义的类型定义和用户定义的参与者。

有关 Motoko 编程语言本身的更多详细信息,包括语法约定和支持的功能,请参阅Motoko 编程语言指南

下图提供了作为 Internet 计算机生态系统一部分的开发环境的简化深入视图。

容器、演员和您生成的代码

在准备使用 Motoko 编程语言编写程序时要记住的最重要原则之一是 Motoko 使用基于角色的编程模型。

演员是一个特殊的对象,其处理消息以分离的状态下,使消息能够被远程和异步处理。互联网计算机区块链的许多关键特性都依赖于这种安全高效的异步消息处理。

通常,每个软件容器都包含一个actor对象的编译代码。每个容器还包括一些附加信息,例如界面描述或前端资产。您可以创建包含多个容器的项目,但每个容器只能包含一个演员。

为什么你的代码被编译成 WebAssembly

当你编译 Motoko 代码时,结果是一个 WebAssembly 模块。WebAssembly 是一种低级计算机指令格式,可移植并在大多数现代计算机硬件上清晰地抽象程序执行。它广泛支持在 Internet 上运行的程序,并且非常适合部署旨在在 Internet 计算机区块链上运行的应用程序。

使用 Motoko,开发人员可以编译为可移植的 WebAssembly,同时仍然使用简单的高级语言交付安全的应用程序。

Motoko 语言提供了许多其他高级现代语言共有的功能,例如类型安全和模式匹配。此外,Motoko 以一种特别适合互联网计算机区块链的方式为使用参与者定义消息服务提供内置支持,并且无论您是新手还是有经验的程序员都易于学习。

身份和认证

用户启动的容器操作和容器到容器操作之间的主要区别之一是容器在 [IC] 上具有明确注册的身份。

用户主体没有中央注册表。相反,用户标识符专门与每个用户通过一个或多个公私密钥对访问的容器相关联。用户的私钥用于签署消息,这些消息与他们的公钥一起发送到一个容器。[IC] 对用户进行身份验证并将主体传递给容器以对其操作进行授权。

在较高级别上,首次使用的用户在与 Internet 计算机的第一次交互期间生成未签名的密钥对并从公钥中派生出他们的主要标识符。使用用户代理安全存储的私钥(或多个密钥)对返回用户进行身份验证。有权访问多个容器的用户可以管理用于与每个容器关联的身份验证的密钥和设备。

单个用户可以拥有多个公私密钥对,用于从不同设备(例如在不同计算机、手机或平板电脑上运行的浏览器)访问容器,但这些派生密钥都映射到一个主要标识符。

消耗和周期

通常,所有容器都以 CPU 周期的形式消耗资源以用于执行、路由消息的带宽和用于持久化数据的内存。容器维护循环的帐户余额,以支付其应用程序消耗的通信、计算和存储成本。

周期旨在以稳定或通货紧缩的方式反映运营的实际成本,包括物理硬件、机架空间、能源、存储设备和带宽,以便程序执行的成本保持不变或随着运营效率的提高而降低。

  • 程序必须能够为完全执行(全部或全部)支付费用,但与单位周期相关的成本将使高效的程序具有成本效益。
  • 通过设置容器可以消耗多少周期的限制,该平台可以防止恶意代码耗尽资源。

运营成本的相对稳定性使得更容易预测处理所需的周期,例如,一百万条消息。

可用于程序执行的周期保存在钱包容器中。对于本地部署,钱包容器会自动创建和发布周期。但是,要将您的应用程序部署到运行在外部节点和子网上的 Internet 计算机上,您需要一个带有循环钱包的主体来管理容器操作。

代币和周期

在互联网计算机生态系统中,互联网计算机协议代币(ICP 代币)是一种原生实用代币,其价值由公开市场决定。ICP 代币在互联网计算机的治理和经济方面都发挥着关键作用。

如何获得ICP代币

作为 Internet 计算机的实用程序令牌,您可以通过几种不同的方式获取 ICP 令牌。例如,您可能会:

  • 直接通过列出可用于交易的 ICP 代币的交易所购买 ICP 代币。
  • 由于您的投资而索取代币。
  • 通过互联网计算机协会 (ICA) 或 DFINITY 基金会获得代币赠款。
  • 接收代币作为提供计算能力作为节点提供商或数据中心的报酬。

如何使用ICP代币

如果您有 ICP 令牌,但不确定如何使用它们,下图提供了一个简单的概述来说明三种最常见的场景

正如此图所示,您如何使用 ICP 代币主要取决于您获取它们的目标。例如,如果您是开发者或企业家,则可以将 ICP 代币转换为周期。然后可以使用周期来构建和部署应用程序,以向市场提供产品和服务。如果您是社区成员,有兴趣参与治理并影响互联网计算机的发展方向,您可以将 ICP 代币锁定在一个称为神经元的股份中,以便您可以提交提案并对其进行投票。

循环的工作原理

对于开发者来说,ICP 代币很重要,因为它们可以转换为周期,进而用于支付计算和资源消耗。

例如,假设您有一所房子,其中丙烷用于热水器、厨房炉灶、烘干机和空间加热器。当您使用这些设备时,您手头的天然气供应会耗尽,因此您需要定期联系供应商补充您的供应,以便您可以继续使用您的设备而不会中断。这类似于智能合约容器,因为每个容器都必须有一个帐户,其中的周期可用于支付容器应用程序消耗的通信、计算和存储费用。

Internet 计算机协议代币持有者可以在需要补充每个容器帐户中可用的周期时交换代币。

计算成本

  • 周期反映了托管在 Internet 计算机平台上的应用程序的实际运营成本,包括物理硬件、机架空间、能源、存储设备和带宽等资源。
  • 简单来说,周期代表执行每个应用程序的 WebAssembly 指令的成本。
  • 程序必须能够为完全执行(全有或全无)付费,但平台对容器可以容纳和消耗的周期数设置了限制,以防止恶意代码耗尽资源。
  • 运营成本的相对稳定性使得更容易预测处理所需的周期,例如,一百万条消息。
  • 随着时间的推移,与通信、计算和存储相关的成本更有可能减少而不是增加——例如,因为磁盘空间变得更便宜或硬件更高效。
  • 尽管互联网计算机协议代币可用于向容器中添加周期,但周期本身不是货币,也没有流动性或作为资产的价值。
  • 周期不能以互联网计算机协议代币的形式转换回价值,但它们可以在容器之间转移,以使容器能够支付运营费用。

代币价值和波动性

  • 代币反映了互联网计算机的价值,可以波动。为了防止令牌值影响容器可以处理的消息数量,令牌不用于直接支付资源。
  • 作为平台治理系统的一部分,代币可以在代币持有者之间交换或锁定在神经元中以确保投票权。
  • 代币用于通过对提交给治理系统的提案进行投票来奖励数据中心提供计算能力和平台利益相关者参与互联网计算机的安全操作。

支付给数据中心和节点提供商

通过这种模型,互联网计算机平台为数据中心供应商提供了一个可预测的计算能力经济模型,以确保资源在需要的时间和地点可用。数据中心提供商对活动节点和备用节点都获得补偿,以便互联网计算机有能力处理正常流量和工作负载峰值。

如果 Internet 计算机网络需要额外的容量,它可以向潜在的数据中心提供商请求投标。如果投标被接受,数据中心提供商可能会签订合同,在特定时间段内提供具有可接受服务可用性水平的给定数量的服务器。例如,可能与数据中心提供商签订合同,提供 10 台服务器,30 天的正常运行时间为 99%。即使这些节点不托管任何容器并且仅用作备用节点,数据中心提供商也会收到作为网络一部分的可用性补偿。

互联网计算机经济模型将管理能力的大部分权力和责任放在治理系统——网络神经系统上。有关补偿和服务水平要求的具体细节不在本文档的范围内。

神经元和治理

作为一个去中心化的平台,互联网计算机配置和行为的所有变化都由一个称为网络神经系统(NNS)的治理机构控制。NNS 控制互联网计算机平台的许多方面,包括:

  • 哪些数据中心提供商参与网络
  • 从数据中心提供商接受的节点的数量、位置和所有权
  • 将节点分配给子网
  • 是否允许升级智能合约容器软件或管理服务

此外,只有治理机构的成员才能投票批准或拒绝升级 Internet 计算机副本或修改 Internet 计算机协议的请求。

利益相关者的投票权

由于互联网计算机上的代币通常具有流动性,因此它们并不代表其持有者对用于治理目的的足够稳定的承诺。为了提供负责任治理所需的稳定性,可以将代币转换为神经元。一个神经元代表若干个在最短时间(锁定期)内不能兑换的ICP代币。

当一个人或组织在一个神经元中锁定一定数量的ICP代币时,神经元持有者有权对治理问题进行投票,并根据锁定的ICP数量和锁定长度按比例获得投票报酬期。

互联网计算机跟踪锁定在神经元中的 ICP 代币数量,并提供与管理 ICP 代币账户余额相结合的投票所需的逻辑。

Dfinity(ICP)介绍-1相关推荐

  1. Dfinity (ICP)开发基本操作-4

    Dfinity 开发基本操作 安装.升级或删除软件 直接从终端安装最新的 从终端 shell 下载和安装: 在本地计算机上打开终端外壳. 例如,在 macOS 上打开 Applications 文件夹 ...

  2. Dfinity(ICP)基础开发教程-5

    Dfinity 基础开发教程 教程概述 快速启动提供了没有停下来欣赏沿途的风景部署简单的默认应用程序快速路径. 此文章介绍了特定场景,并指出了在每个步骤中执行的操作和详细信息. 如果快速入门和教程不完 ...

  3. 超潜力公链DFINITY——DeFi 开发者最佳进入时期

    DTalk 是由 TinTinLand 和 DFINITY 联合举办的线上直播系列活动,旨在为广大开发者提供平台和渠道, 促进开发者和 DFINITY 公链方.项目方.行业大咖面对面交流和沟通.第一期 ...

  4. MySQL 语句优化 ICP

    点击上方"蓝字" 关注我们,享更多干货! ICP介绍 Index Condition Pushdown(ICP)是MySQL 5.6中的的新特性,是一种在存储引擎层使用索引过滤数据 ...

  5. 【PCL】ICP 源码分析

    目录&索引 一.ICP 介绍 二.demo 示例 2.1 代码 2.2 输出结果 三.源码分析 3.1 align() 函数 3.1.1 computeTransformation() 函数 ...

  6. 速览默默发展的Web3邮箱赛道

    最近两年,我们看到了许多打着去中心化的名号做邮箱服务的项目,甚至可以说,Web3 邮箱已经快要成为 Web3 黑客松的常客.作为一个每天都在批判的喷子,面对这种情况,很难不去思考这类产品究竟有什么用, ...

  7. MySQL模糊查询详解

    单列模糊查询 使用的表结构 CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar( ...

  8. Mysql数据库高级、sql优化

    https://note.youdao.com/ynoteshare/index.html?id=53cd90b2a1d930e1f5c7558a3f595696&type=notebook& ...

  9. Dfinity官方工程师从技术底层解读ICP如何引领Web3

    随着通讯和可视化移动终端设备的逐渐普及,人们簇拥于web3或元宇宙的概念.而对于通往全新世界的道路要怎么走?却没有很明晰的答案.DFINITY在5年的探索经验中,摸索出了"互联网计算机&qu ...

  10. icp增值电信业务许可证办理条件及流程介绍

    icp增值电信业务许可证办理条件及流程介绍.电信增值业务许可证ICP全称是<中华人民共和国增值电信业务经营许可证>,也叫做<互联网信息服务业务经营许可证>,龙翊信安这里称之为经 ...

最新文章

  1. 基于Matlab的神经网络结合遗传算法在非线性函数极值寻优中的应用
  2. 初中教师资格证计算机试讲教案模板,初中数学教师资格证面试教案模板: 《投影》...
  3. mysql 变量null_如何检查变量是否为NULL,然后使用MySQL存储过程进行设置?
  4. JVM内存管理------杂谈(借此也论一论obj=null)
  5. 【Python】Time库的使用(含实例)
  6. 2021“MINIEYE杯”中国大学生算法设计超级联赛(7)部分题解
  7. BZOJ3387栅栏行动
  8. 图像变换dpi(tif->jpg),直方图均衡化,腐蚀膨胀,分水岭,模板匹配,直线检测
  9. 计算机视觉CV中的论文写作英语(by Youki)
  10. POJ1338 amp; POJ2545 amp; POJ2591 amp; POJ2247 找给定规律的数
  11. OpenCV入门教程,超详细OpenCV入门教程!10小时让你轻松掌握opencv的使用
  12. 如何反编译dll,并生成新的dll
  13. 为什么实对称矩阵要求其正交矩阵,而不是可逆矩阵使其对角化?
  14. jstl.jar和standar.jar包下载
  15. Microsoft Visio 2010 安装失败 安装界面闪退
  16. 计算机数制转换操作方法,计算机基础 数制及其相互转换
  17. vxWorks6.6下基于vxBus的以太网驱动开发
  18. PubMed--医学和生命科学免费数据库
  19. Java 安全编程详解
  20. Python有什么用?Python 的 10 个实际用途

热门文章

  1. 【window】重启IIS服务
  2. I/O error on GET request for http://userservice/user/point/update: userservice; nested exception
  3. ic和mos怎么区分_快速掌握MOS管源极和漏极的区别!看了受益匪浅!
  4. mysql如何修改字段名字_mysql如何修改字段名称
  5. er ubnt x设置教程_ubnt edgerouter er-x 路由器怎么设置
  6. 令人吃惊,这个短信平台在这些方面居然完胜阿里云
  7. 电脑win10计算机图标,告诉你如何显示win10计算机图标
  8. mobi电子书如何用Mac打开?
  9. CAD中如何插入图框?CAD插入图框方法教程
  10. 使用java语言实现一个动态数组(详解)(数据结构)