跳到内容

starkware-libs/形式证明

存储库文件导航

使用精益方法进行开罗验证

目录

此存储库包含许多相关项。

  • 文件夹src/starkware/cairo/lean/setmantics包含开罗语义的精益形式化,如自述文件该目录中的文件。

  • 文件夹src/starkware/cairo/lean/verification公司包含Python应用程序,开罗验证.py,它将普通CairoZero编译器扩展到成功校样制作验证器生成编译代码的精益描述,源代码的Hoare-style规范,并证明编译的代码符合与上述执行语义相关的规范。用户可以添加自己的规范,证明它们符合规范,然后使用精益验证编译后的代码也满足其规范。

  • 文件夹src/starkware/cairo/common公司包含CairoZero核心组件的正式规范公共图书馆,包括数学图书馆和挤压_剪切()程序。它还包含证明这些规范相对于验证器生成的规范。

  • 文件夹src/starkware/cairo/common/cairo_secp包含用于检查加密签名的CairoZero代码的正式规范使用Secp256k1椭圆曲线,以及证明这些规范相对于规范是正确的由验证器生成。具体请参见规范_恢复_公共密钥在里面签名_规格.lean.您可以在cairo-lang储存库.

  • 文件夹src/starkware/cairo/common/cairo_secp/验证包含签名_recover_public_key.cairo,其唯一目的是发送恢复公共密钥以及它依赖于验证器的代码。该目录还包含验证器自动生成的所有精益文件。使用Lean检查这些文件,这些文件导入上一项中的规范,结果是机器代码的完整验证恢复公用密钥达到其高水平规范。

  • 文件夹src/starkware/cairo/common/secp256r1包含Secp256r1椭圆曲线操作的形式规范,以及证明这些规范相对于规范是正确的由验证器生成。

  • 文件夹精益4包含到精益4的Cairo语义的端口。遵循中的说明自述文件在那里归档以使用它们。我们的验证精益4的基础设施仍在进行中,这些文件可能会更改。

所有CairoZero规范都对应于开罗-v0.13.1库。默认值规范文件和端到端的稳健性证明都是由验证器。需要进行两次手动修改:常量SECP_REM段*,测试版*,底座3_MOD*、和基底_MOD*在里面秒256r1/constants_spec.lean被手动键入为整数而不是自然数,以及秒256r1/verification/ec_alloc_soundness.lean被替换为琐碎的.

这个开罗-v0.13.1验证器尚未公开。验证者和例子在里面src/starkware/cairo/lean/verification公司符合开罗-v0.10.1.

出版物

新增功能

以下是出版物中未涉及的一些新内容:

  • 我们已经验证了CairoZero公共库中的更多程序,例如挤压_剪切()程序。

  • 我们已经验证了Secp256r1椭圆曲线的椭圆曲线运算的正确性新开罗编程语言中使用的。

  • 我们使用了Angdinata和Xu的作品为了建立椭圆曲线加法定律的结合性,闭合了第二次出版。

安装程序

使用精益验证证明的正确性(由验证器或为AIR编码或secp签名手动编写的验证器),您需要已安装贫3:

https://leanprover-community.github.io/lean3/get_started.html

如果您使用git克隆而不是精益项目获取,使用

精益项目get-mathlib-cache

获取数学库的编译版本。

用法

要检查Cairo执行语义的代数编码的正确性,请运行

精益--使*.精益

在里面src/starkware/cairo/lean/stemantics/air_encoding.

验证公共库中核心函数相对于验证器生成的规范,运行

精益--使*.精益

在里面src/starkware/cairo/common公司。完整验证编译代码的正确性挤压_剪切关于CPU执行语义,运行

精益--使*.精益

在里面src/starkware/cairo/common/verification.

验证Secp256k1签名验证程序的正确性根据验证器生成的规范,运行

精益—使signature_spec.lean

在里面src/starkware/cairo/common/cairo_secp。对于完整验证编译代码在CPU执行语义方面的正确性,运行

精益--使*.精益

在里面src/starkware/cairo/common/cairo_secp/verification/verification.您将收到以下警告:椭圆曲线.lean使用对不起的。这是指椭圆曲线定律的结合性,我们在没有证明的情况下断言。

要验证CairoZero secp256r1操作相对于验证器生成的规范的正确性,请运行

精益—使ec_spec.lean

在里面src/starkware/cairo/common/secp256r1。对于完整验证编译代码在CPU执行语义方面的正确性,运行

精益--使*.精益

在里面src/starkware/cairo/common/secp256r1/验证.您将收到以下警告:椭圆曲线.lean使用对不起的。这是指椭圆曲线定律的结合性,我们在没有证明的情况下断言。

尝试验证程序的版本开罗-v0.10.1,请按照自述文件中的文件src/starkware/cairo/lean/verification/examples/math.

关于

未提供描述、网站或主题。

资源

星星

观察者

叉子

发布

未发布版本

包装

未发布包