查看原文
其他

领取价值100美元的XTC代币构建一个Dfinity Dapp

DfinitySZ DfinitySZ 2021-11-19


在每个区块链网络都有相对应的一种通证代币用于使用网络的一种计算、存储Gas费用,每个网络的Gas费用计量因二级市场通证代币的价格而异,所以随着二级市场代币价格的上涨随之上涨的也有用于支付网络行为中的Gas费用,而Dfinity采用的是反Gas token模型(网络采用Cycles 稳定币的Gas模型),这种Gas Token模型不管是对开发人员还是用户来说都受益。


Cycles在Dfinity中代表的主要角色是通过ICP协议将Cycles支付给数据中心然后获取相对应的计算力和存储容量等,而每T的Cycles的成本费用都是恒定的,1Cycles等于1SDR/1.42美元,Cycles只能由ICP来兑换。虽然ICP的价格在是变量的但是在NNS中会不断的发起调节ICP兑换Cycles兑换比例的经济提案来保证网络Gas的稳定,所以Dfinity上的计算成本几乎是恒定的。

 

Cycles目前只能通过Cycles wallet发送和接收(Cycles Wallet接收Cycles使用的是容器ID),这就造成了用户必须使用Cycles Wallet才能管理Cycles的局面,而Dank通过封装Cycles铸造与Cycles1:1兑换的XTC代币使用户可以绑定Principal ID自由管理Cycles便捷服务。

 



以下指南是如何领取免费的XTC然后部署一个容器:


在本指南中使用的是如何用Dank中的Cycles封装币XTC通过DFX命令行工具部署容器,目前可以通过两种方法领取执行该操作,第一种是将DFX中的Principal ID或者使用Plug钱包中的Principal ID领取。

 

一、安装DFX


在Dfinity中的软件开发工具包中有一个可以通过命令行与IC交互的开发工具,如果没有安装,打开终端壳层(shell)运行以下命令下载最新版本Canister SDK:

sh -ci "$(curl -fsSL https://sdk.dfinity.org/install.sh)"

SDK安装详细版教程:

https://sdk.dfinity.org/docs/quickstart/local-quickstart.html

 

注意:本指南使用的是DFX V0.8.0,DFX可能会发生变化,如果在本指南中遇到任何问题可以通过以下命令检查SDK的版本:

dfx --version


二、安装好Canister SDK之后,通过Cycles Faucet获取XTC代币:


Cycles Faucet是由Dfinity和Fleek联合发起的一个Cycles 水龙头,它向任何符合条件的开发人员提供一次性价值100美元的Cycles,开发人员可以通过Cycles Wallet或者Dank中的XTC代币领取Cycles,本指南是通过领取XTC代币作为领取方式。



Cycles Faucet:

https://faucet.dfinity.org/auth

 

领取XTC代币的方式也会有两种,第一种是使用DFX生成的Principal ID进行兑换,打开命令行工具运行以下命令来获取DFX身份的Principal ID:

dfx identity get-principal

运行结束后将得到的字符串(Principal ID)复制粘贴至Cycles Faucet中,然后选择Dank 的XTC代币作为领取方式。Principal ID它们看起来是这样的:

hvyw2-syv47-codpk-xtphw-3cqcr-f2ygz-s2old-bxd7z-doykg-vib37-pqe

 

第二种方式是直接使用Plug Wallet生成的Principal ID进行领取,第二种方法领取的方式相对于第一种方法简单一些,但是会多一步将Principal ID导入DFX中的步骤:

因为Plug中的Princinpal ID是从Plug Wallet中生成的,而没有作为身份存在于DFX中,所以要将Plug Wallet中的Principal ID导入进DFX中,这个过程需要一个.pem文件,该文件允许DFX使用一些方法来安全的导入与Principal ID 关联的密钥,Plug中构建了一项便捷功能可以将与Plug Walle中Principal ID关联的.pem文件创建下载。


Plug Principal ID领取XTC视频


Plug Principal ID导出.pem文件

 

注意:该文件关联的是与Principal ID中的密钥,要妥善保管此文件

 

文件下载之后返回至终端壳层使用以下命令将下载的.pem文件作为路由(将Plug钱包中的Principal ID导入DFX工具中):

dfx identity import <new-identity-name> <path-to-pem>


命令运行结束后使用以下命令切换到创建的DFX身份:

dfx identity use <new-identity-name>


三、使用XTC部署容器


Canistes SDK、DFX中的Principal ID以及XTC代币是本指南部署容器的先决条件,首先导航到本地计算机要创建项目的目录,在终端窗口使用以下命令创建一个新的DFX项目:

dfx new <project-name>



在默认情况下会自动加载 “Hello Word”应用程序,该应用程序会带有一个用Motoko编写的后端容器,以及一个用HTML、CSS和JavaScript编写的前端容器。

 

如果你已经构建了容器,并且想添加自己的任何容器进行部署,可以将它们添加到src文件夹中,并相应的更新dfx.json文件,默认情况下DFX项目使用wevpack为前端提供框架,所以需要在根目录中安装node.js才能编译到前端,所以需要导航到刚刚创建的DFX项目的根目录并运行以下命令安装node.js:

npm install


四、将node.js安装好之后需要将XTC Canister设置为DFX钱包(将XTC Canister作为支付Cycles的钱包)。

 

在部署容器之前需要先与XTC容器进行交互,然后将XTC容器设置为DFX上使用的身份Cycles钱包,而使用与Principa ID账户中的XTC代币可以通过以下命令调用XTC容器中相对应的Cycles部署容器:

dfx identity --network=ic set-wallet aanaa-xaaaa-aaaah-aaeiq-cai --force

XTC的容器ID为:aanaa-xaaaa-aaaah-aaeiq-cai   

该ID是存储Cycles的XTC容器ID


设置完之后可以通过以下命令来检查钱包的设置是否是正确的:

dfx identity --network ic get-wallet


注意:下一步涉及在Dfinity主网上预留插槽和使用计算能力,执行这些操作的成本为4TCycles,XTC与Cycles的兑换比例为1:1,因此需要使用4个XTC。


五、将容器部署到主网


目前我们的容器仅仅只是部署到本地副本中,现在我们要将容器部署到主网上需要先在Dfinity主网上为容器预留一个插槽,通过以下命令为容器保留这些插槽:

dfx canister --network=ic create --all


如果你不想为容器保留插槽,可以通过-all标志替换特定容器的名称来指定一个容器命令如下所示:

dfx canister --network=ic create <canister-name>


虽然容器已经部署创建在主网上,但是它现在仍然是一个空容器,需要将本地开发的代码推送/安装到主网的新容器中,命令如下:

dfx deploy --network=ic --no-wallet


运行结束之后容器就已经部署在Dfinity主网上,我们可以通过浏览器进行获取它,你的浏览器通过使用前端容器ID的URL为应用程序的前端提供服务,如果没有将URL记录下,我们可以通过DFX请求它:

dfx canister --network=ic id <project-name>_assets


注意:“<project-name>_assets”是应用程序前端容器的默认名称,如果项目为Hello,则前端容器为Hello_assets。


通过刚刚DFX的请求获取的URL复制到浏览器呈现如下(尚未对默认的Hello Word项目进行任何更改的情况下):

https://<paste-canister-ID>.raw.ic0.app/


 

扫码添加深圳社区小助手进群

获取Dfinity第一手资讯

Dfinity深圳社区,专注于Dfinity生态技术发展交流与优质项目挖掘分析。
: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存