В этом сообщении я предлагаю краткое начало предложения по улучшению масштабируемости, гибкости, конфиденциальности и взаимозаменяемости Bitcoin. Идея основана на истекающего кровью края криптография и требует мягкую вилку, чтобы развернуть, так что это не то, что можно было бы реализовать сразу, но я считаю, что это будет полезная площадь для проведения дальнейших исследований.
В SNARKs для C: Казни Проверка программы лаконично и в ноль знаний (Именуемая SCIP ниже), Эли Бен-Сассон и соавт. описывают свою работу на высокоэффективных неинтерактивных доказательств с нулевым знанием для верного выполнения программ, написанных на C. Эли также представленный на конференции Bitcoin.
Объяснение короткого неспециалиста их работы является то, что они построили систему, в которой кто-то может запустить произвольную программу в специальной среде, а затем опубликовать очень компактное и быстро-отмечаемое доказательство, которое убедит любой, что 1) они запускали программу добросовестно ( например, без изменения или фальсификации) и 2), что программа "принято" (Например, завершился с возвращением истинного;) с заданным набором общественных входов и (необязательно) дополнительные непубличных входов. Потому что их система обеспечивает вычислительное нулевое знание, выполнение программы может зависеть также от любых непубличных входов и валидатор не узнает о них ничего сверх того, что программа принята.
Математика за это весьма плотной, начиная с Неожиданный результат от более чем двадцать лет назад, что все программы могут быть преобразованы в интерактивные доказательства, они применяются много слоев методов для построения конкретной системы с производительностью, которая на самом деле можно было бы использовать, а не только доказательство того, что доказательства программ возможны.
Я предложил несколько интересных идей о том, как использовать этот вид технологии с Bitcoin, которые не требуют каких-либо изменений в Bitcoin себя в другом месте. Но если добавить технологию непосредственно Bitcoin некоторые более интересные вещи становятся возможными.
Одним из очевидных применений этой идеи состоит в том, что она может заменить скрипт в Bitcoin. Вместо внедрения правил, которые регулируют выход внутри blockchain, вы бы вместо того, чтобы встраивать доказательство того, что правила были следовать. Вместо того, чтобы все проверки, что сделка была разрешена тратиться, они вместо того, чтобы проверить, что вы проверили.
Это сам по себе интересно, как это сделало бы возможным гораздо более мощные сценарии, не нагружая сеть с их исполнением, но улучшения в сценарий не очень захватывающие, когда существующая система до сих пор в основном используется. Кроме того, проверка SCIP доказательств несколько медленно по сравнению с ECDSA (по порядку, скажем, в несколько сотен раз медленнее), и хотя весы отлично большинство сделок очень просты только один хэш и операции ECDSA.
Здесь я предлагаю один очень интересный способ эта функциональность может быть использована.
Давайте представим себе, что мои друзья и я согласны на наборе правил для проверяемой транзакционной системы от цепи. От "проверяемый"Я имею в виду, что если пользователи записать стенограмму деятельности для одной монеты, они могли бы показать стенограмму к третьей стороне, а третья сторона будет убеждена, что система правильно вести себя и будет знать, кто в конечном итоге владелец монета.
Вот два примера системы, которые отвечали бы критериям, что:
Anti-переигровка оракул основе
Алиса цифровой монета: монета = {значение, Публичная Алисы, расшифровка истории монеты}, и хочет, чтобы назначить его Бобу.
Боб говорит Элис Hash (Публичных Боб) = HB.
Алиса вычисляет Hash (монета) == HC, а также знак (HB) == SHB.
Алиса контакты доверенного против переигровки оракула, рассказывающего его {HC, SHB}.
Отдача оракул Войти ({HC, SHB}) тогда и только тогда, когда он не подписывал то, которое началось с HC раньше.
Алиса передает эту информацию на Бобу, вместе с монетой. Боб проверяет историю монеты и удовлетворен тем, что он имеет действительную монету, которая не было дважды израсходовано.
Это может продолжаться и дальше, передавая монету от партии к партии, создавая постоянно растущую расшифровку. Это может быть тривиально расширен с помощью M из N анти-повторного воспроизведения оракулов или других аналогичных усовершенствований. Анти-переигровка оракулов это использование доверенно не переигрывать, но так как они имеют дело только с хэш они ничего не узнают о сделках (или даже, что они используются для валюты, как потребительное это может быть просто проставление даты для всех оракул может сказать). Такой оракул может быть доверенным оборудование, верности кабальных, обеспеченного наемным txout, что вы можете выкупить тогда и только тогда, когда вы можете опубликовать доказательство показывает повтор и т.д.
Blockchain основе
Алиса имеет Bitcoin, который представлен цветная монета в какой-то другой конкретной blockchain, возможно, географическим конкретных blockchain.
Алиса передает Бобу по сделкам в обычном порядке.
Боб может сформировать проверяемый транскрипт, захватывая каждую операцию вдоль пути окрашенной монеты вместе с КСНЫ фрагментами, соединяющие их с цепью и некоторые дополнительные blockchain заголовков, чтобы показать транзакции адекватно похоронены.
(Я представил два примера здесь, чтобы сделать точку, что идея полностью целом. Любую другую систему с проверяемым свойством, например OpenTransactions, сложные из них, связанных с голосованием всех участниками, или даже тривиальными, которые не имеют двойную профилактику расходов, мог бы можно использовать. Хотя они работают лучше, если построены для очень эффективной проверки.)
Идея, которую я звоню CoinWitness это:
Вы записать небольшую программу, которая проверяет верность одного из этих транскриптов для выбранной проверяемой системы от цепи. Программа требует, чтобы последняя сделка в стенограмме особенная в том, что он платит в Bitcoin scrippubkey / p2sh. Этот же адрес также должен быть предоставлен в качестве вклада общественности к программе. Мы называем эту программу "свидетель" потому что он будет свидетелем расшифровку и принять, если и только если расшифровка является действительным.
Затем с помощью СКИПА стойкой системы, чтобы преобразовать программу в проверочном ключ. Когда кто-то хочет создать Bitcoin в системе вне цепи, они платят эту монету в хэш этого ключа проверочного. Люди тогда сделки в системе вне цепи, как они хотят. Для того, чтобы быть уверенными в том, что система работает точно они могли бы повторить проверочный ключ процесс генерации вычислительно-дорогой, чтобы убедиться, что он соответствует правилам сделки они ожидают.
Когда пользователь одного из этих монет хочет выйти из системы (уплотнить свою историю, чтобы перейти на другую систему, чтобы провести простой Bitcoins, или по любой другой причине), они формируют окончательную сделку оплачиваемой в Bitcoin адрес, и запустить свидетель на их транскрипте под SCIP и произвести доказательство. Они создают сделки Bitcoin дорожа монету, обеспечивающее доказательство в их сценариях (но не расшифровка, то будет приватное), а сеть Bitcoin проверяет доказательства и вывод транзакции. Публика ничего не узнает о промежуточных операциях, улучшении взаимозаменяемости, но в отличии от других идей, которые улучшают взаимозаменяемости этой идея имеет потенциал и улучшить масштабируемость Bitcoin и надежно интегрировать новые и новаторские методы альтернативной транзакции и расширение нулевого доверия характера Bitcoin к более видов сделок ,
Открытые проблемы:
Это зависит от новых криптографических методов, которые могут иметь недостатки безопасности и может иметь много возможностей для улучшения производительности. Использование этого требует добавления программного обеспечения проверки в сети Bitcoin, которая затем фиксирует определенный формат доказательства в камне.
Проверка СКИП доказательства медленно наш стандарт. В работе они дают пример из их реализации на хосте 2,4 ГГц, где проверка доказательства (которое длится всего 2576 бит для 80-битной безопасности) на небольшой вклад общественности (что имеет место для CoinWitness) занимает 100 мс. Это достаточно быстро, что он на самом деле может быть жизнеспособным без дальнейшей оптимизации с учетом потенциала для сжатия нескольких операций в одну.
СКИП ВБИ является чрезвычайно медленно по нашим меркам. В примере, приведенном в своей статье для программы 100-команд, которая выполняется в течение 11001 циклов, доказательство поколение занимает 155 минут. Proof время в основном линейна с числом операций, так чего монету с длинным транскрипта обратно в цепи может быть вычислительно непомерно высока. Однако, так как это делается отходящими цепи, он по крайней мере, ставит работу с заинтересованной стороной вместо экспортирования его на всей Bitcoin пользователей системы. (И, вероятно, много места, чтобы улучшить работу с программной инженерией, в частности, проблема очень параллелизуемая)
Ключи SCIP должны иметь верхнюю границу количества операций, выполняемых программой запеченной в них. Это приводит к максимальной длине транскрипта, которое должно быть совершено в заранее.
Я считаю, что все эти проблемы решаемы, во время, за исключением каких-либо действительно интересные криптографические перерывов в подходе.
Эта идея CoinWitness является чем-то менее амбициозным примером того, что предложил Эли в своем докладе эффективно работает blockchain проверки под SCIP производить UTXO контрольно-пропускные пункты, которые имеют криптографические доказательства их правильность. Но вместо проверки всех операций от общественного blockchain, здесь я предлагаю проверки небольших последовательностей частный сделки, чтобы избежать когда-либо делает их достоянием общественности на всех, и, при этом, улучшить масштабируемость, гибкость, конфиденциальность и взаимозаменяемость Bitcoin. (И в самом деле, эта идея на самом деле может быть тривиальным очевидной для тех, кто работает на SCIP инструментах, но я ожидаю, что это будет дуть некоторые умы здесь).