Ethereum talk

В ноябре 2018 в очень уважаемом мной интернет СМИ я заметил две публикации об уязвимостях Ethereum. На фоне общего падения крипторынка эти новости могли быть восприняты широкой аудиторией как негатив в сторону самой платформы Ethereum. Я и мои коллеги в IberGroup около двух лет занимаемся разработкой смарт контрактов на этой платформе. Поэтому считаю важным сделать небольшой разбор этих двух кейсов.

Итак,  речь пойдёт о двух публикациях ForkLog: 

  1. В сети появились сообщения об уязвимости в виртуальной машине Ethereum
  2. Раскрыты детали позволяющей опустошать кошельки криптовалютных бирж уязвимости

1. Уязвимость виртуальной машины

Collapse )

ГЧП и блокчейн

Ко мне обратились с предложением оценить возможность использования блокчейна в ГЧП. Да,  знаю - старый баян, холивар и т.п.  Но  сам  факт обращения заставил  меня собрать в кучу  некотоорые мысли - так что  пусть  повисит здесь.

Посмотрел, идея понятна: сделать прозрачную систему отражения исполнения обязательств сторон в процессе ГЧП. Единственное что я пока не понял - в какой позиции выступает заказчик? Он в этой схеме кто? Одна из сторон ГЧП? Консультант? Или? Ну это на данном этапе не очень важно наверное.


Мой краткий отзыв: технически -да, тема «летает», но по-разному, в зависимости от того, в каком это будет правовом поле. Попробую объяснить. Вопрос очень не простой.


Для начала в двух словах о блокчейне, без этого дальше не пройти. Предельно упрощая и огрубляя. Блокчейн, технически — это просто подход к хранению информации, и не более того. Информация хранится одновременно у всех участников этой одноранговой сети(в этой сети все узлы равны по привилегиям между собой) - другими словами система является распределенной. Использование криптографии позволяет создать прозрачные механизмы контроля целостности и неизменности данных, а встроенный в технологию механизм экономического стимулирования (=майнинг) создает мотивацию узлов самим соблюдать правила Сети и контролировать соблюдение этих правил другими. И именно эти свойства, позволили на базе блокчейна создать распределенную (т.е. без одного главного центра) информационную систему передачи ценности (value), другими словами — криптовалюту. Важно понимать, что хоть криптовалюта и является частным продуктом, который сделан на блокчейне — без криптовалюты блокчейны не «летают». Ну или летают, но «низэнько — низэнько».

Смарт-контракт - это суть  программа, но  она  работает  на блокчейне. Работает так -как  договорились на старте,  как написано в коде. Её  нельзя изменить, но и исправить ошибки в ней тоже невозможно.

И ещё  важное  дополнение. Есть полностью децентрализованные публичные блокчейны (любой может стать их участником) - примеры Биткоин, Эфириум. А есть  - частные, в которых правила чтения/записи задаются одной организацией, либо  консорциумом организаций. (Подробней о такой классификации блокчейнов написано здесь: https://blog.ethereum.org/2015/08/07/on-public-and-private-blockchains/ )


А вот теперь можно перейти к применимости блокчейна  для  ГЧП - аспектов и кейсов применения может быть много, посмотрим лишь на некоторые.



Расчеты между участниками по сложным договорам можно поручить смарт-контрактам публичного  блокчейна Эфириум, но  для этого  стороны должны  проводить расчеты в криптовалюте. Правовой статус криптовалют  в  РФ  не определен, тем более расчеты между в ней  между ЮЛ.


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


Можно делать  тоже  самое (1 и 2),  но на “своем” блокчейне. Нужно только  понять,  кто  будет в нём участвовать и почему (стимулы). По такому  пути идут ЦБ РФ и Ко со своим “Мастерчейн” ( http://masterchain.rbc.ru/ )  и R3 (https://www.r3.com/ )

Про коммерческий  проект. Тема   бизнес модели всего этого - отдельный большой вопрос. Самое  простое  решение - создать  платформу, на  которой будут встречаться стороны  ГЧП и фиксировать свои договоренности. Но здесь  вопрос принципиальный, возможно даже идеологический. Блокчейн=децентрализованность. И призван убирать/замещать посредников. Например банки. Но  в  нашем случае получится,  что мы одного посредника заменили другим - держателем самой платформы. И может  так  случится,  что такая “децентрализация” будет дороже,  чем классическая банковская централизация.

Ответы Виталика от 04.03.2017_из секты

1. Когда нам ждать следующее обновление – Метрополис, что он принесёт с собой, какие возможности, что будет улучшено, что изменено?

  • главные части метрополиса будут: (1) precompile для elliptic curve pairings, чтобы можно было еффективно верифицировать zk-snark, (2) абстракция аккаунтов (чтобы можно было сделать аккаунт с любыми правилами и с любой кроптографией, не только еллиптичеькие кривые), (3) precompile для еще несколчко видов криптографии, (4) более еффективный протокол для light client-ов, (5) несколько маленьких изменений чтобы решить маленькие проблемы в протоколе (на пример, сейчас, слижком большая инцентива большому пулу майнить uncles вместо обычных блоков)

2. Расскажи более подробно о Райден а так же о Swarm технологии, будут ли они реализованы на эфире, когда это примерно может быть, какие изменения это принесёт?

  • 2. райден это технология похожая на lightning network на биткойне; цель этой системы это использовать технологию каналов чтобы можно было сделать гораздо больше транзакций в каждую секунду, даже если можность самого блокчейна низкая. я думаю что оны в этом году выпустят какуюто первую версию

3. Будет ли Зснарк интегрирован с эфириумом, какие нововведения это принесёт, когда возможно воплощение этого проекта?
Collapse )
4. Что ты можешь рассказать про Ethereum Enterprise, от первого лица так сказать, какое применение в этой части эфириум технологиям ты видишь в ближайшее время и в будущем?

  • 4. EEA это независимая организация из компаний, включая стартапы, банки, софтвер-компании и другие компании которые делают приминения для enterprise use cases над ефириумом. Проблемы которая эта организация планирует решать включают стандардизация часных и консортиум чейнов, интерфеис между блокчейнами и другими системами, и проблемы конфиденциальности, безопасности и масштабируемости. в этой организации есть компании из многих индустрий, и у многих из них есть свои интересные проекты и применения; хотя сама организация будет больше фокусироваться на более низко-уровневые проблемы

5. Как долго ты планируешь развивать проект эфириум? Планируешь ли ты на каком то этапе покинуть проект, поручив его развитие другому лидеру? Ты занимаешься какими то еще другими проектами, связанными с крипто, но не связанными с эфириумом?

  • 5. пока планов покинуть ефириум или много своего времени гдето еще проводить нет. Через 2-3 года посмотрю на ситуацию проекта.

6. Было предложение об уменьшении количества монет в блоках эфириума с 5 на 3 или 2, или с применением градации по времени, на Реддит так же обсуждался этот вопрос. Что ты думаешь по данному предложению сейчас, его реализация планируется в будущем?

  • 6. чесно я не сейчас думаю что не стоит слижком много времени тратить на этот вопрос; мы следующим году должны перейти на PoS, и если в это время количество всего эфира вместе 97м или 100м, разница не такая большая. Лучше будет вместе работать дойти то начала перехода на PoS, и токда можно безопасно сильно унизить количество эфира которое каждый день добавляеться в систему

7. Так будет ли ПОС на эфире когда то, пусть даже примерно?, это завязано на реализацию именно Каспера?, то есть очередного обновления после Метрополиса?

  • 7. сейчас самое вероятное выглядит что будет переход из нескольких этапов, с начала от PoW до hybrid PoW + PoS, потом долю PoS повысить, и потом в конце концов покинуть PoS. кочеться в этом году начать первый этап

8. Если переход на PoS будет долгим, что нас ждет с timebomb?

  • 8. нужно будет в метрополисе на год или полтора задержать

9. Ранее ты говорил, что цена на эфир будет 4. Можешь сейчас рассказать что ты имел в виду тогда? Как ты считаешь, когда уже эфир будет стоить 100 долларов за 1 монету?

  • 9. это была шутка :) я сказал что будет 4, но не сказал 4 чего. Может быть 4 рубля, можел быть 4 биткойна. Цены криптовалют очень сложно предсказать, и мне чесно не очень хочется в эты игру играть :)

10. Есть какие то новости про релей с Догкойном? Ранее о нём много писали, но сейчас почти не вспоминают, так что с этой затеей?

  • 10. Идет медленно, но идет; есть люди которые над этим работают

11. Ты сейчас участвуешь в развитии Авгура, что именно планируется далее, если конечно знаешь? В этой части вопрос, как ты представляешь работу умных контрактов на блокчейне эфира без участия третьих лиц, ведь всё равно требуется контролировать исполнение предмета договора в случае спора между сторонами по договору. «Оракулы-судьи» могут стать третьей стороной в разрешении споров по контрактам? Или тут можно применить какую то другую схему работы. Как ты это видишь?

  • 11. Я думаю вопрос как в блокчейн внести верную информацию о настоящем мире очень важный вопрос. Я сильно поддерживаю подход который аугур продвигает как эксперимент, и я знаю что есть еще люди которые пробуют другие подходы. Я думаю что когда эти системы начнут работать, тогда мы увидим какой подход лучше работает. Если можно сделать такую систему, и если такая системя начнет работать хорошо, то есть очень много применений в очень многих видах контрактов.

12. Что думает про Голлем, в описании к проекту очень интересно всё рассказывается, это именно реализация мирового компьютера, как ты считаешь, какой потенциал развития ты видишь здесь?

  • 12. Я думаю идея очень интересная, но конечно надо еще знать ограничения такого подхода. Самые главные органичения две: (1) не-параллелизуемый расчет очень сложно на такой системе делать, и (2) очень сложно гарантировать конфиденциальность. Но в ситуациях где этих двух проблем нет, я думаю что на системе как голем конечно можно попробовать.

13. Планируется в будущей (будущих) тестовых сетях эфириума вознаграждение майнерам, как в свое время было при переходе с frontier?

  • 13. В тестах каспера будем.

14. Что ты думаешь про dash? В последние дни монета очень сильно поднялась в цене и капитализации. Твоё личное мнение, покупать или не покупать с расчётом, что цена повысится еще в несколько раз?) Может быть ты можешь сказать какие криптомонеты есть в твоём инвестиционном (торговом) портфеле?

  • 14. Я про даш мало знаю; я чуть чуть посмотрел на их подход к конфиденциальности, и пока мой вывод что в таких системах сложно понять на самом деле ты какой уровень конфиденциальности достиг; мне больше нравиться полноценний подход как zcash. Я еще знаю что у них есть в протоколе встроенная ДАО; это интересно. Я не совсем согласен так прямо в протокол ДАО встроить; боюсь что случится если она сломаеться, но думаю что этот експеримент очень интерсный

15. Знаешь ли он какие-нибудь новые проекты в крипто, которые стартуют в ближайшее время и «взорвут» криптосообщество?

  • 15. на эфириуме, я думаю что проекты которые делают умные контракты связаные с настоящим миром будет следующее место большого роста; я не давно смотрел что http://etherisc.com делает, и выглядит что прямо цейчас технология доходит до уровня где можно много очень интересного  делать.

16. Какое количество транзакций в секунду на сегодняшний день у тебя получилось осуществить при экспериментах с PoS? Какой потенциал?

  • 16. PoS это сильно не повышает; пока все транзакции в одной цепи, все равно нужно каждому компьютеру верифицировать..

17. Что нас ждёт в эфире через 2-3-5 лет? Какое видение у тебя блокчейн технологий и роли эфириума в развитии этого времени?------

