【CryptoZombiesを触ってみた】Lesson4で学んだこと
【CryptoZombiesとは】
Solidityでスマートコントラクトの構築を学習できるサイト
日本語で丁寧に説明してくれるので、プログラミングやったことない人でも学習できる。
【はじめに】
Solidityは未経験ですが、JavaScriptは触ったことがあります。
そんな人が自分用の学習メモとして書いています。
【学んだこと】
payable修飾子
ブロックチェーン上にあるコントラクトを呼び出す際にETHを受け取ることができる。
contract OnlineStore { function buySomething() external payable { // 関数呼び出し時、0.001ETHが送られてきたか確認する require(msg.value == 0.001 ether); // 0.001ETHが送られてきた場合に実行する処理 transferThing(msg.sender); } }
// buySomething関数を呼び出す(web3.js) // valueに0.001ETHを設定 OnlineStore.buySomething({from: web3.eth.defaultAccount, value: web3.utils.toWei(0.001)})
CryptoZombiesより引用
withdraws関数とtransfer関数
コントラクトに送られたETHはコントラクトのアカウントに貯められる。貯まったETHをコントラクト以外で使用するにはコントラクトから引き出す処理(withdraws関数)が必要になる。transfer関数を使用すると指定したイーサリアムのアドレスに送金できる。
contract GetPaid is Ownable { function withdraws() external onlyOwner { // transfer関数でownerにETHを送る // this.balanceでコントラクトに貯まっているETHの残高を取得する owner.transfer(this.balance); } }
CryptoZombiesより引用
【できたもの】
ゾンビ同士のバトル機能を追加
バトルに勝つとゾンビのレベルが上がる。更に新たなゾンビを生み出し、自分のゾンビ軍団に加わる。