無限の承認
無限承認とは何ですか?
無限の承認はスマート コントラクトのプログラミング手法であり、多くの場合問題があると考えられています。このプログラミング機能により、特定のスマート コントラクトは、実際に必要な数だけではなく、ユーザーのウォレット内の無制限の数のトークンに (ユーザーからの承認に基づいて) アクセスできるようになります。
このようにプログラムされたスマート コントラクトの悪名高い例は、分散型取引所 Bancor で採用されているものです。ユーザーが最初にシステムを使用したとき、ウォレットから無制限の数のトークンを引き出すためにスマート コントラクトの承認を与える必要がありました。
Bancor のスマート コントラクトには、ハッカーがこの脆弱性を悪用して、ユーザーがコントラクトの管理を許可したトークンのすべてのユニットを盗むことを可能にする脆弱性も含まれていました。幸いなことに、Bancor のプログラマーは、悪意のある攻撃者がトークンを盗む前にそれに気づき、その後、必要な数のトークンの承認のみを求めるようにシステムを変更しました。開発者は、ハッキングを避けるために、ユーザーの資金を先制して「盗み」、後で返却するようにしました。
Bancor をめぐる論争の後、分散型アプリケーション プログラマーの間では無限承認が非常に一般的な慣行であることが明らかになりました。暗号通貨ウォレット ZenGo の研究者が実施した調査では、人気のある分散型アプリケーションには無限または非常に大量の承認が行われることが明らかになりました。