ピヨピヨ日記

毎日ピヨピヨしています

ERC20トークンの脆弱性として報告された batchOverflow バグについてのめも

なんだか batchOverflow バグで ERC20 トークンの脆弱性がやばい!って騒ぎになっていたので、この問題を報告してた Medium の記事を読んでみて、そこに書かれているコードも読んでみました。

 

結論からいうと、今のところ ERC20 標準そのものの問題ではなくて、一部の ERC20 トークンを実現しているスマートコントラクトの実装に欠陥があった、という認識です。

 (なので ERC20 やばいんだ!と盲目的に騒ぐのはキケンだと思います)

 

まとめ

  • すべての ERC20 トークンで起きる問題ではない(重要)。
  • ERC20 標準そのものに欠陥があるわけではない。
  • ということで、ERC20 というより、個別のスマートコントラクトの実装の問題、といったほうが適切(だと思う)。
  • 具体的には、いくつかの ERC20 トークン(のスマートコントラクト)で実装されている batchTransfer メソッドに脆弱性がある。
  • 非常に単純な整数のオーバーフローが原因。
  • Medium の記事でも指摘されているけど、 問題のあるトークンが Exchange で取引可能で、BTC とか ETH の価格操作に利用されてしまう可能性があるのが真の問題。
  • たぶん、SafeMath を使えば、普通に assert されて起きないはず。

 

以下、この問題の報告者の Medium  に掲載されていたコードを読みながらコメントをつけてみました。

 

batchOverflow with comments in Japanese

 

他の箇所ではちゃんと SafeMath つかっているっぽいのに、なんで amount の計算だけ生で積算してるんだろう??

 

良い子のみんなは素直に SafeMath つかおう!

 

それにしてもブロックチェーンやらスマートコントラクトの社会実験しちゃっている感はやっぱり面白いなあ。

 

Reference

KickStartrer の Ethereum 版をつくりたい、とか

すでにあるかもしれないけど、KickStartrer の Ethereum 版をつくりたい。スマートコントラクトの使いどころは、集まった資金(Ether)の使い途についてBackerが投票を行い、進捗状況によっては返金ができる仕組みを作れるところ。クラウドファンディングの課題である資金の持ち逃げを防ぐことができる。DAO 的ではあるけど、資金の集め方は通常のクラウドファンディングなので、ICO関連の規制から外れる?

 

今日は温泉最終日だった。温泉でゆっくりするのはなかなかよかった。生活習慣の改善としてもとてもいい。

 

ちょっとネガティブなことを以下に。

 

今日行ったところ、温泉自体はとてもよかったけど、某東アジア系の観光客が多すぎて、うるさいしマナー悪いしでつらかった。日本が相対的に安い国になってしまうことで、外から一気に人が流入して僕が好きな日本が壊されてしまわないか最近本気で心配してる。僕が彼らの国に行くときは彼らの文化や風習に合わせるので、こちらにくるときはこちらに合わせてほしいなあ。こういった意見でもレイシストとして捉えられてしまうのだろうか。

 

もちろん賑やかな温泉旅館があってもいいんだけど、今回の経験で僕が温泉旅館に期待していることは、静かに過ごせる非日常の空間だということがわかった。たぶん、旅館側がその辺配慮をしてくれれば、注意等でもう少しどうにかなるのかな?とはいえ、温泉のなかまでみることはできないし、注意書きがたくさんあっても過ごしづらいからなあ。

 

何か賢い問題解決の方法を考えたい。(今のところ会員制か差別的な手段しか思いついていない。。)