optimism-monorepo - 楽観主義はイーサリアムであり、スケールされています。

(Optimism is Ethereum, scaled.)

Created at: 2020-02-07 06:28:26
Language: Go
License: MIT


楽天主義

楽観主義は、低コストで超高速のEthereum L2ブロックチェーンです。


楽観主義とは何ですか?

楽観主義は低コストで超高速のEthereum L2ブロックチェーンですが、それ以上のものです

楽観主義は、オプティミズム集団の技術的基盤であり、インパクト=利益の公理(集団への肯定的な影響は個人への利益で報われるべきであるという原則)を遵守するために相互に有益な協定によって結ばれたコミュニティ、企業、市民のバンドです。私たちは、今日の暗号エコシステムが直面している最も重要な調整の失敗のいくつかを解決しようとしています。私たちは特に、エコシステムが大きく依存しているが、これまでのところ十分な報酬を得ることができなかった公共財とインフラのための持続可能な資金の流れを作り出すことに焦点を合わせています。オプティミスティック・ビジョン」をご覧になり、私たちがなぜ私たちが活動するのかをもっと理解していただきたいと思います。

ドキュメンテーション

楽観主義の上に構築したい場合は、楽観主義コミュニティハブの広範なドキュメントをご覧ください。楽観主義を構築したい場合は、プロトコル仕様を確認してください

コミュニティ

一般的な議論は、楽観主義の不和について最も頻繁に起こります。ガバナンスの議論は、楽観主義ガバナンスフォーラムでも見つけることができます。

貢献

CONTRIBUTING.md を読んで、私たちの貢献プロセスの一般的な概要を確認してください。開発者クイックスタートを使用して、楽観主義モノレポの作業を開始するための開発環境をセットアップします。それから私たちの良い最初の問題のリストをチェックして、取り組むのが楽しいものを見つけてください!

セキュリティポリシーと脆弱性の報告

このコードベースの脆弱性を報告する方法の詳細については、正規のセキュリティポリシー文書を参照してください。バウンティハンターは、Immunefiバグバウンティプログラムをチェックすることをお勧めします。対象範囲内の重大な脆弱性に対して最大 $2,000,042 を提供し、最大バグ報奨金を支払います

岩盤のアップグレード

楽観主義は現在、Bedrockと呼ばれる次のメジャーアップグレードの準備をしています。Bedrockは、楽観主義がボンネットの下でどのように機能するかを大幅に刷新し、楽観主義をこれまでで最も速く、最も安く、最も信頼性の高いロールアップにするのに役立ちます。Bedrock アップグレードの詳細な仕様は、このリポジトリの specs フォルダにあります。

このリポジトリ内のかなりの数のパッケージとフォルダは Bedrock アップグレードの一部であり、現在実稼働環境では実行されていないことに注意してください。以下のディレクトリ構造のセクションを参照して、現在実稼働環境で実行しているパッケージと、Bedrock アップグレードの一部としての使用を意図しているパッケージを理解してください。

ディレクトリ構造

~~ Production ~~
├── packages
│   ├── common-ts: Common tools for building apps in TypeScript
│   ├── contracts: L1 and L2 smart contracts for Optimism
│   ├── contracts-periphery: Peripheral contracts for Optimism
│   ├── core-utils: Low-level utilities that make building Optimism easier
│   ├── data-transport-layer: Service for indexing Optimism-related L1 data
│   ├── drippie-mon: Service for monitoring Drippie instances
│   ├── fault-detector: Service for detecting Sequencer faults
│   ├── message-relayer: Tool for automatically relaying L1<>L2 messages in development
│   ├── replica-healthcheck: Service for monitoring the health of a replica node
│   └── sdk: provides a set of tools for interacting with Optimism
├── batch-submitter: Service for submitting batches of transactions and results to L1
├── bss-core: Core batch-submitter logic and utilities
├── gas-oracle: Service for updating L1 gas prices on L2
├── indexer: indexes and syncs transactions
├── infra/op-replica: Deployment examples and resources for running an Optimism replica
├── integration-tests: Various integration tests for the Optimism network
├── l2geth: Optimism client software, a fork of geth v1.9.10  (deprecated for BEDROCK upgrade)
├── l2geth-exporter: A prometheus exporter to collect/serve metrics from an L2 geth node
├── op-exporter: A prometheus exporter to collect/serve metrics from an Optimism node
├── proxyd: Configurable RPC request router and proxy
├── technical-documents: audits and post-mortem documents
├── teleportr: Bridge for teleporting ETH between L1 and L2 at low cost

