本稿について
本稿では、EnigmaのWhitepaperの「5 Privacy-enforcing computation」のうち、「5.5 Scripting」、「5.6 Private data types」、「5.7 Data access」までの日本語訳を掲載します。
原文はこちらになります。
5.5 スクリプティング
前述のように、エンドトゥエンドの分散アプリケーションはプライベートコントラクトを用いて開発されます。さらに、プライベートコントラクトはオンチェーン処理とオフチェーン処理に分かれます。オフチェーンのコードはブロックチェーンに正当性の証明を送信しながら、プライベートに結果を返します。分かりやすくするのため、このスクリプト言語はよく知られているプログラミング言語と構文が似ています。
このスクリプト言語には、さらに詳細な説明が必要な2つの主な追加事項があります。
5.6 Privateデータ型
開発者は、プライベートなオブジェクトを明示するために「Private」キーワードを使用すべきです。これは、「Private」キーワードを使ったオブジェクトの関連するあらゆる計算をセキュアでプライベートに留めてくことを自動的に確約するものです。プライベートなオブジェクトを処理するときは、データ自体はローカルで使用不可能であり、データへの参照を使用可能とします。
5.7 データアクセス
システムには3つの異なる分散データベースがあり、それぞれグローバルなシングルトンディクショナリを通じてアクセスすることができます。具体的には、
- 公開元帳。このブロックチェーンの公開元帳は「L」を使ってアクセスし、操作することができます。例えば、L[k]←1は全てのノードに対して鍵kを更新します。公開元帳は完全に公開されていてAppend-only(筆者注:追記のみできる)なので、全ての履歴を保存することができるとともに、L.get(k, t)メソッドを使って(読み取り専用で)アクセスすることもできます。
- DHT(筆者注:Distributed Hash Table, 分散ハッシュテーブル)。オフチェーンのデータはDHTに保存され、公開元帳と同様の方法でアクセスすることができます。標準では、データは送信前にローカルで暗号化され、署名エンティティのみがデータを戻すことを要求できます。その他には、kを鍵、vを値、pをpredicate、すなわちp:X → {0, 1}(筆者注:pとはXが真であるならば0または1をとることが真であるもの、要するに、pは論理値で0か1をとる)とするDHT.set(k, v, p)を使用することで、pを満たすことと同値の場合に(筆者注:pを満たす場合かつその場合に限り)kを介してvにアクセスできるようにします。私たちは例えば公開鍵のリストへのアクセスを制限するような、いくつかのビルトインpredicateを言語に供給します。暗号化がされないときは、標準のpredicateは∀xp(x)=1(筆者注:p(x)=1を満たす全てのx)であるので、データは公開されますがオフチェーンに分散されます。
- MPC。構文的には、MPCの用法はDHTのそれと同じですが、根本的なプロセスは異なります。秘密に対してMPC.set(k, v, p)を実行するとvを分散します。シェアは潜在的な計算パーティに分散されて、ローカルビューに保存されます。いま、pを使い、vを明かすことなく、vref ← MPC[k]を使う計算で、誰がデータを参照できるのかを明らかにするとします。標準では、本来のディーラーのみがv ← MPC.declassify(k)を動作させることにより生データを返すように要求することができます。これは分散のプロセスと似ています。そしてシェアを様々なパーティから集めてローカルで秘密の値を再構成します。付け加えれば、同一のシェアードアイデンティティに属する全てのパーティは計算でデータを参照することができます。シェアードアイデンティティに関する詳細については、第6章1節をご確認ください。
留意点を書いておくと、簡単のためL、DHT、MPCディクショナリ内の全ての鍵を単一の名前空間で扱いましたが、実際にはより細やかな使い方が可能であり、そのためデータベースやテーブル、より細やかな階層構造に区分することができます。
(次稿へ進む)
(前稿へ戻る)
スポンサードサーチ
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。