Alchemy的the Road to Web3第八周文本教程- 如何在 Optimism 上构建博彩游戏

大家好,我是帝哥(推特:@CoinmanLabs),今天我们一起来看看第八周的任务。

这是我们WEB3最后一周的课程了,后续帝哥会陆陆续续给大家分享区块链的技术,想学的可以关注帝哥推特或者+v: CoinmanLabs(社群客服微信进群)进群学习。

区块链的结构依赖于确定性。在区块链生态系统中,每个网络的状态都是公开的;完全透明。如果知道状态和输入,就可以计算输出。确定性与共识有关,共识使区块链的进展能够得到验证。如果没有这种确定性,就不可能独立验证区块链的进展,因为区块链将不再是去中心化的。

对于大多数用例,在实际使用随机数之前无法知道它们。因此,这意味着区块链的基础、透明度和共识,使得随机数的生成变得非常困难。

在本周课程中,我们将介绍如何克服为区块链生成随机数的限制。我们将介绍如何为使用随机数的赌场博彩游戏构建和测试 Solidity 合约。我们还将讨论在区块链博彩游戏中防止滥用的一些策略。

1.新建端点

首先我们的去Alchemy网站新建Optimism的端点。

post image

2.clone代码

帝哥已经将代码上传到了自己的Github仓库,同学们可以直接在本地clone即可。地址在下面大家可以去取。

https://github.com/CoinmanLabs/ROAD3_WEEK08.git

当我们将代码clone到本地之后,因为一般代码上传不会上传依赖,所以我们去安装依赖。

# 安装依赖
yarn
post image

3.修改配置部署合约

当我们将依赖安装完毕后,我们去修改我们的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的url",
       accounts: [ "你的私钥" ]
    }
  }
};

修改完毕后我们在控制台输入:

yarn  hardhat console --network optimism

系统会自动给我们编译合约,因为我们加了console命令,所以会进入控制台,同时我们会生成几个文件:

post image

上面我们已经进入了控制台,下面的命令就在控制台输入了:

# 查看自己的当前账户是否是你的小狐狸账户
signer = await ethers.getSigner();
post image
# 查询当前账户的余额
balance0 = await ethers.provider.getBalance((await ethers.getSigner()).address)
BigNumber { value: "48335146483888624" }
post image

#开始编译合约 
factory = ethers.getContractFactory("Casino")
# 下面这条命令会返回我们bytecode等信息
factory = await factory
# 部署合约 你的optimism一定要有费用,具体的可以看下面怎么给optimism充值
casino = await factory.deploy()
post image

找到你部署的hash去区块浏览器进行查询,当然也可以用你的钱包查询:

post image

3.开始游戏

我们仍然在控制台输入:

# 直接粘贴复制进去
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})
post image

最后再来一次游戏就结束了:

# 如果你的value和上面的不一致,会需要重新覆盖且报错
tx2 = await casino.acceptBet(hashA, valBwin, {value: 1e5})
post image
post image

最后我们在看下区块链浏览器的结果:

post image

当你运行命令出现了下面的情况,就说明你的钱包余额不足,所以需要我们去转下ETH到optimism

post image

我们首先去到 optimism的网站。

post image

同时我们需要将optimism相关信息添加到小狐狸钱包,我们首先去到chainlist 添加相关的信息。

post image

以上就是第八周的任务了,大家别忘记了填写表格完成哦,表格页面在下方:

https://alchemyapi.typeform.com/roadtoweek8

我是懂币帝,用技术带你领略区块链魅力,第一时间获取行业最新资讯:

推特:@CoinmanLabs

微信:CoinmanLabs(社群客服微信进群)