Help us understand the problem. What is going on with this article?

【Blockchain】修飾子modifierとpayable

前回では、初めての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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした