跳到主要内容

代理密钥

Hyperlane 代理 - 验证者和中继器 - 必须配置私钥才能正常工作。验证者使用私钥来签署 消息检查点,而中继器使用私钥来签署传递消息的交易。

Hyperlane 代理目前支持以两种方式配置私钥。

1. 十六进制密钥

用于内存签名的原始十六进制私钥。这是最简单和最快的设置。

注意

十六进制密钥的安全性低于 AWS KMS 密钥。

生成十六进制密钥

请妥善保管您的地址和私钥,以便与您的代理一起使用。请勿丢失或泄露它。

使用 Foundry 的 cast,您可以创建一个新的密钥对:

cast wallet new

输出将类似于以下内容:

成功创建新的密钥对。
地址: 0x32e6d32E7b1C8691Ef4ad3841003371214a0eebC
私钥: 0x2958f0eb2ab71bbfb5ea1422835e20e488778b61e3c107f369572e2b53b578f9

2. AWS KMS

由 AWS 生成并存储在 CloudHSM 中的密钥。这是生产代理的推荐设置。

创建 IAM 用户

此 IAM 用户将被授予使用您稍后配置的 KMS 密钥进行签名的权限。您的 Hyperlane 代理将在签署交易时使用此身份。

  1. 转到 AWS 控制台中的 AWS 身份与访问管理 (IAM)。
  2. 在左侧的"访问管理"下,点击"用户"。
  3. 点击橙色按钮"添加用户"。
  4. 选择一个友好且信息丰富的用户名,例如 hyperlane-validator-${chain_name}hyperlane-relayer-${chain_name}。此用户名将在后续步骤中引用,因此如果您选择了不同的用户名,请确保在将来使用正确的用户名。
  5. 点击"下一步",您无需为用户分配任何权限。
  6. 点击"创建用户"。
  7. 点击您刚刚创建的用户。
  8. 点击"安全凭证"选项卡。
  9. 向下滚动到"访问密钥",然后点击"创建访问密钥"。
  10. 选择"在 AWS 之外运行的应用程序",然后点击"下一步"。
  11. 点击"下一步",无需添加描述标签。
  12. 点击"创建访问密钥"。
  13. 将"访问密钥 ID"和"秘密访问密钥"复制到安全的地方。这些将作为环境变量传递给您的 Hyperlane 中继器。

创建 KMS 密钥

此密钥将由您的代理用于签名。

  1. 转到 AWS 控制台中的 AWS 密钥管理服务 (KMS)。
  2. 确保您在要创建密钥的区域。可以通过查看控制台右上角的区域,或在 URL 的子域中找到名称(例如 us-west-2.console.aws.amazon.com 表示您在区域 us-west-2 中操作)来确认。
  3. 在左侧,点击"客户管理的密钥"。
  4. 点击"创建密钥"。
  5. 选择"非对称"密钥类型。
  6. 选择"签名和验证"密钥用法。
  7. 选择 ECC_SECG_P256K1 密钥规格。
  8. 点击"下一步"。
  9. 将别名设置为友好且信息丰富的名称,例如 hyperlane-validator-signer-${chain_name}hyperlane-relayer-signer-${chain_name}
  10. 虽然不是必需的,但您可以写下描述并添加任何您认为有用的标签。
  11. 点击"下一步"。
  12. 不需要选择密钥管理员,但如果您愿意,可以选择一个。
  13. 点击"下一步"。
  14. 为您在第 1 节中创建的 IAM 用户授予使用权限。
  15. 点击"下一步"。
  16. 在审核页面,向下滚动到"密钥策略"。生成的密钥策略是可以接受的,但如果您希望,可以通过以下方式使访问权限更少:
    1. 从"允许使用密钥"的语句中删除 kms:DescribeKeykms:Verify 操作。
    2. 删除"允许附加持久资源"的整个语句。
  17. 点击"完成"。
提示

高级用户可以考虑使用 IAM/KMS Terraform 模块 来创建 IAM 用户和 KMS 密钥。

查询地址

在某些情况下,您可能需要知道与您生成的 KMS 密钥相关联的地址。

AWS_ACCESS_KEY_ID=<redacted> AWS_SECRET_ACCESS_KEY=<redacted> AWS_KMS_KEY_ID=alias/your-key-alias cast wallet address --aws