Входная строка переменной длины в circom?

Я хотел бы показать, что пользователь знает прообраз хэша sha256 в circom. Прообраз может быть любой длины, но реально от 100 до 700 байт. Я пробовал код:

      template ArbitraryLengthSha256 () {  
   signal input nBits;
   signal input preimage[nBits];  
   signal output result[256];  
   var i;
   component hashed = Sha256(nBits);
   for (i=0; i<nBits; i++) {
      hashed.in[i] <== preimage[i];
   }
   for (i=0; i<256; i++) {
      result[i] <== hashed.out[i];
   }
}

что приводит к ошибке:

      error[T20460]: Typing error found
  ┌─ "ppp.circom":8:26
  │
8 │    signal input preimage[nBits];  
  │                          ^^^^^ The length of every array must known during the constraint generation phase

error[T20461]: Typing error found
   ┌─ "ppp.circom":14:23
   │
14 │    component hashed = Sha256(nBits);
   │                       ^^^^^^^^^^^^^ Every component instantiation must be resolved during the constraint generation phase

error[T2005]: Typing error found
   ┌─ "ppp.circom":15:14
   │
15 │    for (i=0; i<nBits; i++) {
   │              ^^^^^^^ There are constraints depending on the value of the condition and it can be unknown during the constraint generation phase

Есть ли способ сделать хэш sha256 строки произвольной длины в circom?

0 ответов

Другие вопросы по тегам