Одно из самых ценных свойств многих блокчейн-приложений в том, что они не основаны на доверии. То есть приложение может выполнять свою функцию без необходимости полагаться на определенное поведение конкретного актора, интересы которого могут измениться и в будущем подтолкнуть к непредусмотренным поступкам. Блокчейн-приложения не могут
Для начала я попытаюсь уместить в одно предложение то, что подразумеваю под доверием: доверие – это использование предположений о поведении других людей. Если до пандемии вы спокойно ходили по улице без мысли обходить незнакомцев за два метра, чтобы они вдруг не выхватили нож и не пырнули вас, вы проявляли своего рода доверие: и к тому, что люди очень редко бывают настолько невменяемыми, и к тому, что правовая система все-таки способна пресекать такое поведение. Когда вы запускаете написанный кем-то код, вы верите, что его написали честно (может быть, из-за порядочности, а может – из-за экономической ценности хорошей репутации) или что хотя бы
Обычно для анализа протоколов блокчейна я рассматриваю четыре аспекта доверия.
▓ Сколько людей должны вести себя так, как вы ожидаете?
▓ Из какого общего числа людей?
▓ Какие виды мотивации необходимы для того, чтобы эти люди вели себя именно так? Нужно ли им быть альтруистами или достаточно простого стремления к выгоде? Необходимо ли отсутствие координации между ними?
▓ Насколько пострадает система, если поведение не будет соответствовать ожиданиям?
Пока сосредоточимся на первых двух критериях. Нарисуем график.
Общее правило такое: чем темнее цвет на графике, тем лучше. Рассмотрим каждую категорию.
▓ 1 ИЗ 1: есть ровно один актор, и система будет работать, если (и только если) этот актор будет делать то, что от него ожидается. Это традиционная «централизованная» модель, и именно ей мы ищем лучшую альтернативу.
▓ N ИЗ N: «антиутопический» мир. Вы полагаетесь на целую кучу акторов, и
▓ N / 2 ИЗ N: именно так устроены блокчейны – они работают, если большинство майнеров (или PoS-валидаторов) ведут себя честно. Обратите внимание, что для «N / 2 из N» чем больше N, тем лучше; блокчейн с несколькими майнерами/валидаторами, доминирующими в сети, не столь интересен, как блокчейн с широко рассредоточенными майнерами/валидаторами. Однако мы хотим повысить даже этот уровень безопасности – отсюда и беспокойство по поводу восстановления после атаки 51 %.
▓ 1 ИЗ N: есть много акторов, и система работает до тех пор, пока хотя бы один из них делает то, что вы от него ожидаете. Сюда попадает любая система, основанная на доказательствах мошенничества (fraud proofs), а также схемы доверия (trusted setups), хотя в этом случае значение N часто меньше. Обратите внимание, что здесь лучше иметь как можно больше N!
▓ Несколько из N: есть много акторов, и система работает до тех пор, пока хотя бы какое-то небольшое фиксированное количество из них делает то, что от них ожидается. В эту категорию попадает механизм проверки доступности данных.
▓ 0 ИЗ N: система работает так, как от нее ожидается, независимо от акторов. В эту категорию попадает самопроверка блока.
Хотя все категории, кроме «0 из N», можно считать «доверительными», они серьезно отличаются друг от друга! Уверенность в том, что один конкретный человек (или организация) будет делать то, что от него ожидают, сильно отличается от уверенности в том, что какой-то человек где бы то ни было будет делать то, что от него ожидают. «1 из N», возможно, гораздо ближе к «0 из N», чем к «N / 2 из N» или «1 из 1». Модель «1 из N» может казаться похожей на «1 из 1», поскольку в обоих случаях мы имеем дело с одним актором, но на деле в них совершенно разные условия: если в системе «1 из N» актор, с которым вы работаете в конкретный момент, пропадет или окажется злодеем, можно будет просто переключиться на другого, тогда как в системе «1 из 1» это будет полный провал.