スマートコントラクト言語Solidityの新バージョンでは、どのような改善点がありますか?

著者: Adam Boudjemaa

編纂者:武漢大学Web3倶楽部投資研究部長 Huai氏

はじめに

この記事では、Solidity Githubリポジトリ、Solidityロードマップ、Twitterでのコミュニティ会話、アクティブなプルリクエスト、イシューなどの情報を幅広く分析した後、Solidityの未来がどこに向かっているのかを深く掘り下げます。

主要なスマートコントラクトプログラミング言語は、0.9.0と1.0.0のアップグレードでリリースされようとしており、いくつかの待望の機能強化が導入されます。

この記事の目的は、コミュニティの意見と進行中の議論に基づいて、Solidityの最新の開発と改善点を読者に紹介することです。 提供された関連情報は決定的なものではありませんが、技術的進歩の潜在的な方向性を明らかにしています。

1. require()とカスタムエラーの革命的な統合

現在のメソッド(0.8.x):

详解智能合约语言Solidity新版本有哪些改进?

0.9.0 または 1.0.0 で発生すると予想されます。

详解智能合约语言Solidity新版本有哪些改进?

多数のif条件を使用して文字列情報やカスタムエラーでエラーをスローするのではなく、require()とカスタムエラーを組み合わせて使用すると、プログラムがより明確になり、ガスを節約できます。

2. 内部表現(IR)の最適化:リリース効率

Solidityの内部表現(IR)プロセスは、スマートコントラクトのソースコードをETH仮想マシン(EVM)の実行可能な命令に変換する上で重要な役割を果たします。

内部表現は、複雑なコードを合理化および標準化し、コードを機械語に変換するプロセスをより効率的にします。 Solidityの0.9.0への今後の改善は、このコンパイルプロセスをより速く、より効率的にし、最終的にコストを削減し、開発者の生産性を向上させるように設計されています。

3. エラー処理の強化: コードの明確化と簡素化

今後のアップデートにより、Solidityのエラー処理が強化され、エラーメッセージがよりわかりやすくなり、デバッグが容易になることが期待されます。

この機能強化は、複雑なコントラクトを扱う開発者にとって特に便利で、時間を節約し、潜在的なエラーを最小限に抑えることができます。

4. 固定小数点演算:高精度・高性能