История Casper - от Vlada Zamfir. Краткий конспект

Влад, один из разработчиков Эфириума, описал историю PoS Эфириуме, как она  видится лично ему.
Рассказ о том, как  эволюционировали представления автора о PoS вообще и, в частности, о его реализации - Casper
Глава 1. Алгоритм Slasher + обеспечительный депозит: от наивного proof-of-stake - к современному. 2014, май - 12 сентября.
Вначале, за  основу был взят алгоритм слэшер(см. описание по ссылке в начале), идея которого заключается в том, что майнер может потерять вознаграждение за блок, елси будет уличен в том, что он подписал два блока с одинаковой высотой в разных ветках цепи. Это решало проблему "ничего-на-кону" (её суть в том, что для PoS майнера лучшей стратегией является майнинг на всех цепочках(ветках) сразу,  поскольку цена подписи блока очень дешевая).
Потом, на митапе в ночь с 11 на 12 сентября 2014 года Влад осознал мощь и полезность обеспечитальных депозитов для PoS. Депозиты существенно усиливали эффективность слэш-алгоритма.    Доказуемо уличенный в мухлеже узел будет терять обеспечительный депозит, на котрый было упалачено вознаграждение X за данный блок.

Глава 2. Злоумышленник, дающий взятку, экономическая безопасность  и проблема долгосрочной атаки. Осень 2014
Никогда не было предметом дискуссии то,  что "правильные стимулы" очень критичны для PoS. Было понимание того,  что нужны  как гарантии безопасности в протоколе, так и совместимы стимулы поведения узлов.
Атака со взяткой
На тот момент автор не обладал  большими познаниями в теории игр,  но распознать и вычислить равновесие Нэша мог. Кратко это такое состояние, в котором один игрок не может увеличить свой выйгрыш, изменив только свою индивидуальную стратегию поведения. Подкупая участников игры вы можете изментитьитоговые выплаты, изменив тем самым их равновесие Нэша.
Подкупающий злоумышленник стал первой полезной моделью экономической безопасности. И надежда была на то, что злоумышленникам потребуется много денег для компенсации потерянных обеспечительных депозитов. Была увереность в том, что атакующий должен будет дать взятку в размере потерянного депозита, чтобы совершить двойную трату и ревертнуть чейн. Разработчики знали, как определить "двойное" подписывание и считали что таким образом они могут "отвечать" на проблему атаки со взяткой.
Экономика подкупа в долгосрочных атаках
Однако проблема оставалась все равно. Это было похоже на долгосрочную атаку (Long-Range Attack). При анализе  этого было сделано важное уточнение: нужно игнорировать сообщения о консенсусе, от узлов, у кого в данный момент нет обеспечительного депозита. Это решает или обходит проблему долгосрочной атаки.
В этом принципиальное отличие от PoW.  Если в PoW валидным считается блок, находящийся в цепочке (chaned) c генезис-блоком и удовлетворяет соотвествующему условию по сложности. В PoS блок валиден, если произведен стейкхолдером, у которого в данный момент есть депозит. Это означете что для подтверждения подлиности блокчейна вам нужно иметь текущую актуальную информацию о владельцах депозитов.

Глава 3. PoS консенсус- "с нуля". 20 сентября 2014  - декабрь 2014
Было убеждение, что задача PoS будет  решена, как только решатся задачи nothing-at-stake  и long-range attack. Но в это время все ещё не были ясны базовые технические вопросы. Мы не знали как именно будут создаваться блоки, какой именно механизм стимулов будет и т.п.
Тусование депозитов и окончательнсть консенсуса.
Поняли,  что чтобы PoS работал -консенсус должен быть завершенным,  что означает необратимость сделок,  после того,  как  клиенты согласились решением орниченного круга узлов.
Отбор для "создателей блоков" и "проверочных подписей".
Было ясно, что нужна система отбора для стейкхолдеров, которые создают блоки (чтобы рос блокчейн) и для стейкхолдеров, которые ставили бы "проверочные подписи" на уже созданные блоки (это увеличивает безопасность).
Условия отсечения:
Началось жонглирование условиями отсечения. Очень легко срезать депозиты узлов, которые создали блок (или подписали его) на разных ветках, на одинаковой высоте. Но были исследованы и более сложные варианты. И там все оказалось очень не просто.
Начал обращать больше внимания на существующие исследования в области традиционного консенсуса.
Познакомился с https://tendermint.com/ В нем блок должен быть финализирован  перед тем, как будет добавлен в блокчейн. Это означает, что по крайней мере 1/3 депозитов будет срезана при возникновении какого либо форка.

Глава 4.
О событиях, которые кардинально изменили допущения в экономическом моедлировании разработчиков PoS.
Встреча с Олигополией.
В январе 2015 изменилась единаца экономического анализа: вместо единичных валидаторов начали анализировать картели валидатров. Кооперативная теория игр. Так Влад стал приверженцем философии, которой и по сей день руководствуется при разработке Casper. Архитектура блокчейна - механизм, разработанный для рынков олигополий (Blockchain architecture is mechanism design for oligopolistic markets).
Получается так, что картели цензурируют индивидуальных майнеров. В подтверждение этого тезиса Влад прошелся по всем крупным блокчейнам (PoW и PoS) и указал на это более детально. Допущения о количестве предательских узлов не подходят для публичных блокчейнов, т.к. фактически они существуют в картельной среде, где очень небольшое количество майнеров или держателей монет контролируют подовляющее большинство консенсуса (по весу). И имено на эти вызовы должны отвечать все разработчики блокчейнов, если они не хотят оставить своих пользователей один на один с картелями.

Глава 5.
В главе изложена история рождения Casper, как применение принципов GHOST к PoS. Он содержит стимулы, чтобы картельные валидаторы были дружественны к НЕ картельным.
Устойчивость к цензуре в модели олигополий. Февраль 2015
Сила PoS в том, что он имеет доступ к активам валидатора (обеспечительный депозит), а PoW не имеет доступа к вычислительной мощи майнеров. Наблюдение Влада: Картель не может цензурировать отсутствие цензурируемых валидаторов. уточнение: это означает, что картель не может скрыть тот факт, что цензурированные валидаторы отсутствуют. Значит: Картель должен быть наказан всякий раз, когда валидаторы оказываются отсутствующими. Стало ясно, что цена цензуроустойчивости в картельной модели в том, что валидатор может сознательно уйти в оффлайн, чтобы "онлайн валидаторы" потеряли деньги.Поэтому, также необходимо штрафовать валидаторов, которые уходят в офлайн, потому что для протокола не может быть точно известно подверглись ли эти валидаторы цензуре, либо ушли в офлайн по собственому желанию.
Опредлеение децентрализации, Февраль или Март 2015
Одна из версий: Протокол является децентрализованным только в том случае, если он может восстанавливаться при падении всех своих узлов кроме одного.
Рождение дружелюбного призрака. Март 2015 - GHOST встречает с PoS
Влад решил адоптировать GHOST для PoS . Он решил, что валидаторы  будут производить DAGи блоков и "подтверждающие подписи"(подписи  на блоках, которые будут свидетельствовать о их законности и весе в консенсусе). Там будет функция, которая будет принимать на вход любой такой DAG, а возвращать - "канонический" порядок транзакций. Запись всей аквтиности в консенсусе будет записана в DAG и будет использоваться для стимулирования (? incentivization).
И конечно, если каким-либо валидаторам не удасться получить свои блоки в каноническом порядке достаточно часто, все будут оштрафованы.

--не окончено.  ждем следующих глав от Влада

Часть 1 - https://medium.com/@Vlad_Zamfir/the-history-of-casper-part-1-59233819c9a9
Часть 2 - https://medium.com/@Vlad_Zamfir/the-history-of-casper-chapter-2-8e09b9d3b780
Часть 3 - https://medium.com/@Vlad_Zamfir/the-history-of-casper-chapter-3-70fefb1182fc
Часть 4 - https://medium.com/@Vlad_Zamfir/the-history-of-casper-chapter-4-3855638b5f0e
Часть 5 - https://medium.com/@Vlad_Zamfir/the-history-of-casper-chapter-5-8652959cef58

Ethereum, базовые принципы PoS от Виталика Бутерина

Под Новый год Виталик Бутерин впервые артикулировал и опубликовал базовые принципы PoS Casper (доказательство долей Casper). Если кратко - то вот они:

  1. Системы, которые считают себя идеологическими наследниками духа шифропанков должны поддерживать это базовое свойство — их должно быть намного дороже уничтожать и нарушать, чем использовать и поддерживать.

  2. В среднесрочной и долгосрочной переспективе люди сами неплохо справляются с консенсусом. Именно социальные аспекты защищают блокчейн в долгосрочной перспективе.

  3. Эономический консенсус играет чрезвычайно большую роль в защите живучести и безопасности собственности в краткосрочной перспективе.

  4. Философия PoS «одним  предложением» это не «безопасность через сжигание энергии», а скорее «безопасность, исходящая из .. потери стоимости (putting up  economic value-at-loss)»

  5. Важно иметь оба слоя защиты: экономические стимулы, отбивающие охоту анти-социальных действий у централизованных картелей, и противо-центролизационные стимулы,  отбивающие охоту у картелей вообще быть сформированными.

  6. Протоколы консенсуса, работающие так-быстро-насколько-это возможно — содержат риски, и подходить к ним следует очень осторожно, если вообще подходить.

Ещё обратил внимание,  что Виталик  пару раз сделал  акцент на то, что это его личное видение, и у других, в т.ч. и членов команды, оно может быть своим.
[Близкий по смыслу перевод/пересказ оригинальной статьи под спойлером]

A Proof of Stake Design Philosophy - Философия разработки ПоС

31.12.2016 — Виталик Бутерин

Системы подобные Эфириуму (and Bitcoin, and NXT, and Bitshares, etc) — это принципиально новый класс криптоэкономических организмов — децентрализованные, лишенные юрисдикции сущности, которые существуют целиком в киберпространстве, поддерживаются засчет комбинации криптографии, экономики и социального консенсуса. Они похожи на BitTorrent, но они -ни как BitTorrent, поскольку у BitTorrent нет концепции состояний — и это очень важное отличие. Иногда их описывают как децентрализованные автономные корпорации, но они также не совсем корпорации — вы не можете сделать хардфорк с Microsoft. Вроде как они похожи на проекты с открытым исходным кодом, но и это не в полной мере — вы можете сделать форк блокчейна, но не так легко как OpenOffice.

Существует много разновидностей этих криптоэкономических сетей -  ASIC-based PoW, GPU-based PoW, PoS в чистом виде, delegated PoS, надеюсь вскоре Casper PoS  и каждая из них неизбежно несет философию, на которой она основана. Один из хорошо известных примеров - это максималистское видение PoW (доказательство работой), в котором единственный «правильный» блокчейн определяется, как цепь цепочка, созданная майнерами, потратившими (сжегшими) большое количество экономического ресурса. Изначально простое внутри-протокольное правило выбора этим механизмом было возведено до священного догмата — смотри дискуссию Виталика и Криса ДеРозе — как пример, когда кто-то всерьёз пытается отстаивать идею в чистой форме, даже перед лицом хардфорков протокола в части изменения протокола хэширования. Делегированный PoS от Bitshare являет собой ещё одну последовательную философию, в которой все опять таки вытекает из единственного догмата, который может быть описан ещё проще: голосование акционеров.

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

Я, Влад, Доминик, Jae и другие имеют свой собственный взгляд на то, почему существуют протоколы PoS и как их разрабатывать, но я намерен объяснить, из чего исхожу лично я.

