BTC
ETH
HTX
SOL
BNB
View Market
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

イーサリアム 5 年: 涅槃からの目覚め

Unitimes
特邀专栏作者
この記事は約8078文字で、全文を読むには約12分かかります
ブロックチェーンが再び一般大衆の視野に入り、テクノロジー巨人から前例のない注目を集めたとき、イーサリアムはブロックチェーン分野で無視できない巨大な船になりました。
AI要約
ブロックチェーンが再び一般大衆の視野に入り、テクノロジー巨人から前例のない注目を集めたとき、イーサリアムはブロックチェーン分野で無視できない巨大な船になりました。

編集者注: この記事は以下から引用しましたUnitimes(ID:Uni-times)、許可を得て掲載しています。

編集者注: この記事は以下から引用しました

『イーサリアムプロトコルの前史』ヴィタリック・ブテリン著、訳:ナバイエル

「イーサリアムは5周年を迎えました! 『著者:イーサリアム財団、翻訳:ジョニー

副題

ブロックチェーンが再び一般大衆の視野に入り、テクノロジー巨人から前例のない注目を集めたとき、イーサリアムはブロックチェーン分野で無視できない巨大な船になりました。不謹慎かつ残忍な資本成長の混沌とし​​た時代において、イーサリアムの開発者とコミュニティは常にこの小さな船を注意深く世話し、安定した方向性を保ち、途中で巨大な船の世代にアップグレードしてきました。

2020 年 7 月 30 日は、イーサリアムの 5 周年であるだけでなく、予想通りの記念日でもあります。数日後、イーサリアム 2.0 のテスト ネットワークが正式に開始され、イーサリアムが世界のコンピュータから一歩離れたところにあることが示されます。現在までに、イーサリアム 2.0 テスト ネットワークの立ち上げの進捗状況の 92% 以上が完了しました。

副題

大惨事

2016年6月17日、イーサリアム創設者のヴィタリック氏はレディット上で緊急警告を発し、「DAOがハッカーに攻撃された。すべての取引プラットフォームは即時にETH/DAO取引と入出金を停止するよう要請される」と通知した。この1か月にわたる攻防戦は、イーサリアムブロックチェーンがETH(「イーサリアム」という名前を継続)とETC(イーサリアムクラシック)に分割されることで終結した。 DAO事件を経験した後、イーサリアムは長い間「集中化」の問題を払拭できず、他の外部コミュニティに包囲されていました。

今日の人々の祝賀行事は、昨日の教訓を忘れているようです。将来、イーサリアムの最大の敵は外部からではなく、内部から来ることになります。空母のあらゆる詳細なモジュールが適切に機能していることを確認することは、外敵から防御することよりもはるかに困難です。

それぞれ

イーサリアムの誕生後、創設チームのメンバーは徐々に焦点をより広い分野に移したり、イーサリアムの生態系の拡張に専念したり、新しいテクノロジーの探索に専念したりして、イーサリアムの競合相手になりました。現在もイーサリアムの開発に注力しているヴィタリックを除けば、他の創設者たちはイーサリアムのソーシャルフレームワークであるアカシャ(ミハイ・アリシー)、ジャックス・ウォレット(辞任、アンソニー・ディロリオ)、パブリックチェーンのカルダノ(チャールズ・ホスキンソン)、ポルカドット、そしてWeb3 財団の意志 (ギャビン・ウッド)。

副題https://vitalik.caつづく

「イーサリアムはどのように誕生したか」をレビューする記事を書きました。イーサリアムの 5 周年を記念して、この「イーサリアム プロトコルの前史」を振り返ってみるのもいいかもしれません。

この記事は、Vitalik Buterin 著、Lingtai Technology および Unicorn Times が翻訳出版した『Ideal: The Genesis of Ethereum's Blockchain』からの抜粋です。同時に、イーサリアム コミュニティのすべての開発者、翻訳者、エバンジェリストに心から感謝します。皆さんのおかげで、ブロックチェーンの世界はもはや単調ではなくなりました。

