「経済的プロトコルサンドボックス」の版間の差分

提供: tezos-wiki
移動先: 案内検索
(ページの作成:「.. _protocol_environment: = Economic protocol sandboxing = In Alpha, as in any sound future protocols, updates are approved by voting. That way, the responsibility of s...」)
 
 
1行目: 1行目:
.. _protocol_environment:
+
.. _protocol_environment:
  
= Economic protocol sandboxing =
+
=経済的なプロトコルのサンドボックス化=
  
In Alpha, as in any sound future protocols, updates are approved by voting. That way, the responsibility of switching to a new protocol code is the responsibility of voters, and one could argue that it is up to them to check that the code does not call, for instance, unsafe array access functions.
+
アルファ版では、健全な将来のプロトコルのように、更新は投票によって承認されます。このようにして、新しいプロトコルコードに切り替える責任は有権者の責任であり、コードが安全でない配列アクセス関数などを呼び出さないことを確認することは、彼らの責任です。
  
Yet, we decided to introduce a minimum level of machine checks, by compiling with a specific compiler that checks that no known-unsafe function is used. This static form of sandboxing is performed by the OCaml typechecker: we simply compile protocols in a restricted set of modules with restricted interfaces that hide any unsafe, non wanted feature.
+
それでも、安全ではない機能が使用されていないことを確認する特定のコンパイラを使用してコンパイルすることにより、最小レベルのマシンチェックを導入することに決めました。この静的なサンドボックス形式は、OCaml型検査器で実行されます。制限されたインターフェイスを持つ制限されたモジュールセットでプロトコルをコンパイルするだけで、安全ではない機能を隠すことができます。
  
Another goal of that specific environment is maintaining a stable OCaml API for protocol development. Imagine that at some point, the OCaml standard library changes (a function is added or removed, a type is changed), then we will be able to upgrade to the new OCaml while still remaining compatible with past protocols, by providing an adapter layer.
+
その特定の環境のもう1つの目標は、プロトコル開発のための安定したOCaml APIを維持することです。ある時点で、OCaml標準ライブラリが変更されたとします(関数が追加または削除され、型が変更されたとします)、アダプタ層を提供することによって、以前のプロトコルと互換性を保ちながら新しいOCamlにアップグレードすることができます。
  
Here is a quick description of each file in this environment:
+
この環境の各ファイルの簡単な説明は次のとおりです。
  
* Files <code>array.mli</code>, <code>buffer.mli</code>, <code>bytes.mli</code>, <code>format.mli</code>, <code>int32.mli</code>, <code>int64.mli</code>, <code>list.mli</code>, <code>map.mli</code>, <code>pervasives.mli</code>, <code>set.mli</code> and <code>string.mli</code> are stripped down interfaces to the OCaml standard library modules. The removed elements are: effects on toplevel references or channels, unsafe functions, functions that are known sources of bugs, and anything deprecated.
+
*ファイル<code> array.mli </code><code> buffer.mli </code><code> bytes.mli </code><code> format.mli </code><code> int32 .mli </code><code> int64.mli </code><code> list.mli </code><code> map.mli </code><code> pervasives.mli </code> <code> set.mli </code>および<code> string.mli </code>は、OCaml標準ライブラリモジュールのインターフェイスから削除されます。削除された要素は、トップレベルの参照またはチャネルへの影響、安全でない関数、既知のバグの原因である関数、非推奨のものです。
* As we removed polymorphic comparison operators, <code>compare.mli</code> implements monomorphic operators for standard OCaml and Tezos types. An example use is <code>Compare.Int.(3 = 4)</code> instead of plain OCaml <code>(3 = 4)</code>.
+
*多態比較演算子を削除したので、<code> compare.mli </code>は標準OCamlとTezos型の単体演算子を実装しています。使用例は、単純なOCaml <code>(3 = 4)</code>の代わりに<code> Compare.Int。(3 = 4)</code>です。
* Files <code>lwt*</code> is the stripped down interface to Lwt, of which we removed any non deterministic functions, since we only use Lwt for asynchronous access to the storage.
+
*ファイル<code> lwt * </code>はLwtへのインタフェースを取り除いたもので、非決定論的な関数を削除しました。
* Files <code>data_encoding.mli</code>, <code>error_monad.mli</code>, <code>mBytes.mli</code>, <code>hash.mli</code>, <code>base58.mli</code>, <code>blake2B.mli</code>, <code>ed25519.mli</code>, <code>hex_encode.mli</code>, <code>json.mli</code>, <code>time.mli</code>, <code>z.mli</code>, <code>micheline.mli</code> and files <code>RPC_*</code> are stripped down versions of the Tezos standard library.
+
*ファイル<code> data_encoding.mli </code><code> error_monad.mli </code><code> mBytes.mli </code><code> hash.mli </code><code> base58 <code> blake2B.mli </code><code> ed25519.mli </code><code> hex_encode.mli </code><code> json.mli </code> <code> RPC_ </code><code> micheline.mli </code>などのファイルは、 Tezos標準ライブラリ。
* Files <code>tezos_data.mli</code>, <code>context.mli</code>, <code>fitness.mli</code> and <code>updater.mli</code> are interfaces to the shell’s data definitions and storage accessors that are accessible to the protocol.
+
* <code> tezos_data.mli </code><code> context.mli </code><code> fitness.mli </code>および<code> updater.mli </code>は、プロトコルにアクセス可能なデータ定義およびストレージアクセッサー。

2018年5月31日 (木) 00:36時点における最新版

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