# 百亿项目Alchemy Road to Web3 第八周NFT获取教程

By [suifengliu](https://paragraph.com/@nft10086) · 2022-08-20

---

Alchemy项目背景多雄厚不用多说了，咱们直接上第八周的小白教程，无需编程，无需安装任何东东，直接开搞。

注意，本教程参考了帝哥写的教程，但是帝哥要求代码下载到本地，导致需要小白不知道该怎么做，所以完善了一下，写成了一个小白教程。

完成第八周任务共需八步，咱们就称为天龙八步吧。

### 第一步，登录Alchemy网站，新建Optimism

![新建Optimism](https://storage.googleapis.com/papyrus_images/4eabedbdc8322955e8f7abaf505181affa7a621409a1b3abc7d19aeceba17fbd.jpg)

新建Optimism

![点击 View Key](https://storage.googleapis.com/papyrus_images/39db7fcbd87c2ee46f9fb4423a3ecb8f5fec566e10264674599f77ecd399cc0e.jpg)

点击 View Key

![复制HTTPS，后面会用到](https://storage.googleapis.com/papyrus_images/21d08512e119dff8dc411e0073483fdbf95b3e87209719493952238f28d49fbe.jpg)

复制HTTPS，后面会用到

新建Optimism后，点击_VIEW KEY_, 拷贝HTTPS，后面 **第四步** 会用到。

### 第二步 Fork代码

帝哥已经将代码上传到了自己的[Github仓库](https://github.com/CoinmanLabs/ROAD3_WEEK08.git)，同学们可以使用。这一步我是从帝哥那里直接获取的，是站在了帝哥的肩膀上。

（前提：你已经登录了自己的github）打开上面的[Github仓库](https://github.com/CoinmanLabs/ROAD3_WEEK08.git)，然后点击右上角的_Fork_，将代码复制到我们自己的Github。

![Fork代码](https://storage.googleapis.com/papyrus_images/1016774888ebce3f64434c53dccfd001d6687bea2da96a0200e9341043d35b2d.jpg)

Fork代码

Fork完成后，Github会转跳到我们自己的Github地址，在浏览器地址栏复制这个地址，下面**第三步**会用到。

### 第三步 登录Gitpod

然后登录 [https://gitpod.io/workspaces](https://gitpod.io/workspaces) 点击 “_New workspace_”，然后把我们 **第二步** 拿到的地址复制进去。复制进去以后，点击下面那块灰色区域，进行加载编辑项目。

![加载项目](https://storage.googleapis.com/papyrus_images/77cf2d899769e3bf65f668ec7db969601ac659c94c7aab1c9be35479b98be13e.jpg)

加载项目

### 第四步 修改配置合约

找到hardhat.config.js，修改内容如下：

    require("@nomiclabs/hardhat-waffle");
    require('dotenv').config()
    
    // This is a sample Hardhat task. To learn how to create your own go to
    // https://hardhat.org/guides/create-task.html
    task("accounts", "Prints the list of accounts", async (taskArgs, hre) => {
      const accounts = await hre.ethers.getSigners();
    
      for (const account of accounts) {
        console.log(account.address);
      }
    });
    
    // You need to export an object to set up your config
    // Go to https://hardhat.org/config/ to learn more
    
    
    // You need to export an object to set up your config
    // Go to https://hardhat.org/config/ to learn more
    
    /**
     * 切记私钥不要上传到仓库 切记 切记
     */
    
    module.exports = {
      solidity: "0.8.4",
      networks: {
        
        "optimism": {
           url: "第一步新建的Optimism的HTTPS url",
           accounts: [ "你的私钥" ]
        }
      }
    };
    

注意，上面代码中，倒数**第4行、倒数第5行**是需要你自己修改成自己的URL（详见第一步）和私钥。这个私钥一旦在完成本任务后，立马删除。

关于私钥的获取方法，相信做其他几周任务时已经知道怎么做了，不再赘述。

### 第五步 编译合约

控制台输入

    yarn  hardhat console --network optimism
    

继续输入

    signer = await ethers.getSigner();
    

继续输入

    balance0 = await ethers.provider.getBalance((await ethers.getSigner()).address)
    BigNumber { value: "48335146483888624" }
    

继续

    factory = ethers.getContractFactory("Casino")
    

继续

    factory = await factory
    

再次继续

    casino = await factory.deploy()
    

如果执行最后一条命令时，出现**insufficient funds**的错误，说明钱包资金不足，需要充值。

### 第六步 充值

我们首先去到 [optimism](https://app.optimism.io/bridge)的网站，然后充值

![充值](https://storage.googleapis.com/papyrus_images/bce66cf49defdeab363014a7ac27e51c26dd980a4a37e2db342cdea53ea540d2.jpg)

充值

充值完成后，再次在控制台执行如下命令：

    casino = await factory.deploy()
    

### 第七步 开始游戏

控制台输入

    const valA = ethers.utils.keccak256(0xBAD060A7)
    const hashA = ethers.utils.keccak256(valA)
    const valBwin = ethers.utils.keccak256(0x600D60A7)
    tx1 = await casino.proposeBet(hashA,{ value: 1e5})
    

继续输入

    tx2 = await casino.acceptBet(hashA, valBwin, {value: 1e5})
    

然后前往[区块浏览器](https://optimistic.etherscan.io/)进行查询，输入你的钱包查询一下

[https://optimistic.etherscan.io/](https://optimistic.etherscan.io/)

如果能看到如下结果，就说明成功了

![](https://storage.googleapis.com/papyrus_images/da6c470e78191c0a277bbd03b96b462fba259d4e11e0f0e78a08079207c2ce93.jpg)

### 第八步，填表

[https://alchemyapi.typeform.com/roadtoweek8](https://alchemyapi.typeform.com/roadtoweek8)

---

*Originally published on [suifengliu](https://paragraph.com/@nft10086/alchemy-road-to-web3-nft)*