Я буду переходить к списку наблюдений и непосредственно выводов.


  • Криптография в 21 века действительно особенная, потому что криптография — одна из немногих областей, в которой продолжается состязательный конфликт к большой пользе последователей. Замок гораздо проще разрушить, чем построить, острова защищены, но все равно могут быть атакованы, но среднестатистические ECC ключи достаточно безопасны, чтобы противостоять даже уровню государства. Философия шифропанков фундаментальна в отношения усиления этой драгоценной ассиметрии, для создания мира, который лучше защищает автономность личности, и криптоэкономика, в некоторой степени, продолжение этого, в то же время защищает безопасность и живучесть сложных систем координации и сотрудничества, а не просто целостность и конфиденциальность личных сообщений. Системы, которые считают себя идеологическими наследниками духа шифропанков должны поддерживать это базовое свойство — их должно быть намного дороже уничтожать и нарушать, чем использовать и поддерживать.


  • «Дух шифропанков» - это не просто идеализм; создание систем, которые легче защищать, чем атаковать — просто здравая инженерия.


  • В среднем и долгом временном масштабах люди достаточно хорошо справляются с консенсусом. Даже если враг получил доступ к неограниченной хэш-мощности, и явился с атакой 51% любого основного блокчейна, что переписало историю даже целого прошедшего месяца, убедив сообщество что его цепочка законная -все это намного сложнее, чем просто обогнать хэш-мошность основного блокчейна. Они должны были бы опровергнуть блок-эксплореры, каждого доверенного члена сообщества, New York Times, archive.org и много других источников в интернете; в целом убедив мир, что новая цепь — была первой ...- все это также тяжело сделать, как убедить мир, что американцы никогда не были на Луне. Эти социальные аспекты — как раз и защищают любой блокчейн в долгосрочной перспективе независимо от того, признает их сообщество блокчейна или нет (заметим, что Ядро Биткойна признает первичность этих социальных положений ).


  • Однако, блокчейн, защищенный только социальным консенсусом был бы слишком неэффективным и медленным, с без конца продолжающимися разногласиями (хотя, несмотря на все трудности, это произошло); следовательно, экономический консенсус играет чрезвычайно большую роль в защите живучести и безопасности собственности в краткосрочной перспективе.


  • Поскольку безопасность в PoW следует только из вознаграждения за блок (в терминах Доминика Вильяма, ему не хватает два из трех ES), и стимулы майнеров проистекают из опасения потери вознаграждения за будущий блок, PoW неизбежно управляется логикой мощного стимулирования существующих больших вознаграждений. Восстановление после атак PoW очень тяжелое: после первого раза вы можете сделать хард форк, изменив алгоритм PoW и, тем самым, превратив в бесполезные ASICы атакующих, но во второй раз у вас уже такой возможности не будет и атакующий может атаковать снова и снова. Следовательно, размер сети майнеров должен быть на столько большим, чтобы атаки стали немыслимыми. Атакующие с размером меньше Х просто не будут появляться, потому что их сеть должна будет постоянно терять X каждый день. Я отвергаю это логику потому что (i) она убивает деревья, и(ii) она не соответствует духу шифропанков - цена атаки и цена защиты соотносятся как 1:1, и у защитников нет преимущества.


  • PoS ломает эту симметрию, полагаясь в обеспечении безопасности не на вознаграждение, а скорее на штрафы. Валидаторы вносят деньги («депозиты») в долю, и получают небольшое вознаграждение чтобы компенсировать заморозку средств, и поддерживают узлы, принимая дополнительные меры предосторожности, обеспечив сохранность своих приватных ключей. Но основная часть стоимости отмены транзакций проистекает из штрафов, которые в сотни или тысячи раз выше полученного к тому времени вознаграждения. Таким образом философия PoS «одним предложением» это не «безопасность через сжигание энергии», а скорее «безопасность, исходящая из .. потери стоимости (putting up economic value-at-loss)». Данный блок или состояние имеет $X обеспечение, если вы можете доказать, что достижение такого же уровня финализации для любого конфликтующего блока или состояния не может быть завершено, кроме как если вредоносные узлы замешаны в попытке (to make the switch pay) $X стоимость внутри-протокольных штрафов.


  • Теоретически, большинство валидаторов, будучи в сговоре, могут взять под контроль PoS цепочку и начать действовать злонамеренно. Однако, (i) благодаря продуманному дизайну протокола, их возможность получения дополнительной прибыли путем таких манипуляций может быть ограничена, насколько это возможно, и что боле важно, (ii) если они попробуют препятствовать подключению новых валидаторов или исполнить атаку 51%, тогда сообщество может просто согласовать хард форк и удалить депозиты таких валидаторов. Успешная атака может стоить $50 миллионов, но процесс очистки последствий не будет более обременительным, чем geth/parity сбой в консенсусе 25.11.2016. Спустя два дня блокчейн и сообщество вернутся на правильный путь, атакующие станут на $50 миллионов беднее, а остальная часть сообщества, вероятно богаче, т.к. атака вызовет рост котировок токена, из-за последующего снижения предложения. Вот такая вам асимметрия атаки и защиты.


  • Выше сказанное не следует понимать, что незапланированные хардфорки станут обычным делом; при желании, стоимость одной атаки 51% на PoS может быть установлено такой высокой, как стоимость непрерывной 51% атаки на PoW, и явная дороговизна и безрезультатность атаки должны обеспечить, что на практике она вовсе не будет предпринята.


  • Экономика — это ещё не все. Индивиды могут быть мотивированы и вне-протокольными мотивами, их могут захачить, они могут быть похищены или они могут просто напиться и решить разрушить блокчейн в один день и черт с ней, со стоимостью. Более того, с положительной стороны, моральные (forbearances) индивидов и неспособность к коммуникации часто повышают стоимость атаки до уровней гораздо больших, чем заложенные в протоколе потери. Это преимущество на которое нельзя положиться, но, и в тоже время, это преимущество, которое не нужно без необходимости отбрасывать.


  • Следовательно, лучшие протоколы — это протоколы, которые работают в разных моделях и при разных допущениях — экономическая рациональность при согласованном выборе, экономическая рациональность при индивидуальном выборе, простая отказоустойчивость, Византийская отказоустойчивость(в идеале как с адаптивным так и с не адаптивным вариантом противника?)- Byzantine fault tolerance (ideally both the adaptive and non-adaptive adversary variants), модели экономического поведения в духе Ariely/Kahneman («мы все чуть-чуть обманываем») и в идеале — в любых других моделях, которые практичны и реалистичны в нашем смысле. Важно иметь оба слоя защиты: экономические стимулы, отбивающие охоту анти-социальных действий у централизованных картелей, и противо-центролизационные стимулы, отбивающие охоту у картелей вообще быть сформированными.


  • Протоколы консенсуса, работающие так-быстро-насколько-это возможно — содержат риски, и подходить к ним следует очень осторожно, если вообще подходить, потому что если возможность быть очень быстрым связана со стимулами сделать это, можо получить очень высокие системные риски централизации на сетевом-уровне (the combination will reward very high and systemic-risk-inducing levels of network-level centralization) (например, все валидаторы работают через одного хостинг-провайдера). Протоколы консенсуса, которые не слишком много беспокоятся о том, как быстро валидаторы отправляют сообщение, до тех пор пока они это делают в течении некоторого допустимо длительного интервала, (например 4-8 секунд, как мы знаем эмпирически задержки в Эфириуме обычно 500ms-1s ) не имеют этих проблем. Возможная золотая середина — это создание протоколов, которые могут работать очень быстро, но в которых механика, схожая с механизмом анклов Эфириума, гарантирует, что предельное вознаграждение, которое может получить узел, повышая свою степень подключенности к сети вне какой-то легко достижимой точки, является достаточно низким.


Отсюда, конечно следует много деталей и много путей разойтись в деталях, но вышесказанное является ядерными принципами, которые по крайней мере моя версия того, на чем основывается Каспер. Отсюда мы можем, конечно, обсуждать компромиссы между конкурирующими ценностями. Do we give ETH a 1% annual issuance rate and get an $50 million cost of forcing a remedial hard fork, or a zero annual issuance rate and get a $5 million cost of forcing a remedial hard fork? Когда мы повысим уровень безопасности протокола в экономической модели, взамен на снижение его безопасности в модели отказоустойчивости? Мы будем больше беспокоится о предсказуемом уровне безопасности или о предсказуемом уровне выпуска? Все эти вопросы для другого поста, и различные способы реализации разных компромиссов между этими величинами — вопросы для дргух постов. Но мы к ним вернемся :)

Обзор блога Ethereum (выборочно), часть 13

* PoS  - Proof of Stake перевожу как доказательство долей. Как  вариант  - доказательство участием.
On Inflation, Transaction Fees and Cryptocurrency Monetary Policy - Об инфляции, транзакционных комиссиях и монетарной политике криптовалют.
Posted by Vitalik Buterin on July 27th, 2016.
В посте автор рассуждает, каким оптимальным способом и в каком количестве можно и должно оплачивать услуги по обеспечению безопасности блокчейнов. (майнерам, валидаторам). В инфляционной и в дефляционной моделях(NXT).

Абсолютный размер вознаграждения в PoW/PoS

За последние несколько лет ежедневная сумма вознаграждений за подтверждение транзакций составляет 15-75 BTC в день, или 0.35 BTC за блок (или 1.4% от вознаграждения непосредственно за майнинг), не зависимо от степени популярности (уовня принятия) биткойна.

В ближайшие 25 лет вознаграждение за майнинг должно исчезнуть вовсе. Следовательно, единственным источником вознаграждения останется 0.35 BTC за блок подтвержденных транзакций. В сегодняшних ценах это порядка $10 млн в год. Значит можно оценить стоимость покупки достаточной мощности для контроля над сетью несколькими способами.

Текущая хэш мощность сети 1 471 723 TH/s, лучшие доступные цены на оборудование для майнинга - $100 за 1 TH/s, таким образом достаточное количество оборудования для контроля над сетью - $147 млн. Если убрать вознаграждение за майнинг, то доход снизится в 36 раз. И так как в длинной перспективе доля майнинга будет снижаться, то и цена указанного оборудования будет падать до $4.08 млн. Это при покупке нового железа, покупка существующих обойдется ещё дешевле — $2.04 млн.

Профессиональные майнинговые фермы предлагают ещё более низкие цены. Например Bitfury’s $100 million data center, предлагает $60 за 1 TH/s,. Тогда наша оценка превращается соответственно в $2.45 млн. для атаки «из вне» и $1.22 млн на подкуп существующих майнеров.

