Отправка конфиденциальной суммы транзакции получателю

В конфиденциальной транзакции, предложенной Максвеллом, вместо суммы транзакции мы используем обязательства педерсена, чтобы скрыть сумму и добавить к транзакции доказательство диапазона, чтобы предотвратить переполнение. Простое обязательство с одним входом и одним выходом C1 и C2 выглядит следующим образом: (для простоты игнорируйте комиссию)

C1 = C2 => BF1*G + a*H = BF2*G + a*H 

где в этом примере BF1 = BF2очевидно, поскольку он имеет только один вход и выход.
Как отправитель отправляет сумму и ослепляющий фактор получателю? Получатель может проверить правильность суммы! Я заметил, что Максвелл сказал, что они используют ECDH. Я предполагаю, что для ECDH нет дополнительного канала связи. Тогда как отправитель получает открытый ключ получателя? и должен ли отправитель раскрывать в ECDH как фактор ослепления, так и сумму?

Ответы (1)

В Elements Alpha выходные «суммы» состоят из 3 частей данных:

  • Приверженность Петерсена ценности, ослепленная ослепляющим фактором.
  • Доказательство диапазона, которое может публично доказать, что значение находится в диапазоне [0..2^32-1] единиц (сатоши), не раскрывая ничего о ослепляющем факторе.
  • Эфемерный открытый ключ ECDH отправителя.

Последнее и есть решение. Каждый адрес конфиденциальной транзакции содержит открытый ключ ECDH получателя ( слепой ключ ) в дополнение к обычным данным P2PKH или P2SH.

При отправке транзакции CT отправитель выбирает эфемерный закрытый ключ ECDH и комбинирует его с ослепляющим ключом для получения ослепляющего начального числа . Это начальное число используется в качестве основы для генератора случайных чисел для создания доказательства диапазона. Публичная версия эфемерного ключа затем записывается в 3-м поле суммы.

Когда получатель видит этот эфемерный открытый ключ ECDH, он комбинирует его со своим закрытым ослепляющим ключом, чтобы получить то же начальное число, которое использовал отправитель. Используя это же начальное число, он может «отмотать» доказательство диапазона и расшифровать секретную информацию, которая использовалась при его создании: значение и коэффициент ослепления. На самом деле в доказательстве диапазона есть место для еще 2 килобайт данных, видимых только получателю (или любому, у кого есть секретный ослепляющий ключ).

Под случайным числом для создания доказательства диапазона вы имеете в виду ослепляющий фактор обязательства? Насколько я знаю, ослепляющий фактор в кольцевой подписи доказывает доказательство дальности. Если да, то ослепляющий фактор генерируется из семени? Могу я узнать, что это за семя?
Если доказательство диапазона охватывает только значения до 2 ^ 32-1, означает ли это, что вы не можете отправить более ~ 42,9… биткойнов с помощью CT?
@abeikverdi Нет, начальное значение не является ослепляющим фактором. Это основа для случайности, которая входит в кольцевые подписи внутри доказательств диапазона. Делая случайность детерминированной, получатель может «отменить» доказательство диапазона, зная, какая случайность входит в него.
@Murch На самом деле диапазон может быть выбран от 2 до 64 бит случайности, но этот диапазон является общедоступным. Таким образом, вы можете использовать более широкий диапазон, но это указывает на то, что вы совершаете больше сделок. Конечно, вы всегда можете использовать более крупные диапазоны даже при транзакциях на небольшие суммы, но это увеличивает цену.