ホームページ > テクノロジー周辺機器 > IT業界 > OpenzePpelinと友人がいる高品質の堅実さコード

OpenzePpelinと友人がいる高品質の堅実さコード

William Shakespeare
リリース: 2025-02-16 11:20:10
オリジナル
307 人が閲覧しました

openzeppelin:イーサリアムスマートコントラクトのセキュリティを確保するための強力なツール

Quality Solidity Code with OpenZeppelin and Friends

コアポイント

  • OpenzePpelinは、イーサリアム開発者に、業界標準となり、トリュフを介して簡単に展開できる安全で信頼性の高い堅牢性コードパターンとスマートコントラクトモジュールを含む貴重なツールセットを提供します。
  • OpenzePpelinライブラリには、ERC20、ERC721、ERC827トークンなど、Ethereumプラットフォームでトークンを公開するためのさまざまな契約が含まれています。また、記録的な購入、トークンの配達、ETHファンドの転送など、さまざまな機能を備えた、最初のトークン製品(ICO)のクラウドファンディング契約のセットも提供しています。
  • Zeppelinosは、安全なスマートコントラクトアプリケーションを開発および管理するための分散型ツールおよびサービスプラットフォームです。開発者がアップグレードモードを介して展開コードの変動性を選択できるようにすることを約束し、したがって、イーサリアムに展開されたスマートコントラクトに固有の不変性に対処します。
  • トリュフフレームワークは、開発環境、テストフレームワーク、およびイーサリアムの資産パイプラインです。これには、トリュフボックス、つまり、フロントエンドのJavaScriptコード、堅牢性契約、およびワークフローユーティリティを含むボイラープレートが含まれています。トークンマーケットとコンセンシーは、トークンの販売を管理し、イーサリアムスマートコントラクトのベストプラクティスを提供するためのよく知られたツールです。
したがって、イーサリアム仮想マシン(EVM)のセキュリティ、つまり、イーサリアムブロックチェーンに展開されたスマートコントラクトのセキュリティが重要です。すべてのエラーは、コミュニティの分割につながり、古典的なイーサリアムブロックチェーンを産むような契約の脆弱性を悪用するハッカーによって引き起こされる悪い契約コードまたは損失によって引き起こされる可能性があります。

チューリングの完全性とその他のデザインの決定により、イーサリアムはより強力で複雑になりますが、代価も支払います。イーサリアムの豊かさにより、エラーやハッキングに対してより脆弱になります。

さらに悪いことに、Ethereumに展開されたスマートコントラクトを変更できないことです。ブロックチェーンは不変のデータ構造です。

この記事では、安全なスマートコントラクトの作成に役立つスマートコントラクトのセキュリティとツールとライブラリのエコシステムを調査します。

Solidity環境が提供するベストプラクティスを利用するためにすぐに使用できる素晴らしいツールのアップグレードを見てみましょう。

aids

イーサリアム開発者にとって最もクールなツールの1つは、OpenzePpelinライブラリです。これは、多くの安全で信頼性の高い堅牢性コードパターンとスマートコントラクトモジュールを含むフレームワークです。著者自身は、堅牢性監査員とコンサルタントであり、これらのモジュールに関するサードパーティの監査レポートを読むことができます。アルゼンチンを拠点とする会社であるツェッペリンソリューションのマヌエルアラオスは、主な堅実さの安全パターンと考慮事項の概要を説明しています。

Openzeppelinは、トリュフで簡単に展開された再利用可能で安全なオープンソース(MIT)ソリディティコードの業界標準になりました。これは、NPM経由でインストールされた契約で簡単にインポートおよび使用できるスマートコントラクトで構成されています。

Quality Solidity Code with OpenZeppelin and Friends

トリュフフレームワークは、トリュフとガナッシュでOpenzeppelinを使用する方法に関するチュートリアルを公開しています。

これらの契約は輸入することを目的としており、その方法は必要に応じてカバーすることも目的としています。ファイル自体を変更しないでください。

ICOモード

OpenzePpelinライブラリには、Ethereumプラットフォームでトークンを公開するための一連の契約が含まれています - Basictoken Contracts、BurnableTokens、CappedTokens(固定キャップ付きのミント可能なトークン)、MintableTokens、PausableTokens(トークンの変容率)を含むERC20トークン。トークンベストング(崖の期間や権利確定期間など、典型的な権利確定計画のようにトークンバランスを徐々にリリースできる契約)もあります。

