経済的プロトコルサンドボックス

提供: tezos-wiki
移動先: 案内検索

.. _protocol_environment:

経済的なプロトコルのサンドボックス化[編集]

アルファ版では、健全な将来のプロトコルのように、更新は投票によって承認されます。このようにして、新しいプロトコルコードに切り替える責任は有権者の責任であり、コードが安全でない配列アクセス関数などを呼び出さないことを確認することは、彼らの責任です。

それでも、安全ではない機能が使用されていないことを確認する特定のコンパイラを使用してコンパイルすることにより、最小レベルのマシンチェックを導入することに決めました。この静的なサンドボックス形式は、OCaml型検査器で実行されます。制限されたインターフェイスを持つ制限されたモジュールセットでプロトコルをコンパイルするだけで、安全ではない機能を隠すことができます。

その特定の環境のもう1つの目標は、プロトコル開発のための安定したOCaml APIを維持することです。ある時点で、OCaml標準ライブラリが変更されたとします(関数が追加または削除され、型が変更されたとします)、アダプタ層を提供することによって、以前のプロトコルと互換性を保ちながら新しいOCamlにアップグレードすることができます。

この環境の各ファイルの簡単な説明は次のとおりです。

  • ファイル array.mli buffer.mli bytes.mli format.mli int32 .mli int64.mli list.mli map.mli pervasives.mli set.mli および string.mli は、OCaml標準ライブラリモジュールのインターフェイスから削除されます。削除された要素は、トップレベルの参照またはチャネルへの影響、安全でない関数、既知のバグの原因である関数、非推奨のものです。
  • 多態比較演算子を削除したので、 compare.mli は標準OCamlとTezos型の単体演算子を実装しています。使用例は、単純なOCaml (3 = 4)の代わりに Compare.Int。(3 = 4)です。
  • ファイル lwt * はLwtへのインタフェースを取り除いたもので、非決定論的な関数を削除しました。
  • ファイル data_encoding.mli error_monad.mli mBytes.mli hash.mli base58 <code> blake2B.mli ed25519.mli hex_encode.mli json.mli RPC_ micheline.mli などのファイルは、 Tezos標準ライブラリ。
  • tezos_data.mli context.mli fitness.mli および updater.mli は、プロトコルにアクセス可能なデータ定義およびストレージアクセッサー。