PeckShield チームによって発見された batchOverflow バグ の修正です。
元のコントラクトは、送信者が合計金額(入力値 × アドレス数)を支払うのに十分な whatever を持っているかどうかのチェックのみを行っていました。オーバーフローが発生した場合、この金額はゼロになる可能性があり、line 12 のテストを通過させることができます。

1つの可能な修正は、送信者の残高から金額を差し引いたものが現在の残高よりも小さいかどうかをチェックする別のテストを追加することです。オーバーフローが発生した場合、残高は同じになり、無効なトランザクションになります。しかし、これでも問題は解決しません。攻撃者が例えば10 whatever のような少額の残高を持っている場合、攻撃者は _value を操作してオーバーフローさせ、現在保有している残高よりも小さい金額にすることができ、このゲートを通過できてしまいます。
より良い修正は、転送された合計金額がその _value 以上であるかどうかを単純にチェックすることです。オーバーフローが発生した場合、このテストは通過しません。攻撃者がこのゲートを通過するには、その魔法の数値 / 20 の最小値が必要であり、それでも非常に大きな金額であり、別のバグを悪用しない限りおそらく不可能です。
truffle がインストールされていることを確認し、プロジェクトのルートから truffle test コマンドを実行してください。次のような出力になるはずです。
