# 2. Starknet IDE 使用流程演示

{% embed url="<https://www.youtube.com/watch?v=31tAJcYQey0>" %}

### 1. 编写合约 <a href="#id-1.-bian-xie-he-yue" id="id-1.-bian-xie-he-yue"></a>

进入项目后，可以点击文件夹中 readme.md 右上角 preview 进行预览。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2Fjhr2PZdrzXMtUJOJcn7O%2Fimage.png?alt=media&#x26;token=acff0c2b-d5c2-41a1-8d7f-1f60f0bb7498" alt=""><figcaption></figcaption></figure>

在 Explorer 栏中，你可以新建文件（夹），刷新目录，下载文件。也可以直接点击模板中自带的文件。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FEObueEx1a9UrYwKe1lKv%2Fimage.png?alt=media&#x26;token=4bbdd1f0-dc2e-4c3c-bc0b-a446cfdb1cba" alt=""><figcaption></figcaption></figure>

点击一个合约文件，即可对代码进行编辑操作。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FCMCQ70FzXAVflpfIFPmW%2Fimage.png?alt=media&#x26;token=4fcad7d2-9911-4a9a-8a59-461d5b81a375" alt=""><figcaption></figcaption></figure>

### 2. 测试合约 <a href="#id-2.-ce-shi-he-yue" id="id-2.-ce-shi-he-yue"></a>

合约代码编写完成后，点击右侧菜单栏的 Compiler 按钮打开编译模块，选择好 Module Package Path 后点击 Test。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2F7faUYXIgqGpKzn8JeYD3%2Fimage.png?alt=media&#x26;token=0befd8ec-bb98-4b94-9cb3-810d3262205a" alt=""><figcaption></figcaption></figure>

测试成功后，同时控制台上会输出测试结果。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2Fg6mzZ0Zzt7u6yGhSkYJg%2Fimage.png?alt=media&#x26;token=0c5ad894-0648-4d58-84ec-60d24bf57258" alt=""><figcaption></figcaption></figure>

### 3. 编译合约 <a href="#id-3.-bian-yi-he-yue" id="id-3.-bian-yi-he-yue"></a>

在右侧菜单栏的 Compiler 中，点击 Build 即可开始编译合约。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2Fsmt5c1RxhyvaVlPXZNC8%2Fimage.png?alt=media&#x26;token=9cc489ce-536b-474e-a5d5-301d5b299f31" alt=""><figcaption></figcaption></figure>

编译成功后，会在当前目录下生成 target 文件夹。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2F6bp38NM50aLF4dSAdl76%2Fimage.png?alt=media&#x26;token=bd20fe4a-8cc5-45a4-b245-371a9f62ae4c" alt=""><figcaption></figcaption></figure>

### 4. 连接到 Starknet 区块链 <a href="#id-4.-lian-jie-dao-sui-qu-kuai-lian" id="id-4.-lian-jie-dao-sui-qu-kuai-lian"></a>

部署合约前，需要先点击右上角的 Connect Wallet，选择连接 Argent X 或者 Braavos。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2Fim70986BCCUi1qQodSOi%2Fimage.png?alt=media&#x26;token=b8f7f27a-fb98-4d4b-8bba-d383555f84ec" alt=""><figcaption></figcaption></figure>

### 5. 部署合约 <a href="#id-5.-bu-shu-he-yue" id="id-5.-bu-shu-he-yue"></a>

点击右侧的 Deploy & Interaction 按钮，出现部署页与交互页面。选择好已编译的 Package 和 Contract 后，点击 Deploy 进行部署（然后在钱包中点击确认）。合约部署成功后，控制台上会输出现合约部署的结果以及相关信息。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2F2IkPOno9A3s7Eu9xXZMt%2Fimage.png?alt=media&#x26;token=68ca953c-b03c-4d4f-a8b6-a14813a7d78f" alt=""><figcaption></figcaption></figure>

在 Starknet 中部署智能合约需要两个步骤：

1. 声明您合约的 Class  Hash，即将您的合约代码发送到网络。
2. 部署合约，即创建您之前声明的代码的实例。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FF2qcLctKwgSAlWoxx2gr%2Fimage.png?alt=media&#x26;token=2507d4da-2800-48e4-8470-2eafaa58d220" alt="" width="444"><figcaption></figcaption></figure>

如果你没有在 Select Compiled Contract 中选择合约，那么你可以上传本地已编译的文件来进行合约部署。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FusA2SzRZ9v8QTRReTzvo%2Fimage.png?alt=media&#x26;token=cc6eea55-d62d-42a3-90f6-ebb0e35138a9" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FIaXYVIKDyQM0XkDdKg5h%2Fimage.png?alt=media&#x26;token=38ec6c7c-235a-4147-a4b4-13b524cabbdb" alt=""><figcaption></figcaption></figure>

除此之外，你还可以点击 Import Deployed Package 导入已部署过的合约，来进行合约交互。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2Fs6clhbp19Fp9jfoFaBrX%2Fimage.png?alt=media&#x26;token=154ba13f-e6a5-46e3-b273-1d6184327e17" alt=""><figcaption></figcaption></figure>

你也可以通过点击 Use On-Chain Contract Classhash，使用已经 Declare 过的 Classhash 进行部署。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2F8FhGowtapeVTFXwr7JbQ%2Fimage.png?alt=media&#x26;token=3258d2e5-664b-4ddf-b16c-ba75e4c6cc62" alt=""><figcaption></figcaption></figure>

### 6. 合约交互 <a href="#id-6.-he-yue-jiao-hu" id="id-6.-he-yue-jiao-hu"></a>

合约部署成功后，可以对合约进行交互操作。点击已部署好的合约，选择对应的接口，点击 Execute 进行写入交互。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FEQI6RRQuiHZ23rLWjPU4%2Fimage.png?alt=media&#x26;token=d71200c6-c8b9-4a14-9894-14460b0e48a4" alt=""><figcaption></figcaption></figure>

## 7. 交易查询

点击 Output 中的交易 Hash，可以查看每笔交易的具体信息。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2FuhF6bLPdE7V6SYpCtE5y%2Fimage.png?alt=media&#x26;token=9db20c95-ed50-4237-825d-9bd3c1949780" alt=""><figcaption></figcaption></figure>

### 8. Starknet Sandbox <a href="#id-8.-sui-sandbox" id="id-8.-sui-sandbox"></a>

如果你喜欢使用命令行进行开发，可以打开 Starknet Sandbox，其中已自带 [Starkli](https://github.com/xJonathanLEI/starkli), [Scarb](https://github.com/software-mansion/scarb), [Dojo](https://github.com/dojoengine/dojo), [Starknet Foundry](https://github.com/foundry-rs/starknet-foundry)**,** [Git](https://git-scm.com/) 和 [Node.js V16](https://nodejs.org/en)。

<figure><img src="https://2772835953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MZ6_j0WUFnBhwIdP3LR%2Fuploads%2Fr3aySkn5XBeF5O98gR9g%2Fimage.png?alt=media&#x26;token=21ad8264-9dc4-40c6-b4b6-2231e5540180" alt=""><figcaption></figcaption></figure>

如果你在 Sandbox 中启动了一个端口，并且想要访问该端口，请参考 [ChainIDE-端口转发](https://chainide.gitbook.io/chainide-chinese/5.-port-forwarding)。
