【Blockchain】修飾子modifierとpayable
前回では、初めてのSmart Contractsを作ってみたのですが、 いかがでしたでしょうか?
その際に、 view
と言う関数を作るときに追加する 修飾子
が出てきました。
これは 「この関数を呼ぶのは読み込みONLYで GAS
がいらないですよ、タダですよ」と言う意味であることを説明しました。
今回は、別の修飾子 modifier
と payable
を説明します。
modifier
前頭の処理が複数の関数で繰り返し同じコードを利用したいときに modifier
修飾子を利用します。
function setMessage(string newMessage) public isOwner {
message = newMessage;
}
modifier isOwner() {
require(owner == msg.sender);
_;
}
上記のサンプルでは、 isOwner
と言うmodifierを作りました。
これは、実行しようとするアカウントがこのSmart Contractのオーナーかを確認するものです。
使い方は、setMessage
関数の宣言に isOwner
を追記することで完了です。
気をつけることは、modifierを作成するときに、コードの最後に _;
を書くことです。
これは、「ここで対象の関数の処理をします」を意味します。
これで、関数setMessageは、オーナーしか使えない関数であることになります。
payable
payable修飾子を関数につけると、その関数にのみ ether
(お金)を送ることができるようになります。
function setMessage(string newMessage) public payable {
require(msg.value == 3 ether);
message = newMessage;
}
上記のサンプルでは、 setMessage
に ether
を送れるように payable
を追加しました。
そして、その額が 3 ether
ちょうどでなければいけないようになっています。
もし、最低 3 ether
とかにしたい場合は、 ==
を >=
に入れ替えてください。
ether
を送るには、下のようにRemix開発環境の Run
> Value
にその額を入力します。
Author And Source
この問題について(【Blockchain】修飾子modifierとpayable), 我々は、より多くの情報をここで見つけました https://qiita.com/toshiok/items/312762dd832027381945著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .