绝对初学者友好的课程,用于开始使用web3、设置开发环境和构建最初的DAPP。
本文是learnweb3的新手篇,包括:
如果您想从视频中学习,我们的 YouTube 上有本教程的录音。单击下面的屏幕截图观看视频,或继续阅读教程!
https://www.youtube.com/watch?v=uwnAXAsd428
为了构建智能合约,我们将使用Hardhat。Hardhat 是专为全栈开发而设计的以太坊开发环境和框架。简单来说,您可以编写智能合约、部署它们、运行测试和调试代码。
mkdir NFT-Tutorial
cd NFT-Tutorial
npm init --yes
npm install --save-dev hardhat
npx hardhat
Create a basic sample project
Hardhat Project root
.gitignore
Do you want to install this sample project's dependencies with npm (@nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers)?
现在你有一个Hardhat项目准备好了!
如果您不在 Mac 上,请执行此额外步骤并安装这些库:)
npm install --save-dev @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers
让我们安装 Open Zeppelin 合约,在终端窗口中执行这个命令
npm install @openzeppelin/contracts
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// Import the openzepplin contracts
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
// GameItem is ERC721 signifies that the contract we are creating imports ERC721 and follows ERC721 contract from openzeppelin
contract GameItem is ERC721 {
constructor() ERC721("GameItem", "ITM") {
// mint an NFT to yourself
_mint(msg.sender, 1);
}
}
npx hardhat compile
rinkeby
网络。首先,在文件夹deploy.js
下创建一个名为的新文件scripts
deploy.js
现在我们将编写一些代码来在文件中部署合约。// Import ethers from Hardhat package
const { ethers } = require("hardhat");
async function main() {
/*
A ContractFactory in ethers.js is an abstraction used to deploy new smart contracts,
so nftContract here is a factory for instances of our GameItem contract.
*/
const nftContract = await ethers.getContractFactory("GameItem");
// here we deploy the contract
const deployedNFTContract = await nftContract.deploy();
// print the address of the deployed contract
console.log("NFT Contract Address:", deployedNFTContract.address);
}
// Call the main function and catch if there is any error
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
.env
文件NFT-Tutorial
并添加以下行。使用评论中的说明获取您的 Alchemy API 密钥和 RINKEBY 私钥。确保您获得 rinkeby 私钥的帐户由 Rinkeby Ether 提供资金。您可以在这里获得一些:https ://www.rinkebyfaucet.com/# Go to https://www.alchemyapi.io, sign up, create
# a new App in its dashboard and select the network as Rinkeby, and replace "add-the-alchemy-key-url-here" with its key url
ALCHEMY_API_KEY_URL="add-the-alchemy-key-url-here"
# Replace this private key with your RINKEBY account private key
# To export your private key from Metamask, open Metamask and
# go to Account Details > Export Private Key
# Be aware of NEVER putting real Ether into testing accounts
RINKEBY_PRIVATE_KEY="add-the-rinkeby-private-key-here"
您可以将 Alchemy 视为区块链的 AWS EC2。它是一个节点提供者。它通过为我们提供节点来帮助我们与区块链连接,以便我们可以读取和写入区块链。Alchemy 帮助我们将合约部署到 rinkeby。
dotenv
包以便能够导入 env 文件并在我们的配置中使用它。在您的终端中,执行这些命令。npm install dotenv
rinkeby
此处添加网络,以便我们可以将合约部署到 rinkeby。hardhat.config.js
用下面给出的行替换文件中的所有行require("@nomiclabs/hardhat-waffle");
require("dotenv").config({ path: ".env" });
const ALCHEMY_API_KEY_URL = process.env.ALCHEMY_API_KEY_URL;
const RINKEBY_PRIVATE_KEY = process.env.RINKEBY_PRIVATE_KEY;
module.exports = {
solidity: "0.8.4",
networks: {
rinkeby: {
url: ALCHEMY_API_KEY_URL,
accounts: [RINKEBY_PRIVATE_KEY],
},
},
};
npx hardhat run scripts/deploy.js --network rinkeby
address
在 etherscan 上打开,你已经部署了你的第一个 NFT 🎉原文:https://www.learnweb3.io/tracks/freshman 翻译:李留白
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!