数字商品指南系列第二篇:初始化项目

前言

Hi,大家好,数字藏品系列指南来到了第二篇:初始化项目,在本篇文章里我们会完成项目的初始化,包含Alchemy的使用流程、项目所需依赖包的安装,最后我们会设置env参数来作为收尾。

在编写我们的第一个智能合约前,我们还需要一个连接区块链节点的工具,我们可以通过搭建自己的节点服务来与区块链交互,运行自己的节点有很多好处,比如我们可以参与交易验证,但随之而来的也是我们需要承担硬件成本和技术维护成本,这里我们选择替代方法,使用第三方的API服务Alchemy,Alchemy是一个Web3开发者平台,它聚焦于区块链开发更加方便简易,已经构建了一套开发工具、增强的API和优越的节点基础设施,以实现区块链应用程序的无缝构建和运行。

警告

本指南仅供学习交流使用,不得用于违法用途,如果侵犯了国家法律,责任自负。

使用Alchemy

首先我们要注册一个Alchemy账号,注册完成后我们可以通过创建一个应用来生成API私钥,有了私钥我们可以发送请求到rinkeby测试网络。

在你的Alchemy面板,通过移动鼠标切换导航到Apps上,然后点击Create App
在这里插入图片描述

Name栏里填写应用名称,这里我们输入我的第一个数字藏品,DESCRIPTION栏里填写应用的简介,这里我们跳过,ENVIROMENT是选择开发环境的,总共有三种,Development:本地开发环境,Staging:测试服务器环境,Production:生产环境,这里我们选择Staging,CHAIN是链选择项,默认是以太坊,不做更改,NETWORK是区块链网络的意思,我们选择Rinkeby,最后我们点击Create app创建我们的应用。

在这里插入图片描述

创建完成后,在下边就可以看到我们刚才创建的应用了,点击VIEW KEY可以查看私钥和API地址,这个我们后边会用到
在这里插入图片描述

初始化我们的项目

首先我们需要为我们的项目创建一个文件夹,在你喜欢的地方新建文件夹my-contract,这里我们使用cmd命令操作,打开cmd,输入:

mkdir my-contract
cd my-contract

在这里插入图片描述

cd my-contract后,我们进入了文件夹内,然后我们使用npm init来初始化我们的项目

npm init

然后会有一些问题需要我们来输入回答,首先是package name(包名),这里我们直接按下回车键,下边是version(版本),直接按下回车键,接下来是description(描述),直接按下回车键,entry point(入口文件),直接按下回车键,test command(测试命令),直接按下回车键,git respository(git库),直接按下回车键,keywords(关键词),直接按下回车键,author(项目作者),直接按下回车键,license(证书),直接按下回车键,然后会询问我们是否确认,再次按下回车键确认。
在这里插入图片描述

到这里我们已经完成了项目的初始化,这时我们的项目文件夹里会多出一个package.json文件,我们使用命令

dir

在这里插入图片描述

安装依赖包

1.安装HardHat

Hardhat是一个用于编译、部署、测试和调试以太坊软件的开发环境。它帮助开发人员管理和自动化构建智能合约和DAPP过程中固有的重复性任务,并在该工作流周围轻松引入更多功能。这意味着我们可以使用它同时编译、运行和测试智能合约。
在我们的项目文件夹my-contract中,执行命令

npm install --save-dev hardhat

在这里插入图片描述

如果你想要了解更多关于HardHat的信息,打开这个页面

2.安装Hardhat-ethers

Hardhat-ethers,是HardHat的一个插件,通过它我们能够以更简单的方式与以太坊区块链交互,在我们的项目文件夹my-contract中,执行命令。

npm install --save-dev @nomiclabs/hardhat-ethers

在这里插入图片描述

3.安装openzeppelin

openzeppelin是一个用于安全智能合约开发的库,建立在社区审核代码的坚实基础之上,在我们的项目文件夹my-contract中,执行命令。

npm install @openzeppelin/contracts

打开这个页面来了解更多关于openzeppelin的使用方法。
在这里插入图片描述

4.安装dotenv

在my-contract文件夹下,执行命令

npm install dotenv --save

在这里插入图片描述

5.安装ethers.js

命令

npm install --save-dev ethers

在完成所有依赖包安装后,我们的package.json,会是这样子的,根据你安装时间的不同多多少少可能会有一些变化
在这里插入图片描述

创建Hardhat项目

这是我们初始化项目的最后一步,初始化一个空的Hardhat项目,在我们的项目文件夹下执行命令

npx hardhat

然后使用键盘上的上下键选择Create an empty hardhat.config.js,再按下回车键
在这里插入图片描述

在这里插入图片描述

这会为我们生成一个hardhat.config.js 文件,通过它我们定义与区块链相关的变量信息,像区块链网络、以太坊地址。

