Слепой Платежеспособность Proof Схема
Привет всем, это мой первый пост здесь. Я работаю на схему и связанный с набором инструментов, что обмен (общий кошелек) можно использовать, чтобы доказать, что они платежеспособны в достаточной степени уверенности, защищая конфиденциальность своих пользователей. Схема основана на gmaxwell лет "доказать-how- (не) -дробно-Your-Bitcoin-резервы-схемы являются", (https://iwilcox.me.uk/2014/nofrac-orig).
https://raw.github.com/olalonde/solvency-verifier-extension/master/docs/screenshot.png
Github репозиторий: https://github.com/olalonde/blind-solvency-proof
Спецификация еще проект и улучшения / критика / тяговые запросы приветствуются. Родственная белая бумага будет опубликована некоторое время на следующей неделе разработку на концепции и внедрение новых. Пожалуйста, используйте вопросы GitHub по техническим вопросам.
Покажите свою поддержку: 1ECyyu39RtDNAuk3HRCRWwD4syBF2ZGzdx
Есть 3 компонента на схеме: ответственность доказательство, доказательство активов и проверка платежеспособности.
доказательство ответственности
https://github.com/olalonde/blind-liability-proof
Доказательство ответственности производится широко публикуя корень дерева доказательства и распределения частичных деревьев для пользователей, чтобы они могли убедиться, что они были включены в дерево.
Полное дерево доказательства
Полное дерево доказательства является бинарным деревом, где листовые узлы представляют все учетные записи пользователей и внутренние узлы, сгенерированные с помощью функции NodeCombiner, описанной ниже.
Полное дерево должно быть приватным оператором для того, чтобы защитить конфиденциальность своих пользователей. Только корневой узел должен быть puslished публично и каждый отдельный пользователь должен иметь частный доступ к своему собственному частичному доказательству дерева.
Внутренний узел (функция NodeCombiner)
Внутренние узлы генерируются с помощью функции NodeCombiner, описанной ниже.
Значение узла равно сумма значений его два дочерних узла.
хеширования узла равно к SHA256 его стоимости сцепленных с хэши своего ребенка.
Код:
Функция NodeCombiner (left_node, right_node) {
вар п = {};
n.value = left_node.value + right_node.value;
n.hash = sha256 ((left_node.value + right_node.value) + '' + left_node.hash + '' + right_node.hash);
вернуться п;
}
вар п = {};
n.value = left_node.value + right_node.value;
n.hash = sha256 ((left_node.value + right_node.value) + '' + left_node.hash + '' + right_node.hash);
вернуться п;
}
узел Leaf
Листовые узлы представляют учетные записи пользователей. Они обладают следующими значениями:
Пользователь: Уникальный идентификатор для пользователя. Это необходимо для пользователя, чтобы оценить уникальность этого значения, поэтому рекомендуется использовать его имя или адрес электронной почты.
Nonce: случайный Nonce, чтобы предотвратить его neighboor узла от обнаружения его значения пользователя
Значение: баланс пользователя.
Хэш: A sha256 хэш пользователя concanetated с одноразовым номером.
Корневой узел
Корневой узел дерева, как и все внутренние узлы обладает хэш и значение. Эти данные должны быть опубликованы публично, как способ доказать, что все пользователи являются частью одного и того же дерева доказательства.
Частичное дерево доказательства
Частичное доказательство содержит только узлы из полного корня данного пользователя должен убедиться, что он был включен в дереве.
Он может быть сформирован исходя из листового узла пользователя и двигая вверх по дереву до достижения корневого узла. Тогда братья каждого выбранного узла на пути должны быть добавлены к дереву. Абонентская лист родственный, который также является узел листа должен быть лишен своими пользователями и Нонсом значений, так что только хэш и значение остаются.
Частичные деревья должны быть раскрыты в частном порядке для каждого индивидуальных пользователей, чтобы они могли проверить доказательство.
доказательство активов
https://github.com/olalonde/bitcon-asset-proof
В настоящее время, доказательство актива просто сделано с подписанием описательного сообщения, используя все ваши личные ключей. Этот метод имеет существенные ограничения, и я хотел бы услышать улучшения / альтернативные предложения.
проверка платёжеспособности
https://github.com/olalonde/solvency-verifier-extension
Проверка платежеспособности осуществляется путем:
1) Проверка доказательства ответственности
2) Проверка доказательства активов
3) Проверка, что активы - обязательства >= 0
Расширение Chrome в настоящее время имеет некоторые ограничения. С одной стороны, пользователи должны вручную проверить с другими пользователями, что они были даны одинаковые значения хэш-корень. Они также должны убедиться, что весы, используемые в доказательстве ответственности является правильным.
Рекомендации
Особая благодарность gmaxwell за помощь в IRC.
IRC журнал: https://iwilcox.me.uk/2014/nofrac-orig
HN нить: https://news.ycombinator.com/item?id=7277865
Reddit резьба: http://www.reddit.com/r/Bitcoin/comments/1yzil4/i_implemented_gmaxwells/
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Эта схема является проектом и могут быть изменены.
Обратная связь, вопросы и конструктивный критика приветствуются!