[翻訳者注:固定小数点数は、浮動小数点数に対応する10進数を表すためにコンピューターによって使用されるデータ型であり、その整数桁と小数点以下の桁数は固定値であるため、浮動小数点数よりも安全です。 現在のところ、Solidityには小数を表すデータ型が組み込まれておらず、開発者は元のデータに大きな数値を掛けて手動で小数点以下の桁数を確保したり、その後の操作で小数点問題に目を光らせたりすることが多く、かなり面倒です。 】

この段階では、ABDKMath64x64 や DSMath などの外部ライブラリは Solidity を使用して固定小数点数を実装します。

0.9.0 アップデートでは、ネイティブの固定小数点演算が統合され、外部ライブラリが不要になることが期待されています。 これにより、10進数の計算がはるかに単純化されます。

5. EVM Object Format (EOF): スマート・コントラクト・バイトコードの構築

Solidityの今後のEOFアップグレードは、スマートコントラクト用の構造化およびバージョン管理されたバイトコードを導入する準備をしています。

この改善により、将来のコントラクト更新の実装が容易になり、下位互換性が維持され、コンパイル段階でのより効率的な分析が可能になることが期待されます。

これにより、スマートコントラクト開発者の直接的なコーディング体験は変わりませんが、コンパイラの出力はよりガス効率が良くなります。

6. 一時ストレージ:アドホックで効率的なデータ処理

Solidityの新機能であるTransient Storageは、契約実行中にデータをブロックチェーンに永続的に記録することなく、一時的に保存する方法を提案しています。 このアプローチは、ガス消費の面でより効率的であると期待されています。

以下のコードのような一時ストレージは、Solidity 0.9.0 または Solidity 1.0.0 で見つかる可能性があります。

详解智能合约语言Solidity新版本有哪些改进?

7. ネイティブに統合された再入保護

バージョン 0.8.0 より前は、SafeMath ライブラリは、オーバーフローと下限オーバーフローの問題を回避するために、開発者が算術演算に使用する一般的なツールでした。 Solidity 0.8.0のリリースでは、これらのセキュリティチェックが言語に直接埋め込まれています。

同様に、Solidityバージョン0.9.0または1.0.0は、再入保護をネイティブに統合することが期待されています。 この機能は、再入攻撃を防ぐためのセキュリティ プロトコルの実装プロセスを簡素化するように設計されています。

次のように表示されます。

详解智能合约语言Solidity新版本有哪些改进?

8. リファクタリングされた継承とストレージのレイアウト

Solidity では、継承によって、既存のコントラクトのプロパティと機能を引き継ぐ新しいコントラクトが作成されます。 計画されている更新は、継承とストレージのレイアウトの線形化を改善し、それによってコントラクトアーキテクチャの予測可能性と編成を強化することを目的としています。 これにより、ストレージの使用効率が向上し、多重継承シナリオでの混乱を減らすことができます。

たとえば、ParentA と ParentB から継承するコントラクトの Child は、最適化されたストレージ レイアウトと連続可変ストレージを持つため、ストレージ操作のコストが削減されます。

9. コンパイルフラグと構成オプションの強化

Solidityの開発には、コンパイルフラグと構成設定の範囲の拡張が含まれており、開発者はコンパイルプロセスを高度に制御できます。 これらの機能強化により、ガスの最適化、セキュリティチェック、デバッグ機能をきめ細かく制御できる、よりカスタマイズされたコントラクト展開につながる可能性があります。

新しいコンパイルフラグを使用すると、開発者は特定の最適化またはセキュリティチェックを切り替えることができます。

たとえば、新しいコンパイル フラグ --enable-loop-optimization は、ループを最適化してガス効率を向上させることに焦点を当て、新しいコンパイル フラグ --strict-security-checks は、コンパイル中に厳しいセキュリティ分析を導入します

10. デバッグツールとエラーメッセージの改善

強化されたデバッグツールには、より詳細なエラーメッセージがあり、特に複雑な契約構造の場合、開発プロセスを大幅に簡素化できます。 エラー メッセージの改善は、開発者がコード内の問題をよりよく理解するのに役立ち、高度なデバッグ ツールは、開発者が問題をより効果的に見つけて修正するのに役立ちます。

11. 高度なデータ型と構造のサポート

Solidityに複雑なデータタイプと構造を導入することで、新しい契約設計と機能の可能性が生まれます。 これには、より複雑な数値型のサポート、拡張されたデータ構造、またはコントラクトで大規模なデータセットを処理するための改善された方法が含まれる場合があります。

Solidityは、効率的な検索のためにデータをソートされた方法で整理するTreeMapなどの新しいデータ構造を導入する可能性があります。 これは、投票システムなど、データを並べ替えたり並べ替えたりする必要がある契約で役立ちます。 [訳者注:赤と黒の木に似ている。 もう1つの進歩は、コントラクトで直接正確な数学演算を実行できる固定小数点数など、より複雑なタイプの数値をサポートすることです。

12. ジェネリックとテンプレートの紹介

Solidityのジェネリックとテンプレートは、より適応性と再利用可能なコードを可能にします。 たとえば、特定の資産タイプごとに関数を書き直すことなく、標準化された方法でさまざまなタイプの資産(ERC20トークン、NFTなど)を処理する汎用関数を作成できます。 これにより、1つの機能をさまざまなシナリオに適用できるため、受託設計と開発の効率が向上します。

详解智能合约语言Solidity新版本有哪些改进?

今後の展望:Solidity 1.0.0への道

Github、Twitter、Ethresearch、Redditなどのさまざまなプラットフォームで、0.9.0リリースの開発についてSolidityコミュニティ内で多くの議論が交わされています。

議論の焦点は、次のことを明らかにすることです。

Solidity 1.0.0への移行は、言語の完全な成熟を宣言するための単純明快で慎重なものなのか、それとも0.9.0のリリースからより高度なバージョンへと段階的に移行するものなのか?

コミュニティのフィードバックとクリエイティブなアイデアに影響され、Solidity 1.0.0のデビューは、エコシステム全体の成長と安定性を反映して、ETHワークショップのメジャーアップデートと同時期に行われる可能性があります。

1.型システムの進化:柔軟性とセキュリティの向上。 HaskellやScalaなどの関数型プログラミング言語から着想を得たアップグレード型のシステムが登場することが期待されています。 この進化は、受託開発の安全性と柔軟性を高めることを目的としています。

  1. 統合されたネイティブ・オラクル・サポート:外部データのやり取りを簡素化します。 計画には、分散型オラクルの組み込みサポートをSolidityに統合し、外部データソースとのより安全で直接的なやり取りを促進することが含まれます。

  2. 状態管理の改善: ブロックチェーンの相互作用を改善します。 ステート管理機能の強化が議論されており、ステートチャネルやサイドチェーンなどの要素は、ブロックチェーン上の相互作用を最適化し、ガス料金を削減するように設計された組み込み構造として導入される可能性があります。

  3. 受託設計へのモジュール式アプローチ:再利用性の向上 モジュール式コントラクトアーキテクチャへの移行が想定されており、交換可能なコンポーネントの使用が可能になっています。 これにより、開発プロセスが大幅に簡素化され、コードの操作性が向上します。

5.正式な検証ツールを統合し、契約の信頼性を確保します。 正式な検証ツールがSolidityに直接統合されることが期待されており、これは契約が特定の基準や動作に準拠していることを確認し、エラーや脆弱性の可能性を減らすことを目的とした動きです。

  1. クロスチェーン機能の構築:クロスブロックチェーンの相互運用性を実現します。 今後のアップデートでは、ネイティブのクロスチェーン互換性機能が導入され、Solidityコントラクトがさまざまなブロックチェーンプロトコルでスムーズに実行できるようになります。

7.高度なプライバシー対策を実装する:データセキュリティを強化します。 データセキュリティとユーザープライバシーを強化するために、ゼロ知識証明や準同型暗号化などの高度なプライバシーツールを言語に直接統合する計画が進行中です。

8.耐量子暗号:将来の課題に備える。 量子コンピューティング機能の出現を考えると、将来の潜在的な脅威からETHコントラクトを保護するために、耐量子暗号方式の実装が検討されています。

まとめ

この記事では、Solidityへの潜在的な道を探る際に、コミュニティの洞察と現在の開発をコミュニティの予測と組み合わせて、トピックを包括的に理解できるようにします。 バージョン0.9.0と1.0.0の可能性を掘り下げてきましたが、実際の軌跡と機能セットは、Solidityが開発の旅を続けるにつれて変更される可能性があります。 これらの会話や概念が、進化し続けるスマートコントラクトプログラミングの世界でどのように実現されるのか、ご期待ください。

原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • コメント
  • リポスト
  • 共有
コメント
0/400
コメントなし
  • ピン