Lesson 5 capture 9 オーバーフロー対策
コントラクトのセキュリティ強化 オーバーフローとアンダーフロー
オーバーフロー
変数のとりうる値を超えた状態。
uint8の値は、最大2^8 - 1 = 255まで。
以下のプログラムを実行すると0となる。
number++;
アンダーフロー
number--;
を実行すると255(11111111)となる。
OpenZeppelinライブラリを使う
OpenZeppelinライブラリとは
OpenZeppelinには多くの機能が実装されておりインポートするだけで安全に機能を使うことができます。
柔軟な役割ベースの許可スキーム。
カスタム契約や複雑な分散型システムを構築するための再利用可能なSolidityコンポーネント。
ガス料金なしのシステムのためのガソリンスタンドネットワークとのファーストクラスの統合!
監査済リードするセキュリティ企業による(V2.0.0の最後の完全な監査)。
SafeMath.solライブラリの使用
openzeppelin-solidity/contracts/math/SafeMath.sol
例えばSafeMathライブラリで、using SafeMath for uint256のシンタックスを使うとしよう。
SafeMathライブラリはadd、sub、mulさらにdivの4つの関数を持つ。
そして以下のように、uint256からこれらの関数にアクセス可能。
uint256 a = 5;
uint256 b = a.add(3); // 5 + 3 = 8
uint256 c = a.mul(2); // 5 * 2 = 10
SafeMath.solライブラリの使用宣言
using SafeMath for uint256;
//処理
prev
-
クリプトゾンビLesson 5 capture 8 ERC721 takeOwnership
Lesson 5 capture 8 ERC721 takeOwnership takeOwnershipは、msg.senderがそのトークン/ゾンビを受け取ることを承認されているか確認し、承認され ...
next
-
クリプトゾンビLesson 5 capture 10 SafeMathパート2
Lesson 5 capture 10 SafeMathパート2 SafeMathライブラリのコード openzeppelin-solidity/contracts/math/SafeMath.sol ...