[TOC]
AIP-69 - 开始在链上复制 Google JWK
一、概述
该 AIP 提议开始使用原生的 JWK 共识框架,在链上复制 在 Google API 中可用的 Google JWK。
二、目标
这将启用基于 Google 的 无密钥账户。
三、动机
Google 是最流行的 OIDC 提供商之一。启用基于 Google 的无密钥账户可以极大地扩展 Aptos 的用户基础。
此外,一些最近的观察表明,Google 的 JWK 操作似乎很好地满足了JWK 共识和 无密钥账户的要求。 (注:这是非官方观察,目前没有已知的谷歌文档可以确认!)
- JWK 大约每周轮换一次。
- 通常有 2 个 JWK,
(K[i], K[i+1])。- 很可能,
K[i+1]是新的主要 JWK,而K[i]被保留,以便在最后一次轮换之前签署的签名仍然可以被验证。 - 目前尚不清楚谷歌是否在最后一次轮换后立即开始使用
K[i+1]进行签名。 - 如果是这样,由于复制延迟(目前约为 10 秒),由
K[i+1]签署的无密钥交易在轮换后的大约前 10 秒内可能无法验证。 无论如何,复制延迟是不可避免的,可以通过 SDK / 应用程序中的一些重试机制来缓解。 - 下一次轮换将更新 JWK 集为
(K[i+1], K[i+2])。
- 很可能,
四、影响
运营商需要确保其节点可以访问以下 Google API。
https://accounts.google.com/.well-known/openid-configuration- 上述 API 响应 JSON 的
jwk_uri。- 当前值为
https://www.googleapis.com/oauth2/v3/certs。
- 当前值为
五、规范
在启用了本地 JWK 共识框架之后,此提案可以通过将 Google 添加到支持的 OIDC 提供程序列表中来实现,该列表是框架的链上配置。
六、参考实现
以下是一个治理的示例脚本,将 Google 添加到支持的 OIDC 提供程序列表中。
script {
use aptos_framework::aptos_governance;
use aptos_framework::jwks;
fun main(core_resources: &signer) {
let core_signer = aptos_governance::get_signer_testnet_only(core_resources, @0x1);
let framework_signer = &core_signer;
jwks::upsert_oidc_provider(
framework_signer,
b"https://accounts.google.com",
b"https://accounts.google.com/.well-known/openid-configuration"
);
aptos_governance::reconfigure(framework_signer);
}
}
七、测试(可选)
在本地网络进行了测试,并将在预览网络中进行测试(由 Aptos Labs 提供更真实的环境,请参阅此处)。
八、时间表
1. 建议的实施时间表
TIP
原作者注:N/A,因为这是一项链上配置更改。
2. 建议的开发者平台支持时间表
TIP
原作者注:N/A,因为这是一项链上配置更改。
3. 建议的部署时间表
版本 1.10
十、安全考虑
一般来说,请参阅此处有关 JWK 共识框架的安全考虑。
一般来说,请参阅此处有关无密钥账户的安全考虑。