見出し画像

Solidity勉強日誌⑩payable関数とは?

payable関数は、イーサを送る事が出来る特別な関数です。こんな便利な関数があるので、ブロックチェーン上でイーサのやり取りを簡単に出来ます。なので、Ethereum上ではDAppsや、ゲームをどんどん生むことが出来るのですね。ビットコインではこうも簡単にお金のやり取りを書くことは出来ません。

下記のようなコントラクトで送る事ができます。require文の箇所で、buySomething関数を呼び出した人が払ったイーサが0.001イーサかどうかを判定していますね。もし0.001イーサでなければ、それ以下の処理が実行されません。送ったイーサが0.001イーサであれば、transferThing関数でこの関数を呼び出した人のアドレスに何か物を送る、というコントラクトになります。

contract OnlineStore {
 function buySomething() external payable {
 require(msg.value == 0.001 ether);
 transferThing(msg.sender);
 }
}

web3.js(DAppのJavaScriptフロントエンド)の方も見てみましょう!以下のように関数を呼び出した場合何が起こるのでしょうか。

OnlineStore.buySomething({from: web3.eth.defaultAccount, 
value: web3.utils.toWei(0.001)})

valueの部分では、JavaScriptの関数でイーサをどのくらい送るかを定めています(0.001イーサですね)。web3.jsには、utils.toWei()というメソッドがあり、これによってどのくらいのイーサを送るかを設定する事が出来ます。

参照:CryptoZombies




この記事が気に入ったらサポートをしてみませんか?