副題

イーサリアムプロトコルの前史

(2017年9月14日)

編集者注: この記事は、イーサリアム プロトコルの開発プロセスについての Vitalik の回想であり、構想から初期リリース、反復に至るまでのイーサリアム プロトコルのストーリーを語っています。

現在のイーサリアム プロトコルの背後にあるアイデアは過去 2 年間でほぼ安定しましたが、イーサリアムの現在のアイデアと完全な形は一夜にして形になったわけではありません。イーサリアム ブロックチェーンの開始後、そのプロトコルは一連の重要な進化と決定を経ました。この記事は、イーサリアム プロトコルの開始からリリースまでの進化をレビューすることを目的としています。プロトコルの実装過程で Geth、cppethereum、pyethereum、および EthereumJ によって行われた広範な作業、および Ethereum エコシステムのアプリケーションとビジネスの歴史については、この記事の範囲を超えます。

https://web.archive.org/

また、Casper の歴史とシャーディング研究も範囲外です。ヴラド、ギャビン、私、そして他の人たちが行ったり捨てたりしたさまざまな点について議論する記事をさらに書くことは間違いありません。その中には、プルーフ・オブ・ワーク、ラウンドロビン、補助マルチチェーン、ハイパーキューブ、シャドウ チェーン(とも言える)が含まれます。 Plamsa の前身)、チェーン ファイバー、Casper のさまざまな反復バージョン、および Vlad が提案したインセンティブ メカニズムとコンセンサス プロトコルの参加者に対するその性質 推論アイデアの急速な進化。これらの点の背後にあるストーリー自体は、別の記事に値するほど複雑です。したがって、現時点ではそれらについては議論しません。

最初のバージョンから始めましょう。このバージョンは最終的にイーサリアムになりましたが、当時はイーサリアムとさえ呼ばれていませんでした。 2013 年 10 月にイスラエルを訪問したとき、私は Mastercoin チームと多くの時間を過ごし、特定の機能を追加することを提案しました。彼らが何をしてきたかをよく考えた後、私はチームに、プロトコルをより一般化し、大規模で複雑な機能セットを追加することなく、より多くのタイプのコントラクトをサポートできるようにするという提案を送りました。

https://web.archive.org/

このバージョンは、後期のイーサリアムのより広範なビジョンとは大きく異なることに注意する必要があります。それは、マスターコインが当時突破しようとしていたテクノロジー、つまり二者契約に純粋に焦点を当てています。この契約では、当事者Aと当事者Bが共同で資金を投資し、その後、両当事者は契約で指定された何らかの計算式に従って資金を引き出すことができます(たとえば、賭けの内容は、「Xが起こったらすべての資金をAに渡します、そうでなければすべての資金をAに渡します)」 、すべての資金を B に渡します」)。この規約を実装するスクリプト言語はチューリングが完成していません。

Mastercoin チームはこれに感銘を受けていますが、この方向に進むためにこれまでやってきたことをすべて放棄するつもりはなく、私はこれが正しい選択であるとますます確信しています。そこで、12 月頃に第 2 バージョンがリリースされました。

このリリースでは、行われた広範なリファクタリングの結果を確認できます。これらの結果の多くは、11 月にサンフランシスコで長い散歩をしているときに思い出しました。その時点で、スマートコントラクトには完全に汎用化できる可能性があることに気づきました。 2 者間の関係を単純に記述することしかできないスクリプト言語と比較して、契約自体は成熟したアカウントであり、資産の保持、送受信、さらには永久ストレージ (当時は永久ストレージ) を維持する機能を備えています。は「メモリ」と呼ばれ、唯一の一時的な「メモリ」は 256 レジスタです)。言語がスタックベースの仮想マシンから、より私の希望に沿ったレジスタベースの仮想マシンに変更されただけです。これについては、より複雑に見えることを除けば、ほとんど問題はありません。

