---
description: 包括创建项目，部署，交互等操作
---

# 1. Internet Computer IDE 使用流程演示

## 1. 新建 Internet Computer 项目

&#x20;   首先进入  [ChainIDE](https://chainide.com/)  入口页面,点击 Try Now。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FxuPHQ9eue4MyVu6aCZIY%2Fimage.png?alt=media&#x26;token=aec39362-1e44-46d0-9f62-23b788984de0" alt=""><figcaption></figcaption></figure>

这里会选择你的登录方式，有 Github 和 Guest 两种。（选择 GIthub 登录才可使用 Sandbox 功能）

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2F93OgaWo7HHms96AADn8O%2Fimage.png?alt=media&#x26;token=94254a0e-74a1-491b-b1d5-f0290c4a6217" alt=""><figcaption></figcaption></figure>

点击 New Project 按钮。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2F6XjwzERFiXBZU7Av7In2%2Fimage.png?alt=media&#x26;token=cb6becfe-9b24-4bee-907d-0437cc4f8a8e" alt=""><figcaption></figcaption></figure>

出现一个弹窗，切换至 Internet Computer 栏，选择一个模板创建一个工程，此处以模板Random Maze为例。

![](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2Fgs7IcdFknMMzhmbQj2DT%2Fimage.png?alt=media\&token=9daf5782-1e37-413c-b4d3-ba3266165937)

## 2. Workspace 概览

进入工程后，展示当前工程的 workspace。整体上 workspace 可分为以下几部分：

1. 顶部栏，包括  回退至 Dashboard 按钮、工程名称展示及修改、用户信息
2. 左侧 Panel，包括 explorer（即文件树）、PLUGIN MANAGER（管理插件）、Port Forward(端口转发)
3. 右侧 Panel，与合约工程部署交互相关的插件在此处
4. 底部栏，Welcome 及 Logger 的入口

用户可点击底部 Logger 唤起底部 Panel，以此查看 IDE 日志输出、Terminal、进行 port forward 等

![](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FBB1UXbPX9x1Bufg2tny6%2Fimage.png?alt=media\&token=d4122a29-1e94-4119-929d-de09408bbab7)

## 3. 部署项目至 IDE 本地节点

首先用户需要在当前 IDE 中启动一个本地节点，IDE 为用户提供了快捷工具可一键启动本地网络，用户也可以手动打开一个 Terminal，通过 Internet Computer SDK 启动节点。

为了启动的节点能在外部访问，需要指定节点起的IP为 `0.0.0.0` 以及端口，端口需为未被其他服务占用的端口，如下：

```
dfx start --host 0.0.0.0:8000
```

![启动本地 Internet Computer 节点](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2F2HkUJ7H1LfquVnUMDYo6%2Fimage.png?alt=media\&token=ec6a7723-8be1-41d5-91ed-209a5680d0ae)

本地节点启动后，在底部 Panel 的 Ports 栏将节点的端口进行对外转发，以便外部能够访问。

![](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FwsHcvU5KrEvcCv1z28cE%2Fimage.png?alt=media\&token=efb62fc6-e5dc-47bb-9309-f50b96738241)![](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FtYUKC504ogfBJiPW9nbr%2Fimage.png?alt=media\&token=8bda12aa-0718-44f7-8337-9d30a539a5b1)

在部署项目之前，若当前工程带有`package.json`模块，则需要先开一个 Node 镜像的 Terminal 进行依赖的安装：

```
npm install
```

点击部署时若尚未安装 package，会在 Output 中进行提醒；

![安装package提醒](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FDoVFm6RnbgWgSWOgmrr0%2Fimage.png?alt=media\&token=ff33372c-1948-4620-9f91-9da0c92af1f1)

切到 _Deploy Panel_，打开 Deploy，在 _LocalNet & TestNet_ 栏将上述转发的地址粘贴至 Network 中，点击Deploy，等待 Terminal 输出部署信息

![部署中](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FzqnCvxC8jFsbsQQhH7TL%2Fimage.png?alt=media\&token=021a075a-f99a-4b80-9b9f-593dbcf3645f)

部署成功后，IDE 会读取文件列表，从 .dfx 读取当前网络下的 canister\_ids.json 文件，生成可交互的canister列表。

如果 Terminal 提示部署成功，Interact 没有生成，请刷新页面，文件同步可能存在延迟。

用户可以通过表单的形式输入参数，点击 Call 来调用已部署的 canister 的方法；也可以点击链接打开canister ui，通过 UI 的形式来访问 canister :

![Interact](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FD5bQmsSyPjgNisLDbLgc%2Fimage.png?alt=media\&token=b94430ab-8d69-4b39-ad14-c3e94241cad6)

![点击ui链接打开的canister random\_maze\_assets前端界面](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FSLnO5m9VCutr0duNAUsd%2Fimage.png?alt=media\&token=81e1c6d9-3196-4c1e-861e-75a6ddb605ca)

