Rarimo 协议通过零知识证明将物理护照转换为区块链上的匿名数字身份,无需泄露个人信息即可验证身份的真实性。用户通过手机应用创建数字身份,可在以太坊、币安链、Polygon、Avalanche 等多个区块链上使用,同时个人数据始终保存在手机本地,用户自主决定披露内容。
Rarimo - 护照如何变成数字身份
29 6.7K Rarimo将实体护照变成区块链上的匿名数字身份。该协议使用零知识证明来验证你是否拥有有效的政府颁发的护照,而无需透露你的姓名、年龄、国籍或任何其他个人信息。
你只需通过移动应用程序创建一次你的数字身份,然后就可以在多个区块链上使用它:以太坊、BNB 链、 Polygon、 Avalanche 和许多其他区块链。你的护照数据永远不会离开你的手机。你决定披露什么以及何时披露。Web3 中的隐私困境
去中心化应用程序面临着信任和隐私之间的根本矛盾。
如果没有身份验证,系统将无法防御欺诈。机器人涌入 DAO 投票并操纵结果。一个人可以创建数千个帐户来获取空投。女巫攻击使全民基本收入分配成为不可能——欺诈者可以领取数百笔付款而不是一笔。没有人能分辨出谁是真人,谁是机器人。
传统的 KYC 验证解决了机器人问题,但又产生了另一个问题。中心化公司在其数据库中收集护照扫描件和自拍照。这些数据库遭到黑客攻击。数百万人的个人数据最终出现在黑市上。一旦你的隐私在数据泄露中丢失,它将永远消失——你的数据将被出售多年。
Rarimo 打破了这个恶性循环。该协议通过数学方式证明:“我是一个拥有有效的政府颁发的护照的真人”,而无需透露你的身份。
零知识证明确保真实性。密码学保护隐私。去中心化消除了单点故障。为什么这很重要
对于用户而言,Rarimo 意味着控制自己的数据。护照保留在手机上,并使用 AES-256 进行加密。只有你才能决定披露哪些信息。只需要证明是人类?你可以出示一个没有任何细节的 ZK 证明。需要确认 18 岁以上?你甚至不需要透露年龄;你可以将下限(或上限)传递给电路,并收到一个布尔值,指示出生日期是否满足条件,而无需透露实际年龄。该应用程序要求提供一个地区?你可以根据你提供的国家/地区白名单/黑名单来测试用户的国籍。(Ramiro 目前不支持基于区域的检查。)
对于 dApp 开发者来说,Rarimo 解决了女巫攻击问题,而没有法律风险。单一身份标准适用于所有区块链。集成 SDK,你就可以获得机器人保护,而无需收集护照数据。无需在 KYC 提供商上花钱。没有 GDPR 或其他个人数据合规性难题。没有可能被黑客入侵的敏感信息的集中存储。
对于 Web3 生态系统,该协议解锁了新的用例。一人一票的治理变得可行。DeFi 平台可以向经过验证的个人发放贷款,而无需传统的 KYC。社交网络摆脱了机器人和网络巨魔。
游戏获得了公平的竞争,没有作弊者运行多个帐户。UBI 被公平分配——每个人都会收到一笔付款。所有这些都是匿名工作的。
Rarimo 如何工作:分步说明
创建数字身份的过程分为五个阶段。首先,用你的手机扫描你的护照并验证其真实性。然后,手机会生成一个零知识证明,确认护照是真实的,而不会泄露个人数据。该证明被发送到 Rarimo 区块链,在那里 22 位独立的验证者验证数学运算并记录结果。最后,新的系统状态将同步到所有集成的区块链。整个过程需要 3-7 分钟。让我们详细分解 20 个步骤中的每一个。第一阶段:护照扫描
第 1 步:打开应用程序
你下载 RariMe 移动应用程序并启动它。该应用程序检查你的手机是否支持 NFC 以读取嵌入式芯片。然后,它准备一个安全的数据存储区域并显示屏幕上的说明。会出现一个动画:“将你的护照贴在手机背面。”
整个设置过程大约需要 10 秒钟。
第 2 步:握住护照
该应用程序激活你手机的 NFC 模块。你将护照贴在设备背面,距离不超过 4 厘米。手机以 13.56 MHz 的无线电频率与护照的芯片建立无线连接。在扫描过程中保持护照静止非常重要——移动护照会断开连接,你必须重新开始。
仅支持生物特征护照。这些护照的封面上有一个特殊的符号——一个带有圆圈的矩形。如果你的护照没有这个符号,则表示没有芯片,Rarimo 将无法读取数据。建立连接需要 5-10 秒。
第 3 步:读取护照数据
手机从护照的芯片中读取四个数据块。
第一个数据块 DG1 包含机器可读区域——与照片页底部打印的信息相同:姓名、姓氏、出生日期、护照号码、签发国家/地区、性别和国籍。
第二个数据块 DG2 以数字 JPEG2000 格式存储你的照片——与护照中打印的图像相同。
第三个数据块 DG15 包含护照本身的加密密钥。此密钥证明该芯片是真实的,并且没有被克隆。第四个数据块 SOD 是政府的数字签名,涵盖所有护照数据。此签名确认数据是由合法的政府机构发布的,并且没有被篡改。
数据以 200-250 字节的片段通过 NFC 传输。检查每个片段是否存在传输错误,如果发生故障,手机会重新请求该片段。整个读取过程需要 15 到 30 秒,具体取决于护照型号和 NFC 连接质量。
第 4 步:验证真实性
手机在读取数据后立即执行三层护照检查。
第一层:格式和结构。
机器可读区域必须符合你所在国家/地区的标准。行尾的校验位必须与主要字段匹配——护照号码有其自己的校验位,出生日期有其自己的校验位。国家/地区代码根据 ISO 3166 国际标准进行验证。日期必须合理:出生日期不能是未来日期,并且护照不得过期。
第二层:政府数字签名。
RariMe 应用程序包含一个内置的来自 50 多个国家/地区政府的公钥数据库。手机检查 SOD 块中的签名是否由你所在国家/地区的政府创建,签发者的证书是否在 ICAO 信任列表中,以及从根 CA 到文档的证书链是否完整且未过期。如果这些检查中的任何一项失败,则护照将被视为伪造。第三层:主动身份验证(芯片的活性)。
手机生成一个随机数,并将其作为挑战发送到护照芯片。芯片使用其私钥对该数字进行签名。手机使用 DG15 中的公钥验证签名。如果签名正确,则芯片是真实的并且正在实时运行。这可以防止克隆:即使攻击者复制了所有护照数据,他们也无法复制永久锁定在芯片安全存储器中的私钥。
所有三个验证层按顺序在 5-10 秒内运行。如果任何检查失败,该应用程序将显示错误并停止。没有真实的护照,进一步的进展是不可能的。
第 5 步:加密和存储
成功验证后,手机使用 AES-256 算法加密所有护照数据——该算法与用于保护国家机密的加密标准相同。加密密钥是为你设备唯一生成的,并存储在 iPhone 上的安全 enclave 内或 Android 上的硬件安全模块 (HSM) 内。这些安全的芯片与主操作系统隔离。即使有人获得对手机的物理访问权限或危及操作系统,也无法在没有存储在安全芯片中的密钥的情况下解密数据。
然后,加密包保存在手机的本地存储中。它包含所有四个护照数据块、三个身份验证级别的结果以及扫描发生的时间戳。此加密文件永久保存在设备上。它永远不会发送到服务器,永远不会上传到区块链,也绝不会与任何第三方共享。
你的护照保持私密。加密和存储过程仅需 1-2 秒。第二阶段:创建零知识证明
第 6 步:准备数据
手机将存储的护照数据解密到 RAM 中。所有文本字段都转换为数字,因为数学算法仅适用于数字。字母 J 变为数字 74,字母 O 变为 79,依此类推,根据 ASCII 表。日期分为多个组成部分:1995 年 8 月 23 日变为三个数字——年份 1995,月份 8,日期 23。
护照照片使用 SHA-256 压缩为短哈希。哈希是一个校验和——一个唯一的 32 字节数字指纹。你无法从哈希重建原始照片,但你可以验证给定的照片是否与该哈希匹配而不是其他图像。
护照的加密密钥分为两个数字:模数和指数。所有数据都标准化为单一格式:整数数组。在接下来的步骤中使用这些值后,解密的数据会立即从内存中删除。加密副本保留在设备存储中,但 RAM 中不保留任何护照痕迹。转换过程大约需要 1-2 秒。
第 7 步:创建新的身份密钥
手机专门为你的 Rarimo 数字身份生成一对新的加密密钥。私钥是 32 字节的真实随机数据。随机性是从许多熵源收集的:通过加速计测量的手机的微小动作、麦克风的背景噪音、屏幕点击之间的精确时间、CPU 温度和网络活动。所有这些不可预测的输入都由加密随机生成器混合在一起。
私钥存储在安全 enclave 中,永远不会离开设备。这是你的绝对秘密。公钥是通过椭圆曲线运算从私钥派生的。公钥被写入区块链,并成为你在 Rarimo 系统中的地址。一个简单的类比:私钥是你的电子邮件密码,公钥是你的电子邮件地址。每个人都知道你的电子邮件并且可以通过它找到你,但只有你知道密码并且可以从你的帐户发送邮件。你使用你的私钥对交易进行签名;公钥在网络上识别你。
如果护照的 DG15 中已经有一个加密密钥,为什么还要生成新的密钥?该密钥属于签发政府。它仅用于主动身份验证。
你无法控制该密钥——它是护照的一部分。新的身份密钥完全由你控制。密钥生成大约需要 1 秒。
第 8 步:构建数学机器
该应用程序从机器可读区域确定护照的签发国家/地区。
国家/地区代码由三个字母组成:美国为 USA,德国为 DEU,英国为 GBR,法国为 FRA,依此类推,遵循 ISO 3166-1 alpha-3 标准。
每个国家/地区在其护照中使用不同的算法。美国对数字签名使用 RSA-2048,对哈希使用 SHA-256。德国对签名使用 ECDSA P-384,对哈希使用 SHA-384。英国使用带有特定参数的 RSA-PSS。机器可读区域格式也不同:美国使用带有三行的 TD-3 格式,而某些国家/地区使用带有两行的 TD-1 格式。
基于国家/地区代码,该应用程序从内置的库中选择相应的验证方案。方案由 Rarimo 开发者使用专门的语言 Noir 预先编写。每个方案都是数千行代码的程序。
该方案被编译成大约 100,000 个数学约束的系统。每个约束检查护照的一个特定方面。例如:政府 RSA-2048 签名在数学上对于文档是正确的;或者照片是有效的 JPEG2000 格式,并且尺寸符合标准;或者机器可读区域中的校验位与主要字段匹配;或者持有人的年龄在 0-120 岁的合理范围内。
该方案现在已准备好接受你的护照数据,但目前它是空的 - 约束存在,但没有插入任何值。编译该方案大约需要 2-5 秒。
第 9 步:填充数学机器
手机将你特定的护照数据代入数学方案的 100,000 个约束中的每一个。此过程称为 witness 生成。
以下是一些规则的工作原理:
规则编号一检查机器可读区域是否以字母 P 开头,后跟符号 <,表示机器可读护照。手机从你的数据中获取前两个字符,验证第一个字符是否为 P,第二个字符是否为 <。如果两个条件都为真,则规则返回 1(真)。如果至少一个条件失败,则规则返回 0(假)。
规则编号二验证出生日期是否在合理的范围内。手机从你的数据中提取出生年份,例如 1995 年,并检查该年份是否在 1900 年到 2025 年之间,月份在 1 到 12 之间,日期在 1 到 31 之间。如果满足所有条件,则规则返回 1。规则编号 1247 是最复杂的。它验证政府的 RSA 签名在数学上是否有效。手机从 SOD 块中获取数字签名,美国的政府公钥,并计算所有护照数据的哈希。然后,它根据 RSA 算法执行数万次模幂运算。如果签名正确,则规则返回 1,确认政府确实为此护照签名。
在处理完所有 100,000 条规则后,系统会生成一个包含 100,000 个数字的 witness 数组。每个数字要么是 0,要么是 1。如果所有关键规则都返回 1,则从数学上证明护照是真实的。如果即使一条关键规则返回 0,则表示出现问题,并且该过程停止。
Witness 生成大约需要 5-10 秒。
第 10 步:创建短证明
手机将 100,000 个验证结果的数组压缩成一个大小仅为 200 字节的短加密代码。它使用 Groth16 算法——最高效的零知识证明协议之一。
Groth16 在椭圆曲线上执行数十万次运算。每次运算都涉及具有非常大数字的复杂数学。手机在此步骤中以完整的 CPU 容量运行。屏幕可能会显示加载指示器 - 这是整个过程中资源最密集的部件。
Groth16 的结果是一个由三个组件组成的证明,总大小约为 200 字节。这 200 字节在数学上保证所有 100,000 条规则都已得到满足。然而,从这 200 字节中,无法重建你的姓名、出生日期或任何其他护照数据。零知识字面意思是“没有知识”——该证明没有揭示有关基础信息的任何内容。一个类比:想象你有一本千页的书,那就是你的护照。你创建一个一页的证书,证明你已阅读完整本书,验证了每个事实,并确认它是真实且由合法来源发布。但是从该证书中,没有人可以知道书中写了什么。该证书仅确认该书的真实性,而不会暴露其内容。
创建证明需要 30-60 秒。这是该过程中最慢的步骤,但它仅发生一次——在初始注册期间。
第 11 步:创建公共指纹
与证明并行,手机生成四个公共信号,即将在区块链上记录的加密哈希。哈希使用 Poseidon 函数计算,该函数专门针对零知识方案进行了优化。
第一个哈希称为 dg15PubKeyHash。它是来自你护照的公共加密密钥的指纹。哈希唯一地标识你的特定实体护照,但不显示文档编号或任何其他数据。它的大小为 32 字节,看起来像一长串十六进制字符。
第二个哈希 passportHash 组合了几个唯一的护照字段:序列号、签发国家/地区、签发日期、到期日期和照片哈希。此哈希确保一个实体护照只能创建一个数字身份。它可以防止从单个护照创建多个帐户。
第三个哈希 dg1Commitment 将你的个人数据密封在加密信封中。里面有你的姓名、出生日期、性别、国籍,以及一个随机盐以增加隐私。信封是封闭的,没有人可以看到里面的内容。但是稍后,你可以通过选择性披露有选择地披露各个字段。例如,仅显示你的出生年份,同时保留所有其他内容隐藏。第四个哈希 pkIdentityHash 是你在步骤 7 中创建的新公共身份密钥的指纹。此哈希将成为你在 Rarimo 系统中的地址。dApp 将使用它来查找你的数字身份。哈希将实体护照与区块链上的数字身份链接起来。
所有四个哈希共享相同的属性。它们像指纹一样是唯一的——意外冲突的概率几乎为零。它们是不可逆的,无法从哈希重建原始数据。如果不了解原始信息,则无法伪造它们。它们允许通过内含证明来验证数据所有权。创建四个哈希大约需要 1 秒。第三阶段:发送到区块链
第 12 步:打包以进行传输
手机将零知识证明和四个公共信号组合成一个用于区块链的单一数据结构。首先,创建一个 commitment——一个将永远存储的义务。使用 Poseidon 哈希函数从三个组件计算 commitment:passportHash,它保证护照的唯一性;dg1Commitment,它包含密封的个人数据;以及 pkIdentityHash,它链接到身份密钥。添加一个随机盐以增加隐私。结果是一个 32 字节的 commitment 哈希。
然后,组装一个用于发送到 Rarimo L2 的交易。该交易包含几个组件。ZK 证明(200 字节)证明了护照的真实性。四个公共信号(128 字节)标识你。commitment(32 字节)将记录在注册表中。公共身份密钥(32 字节)将成为你的地址。元数据包括交易编号(nonce)和网络费用(ETH 中的 gas 费)。
至关重要的是交易中未包含的内容。你的姓名未发送。你的姓氏未发送。你的出生日期未发送。你的照片未发送。你的护照号码未发送。实际上,没有任何个人数据离开手机。仅传输数学证明和加密哈希。打包交易大约需要 1-2 秒。
第 13 步:签署交易
手机使用 Keccak-256 算法(与以太坊兼容的哈希)计算整个交易的哈希。哈希是一个 32 字节的短校验和,唯一地表示整个交易。即使交易的单个字节发生更改,哈希也会完全不同。
然后,使用 secp256k1 椭圆曲线(与以太坊相同)上的 ECDSA 算法使用你的私有身份密钥对哈希进行签名。签名由两个大数字(r 和 s)组成,每个数字长 32 字节,外加一个恢复字节 (v)。签名向 L2 sequencer 证明该交易是由 pkIdentity 公钥的所有者创建的。如果没有知道私钥,则没有人可以创建有效的签名。
签名还可以保护交易免受修改。如果攻击者拦截该交易并尝试更改甚至一个字节——例如,用他们自己的承诺替换 commitment ——哈希将更改。旧签名将不再与新哈希匹配。L2 智能合约将拒绝修改后的交易。
私钥永远不会离开手机。签名是在安全 enclave (iOS) 或 StrongBox/TEE (Android) 内创建的;密钥不会通过网络传输或存储在临时文件中。签名过程大约需要 1 秒。
第 14 步:发送到网络
手机通过互联网将已签名的交易发送到 Rarimo L2。该交易进入 mempool——L2 sequencer 维护的未处理交易的队列。mempool 是等待包含在下一个区块中的交易的临时存储区域。
L2 sequencer 在接受交易进入 mempool 之前执行基本检查。第一个检查 - 用户的签名在数学上是有效的。sequencer 从 ECDSA 签名中重建公钥,并验证它是否与声明的 pkIdentity 匹配。第二个检查 - 交易格式符合与以太坊兼容的协议;所有必需的字段都存在,并且数据大小在限制范围内。第三个检查 - ETH 中的 gas 费足以处理该交易。第四个检查 - nonce 编号是正确且连续的,确保没有两次发送相同的交易。
如果所有基本检查都通过,则该交易将被接受到 mempool 中。如果甚至有一个检查失败,则 sequencer 将拒绝该交易并将错误代码返回到手机。该应用程序显示出了什么问题,并提供重试的机会。
该交易保留在 mempool 中,等待 sequencer 将其包含在下一个 L2 区块中(通常在 1-2 秒内)。网络传输需要 1-2 秒,具体取决于互联网连接的质量。第四阶段:验证者共识
第 15 步:将交易提交到 Rarimo L2
Rarimo 作为以太坊之上的 ZK rollup 运行。这意味着所有交易都在 Layer 2 上处理,而安全性和最终性来自以太坊 Layer 1。该系统使用 sequencer - 一个专门的服务器,用于接受用户交易、对其进行排序并将其批量处理成区块。
与具有 22 个验证者的旧架构不同,Rarimo L2 现在继承了以太坊的安全模型。没有单独的验证者集。相反,L2 sequencer 创建区块,并通过零知识密码学证明其有效性并锚定到以太坊主网。
你的交易到达 Rarimo L2。sequencer 接收你的交易并将其放入 mempool 中 - 一个用于未确认交易的临时等待区域。mempool 在所有 L2 用户之间共享。
sequencer 大约每 1-2 秒创建一个新的 L2 区块。此快速区块时间可确保快速的用户体验和响应能力。每个区块包含 50-300 个交易,具体取决于网络负载和计算复杂性。
从 mempool 中选择你的交易并将其包含在下一个可用区块中。sequencer 执行初始有效性检查:签名是正确的,你有足够的 ETH 用于 gas 费,并且交易格式是有效的。选择会根据 gas 价格和到达时间自动进行。
第 16 步:L2 上的 ZK 证明验证
一旦你的交易包含在 L2 区块中,sequencer 就会针对当前状态执行它。部署在 Rarimo L2 上的智能合约执行三个独立的验证。
第一个也是最关键的检查 - 你的零知识证明在数学上是正确的。L2 运行 Groth16 验证器合约,该合约通过椭圆曲线配对运算验证你的证明。验证器执行配对检查方程:e(A, B) = e(α, β) · e(L, γ) · e(C, δ)。如果此方程成立,则证明是有效的。如果不是,则证明将被拒绝。
零知识的神奇之处在于,验证者永远不会看到你的个人数据。它仅确认某人拥有满足电路中嵌入的所有 100,000 多个验证规则的有效护照数据。验证器不会看到你的姓名、出生日期、国籍或照片。它只是验证数学。
第二个检查 - 四个公共信号与证明相对应。这些信号包括:nullifier、commitment、dg1Hash 和 sodHash。这些信号在密码学上与证明本身绑定。如果不使用不同的输入重新生成整个证明,则无法更改它们。验证器确认在证明生成期间使用了声明的哈希。第三个检查 - 交易签名是有效的。合约从 ECDSA 签名中重建你的公钥,并验证它是否与来自公共信号的 pkIdentity 匹配。这证明你是用于签署交易的私钥的合法所有者。
如果所有三个检查都通过,则你的交易将被接受和执行。验证单个 Groth16 证明大约需要 2-5 毫秒的计算时间。这种效率来自优化的椭圆曲线运算和 EVM 上的预编译合约。
第 17 步:在 ZK 注册表中记录
你的交易已验证。现在,在 ZK 注册表中进行永久记录,特别是在部署在 Rarimo L2 上的 EvidenceRegistry 合约中。
EvidenceRegistry 遵循 ZK 身份注册的 ERC-7812 标准。它将承诺存储在稀疏 Merkle 树 (SMT) 结构中,该结构针对零知识证明进行了优化。该树使用 Poseidon 哈希而不是标准 Keccak256,因为 Poseidon 对 ZK 友好,并且在电路中验证起来便宜得多。
你的 32 字节承诺成为 ARST 树(任意声明树)中的新叶。假设这是叶位置 4,567,891。该树自动重新计算从你的新叶到根的路径,沿途哈希每个中间节点。
树中的每个节点都使用 Poseidon 计算为:hash(leftChild, rightChild)。重新计算会向上传播到所有级别 - 从叶到父节点,从父节点到祖父节点,依此类推 - 直到到达树根。此根是表示所有已注册身份的整个状态的单个 32 字节哈希。
在你的承诺之前,ARST 树有一个根哈希。在添加你的承诺之后,根更改为新的哈希。此新根存储在 EvidenceRegistry 合约的状态中,并成为 L2 区块链状态的一部分。
在 Rarimo L2 上确切记录了什么:
你的 32 字节承诺
注册的 Unix 时间戳
L2 区块编号
Merkle 树中的叶索引 (4,567,891)
新的树根哈希
在区块链上未记录什么:
你的个人护照数据不会进入区块链
你的照片不会进入区块链
ZK 证明本身不会永久存储(它已验证并丢弃)
四个公共信号未存储(仅承诺)
在 L2 上完成区块后,立即进行记录。此时,你已实现软最终性 - 你的身份已注册并显示在 L2 区块链上。但是,当此状态锚定到以太坊 L1 时,最终安全性会在以后出现。
第 18 步:将状态根锚定到以太坊 L1
Rarimo L2 sequencer 不仅创建区块 - 它还定期将状态根提交给以太坊主网。这就是 ZK rollups 如何继承以太坊安全性的原因。
每隔几分钟,sequencer 都会创建一个批次 - 多个 L2 区块的集合(通常为 50-200 个区块)。对于此批次,sequencer 生成一个 ZK-SNARK 证明,该证明证明:“这些区块中的所有状态转换都已根据 EVM 规则正确执行。
此批次证明已提交到以太坊 L1 上的 RollupProxy 合约,地址为 0x2F3c205613d9451f88E19E011ED23775afe00C41。L1 合约执行验证
验证 ZK 证明 - 确认密码学证明是有效的
检查之前的状态根 - 确保与上次提交批次的连续性
更新状态根 - 在以太坊 L1 上记录新的 L2 状态根
发出 StateUpdated 事件 - 通知所有侦听器 Rarimo 的状态已更改
一旦包含你的身份承诺的状态根在以太坊 L1 上最终确定,你就实现了硬最终性。你的身份注册现在受到以太坊共识机制的保护。即使 Rarimo L2 sequencer 脱机或恶意行为,以太坊 L1 上的状态根也证明你的身份存在。
从 L2 注册到 L1 最终确定通常需要 5-15 分钟,具体取决于批次频率和以太坊网络拥塞。在高 gas 价格期间,可能会不经常提交批次以优化成本。第五阶段:与其他区块链同步
第 19 步:跨链同步机制
在你的身份记录在 Rarimo L2 上并且状态根锚定到以太坊 L1 之后,下一步是使此身份在其他区块链上可验证。这称为跨链状态复制。
Rarimo 使用与以前不同的机制。不再有 TSS(阈值签名方案)。没有验证者签名。相反,该系统使用来自以太坊 L1 的状态根复制作为真实来源。
该架构的工作方式如下:Rarimo L2 → 以太坊 L1 → 目标链(Polygon、Arbitrum、BNB Chain、Base 等)。
由于状态根已经在以太坊 L1 上,因此其他链可以通过检查 L1 合约来验证 Rarimo 的状态。这创建了一个信任模型:如果你信任以太坊的共识,你就可以信任 Rarimo 的状态。
对于需要本地验证而无需每次都查询以太坊 L1 的链,Rarimo 在每个目标链上部署一个 RegistrationSMTReplicator 合约。此合约将当前状态gen 从 Rarimo L2 复制到目标链,允许 dApp 在本地验证身份承诺。
第 20 步:基于 Relayer 的状态传播
状态复制由 relayer 处理 - 一种自动服务,用于监视 Rarimo L2 的状态根更新并将它们提交给目标区块链。
任何人都可以运行 relayer。要求很简单:一台具有互联网访问权限的服务器,与 Rarimo L2 的 RPC 连接,以及在目标链上具有少量 ETH/gas余额的钱包,以支付交易费用。Relayer 为每次成功提交状态更新而获得少量激励。
目标区块链包括:以太坊、Polygon、Arbitrum、Optimism、Base、BNB Chain、Avalanche、Linea、Scroll、ZKsync Era 等。在每个链上,都在一个公开、经过验证的地址上部署了一个 RegistrationSMTReplicator 合约。
复制过程如下:
Relayer 检测到 Rarimo L2 上的新状态根更新
Relayer 创建一个签名的状态gen 包,其中包含:新的状态根哈希更新的时间戳 L2 区块编号来自 relayer 私钥的加密签名
Relayer 通过 transitionRootWithSignature(root, timestamp, signature) 将此包提交给目标链上的 RegistrationSMTReplicator 合约
RegistrationSMTReplicator 合约执行多项安全检查:
第一个检查 - relayer 的地址已授权。只有列入白名单的预言机地址才能提交状态更新。这可以防止垃圾邮件和未经授权的提交。
第二个检查 - 签名在密码学上是有效的。合约从签名中恢复公钥,并确认它与已知的预言机地址匹配。 第三个检查——时间戳是否合理(不太旧,也不在未来)。
第四个检查——状态根之前是否已提交过(防止重放攻击)。
如果所有检查都通过,合约会将其内部的 currentStateRoot 变量更新为新值。合约会发出 dApp 可以订阅的 StateUpdated 事件。现在,目标链知道了最新的 Rarimo 状态。
步骤 21:dApp 的跨链验证
一旦状态根被复制到目标链,该链上的 dApp 就可以在无需连接到 Rarimo L2 或 Ethereum L1 的情况下验证你的身份。
验证流程如下所示:
这个系统的美妙之处在于:dApp 永远不会获取你的个人数据。它只会知道你证明了对存在于全局注册表中的 commitment 的所有权。你可以通过额外的 ZK 证明有选择地披露特定属性(年龄 > 18、国籍等),而无需透露你的完整护照。
同步速度因链而异:
整个跨链复制过程需要 2-10 分钟,具体取决于 relayers 的活动和目标链的拥塞程度。复制完成后,你的身份可以在 10 多个区块链上同时验证,而无需你执行任何其他操作。最终你获得了什么。从扫描护照到全球可用性的整个过程需要 3-7 分钟。大部分时间都花在手机上生成 Zero-Knowledge 证明上,这是资源最密集的步骤。其余步骤很快完成。
完成后,你将在区块链上拥有一个功能齐全的数字身份。该 commitment 永久记录在 Rarimo L2 上的 ZK 注册表中。状态根锚定到 Ethereum L1,继承了 Ethereum 的安全性。然后,状态通过跨链复制复制到其他 10 多个区块链中。这些网络上的任何 dApp 都可以验证你的身份。
同时,你的护照数据仍然使用 AES-256 算法在你的手机上加密。没有人知道你的名字。没有人知道你的年龄。没有人知道你的国籍。没有人看过你的照片。所有个人信息都是私密的。
你可以在不透露身份的情况下证明你是人类。参与一人一票的 DAO 投票。获得全民基本收入,每个人都能获得一份款项。参与没有机器人和农场主的公平空投。访问需要人类证明但不收集 KYC 的 DeFi 协议。
你可以控制通过选择性披露来显示的内容。该应用程序请求 18 岁以上的年龄验证?只显示出生年份——护照的其余数据仍然隐藏。一项服务需要区域验证?仅显示洲或地区,但不显示特定国家/地区。一个平台想要确认你是真人?发送一个没有任何个人详细信息的 ZK 证明。
一个数字身份适用于所有区块链。Ethereum dApp 可以验证你。BNB Chain 游戏可以验证你。Polygon 社交网络可以验证你。Avalanche 平台可以验证你。到处都是相同的身份 - 无需在每个网络上再次注册。
隐私和信任不再相互矛盾。Zero-Knowledge 数学证明了真实性,而无需泄露数据。密码学保护个人信息免受泄露。区块链通过 Ethereum 经过实战考验的共识提供去中心化。ZK rollup 架构继承了 L1 安全性,同时保持了 L2 的可扩展性和隐私性。
- 原文链接: x.com/alex78157809/statu...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!