Сеть Bitcoin принимает блоки действительной, если достаточное количество узлов принимают блок как действительные. Присущая безопасность в том, что злоумышленник пытается манипулировать, какие блоки приняты как действительные или не нужна вычислительные мощности, приближающиеся 50% от всей сети. Но это неосуществимо на самом деле запросить все или даже большую часть всей сети (или, по крайней мере, это будет после того, как сеть Bitcoin становится больше), так что в действительности каждый узел должен взять образец сети. Если выборка достаточно велика и случайным образом распределены по всей сети, нет никаких проблем. Но если данный узел предпочтительно соединяется с меньшим подмножеством узлов, то этот узел является уязвимым - злоумышленник должен только компромисс, что меньшее подмножество. Очевидно, что в интересах каждого оператора узла, чтобы гарантировать, что его узел действительно непредвзятый в определении того, какой узел, чтобы получить блок данных из.
Итак, как же клиент Bitcoin определить, какие узлы для подключения? Я не пошел через источник достаточно тщательно, чтобы понять это еще, но, насколько я могу сказать, это либо просит IRC канал, который находится в сети и запрашивает те узлы, или посылает запрос на IRC непосредственно, а затем получает ответ от произвольный узел? Я думаю?
У меня есть две основные проблемы:
1. Есть ли «первый-ответчик» перекос в определении того, какой узел попросить блок данных из? Если есть, то злонамеренный пользователь с доступом к очень низкой латентностью связи может нарушить работу сети путем реагирования чрезвычайно быстро на любой запрос с некоторой формой ложных данных - может быть, просто говоря, что ни один новый блок не был еще хэшируются - и получить непропорциональное влияние на консенсус таким образом. Если HighSpeedCheater может предоставить информацию так быстро, что он отвечает первым 99% времени на запрос, то вам нужно сделать 68-69 запросы только, чтобы получить 50/50 вероятность того, что вы достигнете одного узла, который не является HighSpeedCheater sockpuppet - и что сам узел может быть одураченным HighSpeedCheater и невольно повторять ложную информацию. Вероятно, нереально для человека, чтобы осуществить это, но я вижу большой, широко распределенную систему как ботнет или Google в состоянии сделать это. Даже тогда, узлы могли обойти это просто проверяя все 140x столько, сколько они привыкли.
2. Может ли влияние узла «вещатель», какие узлы он реагирует? Например, может ли Алиса создала свою систему так, чтобы каждый раз, когда Боб просит самый последний блок цепи, она является одна (или непропорционально более вероятно, будет один), чтобы ему ответить? Если это так, то Боб в основном на милости Алисы, если он не может понять, какие адреса Алиса использует быстрее, чем она может создавать новые виртуал.
Там также возможность того, что вся цепь сделки может раскошелиться, если задержка между любыми двумя примерно равными вычислительными группами становится больше, чем среднее время блока-создания. Предположим, что есть примерно то же самое о вычислительной мощности, посвященный хэширования Bitcoin блоков в двух группах, скажем, США и России. Если - и я могу видеть только это происходит, если время между новыми блоками очень мало - это занимает больше времени для узла США спросить российский узел, что самый длинный блок цепи является (и наоборот), чем это требуется для русских ( или сеть США) Bitcoin, чтобы создать новый блок, то цепь может развивать местную в Россию и США. Предположим, что узел в США и России успешно хэширования следующий блок примерно в то же время, называть их блоки 1001us и 1001ru. Сеть решает несоответствие, видя получает ли 1002us или 1002ru хэшируются первым. Но так как есть задержка в получении информации из одной страны в другую, каждый узел в США, который проверяет русский узел для их длинной длины цепи получает устарелую информацию, поэтому он будет видеть старую, более короткую цепь, чем цепи он получает из местных нижних узлов латентности. И то же самое происходит с русскими, с конечным эффектом, что американские узлы продолжать работать на ветви, содержащей 1001us, потому что они могут видеть только старую, более короткую версию 10001ru отрасли, в то время как русские работают на у них по той же причине. Пока цепь растет быстрее, чем скорость информации, ни цепь будет когда-либо доминировать над другой.