ERC721トークンの契約もいくつかあります(または、タイプの暗号化のかけがえのないユニークなトークン)。

ERC827トークン契約も含まれています。これは、トークンを取引するときにデータを送信するために使用されます。

クラウドファンディング契約もいくつかあります - 最初のトークン製品の契約。これらの契約は、購入を記録し、バイヤーにトークンを配信/発行し、ETHファンドを転送できます。トークンの購入を検証および処理するための機能もいくつかあります。

finalizablecrowdsale契約により、販売後に特定のロジックを実行できます。 DeliverycrowdSale後の販売は、クラウドファンディングが終了するまで撤退を凍結することができます。 RefundableCrowdSaleは、資金調達目標を追加するクラウドセール契約の延長と、ターゲットが満たされない場合にユーザーが払い戻しを受ける可能性を拡大します。

破壊可能な契約は所有者によって破壊され、すべての資金が所有者に送られます。また、下請けの一時性を達成するために使用されるいくつかの契約もあります。

OpenzePpelinは、ICOの多くのAIDSとユーティリティを提供します。これは、ETHの代わりにICOアドレスに送信されたERC20トークンを回復できる契約です。継承可能な契約により、特定の状況で他の所有者に所有権を譲渡できます。所有可能な契約には所有者の住所があり、基本的な承認/承認と所有権の譲渡を提供します。

RBAC契約は、ロールベースのアクセス制御ユーティリティを提供します。異なるアドレスに異なる役割を割り当てることができ、役割の数に制限はありません。

Zeppelinは、監査されていないクラウドファンディングスタートアップトリュフプロジェクトの例を提供しているため、OpenzePpelinを使用するためのプライマーとして使用することをお勧めします。クラウドファンディングとトークンをすばやく開始できます。

zeppelinos

Quality Solidity Code with OpenZeppelin and Friends

Zeppelinosは、SMART Contractアプリケーションを安全に開発および管理するために、EVM上に構築されたオープンソース、分散型ツール、およびサービスプラットフォームです。

実際、これはEVMの上のミドルウェア層であり、現在のOpenzePpelinフレームワークよりもさらに一歩進んでいます。ここでのZeppelinソリューションは、開発者がアップグレードモードを介して展開コードの変動性を選択できるようにすることを約束します。 EVMのスマート契約を書く人は、1つの問題/制限が展開された契約の不変性であることを知っています。ブロックチェーンに入ると、契約を変更できません。それが、ツェッペリノスの約束がとても魅力的である理由の1つです。

これまでのところ、契約を「更新」するために、2つの契約を展開する必要があります。1つはインターフェイスを備えたプロキシとして、もう1つは実装として。プロキシの関数が呼び出され、リクエストは実装に転送されます。次に、変更が必要な場合は、プロキシの実装を切り替え(別の実装を再配置し、自殺機能を使用して元の実装をオフにするオプションを持つ)、新しい実装がシームレスにアクティブになります。

コミュニティによるZeppelinosの将来の採用を楽しみにしています。 Zeppelin Solutionsは、OpenBazaar、District0X、Storj.ioなどの非自明な参加者に言及しており、Zeppelinosを使用しています。

Quality Solidity Code with OpenZeppelin and Friends

トリュフボックス

トリュフフレームワークは、開発環境、テストフレームワーク、およびイーサリアムの資産パイプラインです。これは、最も完全なツールセットであり、イーサリアム開発者の間で最も広く使用されているツールセットです。トリュフの生態系には、フロントエンドのJavaScriptコード、堅牢性契約、および移動、テスト、ビルディングパイプラインなどのツールセットを備えたボイラープレートWebパックプロジェクトなどのワークフローユーティリティを含むボイラーなど、多くのトリュフボックスが含まれています。トリュフボックスには、完全なスターターDappを含めることができます。

正式にサポートされているボックスには、次のものが含まれます

    DRIZZLE:DAPPフロントエンドの作成を簡単にするためのReact/Reduxベースのフロントエンドライブラリのセット。
  • React Box:React Front-Endアプリケーションから始まるスマートコントラクトと対話するための簡単なアプリケーション。
  • React Auth Box:スマートコントラクトでサポートされている認証に必要なコンポーネントのセットを提供します。
  • React-Uport:この認証ボックスは、フロントエンドをUportブロックチェーン認証システムに接続します。
  • 上記のWebpackプロジェクトテンプレートボックスもあります。
  • また、コミュニティが作成したボックスは、モバイルアプリケーション/ステータスIM統合契約にもボイラープレートをもたらすか、AngularおよびVue.JSボイラープレートなどを提供します。

