

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 第 6 步：验证分类账中的文档
<a name="getting-started-step-6"></a>

**重要**  
终止支持通知：现有客户将能够使用 Amazon QLDB，直到 2025 年 7 月 31 日终止支持。有关更多详细信息，请参阅[将亚马逊 QLDB 账本迁移到亚马逊 Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

借助 Amazon QLDB，您可在 SHA-256 中使用加密哈希，从而有效地验证分类账日记账中文档的完整性。在此示例中，Alexis 和 Brent 决定通过在汽车经销商处用 VIN `1N4AL11D75C109151` 交换车辆来升级到一款新车型。经销商通过向登记处核实车辆的所有权来开始这一流程。

要详细了解验证和加密哈希在 QLDB 中的工作原理，请参阅 [Amazon QLDB 中的数据验证](verification.md)。

在此步骤中，您将验证 `vehicle-registration` 分类账中的文档修订版本。首先，您请求一份摘要，该摘要作为输出文件返回，并作为分类账整个变更历史记录的签名。然后，您要求提供与此摘要相关的修订证明。使用此证明，如果所有验证检查都可通过，可以验证修订版的完整性。

## 请求摘要
<a name="getting-started-step-6.digest"></a>

1. [在 /qldb 上打开亚马逊 QLDB 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/qldb)

1. 在导航窗格中，选择**分类账**。

1. 在分类账列表中，选择 `vehicle-registration`。

1. 选择“**获取摘要**”。**获取摘要**对话框显示以下摘要详细信息：
   + **摘要** - 您请求的摘要的 SHA-256 哈希值。
   + **摘要提示地址** - 您请求的摘要所涵盖的日记中的最新[块](verification.md#verification.structure)位置。地址包含以下两个字段：
     + `strandId` — 包含数据块的日记账链的唯一 ID。
     + `sequenceNo` — 一个索引号，用于指定数据块在链中的位置。
   + **分类账** - 您请求摘要的分类账名称。
   + **日期** - 您请求摘要时的时间戳。

1. 检查摘要信息。然后选择 **Save**（保存）。您可以保留默认文件名，或输入新名称。

   此步骤将保存一个内容为 [Amazon Ion](ion.md) 格式的纯文本文件。该文件的文件扩展名为 `.ion.txt`，包含前面对话框中列出的所有摘要信息。以下是摘要内容的示例。字段的顺序可能因您的浏览器而异。

   ```
   {
     "digest": "42zaJOfV8iGutVGNaIuzQWhD5Xb/5B9lScHnvxPXm9E=",
     "digestTipAddress": "{strandId:\"BlFTjlSXze9BIh1KOszcE3\",sequenceNo:73}",
     "ledger": "vehicle-registration",
     "date": "2019-04-17T16:57:26.749Z"
   }
   ```

1. 将此文件保存在以后可以访问的某个位置。在以下步骤中，您将使用此文件来验证文档修订版。

保存分类账摘要后，您可以开始根据该摘要验证文档修订的过程。

**注意**  
在用于验证的生产用例中，您可以使用先前保存的摘要，而不是连续执行这两个任务。最佳做法是，在日记账中写入要稍后验证的修订版本后，立即请求并保存摘要。

## 验证文档的修订版
<a name="getting-started-step-6.verify"></a>

1. 首先，在分类账中查询要验证的文档修订版本的 `id`和 `blockAddress`。字段都包含在文档元数据中，您可以在提交视图中对其进行查询。

   文档 `id` 是系统分配的唯一 ID 字符串。`blockAddress` 是一种 Ion 结构，用于指定提交修订版本的块位置。

   在 QLDB 控制台的导航窗格中，选择 **PartiQL 编辑器**。

1. 选择 `vehicle-registration` 分类账。

1. 在查询编辑器窗口中输入以下语句，然后选择 **运行**。

   ```
   SELECT r.metadata.id, r.blockAddress
   FROM _ql_committed_VehicleRegistration AS r 
   WHERE r.data.VIN = '1N4AL11D75C109151'
   ```

1. 复制并保存查询返回的 `id` 和 `blockAddress` 值。请务必省略 `id` 字段的双引号。在 Amazon Ion 中，字符串数据类型用双引号分隔。

1. 您已经选择了文档修订版，现在可以开始对其进行验证。

   在导航窗格中选择**验证**。

1. 在“**验证文档**”表单中，在**“指定要验证的文档”**下，输入以下输入参数：
   + **分类账** - 选择 `vehicle-registration`。
   + **块地址** - 您在步骤 3 中查询返回的`blockAddress`值。
   + **文档 ID** - 您在步骤 3 中查询返回的 `id` 值。

1. 在 “**指定要验证的摘要**” 下，通过选择 “**选择摘要**”，选择之前保存的摘要。如果文件有效，则会自动填充控制台上的所有摘要字段。或者，您可以直接从摘要文件中手动复制和粘贴以下值：
   + **摘要** - 摘要文件中的 `digest` 值。
   + **摘要提示地址** - 摘要文件中的 `digestTipAddress` 值。

1. 查看您的文档和摘要输入参数，然后选择**Verify（验证）**。

   控制台为您自动执行两个步骤：

   1. 向 QLDB 请求指定文档的证明。

   1. 使用 QLDB 返回的证明来调用客户端 API，该API会根据提供的摘要验证您的文档修订版本。

   控制台在**验证结果**卡中显示您的请求结果。有关更多信息，请参阅 [验证结果](verification.results.md)。

1. 要测试验证逻辑，请重复“**验证文档修订版**” 下的步骤 6—8，但要更改**摘要**输入字符串中的单个字符。这应该会导致您的**验证**请求失败，并显示相应的错误消息。

如果您不再需要使用`vehicle-registration`分类账，请继续[步骤 7（可选）：清除资源](getting-started-step-7.md)。