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

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

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

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

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

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

1.新建端点

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

2.clone代码

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

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

# 安装依赖
yarn

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命令,所以会进入控制台,同时我们会生成几个文件:

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

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

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

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

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})

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

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

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

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

我们首先去到 optimism的网站。

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

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

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

推特:@CoinmanLabs

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

Subscribe to Coinman.eth
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.