こんにちは。
ちょっとした「宝くじ」で遊べる
スマートコントラクトを書いてみました。
Githubでページ公開しています。
https://yasuyasuonfire.github.io/lottery-react/
伝えたいことは、
・遊んでみてね!
・初心者でも講座の見よう見まねでできた
ということです。
↓画面はこうなっています。
さて、仕様はこんな感じです。
- metamaskで、「Rinkeby Testnet Network」を選ぶと接続できます。
- 賭けるETHの額を指定して送信します。
- 抽選を待ちます。
以上です!
抽選は1日1回、私のブログ執筆時にぽちっと抽選して
いこうと思います。
さて、抽選ってどういう仕組みかというと、
- 参加者の掛け金をスマートコントラクトがプールします
- 管理者が抽選を実行すると、参加者のうち一人がランダムで選ばれます
- 当選者にスマートコンタクトから送金されます
実にシンプルですね。
コードは以下のようになっています。
pragma solidity ^0.4.17; contract Lottery { address public manager; address[] public players; function Lottery() public { //コンストラクタ manager = msg.sender; //deployした人がmanagerとなる } function enter() public payable { //宝くじへの参加に対応 require(msg.value > .01 ether); //0.01ETH以下は受け付けない players.push(msg.sender); } function random() private view returns (uint) { return uint(keccak256(block.difficulty, now, players)); //ランダムな数を生成 } function pickWinner() public restricted { uint index = random() % players.length;//ランダム数を参加者数で割った余り players[index].transfer(this.balance);//当選者に送金 players = new address[](0); } modifier restricted() { require(msg.sender == manager); //managerだけ実行できるメソッド用 _; } function getPlayers() public view returns (address[]) { return players; } }
Rinkeby Testnet NetworkにETHがない場合は、
↓などの配布サイトでGETできます。
https://faucets.chain.link/rinkeby
参考にしているのはUdemyの講義です。
英語講座なのですが、
字幕を出しながらこなしています。
www.udemy.com
solidity勉強中の人は、
触ってみて、コードも照らし合わせると、
理解が進むと思います。
Githubでのページ公開は、
以下のサイトを参考にしました。
githubでReact作成したWebアプリ・Webサービス公開 - Elsaの技術日記(徒然なるままに)
flutter で作成した Web アプリを GitHub Page 上にデプロイできない
※テストネットですので、
扱うETHには金銭的価値は
何もありません。
ブログに何か新しさをくっつけられないかな?
と日々思考しているのですが、
スマートコントラクトを使って、
ブログ閲覧と同時になにか
お遊び的にDappsを動かすみたいな
ことができればよいですね。
今回の宝くじは、本物のETHでやったら
賭博法にひっかかる・・。
占いのようなコンテンツは面白いけれど、
少なからずガス代はかかるのが悩ましいですね。
Polygonなら気にしない程度のガス代で済みそうですが。
試行錯誤していきます。
- 再掲)テストネットETHの宝くじ
https://yasuyasuonfire.github.io/lottery-react/
メタマスクって何よ??
なんか面白そう!と思った方は、
Web3のスターターガイドを書いていますので、
ぜひご覧ください↓
(お知らせ)Web3を学ぶためのスターターガイド1万字を執筆しました。
Web3って言葉よく聞くし、気になるけど
何からやって良いか分からない・・
そんな人のため、ガイドとなる記事を
魂込めて作成しました。
一緒に勉強していきましょう。
eternalbluebullet.hatenablog.com
Web3を学ぶ上で避けて通れないのが
暗号資産(仮想通貨)。
口座を開設し、ビットコインが
上がった下がったと一喜一憂する
ところから、私も始めました。
上記の記事でも国内取引所の口座について
解説しています。
日本円と暗号資産を交換する入口として、
利用することになります。
ビットコインにイーサリアム、
DeFi, NFT・・概論を掴んだ後は、
実際にクリプトを少額から購入して
みることで、ぐっと知識が血肉になります。
1口座目にお薦めなのが
「コインチェック」
国内最大手であり、
圧倒的に情報量が多いという
安心感があります。
★コインチェック で口座開設する★
際立った特徴はないものの、
バランスに優れるのがフォビジャパン 。
★フォビジャパンで口座開設する★
NFTを買ってみたいなら、
JPYCを使った方法が最も簡単。
リンク先で紹介しています。
eternalbluebullet.hatenablog.com
Twitterで更新情報も発信しています。
Web3系の話を中心に、日々発信中です。