これらのボックスはトリュフと統合されているため、トリュフアンボックスの反応などのコマンドを実行することで開始できます。

tokenmarket TokenMarketは、トークンの販売/ICOを管理するためのソリッド契約とツールをリリースした別の会社です。ジブラルタルに登録され、ICOコンサルティングビジネスに従事する有限会社です。 2018 Crypto World of Berlinで「ベストICOコンサルタント」賞を受賞しました。

GithubのTokenmarketのICOリポジトリは、設計目標/原則の1つは、既存のOpenzeppelin契約を使用または構築することであり、堅牢性契約のゴールドスタンダードと呼んでいると述べています。したがって、TokenmarketのICOコードベースのほとんどは、OpenzePpelinのコードベースに基づいており、さらに(オブジェクト指向の方法で継承することで)さらに構築します。

トークンマーケットは定期的に(試行)、アップストリームコードベースOpenzePpelinと同期し続けます。ただし、以下などのコンテンツも追加されます

amltoken契約:これにより、長いAMLプロセスの後に参加者が合格しなかった場合、トークンがリリースされる前に、参加者からトークンを回復する機会が所有者に与えられます。
  • GNOSISウォレット:基本的に、それはマルチ署名ウォレットであり、複数の参加者が特定のトランザクションでコンセンサスに達する必要があります。
  • トークン契約の集中発行。
  • Kyccrowdsale:非匿名の投資家のみが参加を許可されている契約。
  • クラウドファンディング契約の再起動:これにより、以前のクラウドファンディングが回復し、特定のパラメーターの変更が可能になります。
  • マイルストーン価格設定:この契約は、マイルストーンベースの価格設定とICOの取引を提供します。
  • EVMは完全に完全に複雑であるため、これらの異なる契約はすべて、ここで説明しているリポジトリの多くのコードにもかかわらず、完全な機能をリモートで排出することさえできません。システム(Ethereum)が生き残り、競争力を持ち続け、ネットワーク上に十分な人がいる場合、これらのブロックチェーン契約が解決しようとしている問題のより大きな汎用性を期待できます。
コンセンシー

Consensys Venturesは、特にイーサリアムスペースの分散型空間でベンチャーキャピタル企業としての地位を占めるスイスのベンチャーキャピタル会社です。彼らが保護された企業に提供する他のリソースに加えて、彼らはイーサリアムスマートコントラクトのベストプラクティスの簡単な編集をまとめました。これは厳密にはコードではありませんが、堅牢性コードの長所と短所の多くの例が含まれています。

Solidity Smart Contractsの最良のセキュリティ慣行に焦点を当てています。

トピックの完全なリストは、この記事の範囲を超えています。リソースは非常に包括的であり、EVMのソフトウェアを作成する際にスマートコントラクト開発者が留意するための読み取りリマインダーでさえあります。これは、誰かがプログラムをゼロから書いている場合に特に当てはまります(OpenzePpelinのような既製で実績のあるコードに依存していません)。

一部の記事には、外部通話、外部通話後の状態の変更、外部呼び出しのエラーの処理、外部通話をプッシュするのではなく引っ張りの優先順位付け、抽象的な契約とインターフェイス間のトレードオフの理解、および契約がゼロで使用されると仮定しないことが含まれます。バランスの作成、機能とイベントを区別し、複数の継承に関する考慮事項、そのような構造のタイムスタンプの依存性とプレイ可能性に関する警告(たとえば、ブロックを使用する)、および多くのコードの例を使用して、その他の多くのトリック。

次に、トークン固有の警告、トークン標準に関連する警告、ソフトウェアエンジニアリング手法、セキュリティツール - 静的分析、テスト、コードチェッカーなど。

また、外部コードと契約を呼び出す攻撃、この場合は繰り返し呼ばれる機能、再入国の問題、責任を超えた人種条件を含む、既知の攻撃をリストしました。 DAOハッキング事件で。

彼らはさらに、トランザクションの依存関係、タイムスタンプの依存関係、整数のオーバーフローとアンダーフロー、ブロックガス制限DOSを使用するなど、さまざまなタイプのDOS攻撃の可能性/ポイントに言及し、契約にも強制的に分析しました非推奨攻撃。必ず彼らのドキュメントを読んでください。

結論