「エーテル」とは文字通りエーテル(つまり燃料、ガスに相当)を意味します。各計算ステップが完了すると、トランザクションによって呼び出されたコントラクトの残高がいくらか減ります。契約の資金がなくなると、実行プロセスは停止します。この受信者支払いメカニズムは、契約自体が送信者に契約に対する料金の支払いを要求する必要があることを意味することに注意してください。料金が受領されない場合、執行は直ちに取り消されます。このバージョンのプロトコルでは、無料実行ステップの上限が 16 に割り当てられ、契約が手数料を支払わない取引を拒否できるようになります。

現時点では、イーサリアムプロトコルは完全に私一人によって構築されています。しかし、この時点から、新しいプレイヤーがイーサリアム陣営に参加し始めました。これまでのところ、合意に関して最も有力なプレイヤーはギャビン氏で、彼は 2013 年 12 月に about.me のプライベート メッセージを通じて私に連絡を取り始めました。

Go クライアント (当時は「ethereal」と呼ばれていた) の主任開発者である Jeffrey Wilcke も、ほぼ同時期に私に連絡をくれて、プログラミングを始めました。ただし、彼の貢献はプロトコルの研究よりもクライアント開発に多くありました。

ギャビンの初期の貢献は 2 つありました。まず、元の設計のコントラクト呼び出しモデルが非同期であることに気付いたかもしれません。コントラクト A はコントラクト B への内部トランザクションを作成できましたが (「内部トランザクション」はイーサリアムの専門用語です。元々は単に「トランザクション」と呼ばれていました)、その後参照されました。を「メッセージコール」または「コール」とします)。内部トランザクションの実行は、最初のトランザクションの実行が完全に完了するまで開始されません。これは、トランザクションが他のコントラクトから情報を取得する方法として内部トランザクションを使用できないことを意味します。他のコントラクトから情報を取得するには、EXTRO オペコード (他のコントラクト ストレージを読み取るために使用する SLOAD のようなもの) のみを使用できますが、このオペコードはその後、ギャビンらの支援により削除されました。

ギャビンは、イーサリアムのビジョンに非常に微妙な変化を大きく加えました。プログラム可能な通貨を構築するためのプラットフォーム、つまりデジタル資産を保持し、ルールに従って事前に設定された送金に従うことができるブロックチェーンベースの契約を備えたプラットフォームから、一般的なものに変わりました。コンピューティングプラットフォーム。この変更は、イーサリアムに対する焦点と用語のわずかな変更から始まり、その後、Web 3 統合 (イーサリアムを分散型テクノロジー スイートの一部と見なし、他の 2 つは Whisper と Swarm、図 1) を採用するにつれて、ますます重要視されるようになりました。この効果も継続的に強化されています。

図1

2014 年の初め頃には、他の人からの提案に基づいていくつかの変更も加えました。 Andrew Miller らがスタックベースのアーキテクチャに戻るというアイデアを持ち出した後、私たちは最終的に戻りました (図 2)。

図2

画像の説明

図2

https://github.com/

Charles Hoskinson 氏は、ビットコインの SHA256 から新しい SHA3 (より正確には keccak256) に切り替えることを提案しました。しばらく議論されましたが、Gavin、Andrew、その他との議論により、スタック上の値のサイズは 32 バイトに制限されるべきであることが確立されました。代替手段である無制限の整数は、加算、乗算、その他の演算を実行するために必要なガスの量を把握するのが難しいという問題があるため、まだ検討中です。

2014 年 1 月に遡ると、私たちが最初に考えたマイニング アルゴリズムは Dagger と呼ばれるものでした。