~~ BEDROCK upgrade - Not production-ready yet, part of next major upgrade ~~
├── packages
│   ├── integration-tests-bedrock: Bedrock integration tests.
│   └── contracts-bedrock: Bedrock smart contracts. To be merged with ./packages/contracts.
├── op-bindings: Go bindings for Bedrock smart contracts.
├── op-batcher: L2-Batch Submitter, submits bundles of batches to L1
├── op-e2e: End-to-End testing of all bedrock components in Go
├── op-node: rollup consensus-layer client.
├── op-proposer: L2-Output Submitter, submits proposals to L1
├── ops-bedrock: Bedrock devnet work
└── specs: Specs of the rollup starting at the Bedrock upgrade

分岐モデル

アクティブなブランチ

地位
主人 メインネットに展開する予定の時点からPRを受け入れます。
develop
開ける ブランチからの OR と互換性のある PR を受け入れます。
master
release/X.X.X
リリース/X.X.X すべての変更、特に と との下位互換性のない変更の PR を受け入れます。
develop
master

概要

私たちは一般的にこのGit分岐モデルに従います。このリポジトリに頻繁にPRを作成する予定がある場合は、リンクされた投稿をお読みください(たとえば、楽観主義で働いている人など)。

生産支店

私達の生産の枝はある。このブランチには、最新の「安定版」リリースのコードが含まれています。からの更新は常にブランチから来ます。ブランチを更新するのは、 内のコードを Optimism メインネットにデプロイする場合にのみ行います。更新プロセスは、ブランチをブランチにマージする PR の形をとります。

master
master
master
develop
master
develop
develop
master

開発ブランチ

私たちの主な開発ブランチは開発です。 最新の実験的なネットワーク展開と下位互換性を保つ最新のソフトウェアが含まれています。下位互換性のある変更を行う場合は、プルリクエストを に向けてください。

develop
develop

パッケージ/コントラクト/コントラクト内のコントラクトへの変更は、通常、下位互換性とは見なされず、リリース候補ブランチに対して行われるべきです(SHOULD)。このルールのいくつかの例外は、リリース候補ブランチが既に完全にデプロイされた後に新しいコントラクトを絶対にデプロイする必要がある場合に存在します。コントラクトを変更または追加していて、PR をどのブランチにするかがわからない場合は、既定で最新のリリース候補ブランチを使用します。リリース候補ブランチに関する情報については、以下を参照してください。

リリース候補ブランチ

マークされたブランチは、リリース候補ブランチです。下位互換性のない変更や、内部のコントラクトに対するすべての変更は、リリース候補ブランチに向けられなければなりません(MUST)。リリース候補は、完全にデプロイされるとマージされ、その後にマージされます。展開の途中にある場合、複数のアクティブなブランチがあることがあります。上記の「アクティブなブランチ」セクションの表を参照して、ターゲットとする適切なブランチを見つけてください。

release/X.X.X
packages/contracts/contracts
develop
master
release/X.X.X

リリース

変更セット

変更セットを使用して、新しいリリースのパッケージをマークします。コミットをブランチにマージするとき、あなたの変更がパッケージの新しいバージョンをリリースすることを必要とするならば、あなたは変更セットファイルを含めなければなりません(MUST)。

develop

変更セットを追加するには、このモノレポのルートでコマンドを実行します。リリースするパッケージ、リリースの範囲 (メジャー、マイナー、またはパッチ)、およびリリースの理由を選択するための小さなプロンプトが表示されます。変更セットファイル内のコメントは、パッケージの変更ログに自動的に含まれます。

yarn changeset

リリースのトリガー

リリースは、以下のプロセスを使用してトリガすることができます。

  1. ブランチをブランチにマージする PR を作成します。
    develop
    master
  2. 自動生成された PR が開かれるのを待ちます (数分かかる場合があります)。
    Version Packages
  3. 自動生成された PR のベースブランチを から に変更し、 にマージします。
    Version Packages
    master
    develop
    develop
  4. ブランチをブランチにマージする 2 番目の PR を作成します。
    develop
    master

2 番目の PR をブランチにマージした後、パッケージはプロセスの開始時にブランチ内の変更セット ファイルのセットに従って、それぞれの場所に自動的にリリースされます。同期が取れなくなったり、同期が取れなくなったりしないように、記載されているとおりにこのプロセスを実行してください。

master
develop
develop
master

メモ: リリースプロセス中にマージされた変更セットファイルを含む PR は、修正するために手動での介入を必要とする変更セットの問題を引き起こす可能性があります。アクティブなリリース中に PR を開発にマージすることは避けることを強くお勧めします。

develop

ライセンス

l2gethという名前でgo-ethereumからフォークされたコードは、元のライセンスに従ってGNU GPLv3の下でライセンスされています

このリポジトリ内の他のすべてのファイルは、特に明記されていない限り、MITライセンスの下でライセンスされています。