Заслуживают ли «модели доверия» своего названия?
24 апреля 2022 г.Одним из наиболее ценных свойств многих блокчейн-приложений является ненадежность: способность приложения продолжать работу ожидаемым образом, не полагаясь на конкретного участника, который ведет себя определенным образом.
Даже когда их интересы могут измениться и подтолкнуть их к каким-то другим неожиданным действиям в будущем.
Блокчейн-приложения никогда не бывают полностью ненадежными, но некоторые приложения гораздо ближе к ненадежным, чем другие. Если мы хотим сделать практические шаги к минимизации доверия, мы хотим иметь возможность сравнивать разные степени доверия.
Во-первых, мое простое определение доверия, состоящее из одного предложения: доверие — это использование любых предположений о поведении других людей. Если до пандемии вы шли по улице, не соблюдая двухметровой дистанции от незнакомых людей, чтобы они не могли вдруг достать нож и нанести вам удар, то это своего рода доверие: оба верят, что люди очень редко бывают полностью невменяемыми. , и верьте, что люди, управляющие правовой системой, продолжают создавать сильные стимулы против такого поведения.
Когда вы запускаете фрагмент кода, написанный кем-то другим, вы верите, что он написал код честно (будь то из-за собственного чувства приличия или из-за экономической заинтересованности в поддержании своей репутации), или, по крайней мере, что существует достаточно люди проверяют код, чтобы найти ошибку.
Не выращивать еду для себя — это еще один вид доверия: доверие, что достаточное количество людей поймет, что в их интересах выращивать еду, чтобы они могли продать ее вам. Вы можете доверять разным размерам групп людей, и существуют разные виды доверия.
В целях анализа протоколов блокчейна я склонен разбивать доверие на четыре измерения:
- Сколько людей вам нужно, чтобы вести себя так, как вы ожидаете?
- Из скольких?
- Какие виды мотивации необходимы для поведения этих людей? Должны ли они быть альтруистами или просто искать прибыль? Они должны быть несогласованными?
- Насколько сильно система потерпит неудачу, если предположения будут нарушены?
А пока сосредоточимся на первых двух. Мы можем нарисовать график:
Чем больше зелени, тем лучше. Разберем категории подробнее:
- 1 из 1: есть ровно один актер, и система работает, если (и только если) этот один актер делает то, что вы от него ожидаете. Это традиционная «централизованная» модель, и мы пытаемся улучшить ее.
- N из N: «антиутопический» мир. Вы полагаетесь на целую группу актеров, все из которых должны действовать так, как ожидается, чтобы все работало, без резервных копий, если кто-то из них выйдет из строя.
- N/2 из N: так работают блокчейны — они работают, если большинство майнеров (или валидаторов PoS) честны. Обратите внимание, что N/2 от N становится значительно более ценным, чем больше становится N; Блокчейн с несколькими майнерами/валидаторами, доминирующими в сети, гораздо менее интересен, чем блокчейн с широко распространенными майнерами/валидаторами. Тем не менее, мы хотим улучшить даже этот уровень безопасности, отсюда и беспокойство по поводу выживания при атаках 51%.
- 1 из N: участников много, и система работает до тех пор, пока хотя бы один из них делает то, что вы от них ожидаете. Любая система, основанная на доказательствах мошенничества, попадает в эту категорию, как и доверенные установки, хотя в этом случае N часто меньше. Обратите внимание, что вы хотите, чтобы N было как можно больше!
- Немногие из N: действующих лиц много, и система работает до тех пор, пока хотя бы небольшое фиксированное число из них делает то, что вы от них ожидаете. [Проверки доступности данных] (https://arxiv.org/abs/1809.09044) попадают в эту категорию.
- 0 из N: система работает, как и ожидалось, без какой-либо зависимости от внешних субъектов. Проверка блока путем его самостоятельной проверки относится к этой категории.
Хотя все сегменты, кроме «0 из N», можно считать «доверительными», они сильно отличаются друг от друга!
Вера в то, что один конкретный человек (или организация) будет работать так, как вы ожидаете, сильно отличается от уверенности в том, что какой-то отдельный человек где-либо будет делать то, что вы от него ожидаете.
«1 из N», возможно, намного ближе к «0 из N», чем к «N/2 из N» или «1 из 1». Модель 1 из N может показаться моделью 1 из 1, потому что кажется, что вы проходите через одного актера, но реальность этих двух очень отличается: в модели 1 из N системе, если актер, с которым вы работаете в данный момент, исчезнет или станет злым, вы можете просто переключиться на другого, тогда как в системе 1-к-1 вы облажались.
В частности, обратите внимание, что даже правильность программного обеспечения, которое вы используете, обычно зависит от модели доверия «несколько из N», чтобы гарантировать, что если в коде есть ошибки, кто-то их обнаружит.
Имея это в виду, очень усердно пытаться перейти от 1 из N к 0 из N в каком-либо другом аспекте приложения часто похоже на изготовление усиленной стальной двери для вашего дома, когда окна открыты.
Еще одно важное различие заключается в следующем: почему система дает сбой, если нарушается ваше допущение о доверии? В блокчейнах наиболее распространены два типа сбоев: сбой жизнеспособности и сбой безопасности.
Сбой живучести — это событие, при котором вы временно не можете сделать то, что хотите (например, вывести монеты, включить транзакцию в блок, прочитать информацию из блокчейна).
Сбой безопасности — это событие, при котором активно происходит что-то, что система должна была предотвратить (например, недопустимый блок включается в цепочку блоков).
Вот несколько примеров моделей доверия для нескольких протоколов второго уровня блокчейна. Я использую «small N» для обозначения набора участников самой системы уровня 2 и «big N» для обозначения участников блокчейна; всегда предполагается, что протокол уровня 2 имеет меньшее сообщество, чем сам блокчейн.
Я также ограничиваю использование слова «сбой жизнеспособности» случаями, когда монеты застревают на значительное время; невозможность использовать систему, но возможность почти мгновенно выйти из нее не считается сбоем жизнестойкости.
- Каналы (включая государственные каналы, сеть Lightning): 1 из 1 трастов для живости (ваш контрагент может временно заморозить ваши средства, хотя вред от этого можно уменьшить, разделив монеты между несколькими контрагентами), N/2 доверия к безопасности (атака 51% на блокчейне может украсть ваши монеты)
- Plasma (предполагается, что это централизованный оператор): 1 из 1 трастов для живучести (оператор может временно заморозить ваши средства), N/2 траста big-N для безопасности (атака блокчейна 51%).
- Plasma (предполагая полудецентрализованного оператора, например, DPOS): N/2 доверительного управления с малым числом N для живучести, N/2 доверительного управления с большим числом N для обеспечения безопасности.
- Оптимистическая сводка: 1 из 1 или N/2 доверия с малым N для живучести (зависит от типа оператора), N/2 доверия с большим N для безопасности.
- Сводка ZK: 1 из small-N trust для живучести (если оператор не может включить вашу транзакцию, вы можете вывести средства, а если оператор не сможет немедленно включить ваш вывод, они не могут производить больше пакетов, и вы можете самостоятельно вывести с помощью любой полной ноды накопительной системы); отсутствие риска сбоя безопасности
- Свертывание ZK (с улучшением светоотдачи): без живости риски отказа, отсутствие риска отказа безопасности
Наконец, есть вопрос о стимулах: должен ли актер, которому вы доверяете, быть очень альтруистичным, чтобы вести себя так, как от него ожидают, лишь слегка альтруистичным или достаточно рациональным? Поиск доказательств мошенничества «по умолчанию» немного альтруистичен, хотя насколько он альтруистичен, зависит от сложности вычислений (см. дилемма верификатора. )), и есть способы модифицировать игру, чтобы сделать ее рациональной.
Помощь другим в выходе из накопительного пакета ZK рациональна, если мы добавим способ микрооплаты за услугу, поэтому действительно мало причин для беспокойства, что вы не сможете выйти из накопительного пакета с каким-либо значительным использованием.
Между тем, большие риски других систем можно уменьшить, если мы согласимся как сообщество на не принимать цепочки атак 51%, которые возвращаются слишком далеко в историю или блокируют цензуру слишком долго.
Вывод: когда кто-то говорит, что система «зависит от доверия», спросите его подробнее, что он имеет в виду! Означают ли они 1 из 1, или 1 из N, или N/2 из N? Они требуют, чтобы эти участники были альтруистичны или просто рациональны? Если альтруистический, то это крошечные расходы или огромные расходы?
А что, если предположение нарушается — нужно просто подождать несколько часов или дней, или у вас есть активы, которые застряли навсегда? В зависимости от ответов ваш собственный ответ на вопрос, хотите ли вы использовать эту систему, может сильно отличаться.
- Первоначально опубликовано как «[Модели доверия] (https://vitalik.ca/general/2020/08/20/trust.html)»*
Оригинал