スナップショットの信頼はどこにありますか?
2 回答
- 投票
-
- 2019-02-05
インポートの仕組みは次のとおりです:
- 暗い路地にあるUSBキーからスナップショットをダウンロードします
- インポートを開始すると、インポートしているブロックハッシュが表示されます
- このハッシュが実際にメインチェーンからのものであることをいくつかの場所で確認します
- チェックしたら、続行させます
スナップショットに含める必要があるものは次のとおりです(完全なバリアント):
- 元帳の現在の状態(残高、ステーキング権など)
- ブロックヘッダーとチェーン全体の操作
読み取りとチェックの方法は次のとおりです(必ずしも順番どおりではありません):
- ブロックヘッダーはローカルでハッシュされます.各ブロックヘッダーには前のブロックのハッシュが含まれているため、インポートプロシージャでは、スナップショットに含まれるすべてのヘッダーが、インポートされたブロックで始まり、メインネットの予想される起源
- 各ブロックの操作がハッシュされ、結果の操作ハッシュのリストが、インポートされたブロックヘッダーに含まれているものと比較されます
- コンテキストがキーごとにインポートされ、各キーのハッシュがローカルで再計算されます
- すべてのキーのハッシュを含むコンテキストのグローバルハッシュが計算され、インポートプロシージャは、それが先行のブロックヘッダーに書き込まれたハッシュと一致することを確認します
- 現在のプロトコルは、コンテキスト内の特定のキーを読み取ることによって取得されるため、コンテキストハッシュの一部であるため、それもチェックされます
- 最後に、操作の現在の有効期間など、各ブロックを適用した結果であり、コンテキストに含まれていない値を取得するために、単一のブロックアプリケーション(上記で収集したプロトコルを使用)を実行して取得します.これらの値、および結果のコンテキストハッシュもチェックされます
その後の新しいブロックを検証するために必要なのは、そのブロックのコンテキスト、最後のブロックアプリケーションからのいくつかの結果値、および過去からのいくつかのブロックヘッダーと操作です.これらはすべて、今示したものです.確認済みです.
TL; DR:さらに多くのハッシュを含む他のハッシュを含むハッシュを含むハッシュ、ジェネシスブロックまで、コンテキスト内のすべてのエントリまで、さらにブロック検証を1回実行するだけで、確実に確認できます. .複数のウェブサイトまたはノードでシリーズの最初のハッシュを確認するのはあなた次第です.その後、インポート手順で残りを行います.
Here is how the import works for you:
- you download a snapshot from a usb key found in a dark alley
- you start importing it, it displays the block hash it is importing
- you check in several places that this hash is indeed from the main chain
- if it checks up, you let it continue
Here is what the snapshot must contain (full variant):
- the current state of the ledger (balances, staking rights, etc.)
- the block header and operations of the whole chain
Here is how it is read and checked (not necessarily in order):
- the block headers are hashed locally, and since each block header contains the hash of its predecessor, the import procedure makes sure that all the headers included in the snapshot form a chain that starts at the imported block, and ends up at the expected genesis of mainnet
- the operations of each block are hashed, and the resulting lists of operation hashes are compared to the ones included in the imported block headers
- the context is imported, key by key, and the hashes of each key are recomputed locally
- the global hash of the context, which includes the hashes of all the keys, is computed, and the import procedure makes sure that it matches the hash written in the block header of the predecessor
- the current protocol is retrieved by reading a specific key in the context, so it is checked too as it is part of the context hash
- finally, to get some values that are the result of applying each block, such as the current lifetime of operations, and that are not included in the context, a single block application (using the protocol gathered above) is performed to get these values, and the resulting context hash is also checked
To validate new blocks after that, what the node needs is the context at that block, a few result values from the last block application, and a few block headers and operations from the past, all of which we've just shown to have been checked.
TL;DR: Hashes containing hashes that contain other hashes containing even more hashes, and that up to the genesis block, and up to each and every entry in the context, plus just a single run of block validation to make really sure. It is up to YOU to check the first hash of the series on more than one website or node, and then the import procedure does the rest.
-
- 2019-02-05
信頼は2つの要素に依存しています:
- スナップショットの最後のブロックのハッシュ(実際には公式チェーン上にありますか?)
- ノードのソースコード(実際にあなたが思っていることをしているのですか?)
(1)の場合、複数の信頼できるソースを確認する必要があります. TzScanまたは別のブロックエクスプローラーで、ハッシュがメインチェーンにあることを確認できます.パブリックノードに直接クエリを実行することもできます.
次に、ハッシュが正しい場合、ブロックがネットワーク上の他のノードからのものである場合と同様に、ノードはスナップショット内のすべてのデータを自動的に検証します.したがって、ノードのソースコードを信頼する場合は、すべてをチェックする必要があり、無効なデータはすべて破棄されます.
検証とは、次のことを意味します:
- コンテキストハッシュが期待されるものであることを確認します(コンテキストは、コンテキストのグローバルハッシュを計算するMerkleツリーに格納されます)
- スナップショットの各ブロックを順番に適用します.つまり、前のコンテキストにトランザクションやその他の操作を適用して、新しいコンテキストを計算します.生成されたコンテキストのハッシュがブロック内と同じであることを確認してください.
The trust relies in two elements:
- the hash of the last block in the snapshot (is it really on the official chain ?)
- the source code of your node (is it really doing what you think it does ?)
For (1), you have to check multiple trusted sources. You can check on TzScan or another block explorer that the hash is in the main chain. You can also directly query public nodes.
Then, if the hash is correct, your node will automatically validate all the data in the snapshot, as it would do if the blocks were coming from other nodes on the network. So, if you trust the source code of your node, everything should be checked, and any invalid data would be discarded.
By validation, I mean:
- Check that the context hash is the one expected (the context is stored in a Merkle tree computing a global hash of the context)
- Apply each block in the snapshot in turn, i.e. apply the transactions and other operations on the previous context to compute the new context. Check that the generated context has the same hash as in the block.
-
ありがとう.«[ノード]がスナップショット内のすべてのデータを検証する»の意味を正確に教えてください.ありがとうございました!Thanks. Could you please precise what is meant by « [the node] will validate all the data in the snapshot » ? Thank you!
- 0
- 2019-02-05
- Ezy
-
ノードがコンテキストを検証するとは思わない.したがって、私には、悪意のあるまたは誤った「スナップショット」がトリガー可能な「爆弾」を作成する可能性が非常に高いように思われます.特定のデータを省略し、必要に応じて、このデータを新しいブロックの有効性(そのデータを含む操作を挿入することによる).I don't believe the node validates the context. So it seems very likely to me, as just _one_ example, that a malicious or erroneous 'snapshot' could create a triggerable 'bomb': leave out a specific piece of data, then, when desired, make this piece of data relevant for the validity of new blocks (by injecting an operation involving that data).
- 0
- 2019-02-05
- Tom
-
コンテキストはマークルツリーに格納されるため、完全なコンテキストに関連付けられたハッシュがあります.ブロックのコンテキストハッシュはブロックに格納されるため、コンテキストを調整すると、対応するブロックハッシュが期待どおりに取得されません.The context is stored in a Merkle Tree, so there is a hash associated with the full context. The context hash for a block is stored in the block, so, if you temper the context, you will not get the corresponding block hash as expected.
- 0
- 2019-02-05
- lefessan
-
申し訳ありませんが、私はその質問を完全に誤解しました.:)Sorry, I completely misunderstood the question. :)
- 0
- 2019-02-05
- Tom
Nomadic Labsは最近、スナップショット.
スナップショットを使用して同期している間は削除できない、特定の最小限の信頼が存在することが何度か言及されています.私が理解したいのは
どうもありがとう!