事实注册表合约

事实注册表合约

事实注册表的设计模式是一种将声明验证从合约流程的业务逻辑中分离的方法。
事实注册表包含经过验证的“事实”的哈希表,这些哈希声明经注册表检查并证明有效。 可以通过使用给定哈希值,访问注册表的isValid(有效)函数来查询该表。
此外,每个事实注册表公开了特定的注册功能,用于提交新的声明及其证据。 根据需要验证的事实类型,提交的信息在每个注册表之间也有所不同。
‌有关Fact Registry(事实注册表)设计模式的更多信息,请参见此 blog post(博文)。
‌ StarkEx使用以下事实注册表:

适用于Cairo程序的STARK验证器

Verifies(验证)用Cairo编写的程序。 具体地,它验证对输入数据D执行Cairo程序P的计算的完整性以及执行后系统状态的正确性。
验证器将输入程序P的哈希作为输入的一部分。

委员会签名验证器

‌在Validium模式下Verifies(验证)可用性证明。 如果无效,则返回。 可用性证明应包含由签名者串联的签名表格。 签名应按签名人地址进行升序排列。 签名应为65个字节长。 r(32)+ s(32)+ v(1)。 签名人数量至少应达到本合约中defined(定义)的要求数量,并且提供的所有签名均应来自签名人。
‌有关何时使用此功能的更多信息,请参见可用性验证器。Availability Verifiers委员会签名验证器

逃生验证器

Verifies(验证)保险库的内容属于某个特定Merkle承诺(根)。
Merkle承诺使用以下描述的Pedersen哈希变体:
哈希常数:椭圆曲线上504个点的pi序列和一个附加的
ecshiftec_{shift}
输入:504位b i ​的向量
输出: 252位X
(ecshift+ibipi)(ec_{shift} + \sum_i b_i*p_i)
的坐标
下表描述了预期的escapeProof(逃生证明)格式。 请注意,与标准Merkle证明不同,escapeProof(逃生证明)包含Merkle路径上的节点及其同级。 此证明以预期的根和要用于提交证明的保险库的ID结尾(它表明了节点在Merkle树中的位置)。
starkKey (252)
assetId (252)
zeros (8)
hash(starkKey, assetId) (252)
quantizedAmount (252)
zeros (8)
left_node_0 (252)
right_node_0 (252)
zeros (8)
left_node_n (252)
right_node_n (252)
zeros (8)
root (252)
zeros (4) | vaultId (248)
zeros (8)
如果证据被接受,则将其记录在以下声明Hash(哈希)中,以后可以被用于有效性查询:
claimHash = keccak256(starkKey, assetId, quantizedAmount, vaultRoot, treeHeight, vaultId)
声明哈希 = keccak256(starkKey,资产ID,量化数量,保险库根,树高,保险库ID)
有关何时使用此功能的更多信息,请参见Escapes(逃生)
Last modified 6mo ago