Bitcoin Forum
November 18, 2024, 11:01:53 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Вопросы по реализации  (Read 2294 times)
Yagiza (OP)
Member
**
Offline Offline

Activity: 112
Merit: 10


潔くカッコ良く生きて行こう!


View Profile
June 11, 2011, 06:42:43 AM
 #1

Наконец-то нашёл время ознакомиться с документом.
Обнаружил много интересного.
1. Там написано, что "рассосавшиеся" транзакции (дословно: "похороненные под достаточным числом блоков") можно выкидывать, оставляя лишь дерево хешей. Мало того, далее говорится, что от старых блоки можно вообще, оставлять только хеши, так что блоки будут длиной всего 80 байт! Вопрос: это уже реализовано? Если да, то мне вообще, не понятен кипиш с ростом истории (а точнее, размера блоков). Какая разница, насколько большим вырастет блок, если рано или поздно от него останется всего 80 байт хеша?

2. Там же написано, что простому клиенту (который лишь получает и отправляет деньги и не занимается генерацией блоков, а значит и проверкой транзакций) вообще,  нет нужды хранить у себя историю. Ведь он доверяет сети, а значит, критерием достоверности транзакции для него служит количество подтверждений (длина цепочки блоков начиная с блока, содержащего транзакцию). Т. е. нам достаточно хранить на диске лишь список своих транзакций (id транзакции, номер блока, в который она вошла и хеш этого блока), а также, номер и хеш последнего полученного блока. Каждый раз, когда клиент выходит в онлайн, ему достаточно скачать блоки, которые пришли после последнего полученного, чтобы убедиться, что цепочка не была забракована. Опять же вопрос: реализовано ли такое поведение клиента? Пока я почему-то не наблюдаю такой опции и судя по размерам файлов blkindex.dat и blk001.dat, клиент хранит всю историю локально.

3. Поскольку полноценного широковещательного запроса в интернете сделать нельзя, то слабое место у сети вовсе не вычислительные мощности, а узлы, к которым можно цепляться. Достаточно загасить irc.lfnet.org и узлы из списка "seed nodes" и вновь подключающиеся просто не смогут подключиться к сети! По-моему, работы не так уж и много.
Yurock
Sr. Member
****
Offline Offline

Activity: 462
Merit: 250


View Profile
June 11, 2011, 09:44:37 AM
 #2

не понятен кипиш с ростом истории
Вся история всё равно должна где-то храниться. Вот, например, самые первые сгенерированные монеты до сих пор не потрачены; и если Сатоши, вдруг, захочет их потратить, такую транзакцию надо будет сверить с самым первым блоком. То есть, этот блок должен быть доступен майнеру, иначе он не проведёт транзакцию по отправки монет с того адреса. А ждать загрузки блока из сети майнеру не выгодно, потому что за это время другой майнер может сгенерировать конкурирующий блок. Затем, сгенерированный блок должен быть проверен другими "полными" узлами сети, опять же, с помощью истории.

Также, транзакция перед включением в блок должна быть распространена по сети. В процессе распространения транзакции, её тоже может потребоваться как-то сверять с историей, чтобы не засорять сеть недействительными транзакциями.

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

слабое место у сети вовсе не вычислительные мощности, а узлы, к которым можно цепляться. Достаточно загасить irc.lfnet.org и узлы из списка "seed nodes" и вновь подключающиеся просто не смогут подключиться к сети!
Ещё придётся загасить все домены из strDNSSeed, потому что в случае атаки на конкретный узел, можно указать другие узлы в DNS.

И, хотя, такая атака создаст временные проблемы с подключением к сети, это совсем не фатально. Уже подключённые узлы продолжат нормальную работу, а для подключения достаточно будет узнать 1-2 адреса действующих узлов; списки узлов могут быть выложены на любом сайте. Вот, например, отсюда можно взять список адресов. У оригинального клиента есть параметры, которыми задаются адреса для подключения:
Code:
  -addnode=<ip>      Add a node to connect to
  -connect=<ip>      Connect only to the specified node
Теоретически, для работы сети необходим как минимум один майнер и ещё один "полный узел".
killerstorm
Legendary
*
Offline Offline

Activity: 1022
Merit: 1033



View Profile
June 11, 2011, 10:20:20 AM
Merited by xandry (4)
 #3