Следовательно, у нас есть $1.22 млн-$4 млн приблизительная оценка стоимости атаки «Линия Мажино» на сеть с вознаграждением только за обработку транзакций. Более дешевые варианты атак могут стоить ещё в 10-100 раз дешевле. С ростом экосистемы биткоина, конечно, эта сумма вырастет, но вырастет и объём транзакций в сети, а это, в свою очередь, увеличит и привлекательность атаки. Достаточен ли существующий уровень безопасности, чтобы обезопасить блокчейн от атак? Трудно сказать; моё собственное мнение -риск очень велик, а уровень безопасности недостаточен; и для протокола блокчейна опасно брать на себя обязательства с таким уровнем безопасности, не видя путей его увеличения (заметим, что Эфириум сейчас со своим PoW мало чем отличается от Биткойна в этой части;( this is why I personally have not been willing to commit to an ether supply cap at this point).

В контексте доказательства долей (PoS) безопасность вероятно будет значительно выше. Что бы увидеть почему — нужно посмотреть на отношение вычисленной выше стоимости взятия контроля над сетью Биткойн к объёму годового вознаграждения за майнинг ($932млн при текущем курсе BTC) — оно очень мало: капитальные затраты составляют два месячных объема вознаграждения. В контексте PoS, стоимость депозитов должна быть равна дисконтированной в будущем сумме возвратов (infinite future discounted sum)(видимо вознаграждений?); т.е., если предположить риск дисконтирования, скажем в 5%, капитальные затраты будут стоить 20-летнего вознаграждения. Заметим, что если потребление электричества ASIC майнерами прекратится навсегда, то равновесие в PoW , будет таким же (за исключением того, что PoW будет более «расточителен», чем PoS в экономическом смысле и восстановление от успешных атак будет более тяжелым); однако, поскольку электричество и амортизация специально оборудования действительно составляют большую часть расходов у ASIC майнеров, существует большое расхождение. Следовательно, в PoS мы можем оценивать стоимость атаки как $20 - 100 млн. для сети размера Биткойна; следовательно, более вероятно, что такого уровня безопасности будет достаточно, но все-таки не факт.

Проблема Рэмси (The Ramsey Problem)

Давайте предположим, что полагаться исключительно на комиссию от подтверждения транзакций для обеспечения безопасности сети недостаточно.

Есть два пути увеличения вознаграждения. Первые — увеличение комиссии за обработку транзакций, ограничив предложение to below efficient levels, а второй — добавить инфляцию. Какой путь выбрать, и если оба — то в какой пропорции?

К счастью, в экономике есть устоявшееся правило для решения проблемы с минимизацией экономических потерь (in a way that minimizes economic deadweight loss,), известное как правило Рэмси. Оригинальный сценарий Рэмси был следующий. Предположим что регулируемой монополии нужно достичь конкретного показателя доходов (даже после уплаты фиксированных издержек), и конкурентного ценообразования (цена равна производственным издержкам ещё одной единицы товара) было бы не достаточно для выполнения этих требований. Правило Рэмси говорит, что наценка должна быть обратно пропорциональной к эластичности спроса, т.е. если 1% повышение цены товара А приводит к 2% снижению спроса, в то время как 1% повышение цены товара B приводит к 4% снижению спроса, то социально оптимальным решением будет делать наценку на товар А в два раза больше, чем на товар В (вы можете заметить, что это действительно уменьшит спрос равномерно).

Причина выбора такого сбалансированного подхода (вместо простой наценки всей наиболее Неэластичной части спроса) в том, что вред от роста цен выше предельных затрат нарастает квадратично наценке(goes up with the square of the markup.). Предположим, что производство данного предмета обходится в 20$, вы нацениваете до 21$. Есть, вероятно, несколько людей, оценивающих этот предмете между 20$ и 21$ (в среднем $20.5), и будет большой трагедией для общества, что эти люди не смогут купить этот товар, даже несмотря на то, что они получили бы больше от обладания этим товаром, чем потеряет продавец от его предоставления(?). Однако количество людей - небольшое, и чистые потери (в среднем $0.5) малы. Теперь предположим, что вы наценили до 30$. Теперь, вероятно будет в 10 раз больше людей с «резервной ценой» в диапазоне от $20 до $30, и их средняя оценка будет около $25; следовательно, будет в 10 раз больше людей, которые …, и средние общественные потери от каждого из них будут теперь $5 вместо $0.5, и таким образом чистые общественные потери будут в 100 раз больше. Из-за этого нелинейного роста, брать немного со всех менее плохо, чем взять много у одной небольшой группы.

В случае с Биткойном, прямо сейчас мы видим транзакционные комиссии в районе 50 BTC в день, или ~18000 BTC в год, что составляет 0.1% от предложения монет. В первом приближении мы можем прикинуть, что двукратное повышение комиссии снизит транзакционную нагрузку на 20%. На деле это выглядит как двукратное увеличение комиссии за последний год, и это выглядит, как снижение транзакционных нагрузок сейчас на 20% в сравнении с тем, что было бы без повышения комиссий (смотри грубый график); эти оценки являются весьма не научными, но достаточно приличными для первого приближения.

Теперь предположим, что 0.5% инфляция снизит интерес у держателей BTC ,скажем, процентов на 10%, а если сказать более консервативно — то на 25%. Если в какой-то момент Биткойн — сообщество решит, что оно хочет увеличить расходы на безопасность до 200 000 BTC в год, тогда, в соответствие с этими оценками, и полагая, что текущие транзакционные комиссии оптимальны, прежде чем принимать во внимание расходы по безопасности, оптимально будет поднять комиссию в 2.96 раза и ввести 0.78% годовую инфляцию. Другие оценки этих мер могут дать иные результаты, но в любом случае оптимальное значение повышений комиссии и инфляции будет не нулевым. Я использую Биткоин как пример, потому что в этом случае мы можем реально попробовать наблюдать эффекты от роста использования сдерживаний (restrained by a fixed cap), но аналогичные аргументы применимы и к Эфириуму.

Атаки теории игр

Есть и другой аргумент в пользу поддерживания инфляции. Очень сильно рассчитывая на транзакционные комиссии, мы открываем дорогу большому количеству трудно-анализируемых атак из категории теории игр. Фундаментальная причина проста: если вы своими действиями препятствуете попаданию блока в блокчейн, то вы можете украсть транзакции этого блока. Следовательно, у валидаторов существует стимул не только не помогать другим, но и сделать им плохо. This is even more direct than selfish-mining attacks, as in the case of selfish mining you hurt a specific validator to the benefit of all other validators, в то время как здесь часто возникает возможность получения выгоды одним атакующим.

В подходе с доказательством работой будет одна простая атака, в которой, если вы увидите блок с большой комиссией, то попытаетесь создать парный блок с теми же транзакциями, и, затем предложить вознаграждение 1 BTC следующему майнеру, что бы он майнил поверх этого блока (видимо продолжил цепочку именно с этим блоком), так что у последующих валидаторов есть стимул включать в цепочку именно ваш блок, а не оригинальный. Конечно, майнер оригинального блока может затем тоже начать увеличивать ставку вознаграждения, начав войну ставок, и также он сможет предотвратить такие атаки, добровольно отказавшись от большей части комиссий в пользу создателя следующего блока; конечный результат трудно предсказуем, и не очевидно, что это как-то эффективно для сети. В подходе с доказательством долей (PoS) попдобные атаки возможны(? ).

Как распределить комиссию?

Даже с учетом конкретного распределения доходов от инфляции и транзакционных комиссий, существует развилка выбора того, как собираются эти комиссии. И хотя большинство протоколов до сих пор идут единственным путем, небольшое пространство выбора здесь есть. Три основных выбора это:


  1. Комиссия поступает валидатору/майнеру, который создал блок;


  2. Комиссия делится поровну между валидаторами;


  3. Комиссия сжигается.


Можно утверждать, что разница больше заметна между первым и вторым; разница между вторым и третьим — может быть описана как «выбор политики», и этот вопрос мы отдельно затронем в следующем разделе. Разница между первыми двумя опциями вот в чем: если валидатор, который создает блок, получает комиссию, то у него есть стимул, равный размеру комиссий всех транзакций включенных в блок. Если же комиссия делится поровну между всеми валидаторам, то стимул менее значим.

Заметим, что буквальное перераспределение 100% комиссий (или, в этом отношении, некоторого процента комиссий) невыполнимо, по причине атаки «уклонения от налогов» с помощью других каналов оплат: вместо добавления транзакционной комиссии стандартным механизмом, отправители будут устанавливать нулевой (или близкий к нулю) размер «официальной комиссии» и платить валидатору напрямую другой криптовалютой (или даже через PayPal), позволив, таким образом, валидаторам сохранить 100% вознаграждения. Однако, мы можем получить то, что хотим через другой трюк: установить в протоколе минимальную комиссию за транзакцию, и пусть протокол «конфисковывает» эту часть, а все что сверх — остается у майнеров (в альтернативе, майнеры получают транзакционную комиссию целиком, но взамен должны платить комиссию протоколу за каждый байт или единицу газа; математически это эквивалентные формулировки). Это убирает стимул уклонения от налогов, и, в то же время оставляет большую часть комиссионных доходов под контролем протокола, позволяя нам сохранить комиссионные выдачу (allowing us to keep fee-based issuance) без введения стимулов теории игр традиционной без-комиссионной модели.

Одним из возможных алгоритмов определения минимальной комиссии будет процесс, похожий на корректировку сложности, нацеленный на среднесрочное среднее использования газа, равное 1/3 ограничения по газу в протоколе, понижающий минимальный уровень комиссии если если среднее использование ниже этого значения и повышая его, если среднее использование выше этого значения. (One possible algorithm for determining this minimum fee would be a difficulty-like adjustment process that targets a medium-term average gas usage equal to 1/3 of the protocol gas limit, decreasing the minimum fee if average usage is below this value and increasing the minimum fee if average usage is higher.)

Мы можем дополнительно расширить эту модель, представив другие интересные свойства. Одна из возможностей — гибкий лимит по газу: вместо жесткого ограничения по газу, которое блок не может превышать, у нас будет мягкое ограничение G1 и жесткое G2 (скажем,G2 = 2 * G1). Предположим, что комиссия протокола составляет 20 шэннанов за единицу газа( если это не Эфириум, замените единицами другой криптовалюты и «байтами» или другим ресурсом блока). Со всех транзакции ниже значение G1 будут удерживаться плата в 20 шэннанов за единицу газа. Выше этого значения комиссия будет повышаться: при (G2 + G1) / 2, предельная стоимость единицы газа будет 40 шэннанов, при (G2 + G1) / 4 она будет доходить до 80 шэннанов, и так далее, пока не упрется в G2. Это дало бы ограниченную возможность расширения мощности для удовлетворения внезапных всплесков спроса, снижая ценовой шок (фича, которую некоторые критики концепции «рыночной комиссии» находят привлекательной).

К чему стремится.

Предположим, что мы согласны, со всем приведенным выше. Тогда, вопрос остается прежним: как мы будем планировать наши переменные курсы, в частности инфляцию? Мы запланируем фиксированный уровень участия в доказательстве долей (например, 30% всего эфира) и будем корректировать процентные ставки, чтобы компенсировать? Мы запланируем фиксированный уровень общей инфляции? Или мы просто установим фиксированные процентные ставки и обеспечим корректировку числа участников и инфляции? Или мы выберем какой-то средний путь, при котором интерес к участию приводит к комбинации повышенной инфляции, расширения числа участников и более низкой процентной ставке?

В общем, компромиссы по целевым правилам — это фундаментальные компромиссы о том, какие виды неопределенности мы в большей степени готовы принять, и волатильность каких переменных мы хотим уменьшить. Основная причина планировать фиксированный уровень участников — это определенность об уровне безопасности. Основная причина планировать фиксированный уровень инфляции — это удовлетворение спроса держателей некоторых токенов для предсказуемости предложения, и в тоже время иметь хоть и более слабые, но все таки гарантии безопасности (теоретически возможно, что при равновесии только 5% эфира будет участвовать, но в этом случае он будет получать высокую процентную ставку, создавая частичное сопротивление). Основная причина планировать фиксированный процентной ставки — это минимизация рисков эгоистичной валидации, что бы у валидаторов не было возможности получать выгоду себе просто нанося вред другим валидаторам. Гибридный подход в доказательстве долей может комбинировать эти гарантии, например обеспечивая, по возможности, защиту единоличного майнинга, но придерживаясь жесткого минимального 5% порога участников.

Теперь мы также можем обсуждать разницу между перераспределением и сжиганием транзакционной комиссии. Понятно, что в ожиданиях одинаково: либо перераспределение 50 ETH в день и инфляция 50 ETH в день, либо сжигание 50 ETH в день и инфляция 100 ETH в день(?). Компромисс, опять же, вариативен. Если комиссия распределена, тогда у нас есть больше определенности в предложении, но меньше определенности в уровне безопасности, поскольку у нас есть определенность в размере стимула валидации. Если комиссия сожжена, мы теряем определенность в предложении, но получаем определенность в размере стимула валидации и, следовательно, уровня безопасности. Сжигание комиссии также дает преимущество минимизации картельных рисков, т.к. валидаторы не могут много заработать искусственно увеличивая транзакционные комиссии(например с помощью цензуры, или ( or via capacity-restriction soft forks). И вновь, гибридный подход возможен, и вполне может быть оптимальным, хотя, в настоящее время кажется, что подход ориентирован в большей степени на сжигание комиссий, и тем самым признавая неопределенность предложения криптовалюты (that may well see low decreases on net during high-usage times and low increases on net during low-usage times, is best). Если использование достаточно велико, это может даже привести к небольшой среднесрочной дефляции.

Обзор блога Ethereum (выборочно), часть 12

Thinking About Smart Contract Security/ Размышляя о безопасности смарт контрактов.

Posted byuserVitalik Buterin on June 19th, 2016.

За последний день, при помощи сообщества, мы собрали список всех основных багов в смарт контрактах Эфириума, включая DAO и различные мелкие 100-10 000 ETH кражи и потери в играх и контрактах на токены.

Списко этот выглядит следующим образом (первоисточник):

Мы можем категоризировать этот список:


  • Путаница в именах переменных/функций:FirePonzi, Rubixi


  • Публичные данные, которые не должны быть таковыми: the public RNG seed casino, cheatable RPS


  • Реентерабельность (A вызывающее B вызывающее A): the DAO, Maker’s ETH-backed token


  • Неудачные отправки из-за ограничения по газу 2300:King of the Ether


  • Массивы/петли и ограничения по газу: Правительственные


  • Гораздо более тонкие недостатки, слабые с точки зрения теории игр, по которым люди спорят, являются ли они багами или нет: ДАО.


Было предложено много решений по надежности смарт контрактов, начиная от улучшения сред разработки до улучшенных языков программирования с формальной верификацией и сомвольным исполнением (? возможно, имеется ввиду эмуляция или отладка), и исследователи приступили к разработке таких инструментов. Моё персональное мнение относительно этой темы заключается в следующем выводе: прогресс в области безопасности смарт контрактов обязательно будет послойный, пошаговый (layered, incremental), и обязательно будет зависеть от глубины проработанности защиты. Будут ещё ошибки, и мы извлечем из них уроки; не будет волшебной технологии, решающей все проблемы.

Далее автор рассуждает о фактах кражи и потерь, о том, что не всегда совпадают реализация и намерения. Кража или дарение, потеря или сжигание денег. О том что истинное намерение - всегда очень сложное, и т.д. Достаточно глубокие философские рассуждения с обоснованиями. Также описаны подходы, которые будут использованы для борьбы с выявленными категориями багов.

Обзор блога Ethereum (выборочно), часть 11

On Settlement Finality Об окончательности расчетов

Posted byuserVitalik Buterin on May 9th, 2016.

Специальная благодарность Тиму Свансону (Tim Swanson) за рассмотрение, а также дальнейшее обсуждение аргументов в его оригинальной статье об окончательности расчетов.

В последнее время в продолжающихся дебатах между сторонниками публичных блокчейнов и блокчейнов с управляемым доступом (permissioned) стал вопрос окончательности расчетов. Одно из простых свойств, которое, как кажется, есть у централизованных систем — это понятие «окончательности»: один раз завершившись, операция завершается навсегда, и не существует способа которым система может «вернуться назад», отменив операцию. Децентрализованные системы,в зависимости от специфики их решений, могут предоставлять такое свойство, либо обеспечивать вероятность такого свойства в определенных экономических границах, либо вовсе не обеспечивать. И конечно, публичные блокчейны и блокчейны с управляемым доступом (permissioned) ведут себя в этом отношении очень по-разному.

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

В одной из своих последних статей Тим Свансон (Tim Swanson) утверждает: Предприниматели, инвесторы и энтузиасты претендуют (claim) на то, что публичные блокчейны является приемлемым механизмом для расчетов и слоем для финансовых инструментов. Но блокчейны, по определению (by design) не могут определенно гарантировать окончательность расчетов и, как результат, сейчас они не являются надежными для клиринга и расчетов по финансовым инструментам.

Это правда? Действительно ли публичные блокчейны совершенно неспособны к любому понятию окончательности расчетов? Это сродни тому, как некоторые максималисты полагают, что только PoW может дать настоящую окончательность and it’s permissioned chains that are a mirage Или правда более тонкая и сложная? Для полного понимания разницы между свойством окончательности, предоставляемым разными архитектурами блокчейна, мы должны будем углубиться в математику, компьютерные дисциплины и теорию игр — т.е. в криптоэкономику.

Окончательность всегда вероятностна.

Прежде всего, один важный философский момент состоит в том, что не существует в мире системы, предлагающей по-настоящему 100% окончательность расчетов в буквальном смысле этого слова. Если владение долей записано в бумажном реестре, всегда есть возможность этот реестр сжечь, или прибежит хулиган, дорисует «с» к каждой «1» в реестре, сделает её похожей на «9» и убежит. Даже без каких либо атакующих, также возможно, что однажды все, кто знают местонахождение бумажного реестра будут поражены молнией и одновременно умрут. Централизованные компьютеризированные регистры имеют такие же проблемы, и возможно атака - ещё более простой способ стащить что-то,( at least if the security of the central bank of Bangladesh is any indication.)

В случае полностью «цифровых активов на предъявителя», где нет подтверждения собственности кроме цепочки самой по себе, единственным способом является жесткий форк, инициированный сообществом. В случаи использования блокчейнов (ограниченных или публичных) в качестве реестров собственности юридически зарегистрированного имущества (земля, запасы, фиатные валюты и т. д.), тем не менее это судебная система, служащая основным источником принятия решений относительно прав собственности. В этих случаях, при падении реестра, суды могут сделать одно из двух. Первое, возможно, что атакующие найдут какой либо-либо способ вывести свои активы из системы до того, как они смогут ответить (?before they can respond). В этом случае, общее количество активов в реестре и общее количество активов в реальном мире больше не равны; следовательно, математически, кто-то с окончательным балансом x в конечном итоге окажется с фактическим балансомy < x.

Но у судов есть и другая альтернатива. …. в их стандартном исполнении и получать буквальный результат; работа материальных судов — смотреть на намерения и определить, что правильный ответ нарисованному «с» перед «1» - это стирательная резинка, а не соглашательство с тем, что дядя Билли теперь богат. Здесь, вновь, окончательность не конечна, хотя этот конкретный случай был бы на пользу обществу. Эти аргументы применимы ко всем другим инструментам, используемых в поддержку реестров и атак против них, включая атаку 51% как на публичные так и на частные блокчейны консорциумов.

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


  • в 2010 году злоумышленнику удалось дать себе 186 миллиардов BTC, использовав уязвимость целочисленного переполнения. Это было решено, но ценой отката транзакций за половину дня.


  • В 2013 делали форк из-за бага, который был в одной версии ПО, но которого не было в других версиях, что привело к отклонению сетью цепочки, которая была акцептована как главная другой частью сети. Вопрос был решен спустя 6 часов.


  • В 2015 примерно 6 блоков были возвращены, потому что майнинговый пул биткойн добывал неправильные блоки без их проверки.


Из этих трех инцидентов, только в третьем случае причина была уникальна именно для публичных блокчейнов (public chain consensus). Причина того, почему майнинговый пул работал некорректно была именно провале экономического стимула (по-существу, одна из версий диалемы верификаторов). В двух других причиной сбоя был глюк ПО — точно также может произойти и с частным блокчейном консорциума. Можно утверждать, что ... алгоритм консенсуса (consistency-favoring consensus algorithm), такой как PBFT мог предотвратить второй инцедент, но не такой как первый, когда на всех узлах работал код с уязвимостью по переполнению.

Следовательно, можно привести достаточно веских аргументов, что если кто-то действительно интересуется в уменьшении числа отказов, есть часть советов, которые могут быть более полезными, чем «переключиться с публичного блокчейна на блокчейн консорциума»: запускать несколько реализация кода (находящего консенсус), и считать завершенными транзакции только если они подтвердятся всеми реализациями (заметим, что это уже стандартный совет, который мы даем обменникам и другим высоко нагруженным проектам пользователей на платформе Эфириума). Однако это ложная дихотомия: если кто-то действительно хочет быть крепим, и соглашается с аргументами, выдвигаемыми сторонниками корпоративных блокчейнов о том, что корпоративная модель более безопасна, то … (then one should certainly do both.).

Окончательность в доказательстве работой.

Технически, блокчейны с доказательством работой никогда не позволяют транзакции быть действительно «окончательной». Для любого взятого блока всегда существует возможность, что кто-то создаст более длинную цепочку, начинающуюся с предыдущего блока и не включающую данный блок. С практической точки зрения однако, финансовые посредники, для только что совершенных операций, разработали очень практичные способы определения, когда транзакцию можно считать близкой к окончательной: ждать шесть подтверждений.

Вероятностная логика здесь простая: если у атакующего есть меньше чем 25% вычислительной мощности сети, то мы можем моделировать попытку двойной траты, как случайную прогулку (?walk that), начинающуюся -6 (полагая, что цепочка с двойной тратой атакующего на 6 блоков короче, чем настоящая цепочка), и каждый шаг имеет 25% шанс добавления 1(т.е. злоумышленник делает блок и становится на шаг ближе -ie. the attacker makes a block and inches a step closer) и 75% шанс вычитания 1 (т.е. Сеть примет настоящий блок the original chain makes a block). Мы можем определить вероятность того, что этот процесс никогда не достигнет нуля (т.е. Будет выбрана цепочка злоумышленника) математически, по формуле (0.25 / 0.75)^6 ~= 0.00137меньше чем комиссия за транзакцию, которую удерживают почти все обменники(?). Если вы хотите большей определенности, вы можете дождаться 13 подтверждений для шанса один-на-миллион успеха атакующего, или 162 подтверждения для такого малого шанса, что атакующему буквально более вероятно угадать ваш приватный ключ с первой попытки. Следовательно, некоторое понятие фактической окончательности даже в блокчейнах с доказательством работой действительно существует.

Однако эта вероятностная логика предполагает, что 75% узлов ведут себя честно (при меньшем меньшем проценте, например 60, аналогичные аргументы приводить также уместно, просто нужно увеличить количество подтверждений). В настоящее время ведутся экономические споры: насколько может быть верно такое предположение. Есть аргументы, что майнеры могут быть подкуплены, например через атаку P + epsilon attack, и все будут принимать (? здесь follow) атакуемую цепочку (на практике способ выполнения такого подкупа может быть запущен через майнинг-пулы с отрицательной комиссией, возможно обещающими нулевые комиссии и тихо давай даже более высокие доходы, чтобы избежать подозрений). Злоумышленники могут также захачить и разрушить инфраструктуру майнингового пула. Такая атака потенциально может быть очень дешевой, т.к. стимулирование безопасности в блокчейнах с доказательством работой ограничено (если майнер захачен, он теряет лишь свое вознаграждение за несколько часов работы; все основное остается в сохранности(their principal is safe)). И последнее по порядку, но не по значимости, это то, что Свансон уже называл в другом месте атакой «Maginot Line»: вбросить очень большое количество денег в вопрос и просто привлечь больше майнеров и (? than the rest of the network combined).

Окончательность в Casper

Протокол Casper предназначен для того, чтобы предложить более сильные гарантии окончательности, чем в подходе с доказательством работой. Во-первых, существует стандартное определение «общей экономической завершенности»: она имеет место, когда 2/3 валидаторов делают максимальные ставки на то, что данный блок или состояние будут финализированы. Это условие предлагает очень сильные стимулы для валидаторов, чтобы никогда не быть в сговоре для возврата (отката revert) блока: сделав такие максимальные ставки, в любом блокчейне где не такого блока или состояния, валидаторы теряют весь свой депозит. Как выразился Влад Замфир (Vlad Zamfir), представьте себе версию протокола с доказательством работой, в которой если вы участвуете в атаке 51%, ваше оборудование для майнинга сгорает дотла.

Во-вторых, тот факт, что валидаторы зарегистрированы заранее предполагает отсутствие возможности того, что где-то во вне есть другие валидаторы, сделавшие эквивалент более длиной цепочки. Если вы видите 2/3 валидаторов, сделавших свои ставки на утверждение (claim), то если вы где-то ещё видите 2/3 валидаторов, сделавших свои ставки на противоположное утверждение (claim) — это обязательно подразумевает, что их пересечение (по крайней мере 1/3) теперь потеряет свои депозиты, чтобы не случилось. Это мы и считаем «экономической окончательностью»: мы не можем гарантировать, что «Х никогда не будет отменен (reverted)», но мы можем гарантировать несколько более слабое утверждение, что «либо Х никогда не будет отменен (reverted)», либо большая группа валидаторов добровольно уничтожит миллионы долларов своего собственного капитала».

Наконец, даже если событие двойной двойной окончательности имеет место, пользователи не обязаны принимать то утверждение, за котором большая доля ставок. Вместо этого пользователи имеют возможность вручную выбрать ту ветку в развилке, за которой следовать, и, конечно, можно просто выбрать «ту, которая была первой». Успешная атакак в Casper выглядит больше похожей на жесткий форк (hard-fork), чем на возврат в прежнее состояние (reversion), и …. воспользоваться здравым смыслом, чтобы определить какая ветвь не была атакована и действительно представляет результат транзакций, которые первоначально были подтверждены как окончательные.

Право и экономика

Однако, эти строгие меры защиты, тем не менее экономические. И здесь мы переходим к следующей части аргументов Свансона:

Таким образом, если собственная рыночная стоимость токенов (биткойнов или эфира) возрастет или упадет, тоже самое произойдет и с объемом работы майнеров, которые соревновались за получение сетевого сеньоража и …..капитальные затраты пропорционально предельной стоимости токенов (and expend or contract capital outlays in proportion to the tokens marginal value.) В этом случае открытой остается единственная возможность, что при опредленных экономических условиях Византийские акторы смогут и будут успешно делать реорганизацию блоков без правовых оснований.

Есть две версии этого аргумента. Первая -это разновидность точки зрения «правового максимализма», что «простые экономические гарантии» бесполезны (worthless) и в чисто философском смысле юридические гарантии — единственные, на которые можно рассчитывать. Эта строгая версия очевидно не верна: во многих случаях основными или даже единственными наказаниями, которые определяет закон за должностные преступления, являются штрафы, а штрафы сами по себе не что иное как «простые экономические стимулы». Если простые экономические стимулы достаточно хороши для закона, по крайне мере в некоторых случаях, то тогда они должны быть достаточно хороши и для архитектуры взаимозачетов, по крайней мере в некоторых случаях.

Вторая версия аргумента гораздо более простая и прагматичная. Предположим, что в текущей ситуации общая стоимость всех эфиров 700 миллионов долларов, вы подсчитали, что вам нужно 30 миллионов долларов майнинговой мощности для атаки 51%, и (and once Casper launches you predict that there will be a staking participation rate of 30%,), и таким образом стоимость отмены (reversion) окончательности обойдется минимум в $700 million * 30% * 1/3 = $70 миллионов долларов(если вы хотите понизить вашу толерантность к валидаторам (dropping offline to 1/4), тогда вы можете увеличить порог окончательности до 3/4, и теме самым увеличить размер пересечения до 1/2 и тем самым ещё увеличив запас по безопасности до 105 миллионов долларов). Если вы торгуете акциями стоимостью 10 миллионов долларов и вы намереваетесь делать это всего лишь два месяца, то почти наверняка все будет в порядке; экономические стимулы публичного блокчейна будут делать довольно хорошую работу по демотивации должностных преступлений, и любая атака не будет доставлять проблем (any attack will not be nearly worth the trouble).

Теперь предположим, что вы собираетесь торговать акциями стоимостью 10 миллионов долларов, но вы собираетесь совершать это, используя публичный блокчейн эфириума, как базовый инфраструктурный слой в течении пяти лет. Теперь у вас гораздо меньше уверенности. Стоимость эфира может остаться той же самой или вырасти, или стать близкой у нулю. Ставки участников в Casper могут вырасти до 50%, или могут упасть к 10%. Следовательно, вполне возможно, что стоимость атаки 51% упадет скажем даже ниже 1 миллиона долларов. В таком случае, проведение атаки 51% для получения дохода за счет манипуляций с рынком атак вполне возможно (conducting a 51% attack in order to earn profits through some market manipulation attack is entirely possible).

Третий кейс ещё более очевидный: что будет, если вы захотите торговать акциями стоимостью 100 миллиардов долларов? Теперь цена атаки на публичный блокчейн будет сравнима с потенциальной прибылью от манипуляции рынком атаки (profits from a market manipulation attack); следовательно публичный блокчейн совершенно не подходит для этой задачи.

Стоит отметить, что стоимость атаки не так просто оценить, как показано выше. Если вы подкупите существующих валидаторов на проведение атаки, то математика применима. Более реалистичный сценарий, однако, будет включать покупку монет и их использование в качестве депозита в атаке. Цена в этом случае будет либо 105 либо 210 миллионов долларов, в зависимости от порога окончательности. Акт покупки монет также может повлиять на цену. Фактическая атака при несовершенном планировании почти наверняка приведет к ещё большим потерям, чем теоретический минимум1/3 или 1/2, и объём доходов, который может быть получен от нападения вероятно будет намного меньше, чем общая стоимость активов. Однако общие принцип остается прежним.

Некоторые сторонники некоторых криптовалют доказывают, что это временные проблема, и что в ближайшие пять лет рыночная капитализация выбранной ими валюты будет близка к $1 триллиону, ithin an order of magnitude of gold, и поэтому приведенные аргументы будут спорными. Такая позиция, в настоящий момент, возможно непростительна (arguably indefensible): если банк всерьез считает это возможным, то он должен бросить все свои blockchain-based securitization инициативы и, вместо этого, просто купить и держать столько единиц этой криптовалюты сколько возможно. Если, в будущем, какой-то криптовалюте действительно удастся так вырасти, то несомненно, будет стоить переосмыслить доводы безопасности.

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

Цензуроустойчивость и другие практические проблемы. (Censorship Resistance, and other Practical Concerns)

Ещё одна поднимаемая проблема — это вопрос того, что публичные блокчейны — цензуроустойчивы, что позволяет любому совершать сделки, в то время финансовые институты предъявляют требование иметь возможность ограничивать какие акторы могут участвовать, в какой системе, и , иного, в какой форме. Это совершенно правильно. Один контрапункт может быть в том, что публичные блокчейны, и в частности такой обобщенный, как Эфириум, может служить базовым уровнем для систем, которые хотят делать такие ограничения: например, можно можно создать контракт, разрешающий транзакции, которые переводят на и со счетов, находящихся в специальном списке либо одобренных специальной организацией, представленной отдельным адресом в цепочке. Возражение к этому контрапункту в другом месте в том, что такая конструкция похожа на машину Рубена Голдберга (*что-то сложное для простых функций), и можно также просто создать механизм на регулируемом (permissioned) блокчейне в первую очередь, в противном случае нужно платить ценой цензуро-устойчивости и независимости от традиционно правовой системы, that public chains provide without the benefits/.

Есть и другие проблемы с эффекивностью. Поскольку публичные блокчейны должны обеспечивать высокую степень децентрализации, должна быть возможность запускать программное обеспечение узла на стандартном пользовательском ноутбуке. Это накладывает ограничения на пропускную способность для транзакций, которого нет в той же степени в регулируемом (permissioned) блокчейне, где просто может быть установлено требование ко всем узлам: 64-разрядные ядра и очень высокоскоростной интернет. В будущем, есть намерение облегчить эти проблемы публичных блокчейнов через сегментирование, и если все будет реализовано как запланировано, то через 15 лет не будет никаких ограничений на масштабирование пропускной способности блокчейнов при достаточном распараллеливании и добавлении достаточного количества узлов в сеть, хотя некоторая разница в эффективности неизбежно останется и в этом и есть разница в стоимости между публичными и регулируемыми (permissioned) блокчейнами.

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

В тоже время у публичных блокчейнов есть много преимуществ, и, скорее всего, есть много кейсов, для которых юридические издержки, издержки развития бизнеса и доверия, издержки создания корпоративного блокчейна для некоторых приложений настолько высоки, что гораздо проще сделать это на публичном блокчейне. И большая часть того, что делает публичный блокчейн ценным — в его способности позволять пользователям создавать приложения независимо от их социальной связанности: даже 14-летний подросток может запрограммировать децентрализованный обменник, опубликовать его на блокчейне, а другие могут оценить и использовать его, основываясь на своих выводах. Некоторые разработчики просто ни как не связаны, чтобы вместе создать консорциум, и публичные блокчейны играют ключевую роль для таких разработчиков. Синергия от использования разных программ, которая может органично появиться в публичных блокчейнах, - это ещё одна важная выгода.

В конечном счете, мы може м видеть две эволюционирующие экосистемы, to serve different constituencies over time, … с течением времени. И хотя до сих пор в них есть много вопросов масштабируемости, безопасности и конфиденциальности, они могут принести большую пользу сосуществуя вместе.

Обзор блога Ethereum (выборочно), часть 10

Serenity PoC2

Posted byuserVitalik Buterin on March 5th, 2016.

После двух месяцев дополнительной работы с моменты выхода первого релиза доказательства концепции на Питоне, я рад анонсировать, что теперь доступно Serenity PoC2 (доказательство концепции 2). И хотя до выхода релиза клиента для тестовой сети всё ещё далеко,much less a production-ready one, PoC2 принесло ряд важных улучшений. Первое и важное, цель PoC2 — воплотить в жизнь полный протокол, включая основные краеугольные вещи (ставки(slashing bets) и депозиты), для того, чтобы убедиться, что мы охватили все детали протокола и увидеть это в действии, пусть даже в очень ограниченной тестовой среде. Эта цель была достигнута. В то время как PoC1 включал только минимум функциональности, необходимый для сборки и запуска Casper и EIP 101, PoC2 включает в себя по существу полный протокол Casper/Serenity, EIP 101 и 105.

Специфические черты, которые можно обнаружить в PoC2, которые не поддерживались в PoC1:


  • EIP105-реализация: EIP105 — это ..(sharding scaffolding”) EIP105, которые позволяют распараллеливать обработку транзакций Эфириума, и готовит почву для более поздней sharding схемы (которую ещё предстоит определить). Здесь использован механизм … бинарного дерева (binary tree sharding mechanism), описанный здесь, позволяющий транзакциям указывать «диапазон действия» (activity range”), который ограничивает адреса, которые транзакция может затронуть при своем исполнении, гарантируя, что набор транзкций с непересекающимися диапазонам активности может обрабатываться параллельно. It also introduces SSTOREEXT and SLOADEXopcodes to allow contracts to access storage of the same address in other shards (provided that the target shard is within the activity range); this mechanism essentially means that the binary shard tree serves as a super-contract sharding mechanism and a sub-contract sharding mechanism at the same time.


  • Проверка газа (Gas checking) — алгоритм, распознающий шаблоны транзакций, для того чтобы убедится в корректной оплате газа. Currently, this is accomplished by only accepting transactions going to accounts that have a particular piece of “mandatory account code, which gives the account holder freedom to specify two pieces of code: the checker code and the runner code. Checker code is meant to perform quick checks such as signature and nonce verification; the pattern-matching algorithm gives a maximum of 250,000 gas for the checker code to run. Runner code is meant to perform any expensive operations that the transaction needed to carry out (eg. calling another contract with more than 250,000 gas). The main practical consequence of this is that users will be able to pay for gas directly out of contracts (eg. multisig wallets, ring signature mixers, etc) and will not need to separately always have a small amount of ETH in their primary account in order to pay for gas – as long as the gas payment from the contract is made within 250,000 gas all is good.


  • Смеситель для кольцевых подписей(Ring signature mixer) — часть скрипта test.py включает в себя теперь создание контракта проверки кольцевой цифровой подписи (ring signature verification contract), разработанной как миксер: …... (не переведено)


  • Более точные цифры по процентным ставкам и параметрам правил подсчета очков — правила подсчета (т.е. механизм, определяющий, как много денег получили валидаторы, в зависимости от сделанных ими ставок) теперь представлены как линейная комбинация логарифмических и квадратичных правил подсчета очков с параметрами такими как:. (не переведено).... Регулирование этих параметров будет продолжаться, чтобы убедиться в том, что реальные валидаторы смогут быть достаточно прибыльными.


  • Более точные правила стимулирования валидаторов — максимум 250 валидаторов, минимальная сумма эфира начинается с 1250 ETH и далее возрастает гиперболически, по формуле min = 1250 * 250 / (250 - v), где v текущее количество активных валидаторов (т.е. при числе активных валидаторов 125 минимальная суума превращается в 2500 ETH, если их 225 — то 12500 ETH, если 248 - 156250 ETH). Когда вы вовлечены, вы можете делать ставки и получать доход в течении 30 миллионов секунд (порядка 1 года), а после этого момента начинает действовать специальный штраф в размере 100 частей на миллиард на блок (100 parts per billion per block) делая дальнейшую валидацию невыгодной: это заставляет валидаторов меняться (? churn).


  • Новые прекомпиляции (New precompiles including ECADD and ECMUL), включая ECADD и ECMUL (критично для кольцевых подписей), MODEXP, RLP декодирование и «контрак депозита газа» (механизм, используемый в обязательном коде контракта для оплаты газом; теоретически, при необходимости, он может быть вписан в код EVM, но могут возникнуть проблемы с эффективностью).


  • Изменения в архитектуре для LOG и CREATE (Rearchitecting of LOG and CREATE as precompiles) опкоды все ещё существуют для обратной совместимости, но просто вызывают прекомпилиции (call the precompile addresses). Это ещё один шаг к обобщению («abstraction»).


  • Новый механизм ставок непосредственно на корневых состояниях (directly on state roots)


  • Логика обнаружения и экранирования (slashing) двойных ставок и двойных блоков.


  • Логика нахождения консенсуса на высоте (height) даже если валидатор произвел несколько блоков на этой высоте(height) .


Сделанные здесь протокольные решения ни в коем случае не окончательные; многие из них все ещё активно обсуждаются среди разработчиков. Следующие несколько раундов PoC будут направлены на реализацию чего-то похожего на узел (node) Serenity, наряду с корректным p2p сетевым слоем, с конечной целью запуска тестовой сети Serenity между несколькими компьютерами. В тоже время наша команда исследователей будет продолжать орудовать над более мелкими деталями протокола, чтобы убедиться, что все они реализованы правильно и обосновано.

Дополнительно в следующие несколько недель мы планируем дать более доступный материал по спецификации Casper протокола и (design rationale), охватывая концепцию консенсуса-по-ставке как конкретных проектных решений, от правил привил стимуляции валидаторов в механизме ставок до выбора предложенных блоков.

Обзор блога Ethereum (выборочно), часть 9

Privacy on the Blockchain Конфиденциальность в блокчейне

Posted by Vitalik Buterin on 2016.01.15

Блокчейны — это очень мощная технология, регулярные читатели блога с этим согласятся. Они позволяют кодировать большое количество взаимодействий и осуществлять их с большой надежностью, исключая бизнесовые и политические риски, связанные с централизованным управлением, и уменьшают потребность в доверии. С помощью этих технологий создается платформа, на которой могут совместно быть запущены приложения разных компаний и даже разных типов, позволяя взаимодействовать чрезвычайно эффективно и бесшовно, оставляя след для аудита любым, кто хотел бы убедиться, что все работает правильно.

Однако, когда я и другие рассказываю компаниям о том, что нужно их приложения делать на блокчейне, всегда поднимаются два основных вопроса: масшатбируемость и конфиденциальность. Масштабируемость — серьезная проблема. Производительность сегодняшних блокчейнов — 3-20 транзакций в секунду.... Это много меньше чем требуется для финансовых платформ микроплатежей. Над этим мы активно работаем. Вторая серьёзная проблема блокчейна — конфиденциальность. Как бы не были соблазнительны другие преимущества блокчейна, ни компании, ни физические лица особо не заинтересованы в публикации всей информации о них в публичной базе данных, где она может быть произвольно прочитана без каких-либо ограничений представителями собственного и зарубежного правительств, членами семьи, коллегами и конкурентами.

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

Святой Грааль

Во первых, разрешите начать с технологий, которые собственно и есть святой грааль, в том смысле, что они на самом деле предлагают преобразовать произвольные приложения в полностью конфиденциальные, позволяющие пользователям извлечь выгоду из безопасности блокчейна, использую децентрализованную сеть для обработки транзакций, и «шифруя» данные таким образом, что даже если все вычисления происходят в открытом виде, лежащий в их основе «смысл» был бы полностью скрыт.

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

К сожалению, математически доказано, что абсолютный черный ящик невозможен. Получается, что по крайней мере вы всегда можете видеть, что получается на выходах программы в зависимости от того, что подается на вход. Однако есть не строгий стандарт неразличимой обфускации, который мы можем удовлетворить: имея две эквивалентные программы с обфусцированным алгоритмом (например x = (a + b) * c и x = (a * c) + (b * c)), невозможно определить от какого именно источника был получен результат. Что бы посмотреть, насколько этого достаточно для наших задач, рассмотрим две программы:


  1. y = 0


  2. y = sign(privkey, 0) - sign(privkey, 0)


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

Как мы это используем на блокчейне? Для цифровых токенов подход простой. Мы создаём обфусцированный смарт-контракт, содержащий приватный ключ и принимающий инструкции, зашифрованные соответствующим публичным ключом. Контракт запоминает остатки счетов в шифрованном хранилище, и если контракт хочет прочитать хранилище, он расшифровывает его внутри, а если контракт хочет записать в хранилище он шифрует желаемый результат перед записью. Если кто-то хочет прочитать остаток своего счета,то они кодируют этот запрос, как транзакцию и моделируют его на своей собственной машине; код обфусцированного контракта проверит подпись транзакции, чтобы убедиться, что данный пользователь уполномочен читать состояние остаток, и если это так, то он вернет расшифрованный остаток; в противном случае код вернет ошибку, и у пользователя не будет возможности получить информацию.

Однако, так же как и с несколькими другими технологиями такого типа, существует одна проблема: механизм, выполняющий такую обфускацию чудовищно неэффективен. Миллиард накладных расходов явялется нормой, и это ещё оптимистично; недавние исследования показывают, что «выполнение [2-х битное умножение] последовательности команд на том же процессоре займет 1.3*10 лет»....

Шаг вглубь (вниз?)

Однако, есть две ветви в технологии, которые позволяют добиться почти обфускации, хоть и с некоторым компромисом в безопасности. Первая — это безопасные много сторонние (multi-party) вычисления. Такие вычисления позволяют программам (и их состояниям) быть разделенными между N сторонами таким образом, что вам потребуется M из них (например N = 9, M = 5) для того, чтобы завершить вычисления или получить любые внутренние данные программы или её состояния. Таким образом, если вы можете доверять честности большинства участников, эта схема хороша для обфускации. Если нет, то она бесполезна.

Математика, лежащая в основе безопасных распределенных (multi-party) вычислений (SMPC) сложна, но все равно проще, чем обфускация; ...(технические подробности ). SMPC значительно более эффективна чем обфускация, чтобы её можно было использовать на практике, но все ещё чрезвычайно неэффективна. Операции сложения могут выполняться довольно быстро, но каждый раз когда SMPC экземпляр делает небольшое фиксированное количество операций умножения, ему нужно выполнять операцию «понижения степени» с привлечением сообщений, отправленные всеми участниками сети ко всем остальным. Последние работы снижают накладные расходы связи с квадратичных до линейных, но каждая операция умножения все ещё привносит неизбежные сетевые задержки.

Требование доверия к участникам также обременительно. Заметим, что как и в других приложениях, участники могут сохранять данные, а затем вступать в сговор для их раскрытия. Кроме того, невозможно сказать, сделали ли они это, и, таким образом, невозможно мотивировать участников поддерживать конфиденциальность в сети. По этой причине SMPC возможно более применима для частных блокчейнов (где стимулы находятся вне протокола), чем для публичных цепочек.

Другой вид технологий с очень сильными свойствами — доказательство с нулевым знанием. В частности недавние разработки по «сжатым аргументам знаний» (succinct arguments of knowledge) (SNARKs). Доказательство с нулевым знанием позволяет пользователю построить математическое доказательство, что данная программа, исполняемая с некоторыми (возможно скрытыми) известными пользователю входными данными, имеет конкретный (публично известный) результат, без раскрытия какой-либо иной информации. Существует много типов доказательств с нулевым знанием довольно простых в реализации; например вы можете думать о цифровой подписи, как о таком типе доказательства, показывающем, что если вы знаете значение секретного ключа, то, применяя стандартный алгоритм, оно может быть преобразовано в значение публичного ключа. ZK-SNARKs, с другой стороны, позволяет вам провести такое доказательство для любой функции.

Для начала посмотрим несколько специфичных примеров. Один естественный кейс — это система идентификации. Предположим, например, что вы хотите доказать системе, что вы (1) гражданин данной страны и (2) вам больше 19 лет. Предположим, что ваше правительство технологически прогрессивно, и использует криптографически подписанные цифровые паспорта, включающие имя и дату рождения, а так же секретный и публичный ключи. Вы могли бы построить функцию, которая берет на вход цифровой паспорт и подпись, подписанную секретным ключом паспорта, а возвращает 1 если (1) дата рождения меньше чем 1996 И (2) паспорт подписан публичным ключом правительства (? возможно имеется ввиду секретный ключ) И (3) подпись верна, и возвращает 0 в других случаях. Вы могли бы затем провести zero-knowledge доказательство, показывающее, что ваши входные данные после обработки этой функцией возвращают 1. И подписать доказательство другим секретным ключом, которые вы хотите использовать в дальнейшем для взаимодействия с этим сервисом. Сервис может проверить доказательство, и, если оно верно, сервис примет сообщения с вашим секретным ключом как валидные.

Вы также можете использовать такую схему для доказательства более сложных утверждений, таких как «я гражданин этой страны и мой ID номер не принадлежит множеству уже использовавшихся ID номеров» или «у меня были положительные отзывы от некоторых продавцов, после покупок у них на сумме не менее 10 000$» или «я обладаю активами в сумме не менее 250 000$».

Другая категория кейсов использования этой технологии — владение цифровыми токенами. Для того чтобы иметь функционирующую систему токенов, вам, строго говоря, не нужно иметь видимые счета и остатки; фактически, всё что вам нужно — это решить проблему «двойной траты» - если у вас есть 100 единиц актива, то вы должны иметь возможность их потратить только единожды, ни в коем случае не дважды. С zero-knowledge доказательством мы конечно это можем; утверждение этого выглядит примерно как «Я знаю секретное число, за (behind) одним из аккаунтов в этом множестве аккаунтов, которое было создано, и оно не совпадает с любым секретным числом, которое уже было представлено». Аккаунты при такой схеме становятся одноразовыми: «аккаунт» создается при каждой отправке актива и акккаунт отправителя полностью расходуется. Если вы не хотите полностью израсходовать данный аккаунт, вы должны просто создать два аккаунта, один — контролируемый получателем, и второй, с оставшейся «сдачей», контролируемый самим отправителем. По существу такая схема используется в Zcash (see more about how it works here).

Для двух-сторонних смарт контрактов (например, что то типа соглашения по финансовому производному инструменту между двумя сторонами eg. think of something like a financial derivative contract negotiated between two parties) применение zero-knowledge доказательства довольно легко понять. При изначальном обсуждении контракта, вместо создания смарт контракта, содержащего фактическую формулу, по которой будут выплачены средства(например, в двоичном варианте, формула может быть «если индекс I по нескольким источникам данных будет больше чем X, отправить все A, в других случаях отправить все B»), создать контракт содержащий хэш этой формулы. Когда контракт будет исполнен, любая из сторон может самостоятельно вычислить сумму, какую сумму должны получить A и B и предоставить результат вместе с zero-knowledge доказательством того, что формула с правильным хэшем даёт такой же результат. Блокчейн выясняет, сколько внесли A и B и сколько они получили обратно, но не показывает почему это произошло.

Эта модель может быть обобщена для N-сторонних контрактов и Hawk проект стремится сделать именно это.

Начиная с другого конца: низко-технологичные подходы.

Другой путь повышения конфиденциальности заключается в применении очень низко-технолигичных подходов, без использования криптографии, за исключением(?) простого хэширования, шифрования и криптографии публичного ключа. Это путь, с которого начинался Биткоин в 2009 году; и хотя уровень конфиденциальности, который он дает на практике довольно трудно поддается количественной оценке и ограничениям, он все ещё несомненно в какой-то мере его предоставляет.

Простейший шаг, который был сделан Биткоином для повышения конфиденциальности - это использование одноразовых аккаунтов для хранения средств, так же как в Zcash. Так же как в Zcash, каждая транзакция должна полностью расходовать средства одного или нескольких аккаунтов и создавать один или несколько новых аккаунтов. И пользователям рекомендовано создавать новый секретный ключ для каждого нового аккаунта, на который они хотят получать средства (хотя возможно иметь несколько аккаунтов с одинаковым приватным ключом). Основное преимущество этого в том, что по умолчанию средства пользователя не связаны между собой: если вы получите 50 монет из источника A и 50 монет из источника B, другие пользователи не смогут сказать, что эти средства принадлежат одному и тому же лицу. Кроме того, если вы переведете 13 монет на чей-то аккаунт C, создав тем самым четвертый аккаунт D, на которые переведете оставшихся 37 монет «сдачи», другие пользователи даже не могут сказать какой из двух выходов транзакции был платежом, а какой сдачей.

Однако есть проблема. Если когда-либо в будущем, вы сделаете транзакцию, использующую одновременно средства двух аккаунтов, вы необратимо «свяжите» эти аккаунты, сделав очевидным для мира, что средства пришли от одного пользователя. И более того, эти связи являются переходными: если, когда-либо, вы свяжете вместе A и B, и после этого, когда-либо свяжете A и C и т.д. вы таким образом создадите большое количество доказательств, по которым статистическим анализом можно связать весь набор ваших активов.


Биткойн разработчик Майк Хирн (Mike Hearn) предложил стратегию смягчения описанных рисков под названием избегание слияния (merge avoidance): по существу причудливый термин, в попытке минимизировать число случаев связывания аккаунтов одновременной тратой с них. Это определенно помогает, но даже внутри системы Биткоина доказано, to be highly porous and heuristic, это даже близко ничего не гарантирует.

Более продвинутая техника называется CoinJoin. В сущности CoinJoin протокол работает следующим образом:


  1. N сторон собираются вместе на каком либо ананимном канале, например Tor. Каждый из них предоставляет адрес назначения D[1] ... D[N].


  2. Одна сторона создает транзакцию, которая отправляет по одной монете на каждый адрес назначения.


  3. N сторон отключаются и затем одновременно подключаются к каналу, и каждый вносит одну монету на аккаунт, с которого средства будут платиться.


  4. Если N монет будут уплачены на аккаунт, они распределяются по адресам назначения, в остальных случаях они возвращаются.


Если все участники честны и предоставят по одной монете, тогда каждый будет ставить одну монету и получать одну монету обратно, но никто не узнает, какой именно вход связан с каким выходом. Если хотя бы один участник не поставит одну монету, тогда процесс будет неудачным, монеты будут возвращены, все участники смогут попытаться снова. Похожий алгоритм реализован by Amir Taaki and Pablo Martin for Bitcoin, и Gavin Wood and Vlad Gluhovsky for Ethereum.

Пока мы только обсуждали анонимизацию токенов. А как насчет двух-сторонних смарт — контрактов? Здесь мы используем такой же механизм, как Hawk. За исключением того, что мы заменим криптографию на криптоэкономический трюк попроще - «проверяемые вычисления». Участники посылают свои средства контракту, содержащему хэш кода. Когда приходит время выплат, любая из сторон может подтвердить результат. Другая сторона может либо отправить транзакцию, что бы согласиться с результатом, разрешив отправку средств, либо может опубликовать фактический код контракта, который запустившись в какой-то момент правильно распредлит средства. Гарантийный депозит может быть использован для стимулирования сторон к честному участию. Следовательно система конфиденциальна по умолчанию, и лишь спор способствует просачиванию информации во внешний мир.

Обобщенно этот метод называется …, и имеет преимущества в масштабируемости наряду с преимуществами в конфиденциальности.


Круговые подписи

Умеренно технически сложная, но очень многообещающая как для анонимизации токенов, так и для идентификационных приложений технология — это круговые подписи. Круговая подпись это по существу подпись, которая доказывает, что у подписанта есть секретный ключ, соответствующий одному из определенного набора публичному ключу, но не раскрывает какому именно. Короткое объяснение, как это работает математически в том, что алгоритм круговой подписи включает в себя математическую функцию, для нормального вычисления которой достаточно публичного ключа, а знание секретного ключа позволяет вам добавлять на вход некоторое значение (соль? seed), чтобы получить на выходе конкретное значение по вашему желанию. Сама подпись состоит из списка значений, в котором каждое значение сопоставляется функции, примененной к предыдущему значению (плюс некоторое значение (seed)); валидная подпись требует использовать знание секретного ключа для «замыкания петли», заставляя последнее вычисленное вами значение быть равным первому. Полученное таким образом валидное «кольцо» любой может проверить, что оно действительно «кольцо», т.к. каждое значение равно функции, вычисленной от предыдущего, плюс некоторое значение (seed). Но не существует способа сказать, на какой из «связей» был использован публичный ключ.

Существует также улучшенная версия кольцевой подписи, называемая связываемой кольцевой подписью (linkable ring signature), которая добавляет ещё одно свойство: если вы подпишите дважды одним и тем же секретным ключом, этот факт может быть обнаружен — но без раскрытия иной информации. В случае анонимизации токенов приложение довольно простое: когда пользователь хочет потратить монету, вместо требования представления правильной подписи в доказательство владения публичным ключом напрямую, мы смешиваем публичные ключи в группу, и просим пользователя просто доказать членство в этой группе (в смысле доказать владение одним из публичных ключей в этой группе). Благодаря свойству связываемости, пользователь имеющий один публичный ключ в группе, сможет потратить только один раз, конфликтующие подписи будут отклонены.

Кольцевые подписи также могут быть использованы в приложениях голосования: вместо использования кольцевой подписи для проверки траты из набора монет, мы используем их для проверки голосов. Они также могут быть использованы для приложений идентификации: если вы хотите доказать принадлежность к множеству авторизованных пользователей, без раскрытия кем именно -кольцевые подписи для этого хорошо подходят. Кольцевые подписи математически более сложные чем обычные подписи, но они весьма практичны для реализации; немного примеров кода кольцевых сигнатур на Эфириуме можно найти здесь .

Разделение секрета и шифрование.

Иногда, приложения на блокчейне это не попытка быть посредником в переводе (пеердаче) цифровых активов, или записи идентификационной информации, или обработки смарт-контрактов, а вместо этого могут использоваться в более приложениях, больше ориентированных на сами данные: установка временных меток (timestamping), хранение данных с высокой стоимостью (high-value data storage), доказактельство существования (или несуществования, как в случае отзыва сертификатов), и т.д. Общий тренд — это использование блокчейна для построения систем, в которых «пользователи сами контролируют свои собственные данные».

В таких случаях, еще раз важно отметить, что блокчейны НЕ решают вопрос конфиденциальности, а лишь являются решениями подтверждения достоверности (authenticity). Следовательно, размещение в простом текстовом виде историй болезни в блокчейне — Очень Плохая Идея. Однако они (блокчейны) могут быть скомбинированы с другими технологиями для создания целостных решений во многих отраслях, где желательно достижение таких целей, с независимыми от поставщиков блокчейнами, в которых может быть сохранена некоторая информация для предоставления гарантии достоверности.

Так что же это за технологии сохранения конфиденциальности? В случае простого хранилища данных (например историй болезни), мы можем использовать самую старую и простую из них: шифрование! Документы, перед хэшированием (помещением их в) блокчейном, должны быть зашифрованы, так что даже если данные сохранены где-нибудь типа IPFS, только пользователь со своим приватным ключом мог бы их просматривать. Если пользователь хочет наделить ещё кого-то правом просмотра некоторых записей в расшифрованном виде, но не всей информации, можно использовать что-то типа детерминированного кошелька (deterministic wallet) для извлечения отдельного ключа для каждого документа.

Другая используемая технология — разделение секрета (более подробно описана here), позволяющая пользователю зашифровать порцию данных таким образом, что М из N пользователей (таких, что например М=5 из N=9) могут скооперироваться для расшифровки данных, но не в меньшем чем M составе.

Будущее кофеденциальности.

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

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

С конфиденциальностью, как мы видим, нет такой волшебной пули. Хотя существуют частные решения для различных ситуаций, и обычно эти частные решения в большой степени гибкие, абстракция (обобщение?), которую они представляют, совершенно отлична от той, которую используют разработчики. Нетривиально перейти от «10-строчного скрипта на Питоне, содержащего код, вычитающий Х монет из баланса отправителя и прибавляющий Х монет балансу получателя» к «высоко анонимизированным цифровым токенам, использующим связываемые кольцевые подписи».

Проекты типа Hawk - очень приветствуемые шаги в правильном направлении: они предлагают обещание конвертации произвольного протокола N-стороннего протокола в протокол с нулевым занием..(zero-knowledge-ified), который доверяет только блокчейну для достоверности и одной конкретной стороне для конфиденциальности: по существу, комбинируя лучшие из обоих миров централизованного и децентрализованного подходов.