Как кольцевая подпись помогает в проверке диапазона конфиденциальных транзакций?

Основываясь на предложении Максвелла о конфиденциальных транзакциях, кольцевая подпись может решить проблему проверки диапазона. Я могу полностью следовать обязательствам Педерсена и всему остальному. Я не совсем понимаю, как кольцевая подпись помогает в доказательствах диапазона? Например, мы хотим знать, не является ли сумма биткойнов отрицательной, и мы не хотим ее раскрывать. Связь между кольцевой подписью и доказательством диапазона для меня не работает.

Ответы (1)

После долгих исследований и прочтения нескольких разных документов я нашел ответ на свой вопрос и подумал, что было бы хорошо поделиться им с другими людьми в сообществе.
Обязательство Педерсена по сумме aи ослепляющему фактору x:

C(a) = x*G + a*H

Где Gнаходится точка генератора на эллиптической кривой и Hеще одна статическая точка, с которой все согласились. (На самом деле это карта хэша Gна кривой).
Чтобы доказать, что сумма находится в пределах определенного диапазона, не раскрывая сумму, CT использует кольцевую подпись.
Допустим, Алиса хочет доказать Бобу, что сумма ее транзакции находится в диапазоне [0,y]. Если Боб вычисляет:

C' = C(1) - 1*H

Это будет равно:

x*G

Если Алиса может сделать подпись с x в качестве закрытого ключа (например, используя ECDSA), то она может проверить, что она знает x, поэтому сумма на самом деле равна 1.
Однако в конфиденциальной транзакции Алиса не хочет раскрывать сумму, поэтому вместо этого скажем если она проделает эту операцию для всех сумм, например:

C" = c(2) - 2*H

и т. д. для всех сумм до y. Затем, если Алиса делает кольцевую подпись для всех этих сумм, то она, по сути, говорит, что моя сумма является одной из сумм во всем диапазоне, не раскрывая ее. Кольцевая подпись — это подпись, которая показывает, что один из входных данных подписывает его, не раскрывая, кто.
В основном это приводит к доказательству диапазона, и Алиса успешно может доказать это Бобу таким образом, не раскрывая сумму.