Андреас Антонопулос: Какова роль Биткойн-узла?

31
ПОДЕЛИТЬСЯ

Андреас Антонопулос: Какова роль Биткойн-узла?

Вопрос: Мы все говорим о мощности сети, сейчас она составляет около 3000 PH (прим.ред: на момент выступления Андреаса Антонопулоса), но никто не говорит сколько существует узлов, могли бы вы объяснить их роль в протоколе?

Ответ: Многие люди говорят о майнинге. Да, майнинг – это одна из движущих сил сети Биткойн, но это не означает, что это единственная технология, используемая в Биткойн, это даже не самая интересная её часть.

Вы все используете интернет, речь идет не про Facebook, я говорю про Internet (смех в зале). Я хотел бы узнать, кто из присутствующих в этом зале знает о BGP? 4 человека вместе со мной. А вы знаете, что без этого интернет не может существовать? BGP отвечает «за доставку ваших пакетов» из одной точки планеты в другую. (прим. BGP (Border Gateway Protocol) — это основной протокол динамической маршрутизации, который используется в Интернете. Маршрутизаторы, использующие протокол BGP, обмениваются информацией о доступности сетей.) Это одна из основных технологий лежащих в основе всемирной маршрутизации. И вы используете ее каждый день, но вы даже не подозреваете об этом. Это как система фильтрации и очистки в водопроводе, он гарантирует, что вы «не отравитесь», тоже самое с BGP и тоже самое с майнингом. Майнинг это технология о которой должны знать майнеры, точно так же как о BGP знают интернет провайдеры, а большинство других пользователей об этом даже не подозревают.

С другой стороны – узлы, они очень важны, так же, как важны серверы в контексте интернета, даже больше. Что такое узел Биткойн? Узел (или нода) – это компьютер, участвующий в работе сети Биткойн и использующий p2p протокол, который позволяет ему и таким же компьютерам общаться между собой в сети и распространять информацию о транзакциях и блоках. Вы можете запустить сами такую же. На данный момент мы знаем о существовании 10 000 узлов, которые не скрывают этого и используют стандартные порты, по которым могут быть найдены другими. Это в 5-6 раз меньше, чем количество узлов, которые скрывают свое существование, не используют стандартные порты, или вовсе скрыты за ТОРом. Содержать «полный», «не скрытый» узел важно, т.к. он является авторитетным верификатором каждой транзакции в блоке, такие узлы называют “полными”, или если быть точнее – «fully validating node» (полностью проверяющими узлами). Такой узел содержит полную версию всего блокчейна, так же она может содержать уменьшенную сокращенную копию. Подобный узел взаимодействует с определенным списком пиров, которые выбрали его в сети или подключились случайно, и узел данным пирам «не доверяет». В процессе общения, узел мониторит пиры, которые к нему подключены, и каждый раз, когда получает от них новую транзакцию или блок, происходит примерно следующее:

«В сети появилась новая транзакция», – сообщает пир.

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

И если Вы отправите ей транзакцию, которая заведомо неверная, она не только отклонит ее, но и попросту «перестанет с Вами разговаривать», дав ответ наподобие: «Итак, ты врешь, я не буду коммуницировать с тобой 24 часа, иди постой в углу» 🙂

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

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

У меня есть узели даже не один. Каждый блокчейн-сервис, биржа, кошелек, каждый, кто хочет быть точно уверенным, держит собственный полный блокчейн-узел. УЗЛЫ устанавливают правила, а не майнеры. Майнеры получают транзакции, которые узел считает верными, и создают блоки, которые так же будут проверены узлом. Правила консенсуса определяются не майнерами, их задача поместить транзакцию в блок, которую узел посчитает верной, и они не заинтересованы его обмануть.

Если вам позволяют возможности, запустите узел. Это всего лишь несколько сотен Гб места на диске, несколько Гб трафика в месяц, 4 Гб оперативной памяти, 2х или 4х ядерный процессор, DSL – и Вы становитесь участником «новой революции денег». После этого Вам не нужно ни у кого спрашивать, дошла ли моя транзакция, ведь теперь у вас будет собственный ответ на этот вопрос.

Спасибо, это был отличный вопрос.

Источник

