LoginSignup
1
0

More than 5 years have passed since last update.

【Blockchain】修飾子modifierとpayable

Last updated at Posted at 2019-04-05

前回では、初めてのSmart Contractsを作ってみたのですが、 いかがでしたでしょうか?
その際に、 view と言う関数を作るときに追加する 修飾子 が出てきました。
これは 「この関数を呼ぶのは読み込みONLYで GAS がいらないですよ、タダですよ」と言う意味であることを説明しました。
今回は、別の修飾子 modifierpayable を説明します。

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;
}

上記のサンプルでは、 setMessageether を送れるように payable を追加しました。
そして、その額が 3 ether ちょうどでなければいけないようになっています。
もし、最低 3 ether とかにしたい場合は、 ==>= に入れ替えてください。

ether を送るには、下のようにRemix開発環境の Run > Value にその額を入力します。

IMG-01.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0