13
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Solidity】libraryの使い方

Posted at

定義の仕方がコントラクトと似ているライブラリですが、用途はもちろん異なります。
ライブラリは指定したデータ型に対して、ライブラリで定義したメソッドを追加することができます。

ライブラリの定義

まずはライブラリの定義から。

library SafeMath {

  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

上記はOpenZeppelinのSafeMathというライブラリの一部を抜粋したものです。
第一引数と第二引数の乗算と加算を行うメソッドを定義しています。

ライブラリの使用方法

このライブラリの使用方法は以下になります。

using SafeMath for uint256

uint256 a = 3;
uint256 b = a.add(6); // bには9(3+6)が格納される
uint256 c = b.mul(7); // cには63(9×7)が格納される

まず、usingを使用してデータ型uint256に対して、SafeMathライブラリの全メソッドを使用可能にしています。

その後、addメソッドを使用して足し算を行っています。
ライブラリではaddメソッドは2つ引数が必要ですが、ここではは1つしか渡してませんね。
これは、aの値(3)が自動的に第一引数に渡されるためです。
第一引数(3)に第二引数(6)が足されるため、変数bには9が格納されます。

addメソッドの後は、mulメソッドを使用して掛け算を行っています。
引数に1つしか渡していないのはaddと同じです。
第一引数(9)に第二引数(7)を掛けて、cには63が格納されます。

まとめ

共通で使用するメソッドはライブラリとして定義しておいて、データ型に追加してあげれば、コードが簡素化され、冗長もなくせるので見やすくなりますね。

13
4
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
13
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?