Dagger は、有向非巡回グラフ (DAG) にちなんで名付けられました。 DAG はアルゴリズムで使用される数学的構造であり、N ブロックごとに、シードによって疑似ランダムに新しい DAG が生成されるという考え方です。さらに、DAG の最下層は、数十億バイトで保存する必要があるノードのコレクションになります。ただし、DAG では、個別の値を生成するには、数千のエントリを計算するだけで済みます。ダガー計算は、この基礎となるデータセット内の任意の場所で特定の数の値を取得し、それらの値を一緒にハッシュすることで構成されます。これは、ダガー計算を実行するための高速な方法があることを意味します。すでにデータをメモリに保存しており、その後、値を最初からフェッチするために必要なすべてのビットを DAG から再生成する、遅いですがメモリを大量に使用しない方法です。

このアルゴリズムの目的は、Scrypt アルゴリズムなど、当時一般的だったアルゴリズムと同じメモリ制約のある特性を持ちながら、ライト クライアントにも優しいものにすることです。マイナーは高速な方法を使用するため、マイニングはメモリ帯域幅によって制限されます (理論的には、消費者レベルのメモリは十分に最適化されているため、ASIC を使用したさらなる最適化は非常に困難です)。ただし、ライト クライアントの検証は、メモリに寛容で遅い方法で実行できます。 。高速なメソッドにはマイクロ秒かかる場合がありますが、低速でメモリに優しいメソッドにはミリ秒かかる場合があるため、これは軽量クライアントにはまだ実行可能です。

ここから、イーサリアムの開発過程でアルゴリズムはいくつかの変更を受けてきました。次のアイデアは、Adaptive Proof of Work です。このスキームでは、プルーフ・オブ・ワークにはランダムに選択されたイーサリアム・コントラクトの実行が含まれますが、ASIC に抵抗する賢い方法があります。ASIC が開発されれば、競合するマイナーは、ASIC が開発されていないコントラクトを作成して発行するインセンティブが得られます。実行が上手い。 ASIC は単なる CPU であるため、一般的なコンピューティングには使用できません。したがって、この種の敵対的インセンティブを活用して、本質的に汎用の計算を実行するプルーフ・オブ・ワークを実装できます。

このアイデアは後に、ある単純な理由で崩れ去りました。その理由は遠距離攻撃です。攻撃者はブロック 1 から開始してチェーンを構築し、そのチェーンに単純なコントラクトのみを入力することができます。攻撃者は、攻撃チェーンがメインチェーンに素早く追いつくことができるように、この単純なコントラクト用に特別なハードウェアを設計できることに注意してください。それで...振り出しに戻ります。

次のアルゴリズムは「ランダム回路」と呼ばれるもので、その説明は Google のドキュメントに記載されています。このアルゴリズムは私と Vlad Zamfir によって提案され、Matthew Wampler-Doty らによって分析されました。このアルゴリズムの考え方は、擬似ランダム生成回路を実装することで、マイニング アルゴリズムにおける一般的な計算をシミュレートすることです。今回は、これらの原則に基づくものが機能しないという確固たる証拠はありません。しかし、2014 年に私たちが話を聞いたコンピューター ハードウェアの専門家は非常に悲観的でした。 Matthew Wampler-Doty は、proof-of-work ベースの SAT ソリューションを提案しましたが、これも拒否されました。

最終的に、少し考えた結果、単にダシモトとも呼ばれるダガー橋本アルゴリズムを思いつきました。このアルゴリズムは橋本氏から多くのアイデアを借用しています。ハシモトは、Thaddeus Dryja によって提案されたプルーフ オブ ワーク メカニズムであり、「I/O 制約付きプルーフ オブ ワーク」の概念を開拓しました。このメカニズムでは、マイニング速度の主な制限要因は、1 秒あたりのハッシュ操作の速度ではなく、1 秒あたりにアクセスできる RAM のメガバイト数です。ただし、Dagger橋本は、このプルーフ・オブ・ワークのメカニズムと、Daggerアルゴリズムのライトクライアント向けDAGによって生成されたデータセットを組み合わせています。私、マシュー、ティム、その他の人たちによる多くの調整の後、これらのアイデアは最終的に、現在「Ethash」と呼ばれているアルゴリズムに組み込まれました。

