# 通过Protostar来部署你的第一个Starknet合约(Ubuntu)

By [天空](https://paragraph.com/@masamii) · 2023-09-07

---

### **默认你已经完成以下准备工作:**

1, Ubuntu 22.04

2, python3.9

3, vs code

4, 头盔或者人字拖钱包

### **让我们开始吧 o.0**

**一, 安装Protostar**

    curl -L https://raw.githubusercontent.com/software-mansion/protostar/master/install.sh | bash
    

检查是否安装成功

    protostar -v
    

![安装成功后会展示相应版本号](https://storage.googleapis.com/papyrus_images/564a35abef8a24d4f2da170a3ca378cda3bb2bc49e2dc027dbeb620ecd6630b9.png)

安装成功后会展示相应版本号

你可以在[这里](https://github.com/software-mansion/protostar/releases)检查最新的Protostar版本

**二,开始部署你的第一个Starknet合约**

在开始前,你需要准备

1, 留有足够测试网Gas([测试网水龙头](https://faucet.goerli.starknet.io/))的账号以及该账号的私钥

2, 该账号的**Class Hash**,成功获取后保存起来备用

Class Hash的获取方法如下:

打开[这个链接](https://testnet.starkscan.co/contract/%E4%BD%A0%E7%9A%84%E5%9C%B0%E5%9D%80), 将地址栏中你的地址 替换为你的账户地址,然后你将进入以下页面:

![红圈部分即为你的ClassHash,复制保存备用](https://storage.googleapis.com/papyrus_images/24962b1003797aac8f48be027f778b293d74c5deda8aa1e849a6c58f08dcd08b.png)

红圈部分即为你的ClassHash,复制保存备用

或者从钱包插件中进入该页面

**人字拖**

![1, 打开设置](https://storage.googleapis.com/papyrus_images/667f22f8861f3a91803609821c33ede914d545236b6ae24dc0cb73f37aed7be2.png)

1, 打开设置

![2, 点进去你的账号](https://storage.googleapis.com/papyrus_images/85a69704b7660ab6ddcbb287bd9f70d445512054a8fdf0c6000eb4348338606a.png)

2, 点进去你的账号

![3, 点击 View on StarkScan](https://storage.googleapis.com/papyrus_images/abb02ab2d558462c10b100f7f8beeb07d1c82847da9d81ee87201f36c3f2c3e7.png)

3, 点击 View on StarkScan

    开始启动你的项目吧

在你想要的文件位置进行**初始化**

    protostar init my_Second
    

![](https://storage.googleapis.com/papyrus_images/9a3ff6fd3c30ab166d7b5dfa454c4f4dc00cb4a4874d4083ac065999ede95473.png)

这样你就创建好了你的第一个Cairo项目

![](https://storage.googleapis.com/papyrus_images/7ec3465102333ab7d93e1c118daf1a913ca6c0265799cb497be547dc676fc6fb.png)

**通过vs code打开该项目**

    cd mySecond
    code .
    

![](https://storage.googleapis.com/papyrus_images/cd88e9a370b0f9d62a6d4c8770e3157602edb395f4d6bae7d63cfcb1f2c093d4.png)

目录结构如下:

![HelloStarkNet !](https://storage.googleapis.com/papyrus_images/273c338b592c06ad711cbcb1c48cbc5ea7b3e7778d768de0693d8d2b9750249c.png)

HelloStarkNet !

你已经完成了你的第一个合约编写,接下来我们可以通过Protostar自带的测试功能来**测试下该合约是否合格**

    protostar test
    

![显示pass则通过测试](https://storage.googleapis.com/papyrus_images/0ca9c8c371c8008dc91028c1fc64563199585581001e9ff7988ea5d02c7408c6.png)

显示pass则通过测试

测试成功后通过build指令来进行**合约编译**

![](https://storage.googleapis.com/papyrus_images/98ed2f4f3bb0eb10a235c82899e9eb4686c6384d180db70bb4ad98404d0baf16.png)

build成功后,你会发现,protostar为我们生成了一个build的文件夹,并且在控制台为我们生成了一个**合约的Class Hash** ,相应的我们也把这个我们拿到的**第二个Class Hash** 保存起来

还记得我们在前面保存的**账号私钥**和第一个**class hash**吗? 我们马上在声明合约的时候要用到它 !

在声明合约之前,我们先要**配置我们的账号私钥**

    export PROTOSTAR_ACCOUNT_PRIVATE_KEY=你的私钥
    

![注意私钥后几位尽量手输](https://storage.googleapis.com/papyrus_images/e91d32c8ebd37d5f47b4f0a52ab5b968c94ab729d1af1b346ead586e71ec5950.png)

注意私钥后几位尽量手输

**声明你的合约**

    protostar declare hello_starknet   --network testnet   --account-address 你的账户地址   --max-fee auto
    

如果在这一步提示你 `…already declared..` ,不用担心,这并不妨碍我们接下来的工作

**部署合约**

    protostar deploy 第二个classhash --network testnet --max-fee auto --account-address 你的账户地址
    

![完结撒花](https://storage.googleapis.com/papyrus_images/5a40d2db064c18a276c231ebd88a62cf67a38502c9bd484d3e3dd504b2b24168.png)

完结撒花

至此你就可以在starknet的区块浏览器上玩耍你的合约啦 !

---

*Originally published on [天空](https://paragraph.com/@masamii/protostar-starknet-ubuntu)*