{% hint style="warning" %}
值得一提的是，由于本地节点是临时性的，下次再打开此工程时，上次已部署的 canister 就失效了，应当删除 `.dfx 文件.`
{% endhint %}

## 4. 部署至测试节点

IDE 为所有用户提供了一个 _ChainIDE-Test Network ，_&#x5176;IP为 [http://34.209.219.32:8000](http://34.209.219.32:8000)

仍以 Random Maze 工程为例，进入工程后切到 _Deploy Panel。_&#x6253;开 Deploy，在 _LocalNet & TestNet_ 栏可以看到 _Network 输入栏_  默认值为测试节点IP，直接点击 Deploy，等待 Terminal 输出部署信息。

![部署中](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FxyJOeJQDe0G7hoeQeFyG%2Fimage.png?alt=media\&token=deaa0413-46c2-4fe7-b112-b2917919a163)

部署成功后，IDE 会读取文件列表，从 .dfx 读取当前网络下的 canister\_ids.json 文件，生成可交互的canister 列表。

如果 Terminal 提示部署成功，Interact没有生成，请刷新页面，文件同步可能存在延迟。

用户可以通过表单的形式输入参数，点击 Call 来调用已部署的 canister 的方法；也可以点击链接打开canister ui，通过 UI 的形式来访问 canister :

![Interact Panel](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FdvbmLEhwhlhGaxYkqR4d%2Fimage.png?alt=media\&token=6f81dea2-cf49-4633-8ee0-219128aa7750)

![调用已部署的canister方法](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2Fy28mum3iCLSeVGZBt9va%2Fimage.png?alt=media\&token=8b1bf9aa-c9f2-4986-aaa3-68a0efc56c76)

![点击ui链接打开的canister random\_maze\_assets前端界面](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2F210O8Yidpt72OMHLKl66%2Fimage.png?alt=media\&token=c52d951a-1489-45ec-9bfe-87a8496139d0)

## 5. 部署至主网IC

部署至主网需要使用 Internet Computer 官方的 **NNS(Network Nervous System)**，并且其账户上需要有足够的ICP。

**1. 在nns中创建canister**

见官方教程 [NNS App quick start](https://sdk.dfinity.org/docs/token-holders/nns-app-quickstart.html) 的`Deploy a canister with cycles`一栏；

创建一个具有至少 2T cycles的canister 备用，复制生成的`canisterId`， 如：`mhgjp-7yaaa-aaaag-aaadq-cai`

![NNS Canistes](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FcFEy3cqorAwqVW76Scte%2Fimage.png?alt=media\&token=a01769c0-fb34-4469-89a2-094e5b51dea8)

**2. 获取本机的 Principal，将其设置为上述 canister 的 Controller**

在 IDE 的 Terminal 中获取当前账户的主体标识 Principal ：

```
dfx identity get-principal
```

用户也可通过 Tools 快捷工具快速获取：

![Get Principal](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FbgtgefpjplNXgT5nnddw%2Fimage.png?alt=media\&token=3ca9dc98-2dbe-4409-b4d7-b591bf9fd9bc)

在[NNS的Canister栏](https://nns.ic0.app/#/canisters)相应的`canister`中，点击`Change Controllers`按钮，将`Principal`添加为上述`canister`的`Controllers`

![添加Controller](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FX9qoopSoBl3fof0X7LDu%2Fimage.png?alt=media\&token=0e2064cf-fdd4-4561-8a1d-cf05830b0d5d)

**3. 应用 canister 部署合约**

配置完 controller 之后，还需在当前 Internet Computer 工程中配置 canister\_ids.json 文件，设置上述生成的`canisterId`为`dfx.json`配置的`canister`的id。IDE为用户提供了快捷配置：

&#x20;切到 _Deploy Panel。_&#x6253;开 Deploy，在 Mai&#x6E;_&#x4E;et_ 栏，点击 <mark style="color:green;">Config</mark> ，打开弹窗，为 dfx.json 中的 canister挨个配置 `canisterId`

![配置canister\_ids.json](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FcfoAZL3tyjZVT4TKcfrf%2Fimage.png?alt=media\&token=d3540b69-9392-44b8-a2da-1688b69f5f8e)

canister\_ids.json 文件`配置成功后在`Mai&#x6E;_&#x4E;et_ 栏点击 Deploy 进行部署，等待 Terminal 输出主网部署信息。

在 Internet Computer 的[dashboard](https://ic.rocks/network)中搜索部署后的`canister` `mhgjp-7yaaa-aaaag-aaadq-cai` ，可以看到合约相关信息，说明合约工程已成功部署至主网：

![ic dashboard查看已部署canister信息](https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FA9gYfTFQUBh60o09nExT%2Fimage.png?alt=media\&token=3cfbca47-876c-498f-8f60-bc17a901bca8)

{% hint style="info" %}
如需同时部署多个`canister`，则需要在`NNS`中创建对应的canister，并在`canister_ids.json`中配置
{% endhint %}
