経済的プロトコルサンドボックス
.. _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
は、プロトコルにアクセス可能なデータ定義およびストレージアクセッサー。