著者: フランク、フォーサイトニュース
著者: フランク、フォーサイトニュース
昨夜以来、Vyper の個々のバージョンのリエントリー ロックの失敗により、alETH/msETH/pETH などの Curve の安定したプールがハッキングされ、暗号化の世界に一連の DeFi 二次災害と衝撃を引き起こしました。今日も真ん中で発酵中。
これは、スマートコントラクトの言語層のバグを直接標的とした、DeFiの世界では珍しい事件でもあります。しかし、暗号化の世界では新聞などでよく見かけるSolidity言語と比べると、実はVyperの知名度はそれほど高くありません。
では、Vyper とはいったい何なのか、DeFi の世界でどのような役割を果たしているのか、そしてなぜそのバグが業界の注目を集めているのでしょうか?この記事では、Foresight News が現在進行中の Vyper 言語を理解するためのガイドを提供します。
Vyper: 2 番目に人気のあるスマート コントラクト プログラミング言語
2017 年に Vyper が作成されるまで、開発者がスマート コントラクトを作成するために使用する最も一般的な言語は Solidity でした。 Vyper は、Solidity と同様に、イーサリアム仮想マシン (EVM) のバイト コードにコンパイルして EVM 上で実行できるスマート コントラクト指向のプログラミング言語です。
その結果、採用率の観点から見ると、現在の Vyper は Solidity に次ぐ「EVM 互換のスマート コントラクト プログラミング言語としては 2 番目に大きい言語」でもあります。攻撃前の DeFiLlama の最新統計によれば、次のとおりです。
現在のDeFi開発パターン(TVL割合の次元)では、Solidityが市場シェア94.71%で絶対的な独占的地位を占め、Vyperが市場シェア3.04%で2位にランクされています。
現在のDeFi開発パターン(TVL割合の次元)では、Solidityが市場シェア94.71%で絶対的な独占的地位を占め、Vyperが市場シェア3.04%で2位にランクされています。
3位からスタートしたRust(0.9%)、Cairo(0.53%)、Haskell(0.26%)は崖から転落した。
Python ベースの機能に加えて、Vyper はオブジェクト指向パターン、インライン アセンブリを使用せず、コードの再利用、修飾子、継承、関数のオーバーロード、再帰呼び出し、無限長ループ、およびバイナリ固定長浮動小数点をサポートしません。 。
さらに、セキュリティ、可読性、監査可能性、ガス効率に関して最適化されています。
セキュリティ: Vyper での安全なスマート コントラクトの構築をサポートします。
可読性: Vyper のスマート コントラクト言語とコンパイラーの実装は、特に Vyper の使用経験がなく、一般にプログラミング経験のないユーザーにとって、コードの可読性を向上させるためにシンプルになるように努めています。
監査可能性: Vyper コードは可能な限り読みやすく、そのシンプルなアーキテクチャによりソフトウェア エラーが減少し、スマート コントラクトの監査可能性が向上します。
Vyper の創設者である John Max Skaller は、Vyper が構築された理由は 2 つあると述べています。「まず、私は Python が好きで、特にそのシンプルさが好きですが、スコープ決定性の欠如が好きではありません。進歩するにはすべてに多くの変更が必要です。そこで、Python との互換性を維持しながら、より高レベルのプログラミング言語を構築し、そこに関数型プログラミング言語の概念をいくつか組み込むことで、これらの問題を解決することにしました。
2 番目の理由はパフォーマンスです。私は interscript というメインの Python プログラムを持っていますが、これは Python の優れた構造の欠如とパフォーマンスの問題に悩まされているリテラシー プログラミング ツールです。」
一般に、Vyper の当初の設計意図は、セキュリティを確保するための可読性と監査可能性に重点を置き、スマート コントラクト参加者にとって理解しやすい透明なスマート コントラクトの簡素化されたプロセスを作成することです。
Vyperの長所と短所
本章で述べたVyperの長所と短所は主にSolidity言語との比較であり、結局のところ、前述の市場シェアの観点から見ると、他のスマートコントラクト言語はまだ大きな風潮を形成していない。
まず、Solidity に対する Vyper の最大の利点の 1 つは、その Python ベースの性質です。そのため、Vyper は Solidity ほど強力でも人気でもありませんが、Python に精通した開発者にとって理想的な言語の選択です。
同時に、Vyper コンパイラは、ローカル変数をスタックではなくメモリに保存することも選択します。これにより、コントラクトがよりシンプルかつ効率的になり、他の高級言語でよくある「スタックが深すぎる」問題が解決されます。
Vyper は、Solidity と Yul のほぼすべての機能を Vyper でも実装できるようにするために、さらに多くの組み込み関数も提供します。開発者は、組み込み関数を通じて低レベルのビット操作、外部呼び出し、プロキシ コントラクト操作にアクセスでき、コンパイル時にオーバーレイ ファイルを提供することでカスタム ストレージ レイアウトを実装できます。
Solidity と比較した Vyper の欠点も明らかです。主な理由は、Vyper が Solidity に比べて比較的新しい言語であるため、矢面に立たされるのは当然、開発者のメンテナンスとコミュニティ ツールの欠点です。
Vyper には、これまでのところ Solidity が持つ広範なコミュニティ サポートがまだありません。Solidity には、安全なスマート コントラクト開発のためのオープン ソース ライブラリを提供する OpenZeppelin や、Hardhat が提供する Remix オンライン IDE やローカル開発者環境などの IDE など、利用可能な優れた開発ツールが多数あります。 DAppsを簡単に開発できるツールや機能を提供します。
この記事の執筆時点で、GitHub データによると、Solidity には 568 人の寄稿者がいるのに対し、Vyper には 189 人が参加しており、その差は 3 倍です。
Vyper には豊富な開発ツール スイートはありませんが、より緊密に統合されたツールがあり、EVM や Vyper に関連する多くの組み込みツールを備えた Titanaboa インタープリタなどの Solidity 開発ツールにプラグインすることもできます。実験と開発に使用される; Dasy、コンパイル時にコードを実行する Vyper ベースの Lisp。
さらに、技術的な詳細の観点から見ると、Vyper には修飾子、クラス継承、再帰呼び出しが欠けており、プログラミング言語はチューリングとしては完全ではありません。
もちろん、これらのほとんどは、契約をより安全にして監査しやすくするために、セキュリティと監査可能性を向上させることを目的として、Vyper が意図的に提供する機能を減らしていますが、これには開発者がこれらの制限を回避する必要もあります。つまり、Vyper は、人材的に有利ではないため、開発効率は低くなってしまいます。
Vyperの影響力はどこから来るのでしょうか?
現時点では、Vyper の障害は 0.2.15、0.2.16、0.3.0 などのいくつかの特定のバージョンにのみ関係しており、上記のことから、Vyper によって書かれた主要な DeFi プロジェクトのボリュームは大きくないことがわかります。 TVL 市場シェアは 5% 未満です。
では、なぜVyperの失敗はこれほど大きな影響を与えたのでしょうか?
つまり、主流の DeFi プロトコルの中では、開発に Vyper 言語を積極的に使用しているプロジェクトはそれほど多くありません。今回の問題は、Vyper のいくつかの特定のバージョンですが、Vyper に基づいて開発された主要な DeFi プロジェクトがあります。
そうです、Curve です。主な理由は、前述の Gas 最適化機能に関連しているようです。Curve コントラクトはより複雑であるため、Vyper はこれらの複雑さを管理しやすくし、Gas をさらに節約します (他のよく知られた Vyper ベースの開発があります) Uniswap v1 バージョン、最初の ETH 2.0 入金契約など、少数のプロジェクトにすぎません)。
ただし、Vyperの新しいバージョンではこの脆弱性は修正されていますが、影響を受けるCurve安定プール契約はアップグレードできないため、展開およびアップグレードができず、対応する契約を破棄して資金を引き出すことしか選択できません。
まとめ
まとめ
一般に、このセキュリティインシデントについて誰もが依然として懸念を抱いている理由は、主に、スマートコントラクトの言語層のバグのリスクが、DeFiプロトコル自体やスマートコントラクトのロジックの範囲をはるかに超えているためです。
想像してみてください。今回、VyperだけでなくSolidityさえも同じ問題を抱えた場合、チェーン上のすべてのDeFiプロトコルから逃れるのは困難になる可能性があり、私たちは実際に「DeFiはもう存在しない」というリスクにさえ直面することになります。