2014 年の夏までに、プルーフ・オブ・ワークが Ethash 段階に到達するのが 2015 年初頭になることを除けば、プロトコルは非常に安定しており、その準正式な仕様が Gavin のイエロー ペーパーの形で公開されました。

2014年8月におじさんブロック機構を開発・導入しました。このメカニズムにより、イーサリアムのブロックチェーンは、集中化のリスクを軽減しながら、より短いブロック時間とより高い処理能力を実現できます。アンクルブロックの仕組みの導入についてはPoC6を参照してください。

BitShares チームとの議論の後、私たちはヒープをファーストクラスのデータ構造として使用することを検討しましたが、最終的には時間がなかったため使用しませんでした。その後のセキュリティ監査と DoS 攻撃により、実装することは明らかになりました。この機能を安全に保つことは、当時私たちが思っていたよりもはるかに困難でした。

9 月に、ギャビンと私はプロトコル設計に 2 つの大きな変更を加える予定です。まず、状態ツリーとトランザクション ツリーに加えて、各ブロックには受信ツリーも含まれます。レシート ツリーには、各トランザクションによって作成されたログのハッシュと中間状態のルートが含まれます。このログにより、トランザクションはブロックチェーンに保存してライト クライアントからアクセスできる出力を作成できるようになります。ただし、将来の状態の計算ではこれらのログにアクセスできません。このアプローチにより、分散アプリケーションは、トークン転送、購入、作成および照合中の為替注文、進行中のオークションなどのイベントを簡単にクエリできるようになります。

また、トランザクションの完全な実行追跡からマークル ツリーを抽出して任意の内容を証明できるようにするなど、他のアイデアも検討しました。シンプルさと完全性の間で妥協した結果、ログを使用することを選択しました。

2つ目はプリコンパイルの考え方です。プリコンパイルは、EVM のオーバーヘッドに対処することなく、複雑な暗号計算を EVM で利用できるようにするという問題を解決します。私たちはネイティブ コントラクトに関する野心的なアイデアもたくさん考え出しました。これらのアイデアでは、マイナーが特定の契約に対してより良い実装方法を持っている場合、彼らはこれらの契約のガス価格を引き下げることに投票するでしょう。このようにして、ほとんどのマイナーが迅速に実行できる契約は、当然のことながらガス価格が低くなります。しかし、これらのアイデアはすべて、暗号経済的に安全な実装方法を思いつくことができなかったため、拒否されました。攻撃者はいつでも、トラップドアを使用して暗号化操作を実行する何らかのコントラクトを作成し、このコントラクトをより迅速に実行できるようにトラップドアを自分自身とその友人に配布することができます。次に、攻撃者はガス価格の引き下げに投票し、これを使用してネットワークを DoS します。代わりに、ハッシュや署名スキームなどの一般的な操作のために、プロトコル内でプリコンパイル済みの少量を単に指定するという、それほど野心的ではないアプローチを選択しました。

ギャビンは、プロトコルの抽象化を開発するというアイデアの初期サポートにおける重要な人物でもありました。いわゆるプロトコル抽象化とは、イーサリアムの残高、トランザクション署名アルゴリズム、乱数など、プロトコルの多くの部分をコントラクトとしてプロトコル自体に移行することです。その理論的な最終目標は、イーサリアム プロトコル全体が、特定の初期化前状態の仮想マシンに関数呼び出しを追加するものとして記述できる目標を達成することです。これらすべてのアイデアを最初の最新リリースに組み込むのに十分な時間がありませんでしたが、「Constantinople」、Casper コントラクト、およびシャーディング仕様のいくつかの変更を通じて、これらの原則が徐々に統合され始めることが期待されます。

