Skip to main content

代理密钥

Hyperlane代理(验证器和中继器)必须配置私钥才能运行。验证器使用私钥签署message checkpoints,中继器使用私钥签署传递信息的事务。

Hyperlane代理目前支持通过两种方式之一配置私钥。

1. 十六进制密钥

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

warning

不建议在生产环境中使用十六进制密钥。请使用AWS KMS密钥。

生成十六进制密钥

保存好您的地址和私人密钥,以便与代理一起使用。切勿丢失或泄漏。

使用 Foundry's cast,可以创建新的密钥对:

cast wallet new

输出结果将如下所示:

Successfully created new keypair.
Address: 0x32e6d32E7b1C8691Ef4ad3841003371214a0eebC
Private Key: 0x2958f0eb2ab71bbfb5ea1422835e20e488778b61e3c107f369572e2b53b578f9

2. AWS KMS

由AWS生成并存储在CloudHSM中的密钥。这是生产代理,尤其是验证器的推荐设置。

创建 IAM 用户

该IAM用户将被授权使用稍后配置的KMS密钥签名。Hyperlane代理在签署事务时将使用此身份。

  1. 访问AWS console 中的AWS身份和访问管理(IAM);
  2. 在左侧"Access management"下点击"Users";
  3. 点击蓝色的"Add users"按钮;
  4. 选择一个友好而具有关联性的用户名,比如hyperlane-validator-${chain_name}hyperlane-relayer-${chain_name}。此用户名将在将来的步骤中被引用,所以如果你选择了不同的用户名,请确保将来使用你的正确用户名;
  5. 点击 "Next",您无需为用户分配任何权限;
  6. 点击“Create User”;
  7. 点击进入刚刚创建的用户;
  8. 单击“安全证书”选项卡;
  9. 向下滚动到“Access Keys”,然后单击“Create Access Key”;
  10. 选择“Application running outside AWS”,然后点击“Next”;
  11. 点击“Next”,无需添加描述标签 
  12. 点击“Create access key”;
  13. 将“Access key ID”和“Secret access key”复制到安全的地方。它们将作为环境变量传递给 Hyperlane Relayer。

###创建 KMS 密钥

您的代理将使用此密钥进行签名。

  1. 访问AWS控制台中的AWS密钥管理服务(KMS);
  2. 确保您处于要创建密钥的地区。这可以通过查看控制台右上角的区域,或查找URL子域中的名称来确认(例如,"us-west-2.console.aws.amazon.com "表示您在 "us-west-2 "区域中运行);
  3. 点击左侧的“Customer managed keys”;
  4. 点击“Create key”;
  5. 选择“Asymmetric”密钥类型;
  6. 选择“Sign and verify”密钥的使用;
  7. 选择“ECC_SECG_P256K1”密钥类;
  8. 点击“Next”;
  9. 将别名设置为友好且具有关联性的名称,如hyperlane-validator-signer-${chain_name}hyperlane-relayer-signer-${chain_name}
  10. 虽然没有必要,但您可以随意撰写描述,并添加任何您认为有用的标签;
  11. 点击“Next”;
  12. 不需要密钥管理员,但如果需要,可以选择一个;
  13. 点击“Next”;
  14. 将使用权限赋予在第 1 部分中创建的 IAM 用户;
  15. 点击“Next”;
  16. 在审查页面,滚动到“Key policy”。生成的密钥策略是可以接受的,但如果你愿意,也可以通过以下方式降低访问权限:
    1. 从“Allow use of the key”的“Sid”语句中删除“kms:DescribeKey”和“kms:Verify”操作;
    2. 删除所有“Sid”为“Allow attachment of persistent resources”的语句。
  17. 点击“Finish”。
tip

高级用户可以考虑使用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