创建.env文件

进入目录my-contract创建.env文件,添加你自己的metamask钱包私钥和Alchemy API地址到文件中

如何导出钱包私钥?首先进入钱包,然后点击账号右边的三个竖点
在这里插入图片描述

点击账户详情
在这里插入图片描述

点击导处私钥
在这里插入图片描述

输入当时设置的密码,点击确认,将私钥复制下来,然后在.env文件添加一行

PRIVATE_KEY="你的私钥"

再添加一行,设置Alchemy API地址(获取步骤查看前文)

API_URL="你的API地址"

好了,这篇我们就先设置这两个参数,后边还会有其它的参数需要设置。env文件代码如下(以下参数均是修改后的错误配置,请改成你自己的正确配置项):

API_URL="https://eth-rinkeby.alchemyapi.io/v2/mjfVtSQ9CMkJMTESTEiaHGfCuj5QKtv1EsX"
PRIVATE_KEY="ed447ef6e109a3b061918359e86007c55ac9test777ad1e03c550440982ca11e"

截止目前为止,你的项目文件结构大概是这个样子的
在这里插入图片描述

总结

如果你按照指南顺利走到了这里,恭喜你,离发布自己的数字藏品更近了一步,在下篇指南里,我们会开始编写智能合约代码(ERC-721标准),并使用安装好的库包完成合约的编译和部署。

捐赠渠道

本教程是由本人自发的项目,如果你要支持我,请通过支付宝发送口令红包,将口令发送到我的邮箱351107490@qq.com,捐赠仅凭个人意愿,感谢支持。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `std::make_shared` 初始化的时候可以传入指针地址或者其他的值(如数字)。它会创建一个新的 `std::shared_ptr` 对象并将其初始化为给定值的指针。例如: ``` int x = 10; auto p1 = std::make_shared<int>(&x); // p1 指向 x 的地址 auto p2 = std::make_shared<int>(20); // p2 指向新分配的 int 类型的内存,并将值初始化为 20 ``` 注意:`std::make_shared` 会使用一次内存分配来创建对象和 `std::shared_ptr` 对象本身,这可能比直接使用 `new` 和 `std::shared_ptr` 的构造函数效率更高。 ### 回答2: std::make_shared 是一个标准的C++函数模板,用于将一个指针或其他类型的对象包装在一个std::shared_ptr智能指针中并进行初始化。 在使用 std::make_shared 初始化时,我们需要传递一个指针或者是一个普通对象的地址作为参数。这个地址可以是一个指针变量的地址或者是一个指向堆上分配的对象的指针。 对于指针类型,我们可以传入一个指针变量的地址作为参数。比如,我们可以传入一个 `int*` 类型的指针变量 `ptr` 的地址,即 `&ptr`。这样,在 std::make_shared 函数内部,将会创建一个新的 std::shared_ptr 对象,并用 `ptr` 指向的地址进行初始化。这个新创建的 std::shared_ptr 对象将会管理这个指针指向的内存资源。 另外,我们也可以传递一个堆上分配的对象的指针作为参数。比如,我们可以传递一个 `new int(42)` 返回的指针给 std::make_shared。这样,在 std::make_shared 内部,将会创建一个新的 std::shared_ptr 对象,并用这个指针进行初始化。这个新创建的 std::shared_ptr 对象将会管理这个指针指向的堆上的对象。 总而言之,使用 std::make_shared 初始化时,我们传入的是一个指针的地址或者是一个对象在堆上分配的地址,而不是一个普通的数字。这样,std::make_shared 可以创建一个新的 std::shared_ptr 对象,并用这个地址初始化。 ### 回答3: std::make_shared()函数是C++标准库中的一个模板函数,用于在动态内存中创建并初始化一个shared_ptr对象。它接收可变数量的参数,并根据这些参数的类型自动选择正确的构造函数来创建对象。 在使用std::make_shared()函数时,我们传递的是一个指针类型的参数,而不是指针的地址或数字。这是因为指针类型的参数提供了对象的地址,有助于std::make_shared()函数在内存中创建对象。 例如,我们可以使用std::make_shared()函数来创建一个指向整数的shared_ptr对象。假设我们有一个整数变量num,并希望使用shared_ptr来管理其内存,我们可以这样做: ```cpp int num = 10; std::shared_ptr<int> ptr = std::make_shared<int>(num); ``` 在这个例子中,std::make_shared<int>()函数接收一个整数变量num作为参数,并使用该参数在动态内存中创建一个整数对象。然后,它返回一个指向这个新创建对象的shared_ptr。在这个过程中,我们没有传递指针的地址或数字,而是直接传递了整数变量num。 因此,回答问题,std::make_shared()初始化的时候传入的参数是以类型的形式传入的,而非指针的地址或数字

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值