1. Там написано, что "рассосавшиеся" транзакции (дословно: "похороненные под достаточным числом блоков") можно выкидывать, оставляя лишь дерево хешей. Мало того, далее говорится, что от старых блоки можно вообще, оставлять только хеши, так что блоки будут длиной всего 80 байт!


Не совсем так. Outputs транзакции описывают кто и как может использовать коин. После того как его используют (в другой транзакции) эта информация уже не нужна.

Т.о. можно удаять только те транзакции, все output'ы которых потрачены. А их как правило два, т.к. нужна сдача.

Более того, после удаления транзакции остаются хэши дерева Меркле. Их можно удалять только когда все транзакции в ветке дерева удалены.

Т.к. не все коины сразу же тратятся с большой вероятностью значительный объём данных прийдётся сохранять. По оценкам сейчас с помощью это оптимизации можно цепь сократить примерно до трети (https://en.bitcoin.it/wiki/Scalability) . По большему счёту это ничего не решает.

К тому же имеет смысл посмотреть на bitcoin days destoyed метрику которая показывает, грубо говоря, какая часть биткоинов находится в обороте. Примерно 25%. Остальные пылятся. Вот все что пылятся нужно описать в блокчейне.


Quote
Вопрос: это уже реализовано?

Нет.

Quote
Опять же вопрос: реализовано ли такое поведение клиента?

Не в официальном клиенте. Официальный клиент это полноценный нод который проверяет все транзакции.

Пока сеть не очень развита не следует слепо доверять получаемым блокам.

Quote
3. Поскольку полноценного широковещательного запроса в интернете сделать нельзя, то слабое место у сети вовсе не вычислительные мощности, а узлы, к которым можно цепляться. Достаточно загасить irc.lfnet.org и узлы из списка "seed nodes" и вновь подключающиеся просто не смогут подключиться к сети! По-моему, работы не так уж и много.

Угу. Но комфорт вновь подключающихся не является приоритетом. Серьёзные пользователи узнают адреса нодов из других источников (twitter, форум и т.д.) А несерьёзные пусть пользуются eWallet типа MyBitCoin.com или MtGox.

Кроме того у меня есть подозрение что клиент хранит адреса нодов в базе данных.

Chromia: a better dapp platform
LZ
Legendary
*
Offline Offline

Activity: 1722
Merit: 1072


P2P Cryptocurrency


View Profile
June 11, 2011, 11:40:43 AM
Merited by xandry (2)
 #4

Кроме того у меня есть подозрение что клиент хранит адреса нодов в базе данных.
addr.dat

My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
Yagiza (OP)
Member
**
Offline Offline

Activity: 112
Merit: 10


潔くカッコ良く生きて行こう!


View Profile
June 11, 2011, 11:48:24 AM
Last edit: June 11, 2011, 04:09:29 PM by Yagiza
 #5

не понятен кипиш с ростом истории
Вся история всё равно должна где-то храниться. Вот, например, самые первые сгенерированные монеты до сих пор не потрачены; и если Сатоши, вдруг, захочет их потратить, такую транзакцию надо будет сверить с самым первым блоком. То есть, этот блок должен быть доступен майнеру, иначе он не проведёт транзакцию по отправки монет с того адреса. А ждать загрузки блока из сети майнеру не выгодно, потому что за это время другой майнер может сгенерировать конкурирующий блок. Затем, сгенерированный блок должен быть проверен другими "полными" узлами сети, опять же, с помощью истории.
Никто не говорит о блоках, в которых есть не рассосавшиеся транзакции. Пускай майнеры их хранят. Кто же против-то?

Quote
Также, транзакция перед включением в блок должна быть распространена по сети. В процессе распространения транзакции, её тоже может потребоваться как-то сверять с историей, чтобы не засорять сеть недействительными транзакциями.
А вот это уже бред. В документе чётко сказано, что все транзакции широковещательно расползаются по сети. А фильтруются они майнерами путём включения/не включения в блок. Идеологически неверно напрягать все клиента работой, которой уже занимаются майнеры.

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

Quote
слабое место у сети вовсе не вычислительные мощности, а узлы, к которым можно цепляться. Достаточно загасить irc.lfnet.org и узлы из списка "seed nodes" и вновь подключающиеся просто не смогут подключиться к сети!
Ещё придётся загасить все домены из strDNSSeed, потому что в случае атаки на конкретный узел, можно указать другие узлы в DNS.

И, хотя, такая атака создаст временные проблемы с подключением к сети, это совсем не фатально. Уже подключённые узлы продолжат нормальную работу, а для подключения достаточно будет узнать 1-2 адреса действующих узлов; списки узлов могут быть выложены на любом сайте. Вот, например, отсюда можно взять список адресов. У оригинального клиента есть параметры, которыми задаются адреса для подключения:
Code:
  -addnode=<ip>      Add a node to connect to
  -connect=<ip>      Connect only to the specified node
Теоретически, для работы сети необходим как минимум один майнер и ещё один "полный узел".
Я знаю. Но новичку будет непросто объяснить, что из-за атаки спецслужб ему теперь надо совершать какие-то дикие телодвижения.
Yurock
Sr. Member
****
Offline Offline

Activity: 462
Merit: 250


View Profile
June 11, 2011, 04:18:53 PM
 #6

В документе чётко сказано, что все транзакции широковещательно расползаются по сети. А фильтруются они майнерами путём включения/не включения в блок.
Майнер имеет право включать в блок только "подлинные" транзакции. Они должны соответствовать техническим требованиям и сверяются с историей. Если в блок будет включена хоть одна неправильная транзакция, такой блок будет отброшен (не признан другими узлами). Майнер принимает решение - включать или не включать новую транзакцию в блок. А то, является ли каждая конкретная транзакция правильной или "фальшивой", проверяют все "полные" узлы сети.

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

новичку будет непросто объяснить, что из-за атаки спецслужб ему теперь надо совершать какие-то дикие телодвижения.
Никакие они не дикие - надо лишь добавить ключ в ярлык запуска программы. Если существующие пути автоматического поиска узлов: IRC, DNS и IP-адреса будут постоянно подвергаться атакам, придумаем более изощрённые способы. А для новичков - Instawallet, MyBitcoin, и никаких проблем. Smiley
Yagiza (OP)
Member
**
Offline Offline

Activity: 112
Merit: 10


潔くカッコ良く生きて行こう!


View Profile
June 11, 2011, 04:29:15 PM
 #7

К тому же имеет смысл посмотреть на bitcoin days destoyed метрику которая показывает, грубо говоря, какая часть биткоинов находится в обороте. Примерно 25%. Остальные пылятся. Вот все что пылятся нужно описать в блокчейне.
Пылятся они только потому, что оборот небольшой. Начнётся более широкое хождение биткойна - залёживаться монеты не будут. А раз так, то и удаляться старые транзакции станут чаще.

Quote
Quote
Вопрос: это уже реализовано?
Нет.
Надеюсь, к тому моменту, когда это станет критичным, реализуют.

Quote
Quote
Опять же вопрос: реализовано ли такое поведение клиента?
Не в официальном клиенте. Официальный клиент это полноценный нод который проверяет все транзакции.
Пока сеть не очень развита не следует слепо доверять получаемым блокам.
Ну, ни фига себе, не развита! Вычислительная мощность сети уже терахешами измеряется! Шансов даже приблизиться к этой мощности в наши дни нет практически ни у кого. А по рассчётам Сатоси если вычислительная мощность злоумышленника хотя бы ненамного ниже вычислительной мощности сети, то уже при цепочке из 6 блоков (а столько по умолчанию клиент считает достаточным критерием достоверности) подделать её раньше основной сети практически не реально.
Таким образом, я не вижу оснований не доверять сети.
Yurock
Sr. Member
****
Offline Offline

Activity: 462
Merit: 250


View Profile
June 11, 2011, 04:38:49 PM
 #8

Таким образом, я не вижу оснований не доверять сети.
Дело в том, что узлы, с которыми ты соединяешься, могут подсунуть тебе заранее рассчитанную левую цепочку, левые транзакции, и вообще, любую левую инфу. Потом, когда ты соединишься с правильной сетью, всё станет на свои места, но может быть уже поздно. Для "полных" узлов это - не проблема, потому что они проверяют всю поступающую из сети информацию. Для "неполных" узлов тоже есть стратегии, минимизирующие риски, связанные с фальсификацией блоков и транзакций, но доверять кому попало (узлам случайно выбранным из какого-то списка) не следует.
killerstorm
Legendary
*
Offline Offline

Activity: 1022
Merit: 1033



View Profile
June 11, 2011, 11:07:49 PM
 #9

Никто не говорит о блоках, в которых есть не рассосавшиеся транзакции.

Для простоты можно считать что во всех блоках есть нерассосавшиеся транзакции. Т.к., ещё раз, уменьшение размера в три раза ничего не решает.

Quote
Пылятся они только потому, что оборот небольшой. Начнётся более широкое хождение биткойна - залёживаться монеты не будут. А раз так, то и удаляться старые транзакции станут чаще.

Я думаю какая-то часть будет постоянно в обороте, а какая-то осядет в долгосрочных сбережениях. Хранить деньги в биткоинах имеет смысл -- инфляции они не подвержены.
А часть будет перманентно утеряна...

Quote
Пускай майнеры их хранят. Кто же против-то?

Хранить их должен каждый полноценный участник сети, а не только майнеры.

Quote
А вот это уже бред. В документе чётко сказано, что все транзакции широковещательно расползаются по сети. А фильтруются они майнерами путём включения/не включения в блок. Идеологически неверно напрягать все клиента работой, которой уже занимаются майнеры.

Идеологически неверно НЕ проверять блоки. Майнеры ведь могут включить в блоки неправильные транзакции с целью наживы.

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

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

Да, можно требовать двух подтверждений. Но вероятность что один майнер выдаст два блока подряд весьма существенная.

Насчёт идеологии, я боюсь вы вообще её не правильно понимаете.

Безопасность биткоинов основана на том, что сами участиники сети заинтересованы в своей же безопасности. А если их много, то мала вероятность того, что они войдут в преступный сговор. И именно поэтому консенсус реально работает.

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

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

Но реально важны именно майнеры. В идеале должно существовать большое количество майнеров с равными вычислительными возможностями: в этом случае очень мала вероятность что они войдут в сговор ради собственной наживы.

Но уже сейчас есть тенденция к консолидации вычислительных ресурсов среди небольшого кол-ва лиц -- через пулы и арендуемые фермы. Например, пул deepbit контролировал почти 50% выч. ресурсов, а может даже больше.

Не важно сколько людей занимается хэшированием, они выполняют тупую работу. Важно что все транзакции проверяет и выбирает deepbit, и он может делать что угодно. Если даже сейчас у него ресурсов не хватает, что будет если он объединится с несколькими другими пулами? За ними стоят люди и их можно подкупить. Ситуацию с пулами смотрим здесь: http://www.bitcoinwatch.com/

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

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

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

Собственно, пока что пулы текущие правила вполне устраивают -- по 50 BTC за блок вполне нормально. В будущем эта халява прекратится, награды уменьшатся. Тогда пулы могут принять решение увеличить комиссию за транзакцию. Или, например, продолжать выдавать по 50 BTC за блок.

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

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

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

Quote
Если обычный клиент (не майнер) историю хранить не будет вообще, а пулы не будут забывать чистить историю от рассосавшихся транзакций и устаревших блоков, то проблему будет решена весьма и весьма радикально.

Да можно ещё более радикально -- выделить одну trusted party подписывать блоки. Хуле там, зачем нам вообще майнинг?

Quote
Я знаю. Но новичку будет непросто объяснить, что из-за атаки спецслужб ему теперь надо совершать какие-то дикие телодвижения.

А как ты новичку объясняешь что после запуска клиент часа три тарахтит винтом скачивая транзакции?

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

IMHO обычный пользователь должен пользоваться 3rd-party поставщиком услуг а не работать напрямую с сетью.

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

Quote
то уже при цепочке из 6 блоков (а столько по умолчанию клиент считает достаточным критерием достоверности) подделать её раньше основной сети практически не реально. Таким образом, я не вижу оснований не доверять сети.

То есть больше часа ждать подтверждений? Ну спасибо.

Я ещё раз советую перечитать. Легковесная проверялка должна через опрос сети убедиться что более длинной цепочки ни у кого нет.

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

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

Chromia: a better dapp platform
Yagiza (OP)
Member
**
Offline Offline

Activity: 112
Merit: 10


潔くカッコ良く生きて行こう!


View Profile
June 23, 2011, 05:46:11 AM
 #10

Таким образом, я не вижу оснований не доверять сети.
Дело в том, что узлы, с которыми ты соединяешься, могут подсунуть тебе заранее рассчитанную левую цепочку, левые транзакции, и вообще, любую левую инфу. Потом, когда ты соединишься с правильной сетью, всё станет на свои места, но может быть уже поздно. Для "полных" узлов это - не проблема, потому что они проверяют всю поступающую из сети информацию. Для "неполных" узлов тоже есть стратегии, минимизирующие риски, связанные с фальсификацией блоков и транзакций, но доверять кому попало (узлам случайно выбранным из какого-то списка) не следует.
А как эти "левые" узлы гарантируют, что я буду получать информацию ТОЛЬКО от них? Хотя бы какое-то время?
Yagiza (OP)
Member
**
Offline Offline

Activity: 112
Merit: 10


潔くカッコ良く生きて行こう!


View Profile
June 23, 2011, 06:26:41 AM
 #11

Никто не говорит о блоках, в которых есть не рассосавшиеся транзакции.
Для простоты можно считать что во всех блоках есть нерассосавшиеся транзакции. Т.к., ещё раз, уменьшение размера в три раза ничего не решает.
Ну... Для кого как. Для меня - решает.

Quote
Quote
Пылятся они только потому, что оборот небольшой. Начнётся более широкое хождение биткойна - залёживаться монеты не будут. А раз так, то и удаляться старые транзакции станут чаще.
Я думаю какая-то часть будет постоянно в обороте, а какая-то осядет в долгосрочных сбережениях. Хранить деньги в биткоинах имеет смысл -- инфляции они не подвержены.
А часть будет перманентно утеряна...
И что? В любом случае, транзакции, предшествующие данной интересуют нас интересует только в момент генерации блока. Как только транзакция получила достаточное количество подтверждений, все транзакции, выходы которых являлись входами для данной можно смело выкидывать за ненадобностью.

Quote
Quote
Пускай майнеры их хранят. Кто же против-то?
Хранить их должен каждый полноценный участник сети, а не только майнеры.
Ещё раз: нафига?. Не знаю, как тебя, а лично меня (как клиента) интересует только последний блок (чтобы проверить, нет ли там переводов для/от меня) и хеш предпоследнего блока (для минимальной проверки последнего блока на валидность). Нафига, спрашивается, мне всю цепочку хранить?

Quote
Quote
А вот это уже бред. В документе чётко сказано, что все транзакции широковещательно расползаются по сети. А фильтруются они майнерами путём включения/не включения в блок. Идеологически неверно напрягать все клиента работой, которой уже занимаются майнеры.
Идеологически неверно НЕ проверять блоки. Майнеры ведь могут включить в блоки неправильные транзакции с целью наживы.
Сеть - она на то и сеть, что мы предполагаем, что большая часть вычислительной мощности сети принадлежит добросовестным узлам (не в сговоре со злоумышленником). Таким образом, мне, как клиенту, глубоко фиолетово, каких левых транзакций напихает в свой блок злоумышленник. Ведь я уверен, что он не успеет нагенерить достаточно длинную цепочку фальшивых блоков раньше основной сети.

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

Quote
Если в сети появится существенное количество клиентов которые блоки не проверяют, но распространяют, то пострадают неполноценные клиенты -- они сами между собой будут раздавать обманные блоки от майнеров и сделают видимость того, будто эти блоки приняты сетью.
А кто сказал, что простой клиент должен что-то распространять?
Простой клиент должен иметь минимальный функционал:
1. Цепляться за полноценные клиенты (майнеры).
2. Генерировать транзакции.
3. Принимать блоки.

Всё. Участвовать в распространении транзакций/блоков по сети, да и просто принимать транзакции он не должен. Ибо незачем ему это.

Quote
Да, можно требовать двух подтверждений. Но вероятность что один майнер выдаст два блока подряд весьма существенная.
Почему двух-то? Уже сейчас клиент считает транзакцию не подтверждённой, пока не получил цепочку хотя бы из шести блоков! А если пользователь параноик, или просто что-то подозревает, то он может и сотни подтверждений дождаться, прежде чем верить транзакции!

Quote
Насчёт идеологии, я боюсь вы вообще её не правильно понимаете.

Безопасность биткоинов основана на том, что сами участиники сети заинтересованы в своей же безопасности. А если их много, то мала вероятность того, что они войдут в преступный сговор. И именно поэтому консенсус реально работает.

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

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

Но реально важны именно майнеры. В идеале должно существовать большое количество майнеров с равными вычислительными возможностями: в этом случае очень мала вероятность что они войдут в сговор ради собственной наживы.

Но уже сейчас есть тенденция к консолидации вычислительных ресурсов среди небольшого кол-ва лиц -- через пулы и арендуемые фермы. Например, пул deepbit контролировал почти 50% выч. ресурсов, а может даже больше.

Не важно сколько людей занимается хэшированием, они выполняют тупую работу. Важно что все транзакции проверяет и выбирает deepbit, и он может делать что угодно. Если даже сейчас у него ресурсов не хватает, что будет если он объединится с несколькими другими пулами? За ними стоят люди и их можно подкупить. Ситуацию с пулами смотрим здесь: http://www.bitcoinwatch.com/

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

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

Quote
Если пока что проблем с пулами не возникало это не означает что они не возникнут в будущем. Рано или поздно они осознают возможную выгоду, и найдутся люди чтобы организовать сговор.

Собственно, пока что пулы текущие правила вполне устраивают -- по 50 BTC за блок вполне нормально. В будущем эта халява прекратится, награды уменьшатся. Тогда пулы могут принять решение увеличить комиссию за транзакцию. Или, например, продолжать выдавать по 50 BTC за блок.

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

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

Так что, ещё раз, биткоин будет безопасным только в том случае, если майнером сможет быть каждый с домашним компьютером -- тогда этим смогут заниматься миллионы и их забороть будет сложно. (А ещё лучше если те, кто майнерами быть не могут/не хотят помогали первым -- фильтровали кривые транзакции и блоки, не давали забить сеть фальшивыми клиентами.)
Блин! Не надо путать пулы и майнеров.
Где я сказал, что обычный пользователь должен потерять возможность соло майнинга!? Ткните пальцем!

Я лишь предложил разделить функционал простого и полноценного клиента! Чтобы у пользователя был выбор: хочет он майнить, или нет?
Хочет - пожалуйста. Запустил полноценный клиент, прицепился к нему программой-майнером и майни на здоровье.
Не хочет - запустил простой клиент и не тратит свои трафик, место на винте для задач, которые с успехом решают другие.
Можно, например, оставить полноценный функционал только в bitcoind.exe, а из bitcoin.exe его убрать.
Или же, оставить его и в bitcoin.exe, но сделать, чтобы он включался лишь когда тот запущен со специальным ключиком. Или голочку в настройках добавить. Или в файле конфигурации.
Вариантов много. Но главное, что у пользователя должен быть выбор!

Quote
Quote
Если обычный клиент (не майнер) историю хранить не будет вообще, а пулы не будут забывать чистить историю от рассосавшихся транзакций и устаревших блоков, то проблему будет решена весьма и весьма радикально.
Да можно ещё более радикально -- выделить одну trusted party подписывать блоки. Хуле там, зачем нам вообще майнинг?
Вопрос лишён смысла. Поэтому отвечать на него не буду.

Quote
Quote
Я знаю. Но новичку будет непросто объяснить, что из-за атаки спецслужб ему теперь надо совершать какие-то дикие телодвижения.

А как ты новичку объясняешь что после запуска клиент часа три тарахтит винтом скачивая транзакции?

Полноценный нод не для среднего пользователя. Когда в сети были только энтузиасты это имело смысл, а теперь от этого только больше проблем.
Вот и я о том же! У пользователя должна быть возможность иметь не только полноценный узел, но и простой клиент.

Quote
IMHO обычный пользователь должен пользоваться 3rd-party поставщиком услуг а не работать напрямую с сетью.
При этом возможно создание клиента, который приватные ключи хранит локально а за всем остальным обращается на сервер.
Вариантов много. Должны быть и сторонние поставщики услуг. И софт для полноценного узла. И простой клиент. Повторяю: у пользователя должен быть выбор! Больше выбора - система гибче и удобнее.

Quote
Quote
то уже при цепочке из 6 блоков (а столько по умолчанию клиент считает достаточным критерием достоверности) подделать её раньше основной сети практически не реально. Таким образом, я не вижу оснований не доверять сети.

То есть больше часа ждать подтверждений? Ну спасибо.
Вообще-то, все так и делают. Вряд ли кто-то станет доверять транзакции и например, оказывать кому-то услугу, если не набралось хотя бы 6 подтверждений! А многие ещё сильнее перестраховываются.

Quote
Я ещё раз советую перечитать. Легковесная проверялка должна через опрос сети убедиться что более длинной цепочки ни у кого нет.
Т.о. злоумышленнику будет достаточно того, чтобы к этим тонким клиентам настоящая цепочка не попала. Например, спомощью ботнета сделать кучу фейковых клиентов которые будут давать только цепочку злоумышленника и гасить настоящую. Забить ими IRC каналы и т.д.
А дальше он может делать с легковесными клиентами всё что угодно, не ограничиваясь даже дабл-спендингом.
Ещё раз: как он сможет гарантировать, что легковесные клиенты будут цепляться ИМЕННО к его дотнету? Вот у клиента есть список известных ему узлов, к которым он цепляется. Зачем он полезет на IRC за новыми узлами, если и к этим нормально цеплается? Насколько я понял, IRC - запасной вариант, на случай, если ни к кому из списка подцепиться не удалось. И как злоумышленник обеспечит это? Как он узнает, чт клиент зацепился только к его узлам и не получает блоки из других источников?
Lis
Sr. Member
****
Offline Offline

Activity: 293
Merit: 251


Spice must flow!


View Profile
June 24, 2011, 07:28:34 AM
 #12

А как будут развиваться события при следующем варианте?
Поврежден Атлантический кабель.
сеть разделена на 2 сильных пула Tycho slush
начинаются появляться блоки 2-х различных цепочек
появилось более 6 блоков!
предполагается что средства в двух разных подсетях перемешаться не могут, т.к. нет связи, поэтому обычный клиент не сможет израсходовать средства в другой подсети.
Получается после ремонта, одна из цепочек клиентами отбрасывается (по какому критерию?), транзакции с отброшенной цепочки высвобождаются и добавляются в цепочку где большинство (это делает пул?) получается пул которого цепочка отбрасывается лишается награбленного корована?

You would like to thank?
btc: 14tAPpwzrfZqBeFVvfBZHiBdByYhsoFofn
sb-tr
Newbie
*
Offline Offline

Activity: 6
Merit: 0


View Profile
June 24, 2011, 04:35:35 PM
 #13

Получается после ремонта, одна из цепочек клиентами отбрасывается (по какому критерию?)
Цепочка вычислить которую было проще будет отброшена. Важна не только длина цепочки, но и сложность блоков входящих в нее.

транзакции с отброшенной цепочки высвобождаются и добавляются в цепочку где большинство (это делает пул?)
Транзакции из блоков отброшенной цепочки добавляются в memory-pool (где находятся все неподтвержденные транзакции). Это делает каждый клиент и пул в том числе. Таким образом транзакции из отброшенных блоков окажутся в одном из следующих блоков главной цепочки.

получается пул которого цепочка отбрасывается лишается награбленного корована?
Да. Сгенерированные монеты пропадают. Также будут отброшены все транзакции пытающиеся потратить деньги, которые уже были потрачены в другой цепочке.
cccp
Newbie
*
Offline Offline

Activity: 49
Merit: 0



View Profile
August 04, 2011, 02:29:56 PM
 #14

Интересная ветка..

А что будет если попытаться скопрометировать сеть, например, заставив две-три сотни клиентов перекидывать туда-сюда биткоины между собой в мизерных количествах но часто. Плотность транзакций вообще влияет на скорость?
rPman
Legendary
*
Offline Offline

Activity: 1120
Merit: 1069


View Profile WWW
August 04, 2011, 04:51:08 PM
 #15

Ничего страшного,кажется такое уже происходило...

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

Здесь не может находиться ваша реклама Smiley
Protect a future of bitcoin, use p2pool
Donation in BTC: 19fv5yYtfWZ9jQNjx2ncmu1TTrvg5CczZe
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!