31 КОММЕНТАРИИ

  1. Видимые фулл-ноды выполняют роль ретрансляторов в сети. При этом проверяя правильность данных. Роль как роль. 🙂 Для ретрансляторов главное, чтобы их было ДОСТАТОЧНО, с каким-то запасом. Чтобы они успевали обслужить всех участников системы.
    И обычно, если достаточно, например, 10 ретрансляторов, никто не запускает 100. Это же бессмысленно.

    Если посмотреть на нынешнюю ситуацию.
    У нас ~6000 фулл-нод. 300 тыс. транзакций в сутки.
    Каков полезный результат на выходе от деятельности фулл-нод?
    В среднем через каждую фулл-ноду в систему добавляется 50 транзакций в сутки, 50 раз отправителю сообщается, что его транзакция попала в блок. 50 раз получателям сообщается, что на их адрес поступили средства.
    То есть, каждая фулл-нода в среднем делает 3 этих полезных действия за полчаса. ВСЕГО 3 ДЕЙСТВИЯ за полчаса!!!.

    Да, еще 6000 раз проверяется каждая транзакция на правильность и 6000 раз проверяется каждый блок на правильность.
    Повторю: один и тот же блок проверяется 6000 раз.

    А теперь добавим 6001-ю фулл-ноду. Что мы получим?
    Общее количество транзакций как было 300тыс. в сутки, так и останется 300 тыс.
    А вот! Каждая транзакция и блок будут проверяться не 6000 раз, а 6001 раз.
    И все? Это весь выигрыш, что система получит от 6001-й ноды? 🙂

    Подытоживая. Система практически ничего не получит от Вашей фулл-ноды. Запускать или нет, зависит от того, нужна она лично Вам или нет. И только исходя из этого, решайте, запускать фулл-ноду или нет.

    • Разумеется каждый решает сам насколько для него важна безопасность. Если Вам достаточно доверия третьим лицам(чьим-то нодам), это Ваши личные риски. Моя нода проверят данные проходящие по сети биткойн лично для меня, я сам себе хозяин. Я это делаю не для Вас, не для соседа, по этому, сколько бы ни было полезности, это все сугубо мое.
      Что касается системы, то она получает консенсус, +1 согласившийся работать по определенным правилам, что усиливает общую безопасность. Попробуйте передать моей ноде данные не соответствующие правилам по которым она работает, они не будут ретранслированы, а Ваш узел уйдет в бан. Если правила по которым работает моя нода окажутся вне консенсуса, то нода так и останется в гордом одиночестве, если конечно ни найдутся единомышленники.

      • Если Вы запускаете фулл-ноду для собственной пользы, то пожалуйста, никаких нареканий нет. 🙂
        И я это в конце своего коммента подчеркивал.

        Только Вы зря обольщаетесь, что существенно усиливаете при этом общую безопасность.
        Передает ли Ваша фулл-нода данные, не соответствующие правилам, дальше или нет? Баните Вы такой узел или нет?
        Все это не имеет значения.

        Если данные неправильные, то майнер так и так не возьмет их. Без Вашего фильтра и без Вашего бана. Значит, никакого усиления безопасности нет.

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

        • Мне кажется, Вы пытаетесь спрятаться за разнообразными фразами с использованием модного слова “консенсус”. 🙂

          Поэтому, если можно, на конкретных цифрах.
          Есть Биткоин-система с 6000 фулл-нод. Вы добавляете свою фулл-ноду и уверены, что увеличиваете общую безопасность системы.
          Насколько?

          Попробуйте оценить.
          Какова вероятность взлома системы с 6000 фулл-нодами?
          Какова вероятность взлома системы с 6001 фулл-нодами?
          Найдите разницу. Это и есть Ваша добавка к безопасности сети.
          И чему же она равна? Какого порядка это число. 🙂

        • А если каждый из владельцев 6000 нод скажет – какое значение имеет моя нода и выключит ее? 6000 фулл-нод есть только потому, что их владельцы считают нужным содержать фулл-ноду, а не полагаться на дядю, который сделает это вместо них.

        • Это число порядка 1/6000. Оно больше нуля. Следовательно безопасность всей сети возрастает. Можно даже оценить денежный эквивалент возрастания этой безопасности: все ноды защищают капитализацию биткоина 42 млрд, тогда если вы запустите одну ноду, то ваш денежный вклад в безопасность будет 42*109/6*103 = 7 млн. долларов. Неплохо? К сожалению данный расчет действует и в обратную сторону: одна нода запущенная злоумышленником уменьшит безопасность на 7 млн долларов. Поэтому нужно запускать больше нод!

        • “0.02% и что?”

          Ничего, за исключением того, что это неправильно. 🙂

          Следуя Вашей логике, если завтра закроются 500 фулл-нод, то надежность системы упадет на 10% ? Если 1000, то на 20% ?

          Хотя реальность такова, что уменьшение фулл-нод на 500, 1000 пользователи даже не заметят. Все по прежнему будут считать систему такой же надежной, и будут правы.
          Напомню, что когда-то было больше 10 тысяч фулл-нод и оно сократилось до нынешних 5-6 тысяч. И что? Надежность системы упала на 50%.?

          p/s/ Подсказка. При расчете надежности системы нелишним будет учитывать, что 99% надежности системе дают майнеры. 🙂

        • Если данные неправильные, то майнер так и так не возьмет их. Без Вашего фильтра и без Вашего бана. Значит, никакого усиления безопасности нет.

          Может быть тебе лучше в сбербанк? Греф скоро внедрит туда блокчейн и будет проверять правильность транзакций. С размером блока проблем быть не должно – как Греф скажет, так и будет.

          Биткойн создан для того, чтобы проверять, а не доверять. Если ты не имеешь полной ноды: ты не используешь биткойн – тебе рассказывает про биткойн кто-то другой, а ты ему доверяешь.

        • “Если ты не имеешь полной ноды: ты не используешь биткойн” –
          Вы как-то соизмеряете свои утверждения с реальностью ? 🙂
          Или выдаете желаемое за действительность.

          У нас сейчас уже несколько миллионов пользователей. А фулл-нод по самым завышенным оценкам 50-100 тыс. То есть, больше 95%, а скорее уже 98% пользователей работают без фулл-нод. И прекрасно используют биткоин.

        • И что? То, что большинство работает надеясь на “дядю” это аргумент, аргумент в какую сторону?

        • Я просто опроверг утверждение:”Если ты не имеешь полной ноды: ты не используешь биткойн”. 🙂

          В whitepaper Биткоина (для чего он создан и как он должен работать) довольно подробно описано, как можно реализовать БЕЗОПАСНУЮ работу с Биткоином, не имея фулл-ноды.
          Никакой речи про доверие, про то, что надо на кого-то надеяться, там нет.
          Там даже подчеркивается, что это нормальный режим работы. Что никогда не будет так, что все будут держать фулл-ноды. И то, что нет никакой необходимости всем держать фулл-ноды.

        • То есть, больше 95%, а скорее уже 98% пользователей работают без фулл-нод. И прекрасно используют биткоин.

          и фантазируют о том, что используют биткойн. Как и пользователи coinbase, смотрящие на выраженный в биткойнах баланс аккаунта фантазируют, что владеют биткойнами, а потом жалуются на реддите, что coinbase заблокировал их аккаунт и конфисковал биткойны, которыми они якобы владели.

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

          Некоторые фантазируют, что купили золото, переведя рубли в обезличенный металлический счет.

    • И обычно, если достаточно, например, 10 ретрансляторов

      На которые совершается DDoS-атака и сеть перестает функционировать.

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

    • Альтруисты не такие уж и альтруисты. Как я понимаю, если не вписывать свой маломощный комп в пул, то существует ничтожно малая, но ненулевая вероятность, что к тебе в кошелёк упадёт 12 биткоинов разом.

      • Пока узел не будет участвовать в майнинге – эта вероятность нулевая, блоки формируются только майнингом. Пусть с никаким (по нынешним меркам) хешрейтом в пару килохешей – но узеел должен майнить (setgenerate=1), чтобы эта вероятность была ненулевой (хотя и очень малой).

      • Вероятно, вы себе плохо представляете вероятности.
        О пулах и орфанах не слышали?
        Если рассуждать подобными категориями – проще круглосуточно генерить новые биткоин адреса и с ненулевой вероятностью попасть на адрес сатоши.

    • Работа-то не ухудшится, ухудшится доверие к сети, т.к. у майнеров появляется возможность сговориться и провести атаку 51 %, если одиночные компьютеры-проверяльщики разом уйдут.

    • Оказывается, их держат ещё и альтруисты, не имеющие с этого прибыли.

      Самостоятельно проверять транзакции и блоки, а не доверять дяде – это не альтруизм, а преследование личных интересов.

      Насколько ухудшится работа сети, если если останутся только те узлы, которые майнят ради прибыли, а альтруисты (вероятно, это узлы-кошельки) исчезнут?

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

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

        Ну-ну. Сказки то не рассказывайте. Попробуйте этим напугать пользователей Electrum. 🙂 🙂

        Есть такое понятие, как SPV-клиент. Так вот, при правильной реализации он практически так же безопасен, как и фулл-нода.

        И это огромный плюс Биткоина. Для развития Биткоина это дает даже больше, чем фулл-ноды.
        Если бы в Биткоине можно было работать безопасно только через фулл-ноду, то мы сейчас имели бы максимум тысяч 100 пользователей. И развитие Биткоина на этом бы и закончилось.

        А благодаря SPV-клиенту количество пользователей исчисляется миллионами. И может дойти до сотен миллионов.

        • “Ну-ну. Сказки то не рассказывайте. Попробуйте этим напугать пользователей Electrum.”
          Я например пользуюсь Electrum, и как-то не комфортно чуствовал себя. Тогда запустил на рабочем компе фул-ноду, и настроил свой Electrum на ip адрес своего рабочего компа. Теперь доволен, что не надо спрашивать незнакомых о моем балансе.

          “Есть такое понятие, как SPV-клиент. Так вот, при правильной реализации он практически так же безопасен, как и фулл-нода.”
          Ну здесь не верно, ведь от тебя могут скрыть транзакции, где ты получил биткойны. Либо в блоке могут быть не действительные транзакции, но пока ты не скачал весь блокчейн, этого не заметишь.

        • “Ну здесь не верно, ведь от тебя могут скрыть транзакции, где ты получил биткойны. Либо в блоке могут быть не действительные транзакции, но пока ты не скачал весь блокчейн, этого не заметишь.”

          На самом деле, это верно. 🙂 Про это даже написано в whitepaper.
          И никто еще это не смог опровергнуть.

          Это легко на словах.
          На самом деле- на практике это реализовать очень сложно. Обмануть SPV-клиент (правильно реализованный) стоит таких же денег, как и обмануть фулл-ноду.

          Например:
          “от тебя могут скрыть транзакции” – Если Ваш SPV-клиент обращается ко многим фулл-нодам, то задача для недоброжелателя становится практически невыполнимой.

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

          Мне вот интересно, почему разработчики Core делают упор на том, что фулл-ноды безопасны. Но стесняются упоминать, что можно сделать так, что работа через SPV-клиент будет так же надежна. 🙂

        • “Обмануть SPV-клиент (правильно реализованный) стоит таких же денег, как и обмануть фулл-ноду.”
          Вы тут сказали фразу типа “Если на улице холодная погода, то на улице холодно”. Правильно настроить я понимаю как настроить на те ноды, которые имеют правильный блокчейн. И как мне знать правильно ли настроен какой-то конкретный SPV клиент? Вот когда SPV клиент настроен на компьютер которому я доверяю (мой компьютер), тогда я знаю, что он правильно настроен.

          “Если Ваш SPV-клиент обращается ко многим фулл-нодам, то задача для недоброжелателя становится практически невыполнимой.”
          А вот скажите, откуда SPV клиент, ну например Electrum’а, берет список IP адресов фулл-нод? И как мне знать без скачивания всего блокчейна, точно ли на этих фулл-нодах верный блокчейн? Проверка заголовков блоков не гарантирует что в блоке нету фейковых транзакций.

          “Мне вот интересно, почему разработчики Core делают упор на том, что фулл-ноды безопасны. Но стесняются упоминать, что можно сделать так, что работа через SPV-клиент будет так же надежна.”
          Bitcoin-core код открытий: модифицируйте, добавляйте свои фичи, продвигайте свой код для фулл-ноды, доказывайте что в вашем клиенте “работа через SPV-клиент будет так же надежна”, флаг вам в руки.

        • Но стесняются упоминать, что можно сделать так, что работа через SPV-клиент будет так же надежна.

          Она надежна пока существует множество независимых фулл-нод. Сейчас атака на spv-клиенты только продемонстрирует небезопасность такого подхода, а проповедников больших блоков и “фулл-ноды не нужны” будут гнать и насмехаться над ними. А когда останется десяток фулл-нод с гигабайтными блоками – будет очень трудно поднять независимую фулл-ноду, скачивая терабайты блокчейна, даже при условии, что эти 10 фулл-нод не станут препятствовать появлению конкурента, сговорившись передавать блоки только друг другу, а остальным давать только нужную для работы spv-клиента информацию… после предъявления паспорта для регистрации и отправки образца ДНК.

        • Есть такое понятие, как SPV-клиент. Так вот, при правильной реализации он практически так же безопасен, как и фулл-нода.

          Это пока есть много независимых фулл-нод.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here