openzeppelin:イーサリアムスマートコントラクトのセキュリティを確保するための強力なツール
コアポイント
チューリングの完全性とその他のデザインの決定により、イーサリアムはより強力で複雑になりますが、代価も支払います。イーサリアムの豊かさにより、エラーやハッキングに対してより脆弱になります。
さらに悪いことに、Ethereumに展開されたスマートコントラクトを変更できないことです。ブロックチェーンは不変のデータ構造です。
この記事では、安全なスマートコントラクトの作成に役立つスマートコントラクトのセキュリティとツールとライブラリのエコシステムを調査します。Solidity環境が提供するベストプラクティスを利用するためにすぐに使用できる素晴らしいツールのアップグレードを見てみましょう。
aids
イーサリアム開発者にとって最もクールなツールの1つは、OpenzePpelinライブラリです。これは、多くの安全で信頼性の高い堅牢性コードパターンとスマートコントラクトモジュールを含むフレームワークです。著者自身は、堅牢性監査員とコンサルタントであり、これらのモジュールに関するサードパーティの監査レポートを読むことができます。アルゼンチンを拠点とする会社であるツェッペリンソリューションのマヌエルアラオスは、主な堅実さの安全パターンと考慮事項の概要を説明しています。
Openzeppelinは、トリュフで簡単に展開された再利用可能で安全なオープンソース(MIT)ソリディティコードの業界標準になりました。これは、NPM経由でインストールされた契約で簡単にインポートおよび使用できるスマートコントラクトで構成されています。
トリュフフレームワークは、トリュフとガナッシュでOpenzeppelinを使用する方法に関するチュートリアルを公開しています。
これらの契約は輸入することを目的としており、その方法は必要に応じてカバーすることも目的としています。ファイル自体を変更しないでください。
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は、SMART Contractアプリケーションを安全に開発および管理するために、EVM上に構築されたオープンソース、分散型ツール、およびサービスプラットフォームです。
実際、これはEVMの上のミドルウェア層であり、現在のOpenzePpelinフレームワークよりもさらに一歩進んでいます。ここでのZeppelinソリューションは、開発者がアップグレードモードを介して展開コードの変動性を選択できるようにすることを約束します。 EVMのスマート契約を書く人は、1つの問題/制限が展開された契約の不変性であることを知っています。ブロックチェーンに入ると、契約を変更できません。それが、ツェッペリノスの約束がとても魅力的である理由の1つです。
これまでのところ、契約を「更新」するために、2つの契約を展開する必要があります。1つはインターフェイスを備えたプロキシとして、もう1つは実装として。プロキシの関数が呼び出され、リクエストは実装に転送されます。次に、変更が必要な場合は、プロキシの実装を切り替え(別の実装を再配置し、自殺機能を使用して元の実装をオフにするオプションを持つ)、新しい実装がシームレスにアクティブになります。
コミュニティによるZeppelinosの将来の採用を楽しみにしています。 Zeppelin Solutionsは、OpenBazaar、District0X、Storj.ioなどの非自明な参加者に言及しており、Zeppelinosを使用しています。
トリュフフレームワークは、開発環境、テストフレームワーク、およびイーサリアムの資産パイプラインです。これは、最も完全なツールセットであり、イーサリアム開発者の間で最も広く使用されているツールセットです。トリュフの生態系には、フロントエンドのJavaScriptコード、堅牢性契約、および移動、テスト、ビルディングパイプラインなどのツールセットを備えたボイラープレートWebパックプロジェクトなどのワークフローユーティリティを含むボイラーなど、多くのトリュフボックスが含まれています。トリュフボックスには、完全なスターターDappを含めることができます。
正式にサポートされているボックスには、次のものが含まれます
これらのボックスはトリュフと統合されているため、トリュフアンボックスの反応などのコマンドを実行することで開始できます。
tokenmarket TokenMarketは、トークンの販売/ICOを管理するためのソリッド契約とツールをリリースした別の会社です。ジブラルタルに登録され、ICOコンサルティングビジネスに従事する有限会社です。 2018 Crypto World of Berlinで「ベストICOコンサルタント」賞を受賞しました。
GithubのTokenmarketのICOリポジトリは、設計目標/原則の1つは、既存のOpenzeppelin契約を使用または構築することであり、堅牢性契約のゴールドスタンダードと呼んでいると述べています。したがって、TokenmarketのICOコードベースのほとんどは、OpenzePpelinのコードベースに基づいており、さらに(オブジェクト指向の方法で継承することで)さらに構築します。トークンマーケットは定期的に(試行)、アップストリームコードベースOpenzePpelinと同期し続けます。ただし、以下などのコンテンツも追加されます
amltoken契約:これにより、長いAMLプロセスの後に参加者が合格しなかった場合、トークンがリリースされる前に、参加者からトークンを回復する機会が所有者に与えられます。
Consensys Venturesは、特にイーサリアムスペースの分散型空間でベンチャーキャピタル企業としての地位を占めるスイスのベンチャーキャピタル会社です。彼らが保護された企業に提供する他のリソースに加えて、彼らはイーサリアムスマートコントラクトのベストプラクティスの簡単な編集をまとめました。これは厳密にはコードではありませんが、堅牢性コードの長所と短所の多くの例が含まれています。
トピックの完全なリストは、この記事の範囲を超えています。リソースは非常に包括的であり、EVMのソフトウェアを作成する際にスマートコントラクト開発者が留意するための読み取りリマインダーでさえあります。これは、誰かがプログラムをゼロから書いている場合に特に当てはまります(OpenzePpelinのような既製で実績のあるコードに依存していません)。
一部の記事には、外部通話、外部通話後の状態の変更、外部呼び出しのエラーの処理、外部通話をプッシュするのではなく引っ張りの優先順位付け、抽象的な契約とインターフェイス間のトレードオフの理解、および契約がゼロで使用されると仮定しないことが含まれます。バランスの作成、機能とイベントを区別し、複数の継承に関する考慮事項、そのような構造のタイムスタンプの依存性とプレイ可能性に関する警告(たとえば、ブロックを使用する)、および多くのコードの例を使用して、その他の多くのトリック。
次に、トークン固有の警告、トークン標準に関連する警告、ソフトウェアエンジニアリング手法、セキュリティツール - 静的分析、テスト、コードチェッカーなど。
また、外部コードと契約を呼び出す攻撃、この場合は繰り返し呼ばれる機能、再入国の問題、責任を超えた人種条件を含む、既知の攻撃をリストしました。 DAOハッキング事件で。
彼らはさらに、トランザクションの依存関係、タイムスタンプの依存関係、整数のオーバーフローとアンダーフロー、ブロックガス制限DOSを使用するなど、さまざまなタイプのDOS攻撃の可能性/ポイントに言及し、契約にも強制的に分析しました非推奨攻撃。必ず彼らのドキュメントを読んでください。
結論
このエコシステムの紹介では、生産に使用できるイーサリアム仮想マシンによく書かれたスマートコントラクトのために利用可能なリソースのいくつかを紹介します。これには、監査および検証済みのコードの再利用(Openzeppelinは、契約で40億ドル以上の暗号通貨が実行されると主張しています)と、独自の安全な生産対応ソフトウェアを書くことを学ぶことが含まれます。SolidityとOpenzeppelin
についてのよくある質問
堅牢性におけるopenzeppelinの主な使用は何ですか?OpenzePpelinは、テスト済み、再利用可能な、安全なコードベースを提供することにより、スマートコントラクトのセキュリティを保証します。 Openzeppelin契約ライブラリは、Ethereum Smart Contractsの開発において最も広く使用されているソリューションです。これは、開発者が再利用できる安全で信頼できるコードリソースとして設計されているため、単一のスマートコントラクトの潜在的な脆弱性の範囲を削減することができます。
OpenzePpelinは、スマートコントラクトをアップグレードするために使用できるアップグレードプラグインを提供します。これらのプラグインは、長期にわたってスマートコントラクトをアップグレードして新しい機能を追加したり、バグを修正するための簡単で安全な方法を提供します。これらのプラグインは、トリュフとハードハット開発環境で動作するように設計されています。
トリュフは、イーサリアムの開発環境、テストフレームワーク、資産パイプラインです。 Smart Contractsにテスト環境を提供することにより、Openzeppelinで重要な役割を果たします。 Truffleの一連のツールは、開発者が統一された環境でスマートコントラクトを作成、コンパイル、展開、テストするのに役立ちます。
トリュフ付きOpenzePpelinを使用するには、プロジェクトに両方をインストールする必要があります。インストールが完了したら、OpenzePpelin契約を独自の契約にインポートし、ニーズに応じて拡張できます。トリュフは、契約をコンパイルして展開するために使用されます。
Openzeppelinは、Solidityプロジェクトの安定性とセキュリティの基礎を提供します。一般的な脅威からプロジェクトを保護するのに役立つ、テストされた、再利用可能で安全なコードベースを提供します。また、スマートコントラクトをアップグレードするためのツールを提供し、新しい機能を追加したり、時間の経過とともにバグを修正することができます。
Openzeppelinコミュニティは、開発者の貢献を歓迎します。バグを報告したり、新機能を提案したり、コードを書いたりすることで貢献できます。すべての貢献はコミュニティによって監査され、Openzeppelinのセキュリティと機能の向上に役立ちます。
Openzeppelinは主にイーサリアムで使用するために設計されていますが、その原則とライブラリの多くは他のブロックチェーンプロジェクトに適用できます。ただし、特定の実装の詳細は、使用しているブロックチェーンプラットフォームによって異なる場合があります。
OpenzePpelinは、ニーズに合わせて展開できるERC20およびERC721標準の実装を提供します。これらの実装は安全で信頼性が高く、テストされ、コミュニティ監査が行われます。
OpenzeppelinはSolidity Developmentに人気のある選択肢ですが、利用可能な他のライブラリとフレームワークがあります。これらには、トリュフ、ハードハット、およびether.jsが含まれます。それぞれに独自の長所と短所があり、最良の選択はあなたの特定のニーズと好みに依存します。
以上がOpenzePpelinと友人がいる高品質の堅実さコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。