Alchemy是什么项目?

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数量极少,估计由于任务难度大,很多小伙伴直接放弃,这样的项目若是空投,绝对是大毛。

手把手第一周教程开始:如何使用 Alchemy 开发 NFT 智能合约(ERC721)

官方原版教程链接,其中有长达50分钟的视频教程还有大篇幅的文字教程。我按照我的做法给大家一个易于操作的图文教程。

step1 使用 OpenZeppelin 合约向导开发 ERC721 智能合约。

1.开发 ERC721 NFT 智能合约需要做的第一件事是 进入 Open Zeppelin 智能合约向导页面。

进入页面后,您将看到以下编辑器:

2.单击左上角的 ERC721 按钮,选择要使用的 ERC 标准类型,输入Name和Symbol:

3.如图所示勾选 NFT (ERC721) 代币功能:

勾选完毕后右侧代码如下:

 // SPDX-License-Identifier: MIT
 pragma solidity ^0.8.4;
 ​
 import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
 import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
 import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
 import "@openzeppelin/contracts/access/Ownable.sol";
 import "@openzeppelin/contracts/utils/Counters.sol";
 ​
 contract Alchemy is ERC721, ERC721Enumerable, ERC721URIStorage, Ownable {
    using Counters for Counters.Counter;
 ​
    Counters.Counter private _tokenIdCounter;
 ​
    constructor() ERC721("Alchemy", "ALCH") {}
 ​
    function safeMint(address to, string memory uri) public onlyOwner {
        uint256 tokenId = _tokenIdCounter.current();
        _tokenIdCounter.increment();
        _safeMint(to, tokenId);
        _setTokenURI(tokenId, uri);
    }
 ​
    // The following functions are overrides required by Solidity.
 ​
    function _beforeTokenTransfer(address from, address to, uint256 tokenId)
        internal
        override(ERC721, ERC721Enumerable)
    {
        super._beforeTokenTransfer(from, to, tokenId);
    }
 ​
    function _burn(uint256 tokenId) internal override(ERC721, ERC721URIStorage) {
        super._burn(tokenId);
    }
 ​
    function tokenURI(uint256 tokenId)
        public
        view
        override(ERC721, ERC721URIStorage)
        returns (string memory)
    {
        return super.tokenURI(tokenId);
    }
 ​
    function supportsInterface(bytes4 interfaceId)
        public
        view
        override(ERC721, ERC721Enumerable)
        returns (bool)
    {
        return super.supportsInterface(interfaceId);
    }
 }

step2 使用 REMIX IDE 修改和部署ERC721 合约

1.首先,您可能已经注意到,在 OpenZeppelin Wizard 编辑器的顶部,有一个“Open in Remix”按钮,单击它将在浏览器的新选项卡中打开 REMIX IDE。

2.删除17行的onlyOwner,否则只允许智能合约的所有者(部署智能合约的钱包地址)铸造 NFT。

3.在第14行填入 uint256 MAX_SUPPLY = 100000;

4.在第19行添加 require(_tokenIdCounter.current() <= MAX_SUPPLY, "I'm sorry we reached the cap");

step3 创建一个免费的炼金术帐户

1.首先,到 alchemy.com点击“登录”并创建一个新帐户:

2.进入Dashboard,点击create app。

3.如图,名字和描述可以随意输入,最下面选择以太链的Rinkeby,点击Create app。

4.创建完成后,回到仪表板,单击“VIEW KEY”按钮 ,然后复制 HTTPS URL:

step4 将 Alchemy Rinkeby 添加到 Metamask 钱包

1.点击添加网络。

2.在其中填写 Rinkeby 网络和 RPC URL 信息并保存。

3.获取 Rinkeby Test ETH ,只需导航到 rinkebyfaucet.com,将钱包地址复制到文本栏中,然后点击“Send Me ETH”。10-20 秒后,会看到 Rinkeby ETH 出现在 Metamask 钱包中。

step 5 在 Rinkeby 测试网上编译和部署 NFT 智能合约

1.回到 Remix,点击页面左侧的编译器菜单,版本选0.8.4,勾选Auto compile,然后点击“编译”按钮:

2.然后点击“Deploy and Run Transactions”菜单,点击Environment下拉菜单并选择“Injected provider (Metamask)”,点击contract选择Alchemy那个,单击deploy。