これらはすべて PoC 7 に実装されています。 PoC 7 以降、プロトコルは、いくつかのマイナーな変更 (場合によっては重大な変更) を除いて、あまり変わっていません。これらの詳細は、セキュリティ監査に合格した後に発表されます。

2015 年初頭までに、Jutta Steiner らはソフトウェア コード監査や学術監査を含むリリース前のセキュリティ監査を組織しました。ソフトウェア コードの監査は、主に C++ 言語と Go 言語で実装されており、それぞれ Gavin と Jeffrey が主導しています。ただし、私の Pyethereum 実装では単純な監査も行います。 2 つの学術監査のうち、1 つは Ittay Eyal (「利己的マイニング」の提案で有名) によって実施され、もう 1 つは Andrew Miller と他の最小権威機関のメンバーによって実施されました。 Eyal の監査の結果、アンクルブロックがチェーンの合計難易度値に含まれないようにプロトコルがわずかに変更されました。 Least Authority による監査では、スマート コントラクト、燃費、パトリシア ツリーに重点が置かれていました。監査の結果、いくつかのプロトコルの変更も行われました。このうち比較的小さな変更は、ツリーのキー値として、アドレスとキー値を直接使用するのではなく、sha3(addr)とsha3(key)を使用することです。これにより、攻撃者がツリーに対して最悪の攻撃を仕掛けるのが難しくなります。

私たちが議論したもう 1 つの重要な問題は、ガス制限投票メカニズムです。その時点で、私たちはビットコインのブロックサイズに関する議論が進展していないことをすでに懸念しており、イーサリアムに柔軟な設計、つまり必要に応じて時間の経過とともに調整できる設計を望んでいました。しかし、課題は、最適な制約とは何かということです。私の最初の考えは、実際の燃料使用量の長期指数移動平均の 1.5 倍という動的制限を設けることでした。したがって、長期的には、平均ブロックが容量の 2/3 を占めることになります。しかし、Andrew は、この制限はいくつかの方法で悪用できることを示しています。具体的には、制限を引き上げたいマイナーは、大量のガスを消費するが、ブロック自体の処理時間はほとんどかからず、完全にロードされたブロックを作成するトランザクションを含めるだけでよいということです。コストを損なうことなく。したがって、少なくとも最終的には、このメカニズムのセキュリティ モデルは、マイナーにガス制限について投票させることと同等になります。

Gavin と Jeff とのミニハッカソンの後、PoC 9 は 3 月についにリリースされました。これは概念実証の最終バージョンとなることを目的としています。私たちは「Olympiad」というテストネットを 4 か月間実行しました。このテストネットは、メインネットで使用されるプロトコルを使用します。同時に、イーサリアムの長期計画も策定しました。 Vinay Gupta は「イーサリアムの起動プロセス」という記事を書きました。この記事では、イーサリアムメインネット開発の 4 つのフェーズについて説明し、「フロンティア」、「ホームランド」、「メトロポリス」、「セレニティ」という、誰もがよく知っている対応する名前を付けています。

「オリンピック」テストネットは 4 か月間稼働しています。最初の 2 か月間で、さまざまな実装バージョンで多くのバグが見つかり、コンセンサス違反などの問題も発生しました。しかし、6 月頃、ネットワークは大幅に安定しました。 7 月にコードの凍結を決定し、7 月 30 日にイーサリアム メインネットが正式にリリースされました。

イーサリアム財団からの誕生日のお祝い

文章

文章

文章

文章

文章

文章

この 5 年間で、イーサリアムはどのビルダー、チーム、組織の範囲を超えて成長しましたが、皆さんがこれまでと同様に考えを持ち続け、イーサリアムが私たち全員が夢見ているすべてを達成するために協力し続けることを願っています。そしてさらに多くの。 🦄

Vitalik
ETH
Odaily公式コミュニティへの参加を歓迎します
購読グループ:
https://t.me/Odaily_News
チャットグループ:
https://t.me/Odaily_GoldenApe
公式アカウント:
https://twitter.com/OdailyChina