cairo-vm-go icon indicating copy to clipboard operation
cairo-vm-go copied to clipboard

Add Cairo Zero Hints

Open rodrigo-pino opened this issue 1 year ago • 1 comments

Cairo Zero Hints

The following is a (big!) list of hints required by Cairo Zero. They might be an overlap between Cairo Zero hints and Cairo One hints #36 .

The list was extracted from sister VM in Go by LambdaClass where they gathered all Pythonic hints.

:eyes: For specific instructions on how to implement these hints you can check out the readme file in the zero package

Uint256 Operations

  • [x] #187
  • [x] #219
  • [x] #221
  • [x] #223
  • [x] #224
  • [x] #226
  • [x] #227

Math Operations

  • [x] IsNn: Checks if a value is non-negative within a specific range.
  • [x] IsNnOutOfRange: Checks if the negation of a value (minus one) is non-negative within a specific range.
  • [x] IsLeFelt: Determines if one value is less than or equal to another within a finite field.
  • [x] AssertLtFelt: Asserts that one value is strictly less than another within a finite field.
  • [x] #238
  • [x] IsPositive: Checks if a value is positive within a specific range and prime context.
  • [x] #239
  • [x] SplitInt: Splits an integer based on a base and asserts the result is within a certain range.
  • [x] SplitIntAssertRange: Asserts that the value for SplitInt is within the expected range.
  • [x] AssertNotZero: Asserts that a value is not zero.
  • [x] AssertNn: Asserts that a given integer is non-negative within a specified range.
  • [x] AssertNotEqual: Asserts that two given values are not equal.
  • [x] Assert250Bits: Asserts that a value is within the range of 250 bits.
  • [x] AssertLeFelt: Asserts that one value is less than or equal to another within a finite field.
  • [x] AssertLeFeltExcluded0: Custom assertion related to AssertLeFelt.
  • [x] AssertLeFeltExcluded1: Another custom assertion related to AssertLeFelt.
  • [x] AssertLeFeltExcluded2: Final custom assertion related to AssertLeFelt.
  • [x] #240
  • [x] #241
  • [x] #242
  • [ ] #243

Usort

  • [x] #244
  • [x] #232
  • [x] #233
  • [x] #234
  • [x] #235

Other

  • [ ] #246
  • [x] #247
  • [x] #248
  • [x] #249
  • [x] #250
  • [x] #251
  • [ ] #252
  • [ ] #253

Elliptic Curve Operations

  • [x] #254
  • [x] #256
  • [x] #257
  • [x] #258
  • [x] #386
  • [x] #265
  • [x] #267
  • [x] #270

Signatures (ECDSA & SEC_P)

  • [x] #271
  • [x] #273
  • [x] #274
  • [x] #275
  • [x] #276
  • [x] #277
  • [x] #278

Blake Hash

  • [ ] #279
  • [x] #312
  • [x] #281
  • [ ] #280

Keccak

  • [ ] #286
  • [ ] #287
  • [ ] #282
  • [ ] #283
  • [x] #285

Dictionaries

  • [x] #294
  • [x] #289
  • [ ] #290
  • [ ] #291
  • [ ] #295
  • [x] #297
  • [ ] #296
  • [ ] #298
  • [x] #299
  • [x] #302
  • [x] #300
  • [x] #301
  • [x] #303
  • [ ] #292
  • [ ] #293
  • [ ] #288

rodrigo-pino avatar Nov 14 '23 01:11 rodrigo-pino