代理密钥
Hyperlane 代理 - 验证者和中继器 - 必须配置私钥才能正常工作。验证者使用私钥来签署 消息检查点,而中继器使用私钥来签署传递消息的交易。
Hyperlane 代理目前支持以两种方式配置私钥。
1. 十六进制密钥
用于内存签名的原始十六进制私钥。这是最简单和最快的设置。
注意
十六进制密钥的安全性低于 AWS KMS 密钥。
生成十六进制密钥
请妥善保管您的地址和私钥,以便与您的代理一起使用。请勿丢失或泄露它。
- Cast CLI
- Using privatekeys.pw
使用 Foundry 的 cast,您可以创建一个新的密钥对:
cast wallet new
输出将类似于以下内容:
成功创建新的密钥对。
地址: 0x32e6d32E7b1C8691Ef4ad3841003371214a0eebC
私钥: 0x2958f0eb2ab71bbfb5ea1422835e20e488778b61e3c107f369572e2b53b578f9
您可以访问 https://privatekeys.pw/keys/ethereum/random,该网站将自动显示一系列十六进制私钥及其地址。
注意
请注意,由于这些密钥是由网站生成的,因此应将这些私钥视为不安全的,不应用于任何其他目的,除了测试!
2. AWS KMS
由 AWS 生成并存储在 CloudHSM 中的密钥。这是生产代理的推荐设置。
创建 IAM 用户
此 IAM 用户将被授予使用您稍后配置的 KMS 密钥进行签名的权限。您的 Hyperlane 代理将在签署交易时使用此身份。
- 转到 AWS 控制台中的 AWS 身份与访问管理 (IAM)。
- 在左侧的"访问管理"下,点击"用户"。
- 点击橙色按钮"添加用户"。
- 选择一个友好且信息丰富的用户名,例如
hyperlane-validator-${chain_name}
或hyperlane-relayer-${chain_name}
。此用户名将在后续步骤中引用,因此如果您选择了不同的用户名,请确保在将来使用正确的用户名。 - 点击"下一步",您无需为用户分配任何权限。
- 点击"创建用户"。
- 点击您刚刚创建的用户。
- 点击"安全凭证"选项卡。
- 向下滚动到"访问密钥",然后点击"创建访问密钥"。
- 选择"在 AWS 之外运行的应用程序",然后点击"下一步"。
- 点击"下一步",无需添加描述标签。
- 点击"创建访问密钥"。
- 将"访问密钥 ID"和"秘密访问密钥"复制到安全的地方。这些将作为环境变量传递给您的 Hyperlane 中继器。
创建 KMS 密钥
此密钥将由您的代理用于签名。
- 转到 AWS 控制台中的 AWS 密钥管理服务 (KMS)。
- 确保您在要创建密钥的区域。可以通过查看控制台右上角的区域,或在 URL 的子域中找到名称(例如
us-west-2.console.aws.amazon.com
表示您在区域us-west-2
中操作)来确认。 - 在左侧,点击"客户管理的密钥"。
- 点击"创建密钥"。
- 选择"非对称"密钥类型。
- 选择"签名和验证"密钥用法。
- 选择
ECC_SECG_P256K1
密钥规格。 - 点击"下一步"。
- 将别名设置为友好且信息丰富的名称,例如
hyperlane-validator-signer-${chain_name}
或hyperlane-relayer-signer-${chain_name}
。 - 虽然不是必需的,但您可以写下描述并添加任何您认为有用的标签。
- 点击"下一步"。
- 不需要选择密钥管理员,但如果您愿意,可以选择一个。
- 点击"下一步"。
- 为您在第 1 节中创建的 IAM 用户授予使用权限。
- 点击"下一步"。
- 在审核页面,向下滚动到"密钥策略"。生成的密钥策略是可以接受的,但如果您希望,可以通过以下方式使访问权限更少:
- 从"允许使用密钥"的语句中删除
kms:DescribeKey
和kms:Verify
操作。 - 删除"允许附加持久资源"的整个语句。
- 从"允许使用密钥"的语句中删除
- 点击"完成"。
提示
高级用户可以考虑使用 IAM/KMS Terraform 模块 来创建 IAM 用户和 KMS 密钥。
查询地址
在某些情况下,您可能需要知道与您生成的 KMS 密钥相关联的地址。
- With `cast`
- Using a script
AWS_ACCESS_KEY_ID=<redacted> AWS_SECRET_ACCESS_KEY=<redacted> AWS_KMS_KEY_ID=alias/your-key-alias cast wallet address --aws
以下仓库中的脚本将允许您查询此地址:https://github.com/tkporter/get-aws-kms-address