Можно ли реализовать zk-snarks в этом сценарии использования?

Я хочу сделать что-то похожее на децентрализованное приложение для конкурса популярности домашних животных. Насколько я понимаю, это будет включать неинтерактивное доказательство с нулевым разглашением.

Есть приложение со списком питомцев, участвующих в конкурсе популярности. К каждому питомцу прикреплен счетчик популярности.

      // Pseudo-code
petList = [Cobra, Elephant, Lion, Vulture]
petList[0].popularityMeasure = 0; 
petList[1].popularityMeasure = 0; 
petList[2].popularityMeasure = 0; 
petList[3].popularityMeasure = 0; 

Каждый человек выражает свой выбор, вызывая функцию смарт-контракта, например:

      function sayMyChoice(witness) // witness is some sort of proof containing the name of the animal I'm opting for

Затем смарт-контракт проверяет

          function sayMyChoice(witness) {
   for(int i=0; i<petList.length. i++) {
       if(witness == petList[i])
          petList[i].popularityMeasure+=1;

   } 

}

Прилавки должны быть общедоступными, но вы понятия не имеете, кто выбрал какое домашнее животное.

Мой вопрос состоит из нескольких частей:

  1. Возможно ли это со смарт-контрактами и zk-snarks?
  2. Если нет, то как я мог это сделать?
  3. Если да, есть ли какое-либо руководство по реализации чего-то подобного с использованием Solidity и JavaScript?

Я предполагаю, что доказательство должно быть вычислено на стороне клиента, но проверка должна происходить в смарт-контракте.

0 ответов

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