2019年12月,Alchemy完成1500万美元A轮融资,资方为Pantera Capital,斯坦福大学,Coinbase,三星等。
2021年4月,Alchemy以5.05亿美元估值完成8000万美元B轮融资,Coatue和Addition领投,DFJ Growth、K5 Global、Chainsmokers(烟鬼组合)、演员Jared Leto和Glazer家族参投。
2021年10月,Alchemy以35亿美元估值完成2.5亿美元C轮融资,由a16z领投的。
2022年2月,Alchemy以102亿美元估值完成2亿美元融资,Lightspeed与Silver Lake领投。
Alchemy是一个背景强大、经费充足、踏实做事、没有发币的团队,这样的项目不刷,难道去刷土狗吗?
并且,Alchemy计划将新资金用于推广Web3采用,这方面的一些举措包括推出Web3 University,就是现在的 Road to Web3 活动,活动为期10周,每周一个NFT。看了下nft数量极少,估计由于任务难度大,很多小伙伴直接放弃,这样的项目若是空投,绝对是大毛。
官方原版教程链接,其中有长达49分钟的视频教程还有大篇幅的文字教程,我按照我的做法给大家一个易于操作的图文教程。
没有做过第二周的记得照着这个先做一下。
1.进入 mumbai.polygonscan.com 并向下滚动到页面底部。 您将看到 “添加多边形网络”按钮,单击它并确认您要将其添加到 Metamask。
获取 Test MATIC 非常简单,只需导航到以下水龙头之一:
将钱包地址复制到文本栏中,然后点击 “Send Me MATIC” :
1.按Win+R,在跳出框中输入cmd。
2.进入控制台,输入mkdir ChainBattled 新建一个文件夹,再输入cd ChainBattled 按回车进入该文件夹。
3.输入npm install -g yarn 安装yarn。
4.再输入yarn add hardhat 安装hardhat。
5.然后输入npx hardhat init,连按三下回车即可。
6.输入yarn add @openzeppelin/contracts 安装 OpenZeppelin 智能合约库。
7.输入yarn add @nomiclabs/hardhat-etherscan ,按回车。
1.打开Vscode,点击file,再点击open folder。(不要管右侧代码,那是上一个项目的哈哈)
2.找到刚才创建的文件夹,点击选择文件夹。
3.打开后是这个样子的。
4.右键点击,然后delete lock.sol和deploy.js这两个文件。
5.点击hardhat.config.js,将下面代码粘贴进去!如图所示!
require("dotenv").config();
require("@nomiclabs/hardhat-waffle");
require("@nomiclabs/hardhat-etherscan");
module.exports = {
solidity: "0.8.10",
networks: {
mumbai: {
url: process.env.TESTNET_RPC,
accounts: [process.env.PRIVATE_KEY]
},
},
etherscan: {
apiKey: process.env.POLYGONSCAN_API_KEY
}
};
在 contracts 文件夹中,创建一个新文件并将其命名为“ChainBattles.sol” ,然后将以下代码粘贴进去(注意,这个粘贴我的,官方的有错误!!),如图所示,记得保存,记得保存!
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/utils/Strings.sol";
import "@openzeppelin/contracts/utils/Base64.sol";
contract ChainBattles is ERC721URIStorage {
using Strings for uint256;
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
mapping(uint256 => uint256) public tokenIdToLevels;
constructor() ERC721 ("Chain Battles", "CBTLS"){
}
function generateCharacter(uint256 tokenId) public returns(string memory){
bytes memory svg = abi.encodePacked(
'<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">',
'<style>.base { fill: white; font-family: serif; font-size: 14px; }</style>',
'<rect width="100%" height="100%" fill="black" />',
'<text x="50%" y="40%" class="base" dominant-baseline="middle" text-anchor="middle">',"Warrior",'</text>',
'<text x="50%" y="50%" class="base" dominant-baseline="middle" text-anchor="middle">', "Levels: ",getLevels(tokenId),'</text>',
'</svg>'
);
return string(
abi.encodePacked(
"data:image/svg+xml;base64,",
Base64.encode(svg)
)
);
}
function getLevels(uint256 tokenId) public view returns (string memory) {
uint256 levels = tokenIdToLevels[tokenId];
return levels.toString();
}
function getTokenURI(uint256 tokenId) public returns (string memory){
bytes memory dataURI = abi.encodePacked(
'{',
'"name": "Chain Battles #', tokenId.toString(), '",',
'"description": "Battles on chain",',
'"image": "', generateCharacter(tokenId), '"',
'}'
);
return string(
abi.encodePacked(
"data:application/json;base64,",
Base64.encode(dataURI)
)
);
}
function mint() public {
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_safeMint(msg.sender, newItemId);
tokenIdToLevels[newItemId] = 0;
_setTokenURI(newItemId, getTokenURI(newItemId));
}
function train(uint256 tokenId)public{
require(_exists(tokenId));
require(ownerOf(tokenId)==msg.sender,"You must own this token to train it");
uint256 currentLevel=tokenIdToLevels[tokenId];
tokenIdToLevels[tokenId]=currentLevel+1;
_setTokenURI(tokenId,getTokenURI(tokenId));
}
}
1.在控制台输入echo test>.env 创建一个.env文件。
2.回到vscode,在env文件中粘贴以下代码,如图所示!
TESTNET_RPC=""
PRIVATE_KEY=""
POLYGONSCAN_API_KEY=""
3.进入 alchemy.com 并创建一个新的 Polygon Mumbai 应用程序。
点击create app。
如下图输入,再点击create app。
4.点击刚才创建的app的view key。复制HTTPS的链接,粘贴到vscode中env文件的第一行,如图所示。
5.打开 Metamask 钱包,点击三点菜单 > 账户详情 > 并将您的私钥复制粘贴为“ PRIVATE_KEY ”值,如图所示。
6.最后,进入polygonscan.com, 并点击右上角创建一个新帐户。
进入API-KEY,点击ADD,添加完毕后将红框内字符串复制,粘贴到env文件第三行,如图所示。保存!!!
1.在script问价夹下创建deploy.js文件,并粘贴以下代码,如图所示,记得保存。
const main = async () => {
try {
const nftContractFactory = await hre.ethers.getContractFactory(
"ChainBattles"
);
const nftContract = await nftContractFactory.deploy();
await nftContract.deployed();
console.log("Contract deployed to:", nftContract.address);
process.exit(0);
} catch (error) {
console.log(error);
process.exit(1);
}
};
main();
1.在控制台输入 npm install dotenv ,点击回车安装。
2.在控制台输入 npm install @nomiclabs/hardhat-waffle,点击回车安装。
3.在控制台输入npx hardhat compile,按回车,如图所示即可。
4.在控制台输入npx hardhat run scripts/deploy.js --network mumbai ,等待 10-15 秒,在终端中看到智能合约地址。
1.复制刚刚部署的智能合约地址,进入 mumbai.polygonscan.com , **在搜索栏中粘贴智能合约的地址。**然后点击contract,会发现合约代码不可读。
2.回到控制台,输入npx hardhat verify --network mumbai +你的合约地址,如图所示。(由于请求的人比较多,有时候会错误,多请求几次即可)(我这里是地址已经验证过了,所以出现下面那个错误)
1.现在智能合约已经通过验证,mumbai.polygonscan.com 将在其附近显示一个绿色小勾。
2.点击connect to web3,链接小狐狸。
3.点击write connect,然后点击第四个mint下的write,在小狐狸中确认。
1.复制智能合约地址,前往 testnet.opensea.com ,并将其粘贴到搜索栏中。
1.回到 mumbai.polygonscan.com , 单击write connect,然后看到第8个train,在其中输入1点击write,然后点击小狐狸确认。
2.再回到刚才的界面并刷新几次,如图所示即可。
提交链接。
好了全部完毕,坐等项目方快照,领取NFT即可!