前回作成したスマートコントラクトを使ってオーバーフローの動作確認を行います。
アカウンとの役割
今回の動作確認では、アカウントの役割は重要ではないのですが、一応次のようにしておきます。
- MAIN ACCOUNT (eth.accounts[0])
コントラクト生成者。マイナー
デプロイ
まずはデプロイを行います。デプロイアカウントはMAIN ACCOUNTです。
デプロイするのはMarket Place Overflowです。
[デプロイ]
デプロイ後のコントラクトの状態を確認します。
[コントラクト状態]
在庫数(Stock quantity)が100であることが確認できます。
在庫の追加
Add Stcok関数を使って、在庫数を156増やしてみます。
[在庫数を追加]
追加後の在庫数を確認します。
[在庫数を確認]
100 + 156 = 256 になるはずですが、0になってしまいました。
下記のイベント確認すると、在庫追加の引数としては問題なく156が渡されたことが分かります。
[イベントの確認]
ではなぜ在庫数が256にならずに0になってしまったのでしょうか。
計算が合わない理由
原因は在庫数(stockQuntity)がunit8で宣言されているためです。
uint8では8ビットの符号なし整数を表します。範囲としては0~255となります。
256になるとオーバーフローが発生し、0となってしまったのです。
次回はこの問題を解消するための対策を行います。