-
Notifications
You must be signed in to change notification settings - Fork 65
Ib/hash map gadget #18
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
в детали нужно чтоб @shamatar и @alexander-movchan посмотрели.
@@ -644,6 +644,22 @@ impl Boolean { | |||
} | |||
} | |||
|
|||
/// Perform OR over two boolean operands | |||
pub fn or<'a, E, CS>( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
его точно не было? спрашивал у @shamatar ?
cs.namespace(|| "zero value"), | ||
|| Ok(E::Fr::zero()) | ||
)?; | ||
cs.enforce( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
здесь не принципиально, но вообще-то есть тип expression чтобы такого не делать
) -> Result<Vec<AllocatedNum<E>>, SynthesisError> | ||
where CS: ConstraintSystem<E> | ||
{ | ||
if (self.is_finalized) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а вот это можно интересно решить на уровне компилятора раста: посмотри как работает стандартная функция drop()
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
похожим образом ты можешь сделать так, что гэджет можно будет финализировать ровно один раз и никто не ошибется. но может быть это черезчур заморочка.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Это делается маркер-трейтом в темплейте
} | ||
} | ||
|
||
/// AS-Waksman permutation network |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Если это ваксман, то зачем было это писать для начала?
Ну и главный вопрос - зачем все это? На каких размерах это эффективнее чем дерево с хорошим хэшом? |
pub fn new<CS>( | ||
mut cs: CS, | ||
fields_in_value: usize, | ||
default_value: Option<Vec<AllocatedNum<E>>>, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Option тип только для витнесса
mut cs: CS, | ||
fields_in_value: usize, | ||
default_value: Option<Vec<AllocatedNum<E>>>, | ||
key_bitlength: Option<usize> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Тоже не нужен Option, гаджет всегда должен иметь заранее известный размер
&mut self, | ||
mut cs: CS, | ||
key: &AllocatedNum<E>, | ||
new_value: Option<&Vec<AllocatedNum<E>>> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Аналогично, тут не может быть Option
Нужно описание гаджета, что делает, какая логика энфорсмента |
Да, формулы сравнения констрейнтов важно дописать в комментариях. |
No description provided.