3.将出现 Metamask 弹出窗口,单击“确认”,然后继续支付 Gas 费用。

4.如果一切都按预期工作,10 秒后,您应该会在 Deployed Contracts 下看到该合约:

img

step6 在 IPFS 上创建和上传元数据

1.首先,到 filebase.com创建一个新帐户。

登录后,单击左侧菜单上的存储桶按钮,然后创建一个新存储桶(自己取名字,重名不行):

2.导航到存储桶,单击 上传按钮 ,然后上传您要用于 NFT 的图像, 建议使用以下内容

3.上传后单击它并复制 IPFS 网关 URL:

4.建txt文档,粘贴以下 JSON 代码,并将文件保存为“metadata.json”。注意将第三行image那里改成刚才的链接。

 { 
  "description": "This NFT proves I've created and deployed my first ERC20 smart contract on Rinkeby with Alchemy Road to Web3",
  "external_url": "Alchemy.com",
  "image": "https://ipfs.filebase.io/ipfs/bafybeihyvhgbcov2nmvbnveunoodokme5eb42uekrqowxdennt2qyeculm",
  "name": "A cool NFT",
  "attributes": [
    {
      "trait_type": "Base",
      "value": "Starfish"
    },
    {
      "trait_type": "Eyes",
      "value": "Big"
    },
    {
      "trait_type": "Mouth",
      "value": "Surprised"
    },
    {
      "trait_type": "Level",
      "value": 5
    },
    {
      "trait_type": "Stamina",
      "value": 1.4
    },
    {
      "trait_type": "Personality",
      "value": "Sad"
    },
    {
      "display_type": "boost_number",
      "trait_type": "Aqua Power",
      "value": 40
    },
    {
      "display_type": "boost_percentage",
      "trait_type": "Stamina Increase",
      "value": 10
    },
    {
      "display_type": "number",
      "trait_type": "Generation",
      "value": 2
    }
  }

5.回到 Filebase 并上传 metadata.json文件在我们上传图像的同一存储桶中。

6.最后,单击 CID 并复制它,在下一部分中需要它来构建 NFT 的令牌 URI:

step7 Mint Your Rinkeby NFT

1.返回 Remix 并在 Deploy & Run Transactions 菜单中,进入“已部署的合约” - 然后单击我们刚刚部署的合约。单击 safeMint 下拉框 并将您的地址以下字符串粘贴到 uri (cid处复制刚才的)字段中。

 ipfs://\<your\_metadata\_cid>

如上图,单击交易将创建一个 Metamask 弹出窗口,提示您支付 gas 费用。

点击“确认”并继续铸造你的第一个 NFT!

2.等待几秒钟,为确保铸币成功通过,将您的地址复制并粘贴到 balanceOf 方法输入中点击call,它应该显示您有 1 个 NFT。

3.在tokenUri 插入“0”作为 id 参数,点击call,它应该显示你的 tokenURI。

step8 在 OpenSea 上可视化您的 NFT

1.到 testnets.opensea.io使用您的 Metamask 钱包登录 。 然后单击您的个人资料图片,您应该会在那里看到您新铸造的 NFT。

2.如果图像尚不可见,请单击它,然后单击“刷新元数据”按钮。

3.有时 OpenSea 很难识别测试网元数据 - 并且可能需要长达 6 小时才能看到它。 一段 时间后,您的 NFT 应该如下所示

恭喜,您已成功创建、修改和部署您的第一个智能合约。 铸造了你的第一个 NFT,并在 IPFS 上发布了你的图像!

step9 提交任务

点击链接进入提交相关信息即可。

step10 领取NFT

点击链接领取NFT。

参考文章: https://mirror.xyz/0xCD0e394639B2D0b159B41F9dBe0583C33d85e874/egs3DyvaUmAYlQXrufE55p9sJ80coSDDxOfTCR-7e3o

Alchemy Nft黑客松任务(第一周)的更多相关文章

  1. 2022首场MASA技术团队黑客松赛事大赛完美落幕!精彩集锦

    Masa技术团队在2021年创立,这一年我们团队发布了我们第一个产品,Masa Blazor.登上了.NET Conf China,我们承诺,开源我们的产品,为开源社区增砖加瓦,一路上收获技术社区文章 ...

  2. 记录参加“牛津计划.Docker在线黑客松”比赛的过程

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  3. Open XML SDK 在线编程黑客松

    2015年2月10日-3月20日,开源社 成员 微软开放技术,GitCafe,极客学院联合举办" Open XML SDK 在线编程黑客松 ",为专注于开发提高生产力的应用及服务的 ...

  4. 20175126《Java程序设计》第一周学习总结

    # 学号 20175126 <Java程序设计>第一周学习总结   ## 教材学习内容总结   - 1.安装了WINDOS系统的JDK,并学会了利用JDK编写并编译JAVA程序的基本方法. ...

  5. 20155305乔磊2016-2017-2《Java程序设计》第一周学习总结

    学习考核方式后感 老师对于成绩的获得有很多细节的地方,获得高分很不容易,考核次数也很多,100分分为课堂考核,实验,团队项目,老师对我们的要求可以说非常的严格,我也为有一个要求严格的老师感到幸运荣幸. ...

  6. 201871010104-陈园园 《面向对象程序设计 (java)》第一周学习总结

    201871010104-陈园园   <面向对象程序设计  (java)>第一周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-dai ...

  7. 第一周 总结笔记 / 斯坦福-Machine Learning-Andrew Ng

    课程主页:https://www.coursera.org/learn/machine-learning/home/welcome 收集再多的资料也没用,关键是要自己理解总结,做笔记就是一个归纳总结的 ...

  8. Surprise团队第一周项目总结

    Surprise团队第一周项目总结 团队项目 基本内容 五子棋(Gobang)的开发与应用 利用Android Studio设计一款五子棋游戏,并丰富其内涵 预期目标 实现人人模式:2个用户可以在同一 ...

  9. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  10. 20145206邹京儒《Java程序设计》第一周学习总结

    20145206 <Java程序设计>第1周学习总结 教材学习内容总结 1.三大平台:Java SE.Java EE与Java ME.Java SE是各应用平台的基础,分为四个主要的部分: ...

随机推荐

  1. ARP协议 路由器原理

    ARP协议 路由器原理     1 广播与广播域 广播:将广播地址作为目的地址的数据帧 广播域:网络中能够接收到同一个广播所有节点的集合(在这里广播域越小越好) 交换机控制不了广播 路由器可以控制广播 ...

  2. Mysql的驱动表 被驱动表 join buffer

    1.为什么小表驱动大表: for(int i=5;.......){     for(int j=1000;......)     {}} 1.1如果小的循环在外层,对于数据库连接来说就只连接5次,进 ...

  3. 基于Dijkstra算法的郑州地铁路径规划

    需要引入geopy库 pip install geopy 安装即可 import requests from bs4 import BeautifulSoup import pandas as pd ...

  4. Q:oracle19c 如何重建vm_concat函数

    没有wm_concat是因为oracle12c数据库中废弃了wm_concat函数 --–登录dba用户sys权限,为wmsys用户创建可用的wm_concat函数,依次执行以下语句 第一步 定义对象 ...

  5. jxg项目Day5-关于项目打包

    springboot项目中手动打包,加以下依赖: <parent> <artifactId>spring-boot-dependencies</artifactId> ...

  6. Java中简单易懂的HashMap面试题(面试必备)

    这篇文章仅限小编个人的理解,小编不是Java方向的,只是对Java有很高的学习兴趣 如果有什么不对的地方还望大佬指点 HashMap的底层是数组+链表,(很多人应该都知道了) JDK1.7的是数组+链 ...

  7. 网络数据请求get&post

  8. 在winodws server r2上安装AD域

    一.创建第一个域 服务器管理-管理--添加角色和功能 其他都是默认值,下一步 二.重启后,已域账号登录 三.检查AD域有没有安装成功 1.查看计算机名 更改计算机名 2.检查是否含有以下,AD管理中心 ...

  9. c#和JS数据加密(转)

    前台提交按纽 后以赋值后台取值    Base64编解码   C# /* 编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码. 它将需要编码的数据拆分成字节数组. ...

  10. mymath.so共享库

    共享库的使用(.so)文件   1.共享库的概念 2.创建共享库命令 # 1.将.c生成.o文件,(生成与位置无关的代码-fPIC)gcc -c add.c -o add.o -fPIC # 2.使用 ...