2017-11-16 18 views
1

わかりやすく聞こえる危険があるので、トランザクションと依存関係のリーク、国家モデルの公開など、すべての問題を考慮して、「有効な公証人は必要ですか?」と尋ねます。 私が聞く答えは、不正なノードが他人の資産を盗もうとする潜在的な攻撃と関係があります。例えば、正当な取引では、パーティAは、移動契約の対象となる資産SをパーティBに売却した。直後に、partyAは、元帳トランザクション照合()を実行していない偽のフローで、ダミー契約の対象となるSを自身に戻す自己署名トランザクションを作成します。しかし、Sが単純な公証人を満足させるためにFinaltyFlowを呼び出して、元帳上でトランザクションをコミットすると、verifyContracts()は失敗します。なぜならSは、ownerパーティBが偽のトランザクションに署名しなければならないMove契約に任命するからです。 これは、私に妥当性を証明する公証人の必要性を納得させるものではありません。明らかに、私は何かを見逃しているに違いない。誰かが私を啓発することはできますか?本当に検証する公証人が必要ですか?

ありがとうございました。ショーン

+0

私はオフに、この質問を閉じるために投票していますコンピュータ、プログラミング、ソフトウェア、またはコンピューティングに関連する技術分野とは関係がないためです。問題は、プロパティの法的手続きに関連しています。 –

+1

こんにちはChetan - 明確にするために...公証人は、Cordaネットワークの技術コンポーネントの名前です。この問題は公証人の法的概念ではなく、それに関するものです。 –

答えて

1

\

あなたが言うように、検証を公証人の利点は、それが状態を「くさび」から悪質なパーティを防ぐことである - つまり、彼らは認識していることを消費されていない状態を消費無効なトランザクションを作成しますの。トランザクションは無効ですが、検証を行っていない公証人はこれを認識せず、州を使用済みとしてマークします。

この無効な取引がverifyContracts()へのFinalityFlowのコールに失敗することは間違いありません。しかし、悪意のあるノードがFinalityFlowを使用して公証人に何かを送るように強制することはできません。悪意のあるノードが十分に動機付けられていれば、無効なトランザクションハッシュを手作業で構築し、それを公証人に直接送信することができます。

  • 悪意のある当事者は、彼らがくさびにしたい(複数可)の状態を認識することがあります。

    しかし、非検証公証人の場合には、くさびに対する保護の複数の層が残っていることに注意してください。 Cordaの情報は知識が必要なだけに配布されるため、ノードは消費されていない状態の小さなサブセットしか認識しません

  • 状態が偶発的に揺らぐ場合、ノードは公証人。公証人は、トランザクションが無効であることを確認すると、状態を消費していないものとしてマークする。
  • Cordaは許可されたネットワークであるため、公証人は取引を提出するすべての人の法的身元を記録することができる。悪意のあるノードが状態を消費する不正な取引を提出されている場合は、自分のアイデンティティが知られているであろう、との紛争は、プラットフォームの外で解決することができ、一方のネットワーク

への参加を管理する契約に基づいて、SGX公証人の検証に関連するデータリークの問題に対処します。トランザクションの検証がSGXエンクレーブ内で行われる場合、検証する公証人は、検証中のトランザクションの内容に関する情報を取得しません。

最終的に、検証用の公証人と非検証用の公証人の選択は、特定の展開に関連する脅威モデルになります。参加者が意図的にノードのコードを変更したり、悪意のある行為をしないことを確信している環境でCordaを使用している場合は、検証用の公証人は必要ありません。

しかし、あなたが誰かが不正行為をしようとしていると仮定し、それを行うための独自のコードを書くつもりであれば、検証用の公証人は特別な保護層を提供します。

だから、コルダは選択肢を提供します:あなたは、比較的少ない参加者を信頼している場合

  • は、公証人のクラスタに多くを明らかにすることを選択してください...
  • あなたがリスクを考慮すれば、公証人、クラスタにあまりを明らかにすることを選択します。大きな問題

であることを公証人にあまりにも多くを明らかに(そしてあなたは誰も神経質ならSGXを使用!)

+0

ありがとう、ジョエル。コメントの代わりに答えとして私のコメントをここに掲載するので、通知を受けることができます。 AFAIK、検証公証人は、公証人ノード内にCorDappの状態モデルを含むjarをインストールする必要があります。ネットワーク上で実行されているすべてのカスタムCorDappで実際にどのように実行されますか?たとえそれが実現可能であっても、それは潜在的な漏れですか? SGXがその問題を扱っているかどうかはわかりません。 – JohnZ

+0

FinalityFlowではなく、NotaryFlowを直接呼び出せるようにするために、私の例のpartyAは、偽のトランザクションが元帳にコミットされていないため、Sを所有することはできません。誰も(正当な所有者partyBでさえ)誰もそれを再び消費することができないように、Sが消費されたと考える。 – JohnZ

+0

公証人が(提案した通りに)リマークすると、所有権がpartyBに返されます。それでパーティーAのインセンティブは何ですか?彼の評判を悪化させるという犠牲を払って、ちょっと不便を感じるだけですか? – JohnZ

関連する問題