代理密钥
Hyperlane代理(验证器和中继器)必须配置私钥才能运行。验证器使用私钥签署message checkpoints,中继器使用私钥签署传递信息的事务。
Hyperlane代理目前支持通过两种方式之一配置私钥。
1. 十六进制密钥
用于内存签名的原始十六进制私钥。这是最简单快捷的测试设置。
warning
不建议在生产环境中使用十六进制密钥。请使用AWS KMS密钥。
生成十六进制密钥
保存好您的地址和私人密钥,以便与代理一起使用。切勿丢失或泄漏。
- Cast CLI
- Using privatekeys.pw
使用 Foundry's cast,可以创建新的密钥对:
cast wallet new
输出结果将如下所示:
Successfully created new keypair.
Address: 0x32e6d32E7b1C8691Ef4ad3841003371214a0eebC
Private Key: 0x2958f0eb2ab71bbfb5ea1422835e20e488778b61e3c107f369572e2b53b578f9
您可以访问https://privatekeys.pw/keys/ethereum/random,它会自动显示十六进制私钥及其地址的列表。
warning
请注意,由于这些私人密钥是由网站生成的,因此应视为不安全密钥,除测试目的外,不得用于任何其他目的!
2. AWS KMS
由AWS生成并存储在CloudHSM中的密钥。这是生产代理,尤其是验证器的推荐设置。
创建 IAM 用户
该IAM用户将被授权使用稍后配置的KMS密钥签名。Hyperlane代理在签署事务时将使用此身份。
- 访问AWS console 中的AWS身份和访问管理(IAM);
- 在左侧"Access management"下点击"Users";
- 点击蓝色的"Add users"按钮;
- 选择一个友好而具有关联性的用户名,比如
hyperlane-validator-${chain_name}
或hyperlane-relayer-${chain_name}
。此用户名将在将来的步骤中被引用,所以如果你选择了不同的用户名,请确保将来使用你的正确用户名; - 点击 "Next",您无需为用户分配任何权限;
- 点击“Create User”;
- 点击进入刚刚创建的用户;
- 单击“安全证书”选项卡;
- 向下滚动到“Access Keys”,然后单击“Create Access Key”;
- 选择“Application running outside AWS”,然后点击“Next”;
- 点击“Next”,无需添加描述标签 ;
- 点击“Create access key”;
- 将“Access key ID”和“Secret access key”复制到安全的地方。它们将作为环境变量传递给 Hyperlane Relayer。
###创建 KMS 密钥
您的代理将使用此密钥进行签名。
- 访问AWS控制台中的AWS密钥管理服务(KMS);
- 确保您处于要创建密钥的地区。这可以通过查看控制台右上角的区域,或查找URL子域中的名称来确认(例如,"us-west-2.console.aws.amazon.com "表示您在 "us-west-2 "区域中运行);
- 点击左侧的“Customer managed keys”;
- 点击“Create key”;
- 选择“Asymmetric”密钥类型;
- 选择“Sign and verify”密钥的使用;
- 选择“ECC_SECG_P256K1”密钥类;
- 点击“Next”;
- 将别名设置为友好且具有关联性的名称,如
hyperlane-validator-signer-${chain_name}
或hyperlane-relayer-signer-${chain_name}
; - 虽然没有必要,但您可以随意撰写描述,并添加任何您认为有用的标签;
- 点击“Next”;
- 不需要密钥管理员,但如果需要,可以选择一个;
- 点击“Next”;
- 将使用权限赋予在第 1 部分中创建的 IAM 用户;
- 点击“Next”;
- 在审查页面,滚动到“Key policy”。生成的密钥策略是可以接受的,但如果你愿意,也可以通过以下方式降低访问权限:
- 从“Allow use of the key”的“Sid”语句中删除“kms:DescribeKey”和“kms:Verify”操作;
- 删除所有“Sid”为“Allow attachment of persistent resources”的语句。
- 点击“Finish”。
tip
高级用户可以考虑使用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。