2016年に実施されたHongcoin(HONG)のICOで、スマートコントラクト内に長期間凍結されていた1003ETHが復旧し、投資家への返金手続きが再開した。プロジェクト頓挫後にアクセス不能となっていた資金が、技術的な検証を通じて返還に向かった格好だ。
Cointelegraphが6月1日(現地時間)に報じたところによると、匿名のホワイトハッカー「0xflorent」がHongcoin開発陣と連携し、約1003ETHを復旧した。現在の価格ベースでは約200万ドル(約3億円)に相当する。
復旧した資金は、2016年のHongcoin ICOに参加した48人の投資家が拠出したもの。Hongcoinは当時、コミュニティ主導のベンチャーキャピタル型分散型プロジェクトを掲げて資金を募ったが、最低調達目標に届かず、サービス立ち上げにも失敗した。このため、当初は投資家への返金が予定されていた。
ただ、問題はスマートコントラクトの設計にあった。契約は、目標額に達しなかった場合に投資家へ自動でEthereumを返還する仕様だったが、返金機能のバグによって処理が正常に動作せず、資金はコントラクト内にロックされたままとなっていた。
0xflorentはX(旧Twitter)への投稿で、「コントラクトは投資家のEthereumを保管し、自動返金するよう設計されていたが、返金関数のバグで機能が壊れ、資金がロックされた」と説明した。
復旧の手掛かりになったのは、管理者権限に関わる機能に残っていた脆弱性だ。0xflorentは開発陣に回収手法を提示し、特定の管理者機能を使ってトークン保有者の残高を再設定したうえで、返金メカニズムを再び有効にする方法で問題を解消したという。
同氏は、「突破口は整数オーバーフローの脆弱性を含む管理者機能だった」と説明する。「特定の入力値でその機能を実行するとトークン保有量が初期化され、その後の返金チェックを正常に通過できるようになった」としている。
オンチェーン上でも返金の動きは確認できる。Ethereumのブロックエクスプローラー「Etherscan」によると、ある投資家はすでに96ETHを受け取り、別の投資家にも0.5ETHが返還された。ただ、記事執筆時点で48人全員への返金が完了したかどうかは確認できていない。
HongcoinのICOは2016年8月29日から同年10月28日まで実施された。投資家は段階に応じて計2億5000万枚のHONGトークンを受け取る仕組みだったが、プロジェクトは最低募集目標を達成できず、出資金は返金対象となっていた。
一方で、スマートコントラクトの不具合により、投資資金は約10年にわたって回収不能の状態が続いていた。今回の事例は、ICO黎明期に作られたスマートコントラクトに残るリスクを改めて示した形だ。プロジェクト終了後も、管理者権限の構造や返金条件、トークン処理の仕組みがコード上に残るため、設計ミスがあれば資金が長期にわたって凍結される可能性がある。
0xflorentは最近も類似案件に関わっていた。5月には、失敗した2018年のICOプロジェクトと、クロスチェーン転送プロトコルの不具合によって資金がロックされていたRequalitiウォレットの事例で、計19.33ETHを回収したと公表している。
今回のHongcoinは、その規模の大きさも注目される。1000ETHを超える資金が長期にわたってロックされていたことで、初期のEthereumエコシステムに残る「忘れられたスマートコントラクト資産」の問題が改めて浮き彫りになった。
ブロックチェーンに記録された資産は原則として永続的に保存される一方、コードに欠陥があればアクセス自体が不可能になることもある。今回のケースは、スマートコントラクトのセキュリティ監査と検証手続きの重要性を改めて示した事例といえそうだ。