# Alchemy的the Road to Web3第八周文本教程- 如何在 Optimism 上构建博彩游戏 **Published by:** [HelloVipSir](https://paragraph.com/@hellovipsir/) **Published on:** 2022-09-25 **URL:** https://paragraph.com/@hellovipsir/alchemy-the-road-to-web3-optimism ## Content 在本周课程中,我们将介绍如何克服为区块链生成随机数的限制。我们将介绍如何为使用随机数的赌场博彩游戏构建和测试 Solidity 合约。我们还将讨论在区块链博彩游戏中防止滥用的一些策略。 1.新建端点 首先我们的去Alchemy网站新建Optimism的端点。 2.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的网站转入ETH即可。 ## Publication Information - [HelloVipSir](https://paragraph.com/@hellovipsir/): Publication homepage - [All Posts](https://paragraph.com/@hellovipsir/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@hellovipsir): Subscribe to updates