このエコシステムの紹介では、生産に使用できるイーサリアム仮想マシンによく書かれたスマートコントラクトのために利用可能なリソースのいくつかを紹介します。これには、監査および検証済みのコードの再利用(Openzeppelinは、契約で40億ドル以上の暗号通貨が実行されると主張しています)と、独自の安全な生産対応ソフトウェアを書くことを学ぶことが含まれます。

このリストが完全ではないと確信しています。言及する価値のあるものを見逃しましたか?教えてください!

SolidityとOpenzeppelin

についてのよくある質問

堅牢性におけるopenzeppelinの主な使用は何ですか?

OpenzePpelinは、安全なスマートコントラクト開発のライブラリです。 ERC20やERC721などの標準の実装を提供します。これをそのまま展開したり、ニーズに合わせたり、カスタム契約やより複雑な分散型システムを構築するための堅牢性コンポーネントを拡大したりできます。 OpenzePpelinは、テストされたコミュニティ監査コードを提供することにより、ブロックチェーンプロジェクトを一般的な脅威から保護するのに役立ちます。

OpenzePpelinはどのようにしてスマート契約のセキュリティを保証しますか?

OpenzePpelinは、テスト済み、再利用可能な、安全なコードベースを提供することにより、スマートコントラクトのセキュリティを保証します。 Openzeppelin契約ライブラリは、Ethereum Smart Contractsの開発において最も広く使用されているソリューションです。これは、開発者が再利用できる安全で信頼できるコードリソースとして設計されているため、単一のスマートコントラクトの潜在的な脆弱性の範囲を削減することができます。

openzeppelinを使用してスマートコントラクトをアップグレードする方法は?

OpenzePpelinは、スマートコントラクトをアップグレードするために使用できるアップグレードプラグインを提供します。これらのプラグインは、長期にわたってスマートコントラクトをアップグレードして新しい機能を追加したり、バグを修正するための簡単で安全な方法を提供します。これらのプラグインは、トリュフとハードハット開発環境で動作するように設計されています。

Openzeppelinにおけるトリュフの役割は何ですか?

トリュフは、イーサリアムの開発環境、テストフレームワーク、資産パイプラインです。 Smart Contractsにテスト環境を提供することにより、Openzeppelinで重要な役割を果たします。 Truffleの一連のツールは、開発者が統一された環境でスマートコントラクトを作成、コンパイル、展開、テストするのに役立ちます。

トリュフでopenzeppelinを使用する方法は?

トリュフ付きOpenzePpelinを使用するには、プロジェクトに両方をインストールする必要があります。インストールが完了したら、OpenzePpelin契約を独自の契約にインポートし、ニーズに応じて拡張できます。トリュフは、契約をコンパイルして展開するために使用されます。

私のSolidityプロジェクトにOpenzePpelinを使用することの利点は何ですか?

Openzeppelinは、Solidityプロジェクトの安定性とセキュリティの基礎を提供します。一般的な脅威からプロジェクトを保護するのに役立つ、テストされた、再利用可能で安全なコードベースを提供します。また、スマートコントラクトをアップグレードするためのツールを提供し、新しい機能を追加したり、時間の経過とともにバグを修正することができます。

openzeppelinコミュニティに貢献する方法は?

Openzeppelinコミュニティは、開発者の貢献を歓迎します。バグを報告したり、新機能を提案したり、コードを書いたりすることで貢献できます。すべての貢献はコミュニティによって監査され、Openzeppelinのセキュリティと機能の向上に役立ちます。

Ethereum以外の他のブロックチェーンプロジェクトにOpenzePpelinを使用できますか?

Openzeppelinは主にイーサリアムで使用するために設計されていますが、その原則とライブラリの多くは他のブロックチェーンプロジェクトに適用できます。ただし、特定の実装の詳細は、使用しているブロックチェーンプラットフォームによって異なる場合があります。

OpenzePpelinはERC20およびERC721標準をどのように処理しますか?

OpenzePpelinは、ニーズに合わせて展開できるERC20およびERC721標準の実装を提供します。これらの実装は安全で信頼性が高く、テストされ、コミュニティ監査が行われます。

Solidityによって開発されたOpenzeppelinの代替案は何ですか?

OpenzeppelinはSolidity Developmentに人気のある選択肢ですが、利用可能な他のライブラリとフレームワークがあります。これらには、トリュフ、ハードハット、およびether.jsが含まれます。それぞれに独自の長所と短所があり、最良の選択はあなたの特定のニーズと好みに依存します。

以上がOpenzePpelinと友人がいる高品質の堅実さコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート