🐡
【Solidity基礎】requireとrevertの違い
百聞は一見に如かずなのでまずはコードを見てみましょう。
require の使い方
test1
function testRequire(uint a, uint b) public pure returns(uint) {
require(a == b, "not equal");
return a * b;
}
上記のコードの意味は、
a = bだったら、a * b を返す
a = bじゃなかったら、"not equal"を返す
revert の使い方
test2
function testRevert(uint a, uint b) public pure returns(uint) {
if(a == b) revert("equal");
return a * b;
}
上記のコードの意味は、
a = bだったら、"equal"を返す
a = bじゃなかったら、a * b を返す
revert
は if文と一緒に使うので
直感的にわかりやすいですね。
ただ、if文がなくても使用可能ですが、
if文を使わないと絶対にrevertの部分で
処理が止まってしまうので、注意が必要です。
require の使いどころ
NFTの販売の場面で使われたりします。
現在の発行枚数 = 供給枚数 となったら、
セールが終了する、のような使い方ですね。
イメージのためにコードで書くと、
function test(uint 発行枚数, uint 供給枚数) public pure returns(uint) {
require(発行枚数 == 供給枚数, セール続行)
return セール終了;
}
上記で日本語で書いたところは、
変数として持っておく必要が当然あるのですが
イメージとしてはこんな感じ。
Discussion