Bitcoin Forum

Local => Oбcyждeниe Bitcoin => Topic started by: Yagiza on May 31, 2011, 10:44:19 AM



Title: Временное снижение сложности или блоки с
Post by: Yagiza on May 31, 2011, 10:44:19 AM
Прочитал тему http://forum.bitcoin.org/index.php?topic=3512.0 (http://forum.bitcoin.org/index.php?topic=3512.0) и пришёл к выводу, что это действительно, является серьёзной проблемой. В самом деле, если кто-то начнёт заваливать систему тупыми транзакциями, забивая ими блоки и заставляя "хорошие" транзакции висеть в очереди, то в системе не предусмотрено механизма для защиты от этого. Мало того, с ростом сети будет расти и количество транзакций в единицу времени. Однако, в систему заложен механизм саморегулирования, "благодаря" которому с ростом вычислительной мощности сети её "пропускная способность" остаётся неизменной: размер блока ограничен, а количество генерируемых блоков в единицу времени остаётся неизменным. Фактически, все ресурсы системы уходят на пустую бессмысленную работу. Таким образом, может настать момент, когда сеть перестанет справляться с потоком транзакций и стараясь ускорить прохождение (подтверждение) своей транзакции, пользователям придётся тратить огромные деньги в качестве комиссий.
Мм-да-сс... Не самая лучшая перспектива для "свободной" валюты.

Я предлагаю механизм для борьбы с "трафиком транзакций". Его можно назвать "Временное снижение сложности" или "Блоки с продолжением".
Идея такая: если при генерации очередного блока выясняется, что остаются лишние транзакции, которые существовали ещё до начала генерации этого блока, но так и "не поместились" в нём, в блок добавляется специальная запись о том, что данный блок будет иметь продолжение. Данная запись будет означать, что на время генерации следующего блока, сложность будет снижена в 2 раза. Встретив такую запись, клиенты начнут генерировать блок-продолжение, для которого сложность будет считаться сниженной в 2 раза. Соответственно, и сгенерирован он будет примерно в 2 раза быстрее, чем остальные блоки. Если и при генерации данного блока остались "транзакции за бортом", то в конце данного блока опять же, будет пометка о том, что у него есть продолжение. И для следующего блока сложность снизится ещё в 2 раза. Естественно, бонус за такие блоки тоже, будет начисляться во столько раз меньше, во сколько раз была занижена сложность при генерации блока, чтобы нельзя было спамить систему левыми транзакциями, ускоряя тем самым эмиссию биткойнов. Как только будет сгенерирован блок, в который вошли все транзакции, он уже не будет содержать пометку о продолжении. Это и будет сигналом о том, что сложность генерации возвращается к исходному значению.

При использовании данного механизма, злоумышленнику удастся лишь временно (на время атаки) немного увеличить частоту генерации блоков. И не более. Это сделает атаки бессмысленными, а сеть более надёжной и быстрой.


Title: Re: Временное снижение сложности или блоки с
Post by: foruser on May 31, 2011, 04:16:06 PM
что-то я запутался с этими переводами и подтверждением транзакций.
Пора нарисовать визуальную схему-график, на которой будет отражен весь процесс подтверждения блоков (переводов).

но, по моему, в твоей схеме, все равно найдут изъян те же ДДОСеры (ибо слабые стороны есть у всего) и будут ее эксплуатировать.
Просто с первого взгляда можно и не заметить изъян.


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on May 31, 2011, 05:34:25 PM
но, по моему, в твоей схеме, все равно найдут изъян те же ДДОСеры (ибо слабые стороны есть у всего) и будут ее эксплуатировать.
Просто с первого взгляда можно и не заметить изъян.
Эх! Всё-таки мне хотелось бы услышать побольше конкретики.
"В любой идее есть изъян" - это конечно же справедливо. Но это - философия. В данном случае она не интересна. Ведь идея не создать "идеальную систему" (к этому нужно стремиться, но это невозможно в принципе), а улучшить то, что уже есть. Так что, вопрос не в том, найдут ли злые DDoS'еры дырки в системе, а в том, станет ли система работать лучше после данного нововведения?


Title: Re: Временное снижение сложности или блоки с
Post by: JohnSmith on May 31, 2011, 08:48:58 PM
А чем обязательная комиссия 0.01 не способ борьбы? Дорогой ддос получится.


Title: Re: Временное снижение сложности или блоки с
Post by: LZ on May 31, 2011, 09:31:50 PM
К тому же изменение логики приведет к прекращению обратной совместимости.
На данный момент версия 0.3.21 совместима с 0.1.3, сам лично проводил тесты.

Люди покупают биткоины не потому, что логика улучшается, наоборот - потому,
что логика никогда не меняется. Без этого просто нет ощущения надежности. ::)


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 01, 2011, 02:06:46 AM
А чем обязательная комиссия 0.01 не способ борьбы? Дорогой ддос получится.
Это - способ борьбы с пользователями и не более.
DDoS'ер может иметь своей целью как раз сделать все транзакции платными, чтобы резко уменьшить количество пользователей и тем самым похоронить валюту, которая и так ещё совсем не окрепла. Не секрет, что рост пользователей связан ещё и с тем, что какая-либо комиссия не обязательна.
На данный момент это способствует и росту числа пользователей и росту количества мест, где принимают биткойны. Т. е. развитию биткойна как валюты в целом. С таким подходом к "борьбе" всё это сведётся на нет. И валюта будет легко похоронена безо всяких лишних телодвижений.
1. Забиваем систему бесплатными транзакциями.
2. Пользователи видят, что бесплатные транзакции зависли.
3. Часть наиболее упёртых стали платить комиссию с каждой транзакции.
4. Большинство плюнули, продали свои биткойны и пошли пить чай.


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 01, 2011, 02:23:22 AM
К тому же изменение логики приведет к прекращению обратной совместимости.
На данный момент версия 0.3.21 совместима с 0.1.3, сам лично проводил тесты.

Люди покупают биткоины не потому, что логика улучшается, наоборот - потому,
что логика никогда не меняется. Без этого просто нет ощущения надежности. ::)
Может быть мои взгляды на биткойн радикально отличаются от взглядов команды разработчиков/основателей, но мне кажется, что биткойн сейчас не на том этапе, когда нужно заботиться об обратной совместимости.
На мой взгляд, сейчас как раз идёт этап обкатки, когда нужно изучать работут системы в полевых условиях и совершенствовать её. Сейчас, когда количество пользователей сравнительно невелико, количество мест, где принимают биткойн - тоже, основной вид деятельности - биржевые спекуляции, самое время вести эту работу. Потом будет поздно. Если это "потом" вообще, когда-нибудь наступит. Если существующие дыры не позволят зарубить систему на корню.
Ведь Сатоси, когда писал алгоритм не мог предусмотреть всего. Вряд ли он тогда предвидел такой рост вычислительной мощности, связанный с использованием GPU для вычислений. Для того и нужны полевые испытания, чтобы посмотреть систему в работе и довести её до ума, а не упереться в "первоначальный вариант алгоритма - это святое" и молча ждать конца надеясь на что-то.
Стоять на месте нельзя. Там, где нет развития, идёт деградация. Если команда сейчас займёт такую позицию, то на смену биткойну придёт какой-нибудь "Биткойн-2", "Байткойн" или что-то вроде. Где изучат текущие недостатки биткойна и исправят их. И пользователи побегут туда, меняя стремительно обесценивающиеся монеты на новую валюту. Оно вам надо? А пользователям нужен весь этот геморрой?


Title: Re: Временное снижение сложности или блоки с
Post by: JohnSmith on June 01, 2011, 04:48:12 PM
А сколько можно включить транзакций\какую сумму в 1 блок?


Title: Re: Временное снижение сложности или блоки с
Post by: Manjago on June 01, 2011, 07:20:42 PM
Если команда сейчас займёт такую позицию, то на смену биткойну придёт какой-нибудь "Биткойн-2", "Байткойн" или что-то вроде. Где изучат текущие недостатки биткойна и исправят их. И пользователи побегут туда, меняя стремительно обесценивающиеся монеты на новую валюту. Оно вам надо? А пользователям нужен весь этот геморрой?

У меня смутное ощущение, что команда разработчиков русскоязычный форум мало читает  :)

Если ты действительно хочешь донести какую-то идею именно до команды разработчиков - то, возможно, имеет смысл в англоязычной части форума побеседовать с Гэвином?

Может быть, ты это уже сделал? Тогда можно сюда ссылку? (там явно беседа будет более продуктивной - если Гэвин ответит, конечно  :) )


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 02, 2011, 12:14:33 AM
Если команда сейчас займёт такую позицию, то на смену биткойну придёт какой-нибудь "Биткойн-2", "Байткойн" или что-то вроде. Где изучат текущие недостатки биткойна и исправят их. И пользователи побегут туда, меняя стремительно обесценивающиеся монеты на новую валюту. Оно вам надо? А пользователям нужен весь этот геморрой?

У меня смутное ощущение, что команда разработчиков русскоязычный форум мало читает  :)

Если ты действительно хочешь донести какую-то идею именно до команды разработчиков - то, возможно, имеет смысл в англоязычной части форума побеседовать с Гэвином?

Может быть, ты это уже сделал? Тогда можно сюда ссылку? (там явно беседа будет более продуктивной - если Гэвин ответит, конечно  :) )
Я этого ещё не делал. Для начала я хотел выслушать мнение русскоязычной аудитории - вдруг это уже было или я просто чего-то не догоняю.
Просто, мне показалось, что lzsaver имеет какое-то отношение к команде и по его посту сужу о подходе...


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 02, 2011, 06:16:56 AM
Вместо генерации дополнительных блоков можно просто увеличить максимально допустимый размер блока. В любом случае, каждый "полный" узел сети должен будет хранить всю историю транзакций с самого начала работы системы. Проблема в том, что в случае широкого распространения Bitcoin, транзакций будет реально много, и история будет разрастаться быстрыми темпами. Пути решения этой проблемы обсуждаются.

Изначальная идея была в том, что не каждый клиент должен быть "полным". Для проверки транзакций и блоков нужна информация из истории, и эта информация может подгружаться из сети по мере необходимости. И, хотя, подгружаемую информацию тоже нужно будет проверять, для этого всё же не придётся хранить всю историю локально.

Когда блоки будут заполняться транзакциями до максимума, возникнет конкуренция между транзакциями за включение в блок, что приведёт к увеличению размеров комиссионных. Таким образом, мелкие транзакции станут невыгодными, и рост количества транзакций будет сдерживаться. Это - тоже один из вариантов решения проблемы. Для микротранзакций можно пользоваться централизованными системами расчётов, они справляются с этой задачей лучше чем распределённые системы. Пользователь может хранить 1000 BTC у себя в кошельке и 10 BTC на счету в централизованной платёжной системе. Недостатки централизованных систем мало кого будут беспокоить при операциях с маленькими суммами.

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

Комиссию рано или поздно придётся платить всем, так как генерация монет со временем сойдёт на нет. На данном этапе, слово "бесплатный" играет роль в распространении Bitcoin, но не стоит переоценивать значение одного слова. Ведь, например, комиссия в 0,001 BTC при переводе 100 BTC - это совсем неплохо.

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


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 02, 2011, 02:12:10 PM
Вместо генерации дополнительных блоков можно просто увеличить максимально допустимый размер блока.
Согласен. Увеличение размера блока практически равносильно снижению сложности. Может быть, в некотором отношении даже лучше.
Главная идея именно в том, что это должно быть
  • Временным
  • Кумулятивным. Т. е. если проблема не решена, должно усугубляться.
Почему? Да, можно было бы просто увеличить размер блока или вообще, снять ограничение на его размер. Но в первом случае ничего бы принципиально не изменилось, проблема бы просто отодвинулась на чуть более поздний срок. А во втором, комиссии просто-напросто потеряли бы смысл.
В данном же случае система сможет адаптироваться к росту трафика и устойчивость к атакам, но при этом смысл в комиссиях остаётся. Как ни крути, чем больше комиссия, тем больше шансы, что транзакция попадёт в первый (или один из первых) блоков и соответственно, раньше получит подтверждения. Но при этом есть гарантия и того, что даже транзакция без комиссии, даже при атаке системы левыми транзакциями всё равно, не зависнет и рано или поздно попадёт в блок. Важным является также и то, что как только локальная проблема решена (трафик рассосался), система возвращается к в исходное состояние. Это гарантирует, что как только система адаптировалась к возросшему трафику, комиссии опять же, не потеряют свой смысл.

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

Quote
Конечно, намеренный флуд системы может значительно увеличить число транзакций в единицу времени. Против этого предусмотрены механизмы, основанные не только на увеличении размеров комиссии. Будем надеяться, что майнеры будут следовать этим правилам и поддерживать систему в работоспособном состоянии - ведь это выгодно для всех, в том числе и для самих майнеров.
Вот как раз о таких механизмах я и не слышал. Если они есть (и реально эффективны) - просветите меня. Именно из-за того, что я пока ничего не нашёл про такие механизмы, я и предложил свой.

Quote
Комиссию рано или поздно придётся платить всем, так как генерация монет со временем сойдёт на нет. На данном этапе, слово "бесплатный" играет роль в распространении Bitcoin, но не стоит переоценивать значение одного слова. Ведь, например, комиссия в 0,001 BTC при переводе 100 BTC - это совсем неплохо.
Гм! Чем больше комиссия - тем меньше стоит биткойн. Чем меньше стоит биткойн, тем меньше ценность комиссии. Чем меньше ценность комиссии, тем дешевле злоумышленнику обойдётся атака. Замкнутый круг. Уязвимость к подобным атакам комиссиями не решить! Нужны более действенные механизмы.

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


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 02, 2011, 03:48:13 PM
Вот как раз о таких механизмах я и не слышал. Если они есть (и реально эффективны) - просветите меня.
Монеты, подтверждённые многими блоками имеют приоритет над монетами, недавно участвовавшими в транзакции. Если непрерывно гонять монетки туда-сюда, то у таких транзакций приоритет будет ниже. Если такие транзакции зависнут в сети, со временем их приоритет повысится из-за того, что число подтверждений растёт с каждым новым блоком. Просто придётся подождать.

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

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

Масштабируемость и расширяемость должна быть заложена в основу любой системы, если она только не делается для конкретного заказчика под конкретный проект и заказчик не оговорил данного условия. Без возможности развития любая система обречена.
Какие-то возможности для развития есть. Время покажет, в какую сторону надо будет двигаться.


Title: Re: Временное снижение сложности или блоки с
Post by: LZ on June 02, 2011, 04:48:00 PM
Лично я не вижу серьезной проблемы и каких-либо причин для появления Биткоин-2.
Накамото предусмотрел многие варианты развития, сейчас в целом все идет по плану.

P.S. Я пока что еще не в этом списке: ссылка (http://sourceforge.net/project/memberlist.php?group_id=244765). :)


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 02, 2011, 05:49:56 PM
Вот как раз о таких механизмах я и не слышал. Если они есть (и реально эффективны) - просветите меня.
Монеты, подтверждённые многими блоками имеют приоритет над монетами, недавно участвовавшими в транзакции. Если непрерывно гонять монетки туда-сюда, то у таких транзакций приоритет будет ниже. Если такие транзакции зависнут в сети, со временем их приоритет повысится из-за того, что число подтверждений растёт с каждым новым блоком. Просто придётся подождать.
Видимо, из-за того, что я новичок в этом деле, я ещё многого не понимаю. Я полагал, что для того, чтобы появились подтверждения, должен появиться блок, содержащий транзакцию. Я не прав?

Quote
Чем больше комиссия - тем меньше стоит биткойн.
Если от стольника отнять копейку, то это, в принципе, не изменит ничего. Поборы в Bitcoin всегда будут небольшими по сравнению с теми, которые мы сейчас привыкли платить, используя другие системы.
Охотно верю. Однако...

Quote
Как только система начнёт трещать по швам и запустят новую систему, люди начнут в спешке избавляться от биткойнов. К чему это приведёт предугадать несложно. Тысячи (миллионы?) людей в одночасье лишатся своих денег.
Вот, запустили Bitcoin. И что, все кинулись избавляться от средств в других платёжных системах?
Поставим вопрос иначе. А старые системы уже трещат по швам? У кого-то есть причины уходить с них?
Биткойн появился не как апгрейд какой-то из существующих систем, потому что та стала неработоспособной, а как самостоятельная независимая система. Я же говорил о ситуации, когда из-за нежелания кого-то латать дыры безопасности в биткойне тот станет неюзабельным и вместо того, чтобы доводить его до ума, решат выпустить замену ему. Чувствуете разницу?

Quote
Также, в Bitcoin заложены механизмы саморегулирования, так что он вряд ли затрещит по швам, даже если он окажется в чём-то неэффективным.
То-то и оно, что заложены. Но не все. Я предлагаю дополнить их ещё одним механизмом. А мне в ответ говорят:
"А ну, нафиг! Работает ведь и так! Не бывает систем без недостатков! Устареет - новая система на смену придёт! Для нас совместимость дороже!"
Разве это серьёзные аргументы?

Quote
Масштабируемость и расширяемость должна быть заложена в основу любой системы, если она только не делается для конкретного заказчика под конкретный проект и заказчик не оговорил данного условия. Без возможности развития любая система обречена.
Какие-то возможности для развития есть. Время покажет, в какую сторону надо будет двигаться.
Именно. Время показывает. Рождаются новые идеи. Я предложил одну такую идею. В надежде обсудить и решить, жизнеспособна она или нет. Но вместо обсуждения самой идеи, я наблюдаю лишь философские рассуждения на тему того, почему лучше ничего не трогать, всё оставить как есть, а в случае чего, сказать: система устарела, вот вам новая система!


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 02, 2011, 06:10:36 PM
Лично я не вижу серьезной проблемы и каких-либо причин для появления Биткоин-2.
Накамото предусмотрел многие варианты развития, сейчас в целом все идет по плану.
Согласен. Но вопросом, как бороться с DDoS-атаками задаются уже многие. И ответа окромя "обязательные комиссии спасут Отца Русской Демократии" не слышно. Для меня же данный метод борьбы выглядит весьма сомнительным и я уже писал, почему.

Quote
P.S. Я пока что еще не в этом списке: ссылка (http://sourceforge.net/project/memberlist.php?group_id=244765). :)
Ну, я подозревал, что Вы всё еще не в группе разработчиков. Однако, мне показалось, что Вы тесно общаетесь с ними, в связи с чем я решил, что по Вашему мнению можно судить о настроениях, царящих в группе.


Title: Re: Временное снижение сложности или блоки с
Post by: checker on June 02, 2011, 09:19:21 PM
вообще, в связи с тем, что витали мысли о том что у клиентов и у майнеров будут несколько разные цепочки блоков- у майнеров -полный набор - а у клиентов " достаточный" для мониторинга всех средств - полагаю,что развитие пойдет дальше, а сделать какой нибудь " костыль" для поддержки " устаревших" блоков в общем и целом - не проблема... в общем стопориться развитие системы скорее всего не станет.


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 03, 2011, 04:12:07 AM
для того, чтобы появились подтверждения, должен появиться блок, содержащий транзакцию.
Да, как только транзакция попадает в блок, она считается подтверждённой, и получатель может переводить монеты дальше, если хочет. "Твёрдость" полученных монет равна 1. Каждый последующий блок в цепочке также подтверждает все предыдущие транзакции, и "твёрдость" монет растёт. Вот это чисто подтверждений, то есть, число новых блоков, начиная с того блока, в котором содержится транзакция, учитывается при приоритизации.

А старые системы уже трещат по швам? У кого-то есть причины уходить с них?
Весь мир трещит по швам, недостатки есть у любой системы. Однако, глобальной паники в связи с этим не наблюдается.

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

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

И ответа окромя "обязательные комиссии спасут Отца Русской Демократии" не слышно. Для меня же данный метод борьбы выглядит весьма сомнительным и я уже писал, почему.
Необходимость комиссионных сборов была изначально заложена в устройство системы. Сейчас, когда за блок даётся 50 BTC, мы, чаще всего, обходимся без комиссий. Пока что. В дальнейшем, мы будем их платить, и никуда от этого не денемся.

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


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 03, 2011, 11:22:39 AM
вообще, в связи с тем, что витали мысли о том что у клиентов и у майнеров будут несколько разные цепочки блоков- у майнеров -полный набор - а у клиентов " достаточный" для мониторинга всех средств - полагаю,что развитие пойдет дальше, а сделать какой нибудь " костыль" для поддержки " устаревших" блоков в общем и целом - не проблема... в общем стопориться развитие системы скорее всего не станет.
Я тоже, надеюсь на это.


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 03, 2011, 11:55:14 AM
для того, чтобы появились подтверждения, должен появиться блок, содержащий транзакцию.
Да, как только транзакция попадает в блок, она считается подтверждённой, и получатель может переводить монеты дальше, если хочет. "Твёрдость" полученных монет равна 1. Каждый последующий блок в цепочке также подтверждает все предыдущие транзакции, и "твёрдость" монет растёт. Вот это чисто подтверждений, то есть, число новых блоков, начиная с того блока, в котором содержится транзакция, учитывается при приоритизации.
Т. е. приоритет транзакции зависит от суммарной "твёрдости" всех монет, вошедших в транзакцию?

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

Quote
Я же говорил о ситуации, когда из-за нежелания кого-то латать дыры безопасности
Желание латать дыры есть, в этом заинтересованы многие люди, и работы в этом направлении ведутся постоянно. Код совершенствуется, некоторые параметры меняются, обсуждаются проблемы и идеи по улучшению системы.
Ну, тогда о чём разговор?

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

Quote
И ответа окромя "обязательные комиссии спасут Отца Русской Демократии" не слышно. Для меня же данный метод борьбы выглядит весьма сомнительным и я уже писал, почему.
Необходимость комиссионных сборов была изначально заложена в устройство системы. Сейчас, когда за блок даётся 50 BTC, мы, чаще всего, обходимся без комиссий. Пока что. В дальнейшем, мы будем их платить, и никуда от этого не денемся.
Никто не отрицает необходимость комиссионных сборов. Речь шла лишь о том, что одними комиссионными сборами проблемы не решить.


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 03, 2011, 12:13:36 PM
Приоритет транзакции зависит от количества монет, их "возраста" - числа подтверждений входящих транзакций и размера транзакции в байтах.
Code:
int nConf = txindex.GetDepthInMainChain();
dPriority += (double)nValueIn * nConf;
}
// Priority is sum(valuein * age) / txsize
dPriority /= ::GetSerializeSize(tx, SER_NETWORK);
https://github.com/bitcoin/bitcoin/blob/master/src/main.cpp


Title: Re: Временное снижение сложности или блоки с
Post by: checker on June 03, 2011, 12:44:52 PM
чем выше сложность блока - тем сложней его подделать, чем ниже сложность-> тем проще (насколько я понимаю)
=> снижение сложности "длинного" блока черевато упрощением " подделки " итого система следующая
допустим в 1 блок помещается n трансакций
создадим n^2 транзакций нам для этого понадобится (n^2)/n=n  блоков
допустим текущая сложность=N
cложность самого последнего в данной цепочке блока будет== N/(2^n)
приложем к текущемму моменту:
текущая сложность 434882.72175 (согласно http://www.alloscomp.com/bitcoin/calculator.php )(положим N=этому числу)
судя по тому что blockexplorer считает что это (http://blockexplorer.com/block/000000000000076bf49383019509729c7fb51a06c5cb1526b3db26143cc691a7) - блок с самым большим кол-вом транзакций 143 .. для верности возьмем 300 ( сколько всего максимум - я так и не нашел - хотя , признаюсь - искал плохо )
получаем 300 ^ 2=90000 трансакций ( 300 блоков ) ( в общем не много ) сложность при этом упадет в 2,037035976×10⁹⁰ раз... сколько это точно посчитать я не решусь ( калькулятор отказывается.. ) но очевидно что любой компьютер сможет ПАЧКАМИ накидать блоков по такому таргету ...
с одной стороны - это будет действительно быстро с другой - этот элемент цепочки будет "самым слабым звеном ".... => появится возможность скомпрометировать всю систему...
но может быть я ошибаюсь..


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 03, 2011, 01:00:20 PM
Насколько я знаю, сложность вычислений почти не зависит от размера блоков. На проверку любого существующего блока уходят доли секунды. А вот на создание нового блока уходит в среднем 10 минут работы всех майнеров вместе взятых. После того, как задача будет кем-то решена, на включение в блок n-ного количества транзакций уходят, опять же, доли секунды.


Title: Re: Временное снижение сложности или блоки с
Post by: LZ on June 03, 2011, 02:32:59 PM
Вынужден согласиться с checker: теоретически, это может быть угрозой безопасности. :-\

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


Title: Re: Временное снижение сложности или блоки с
Post by: bootch on June 03, 2011, 05:52:20 PM
Тут поднималась тема Биткоин-2. По-моему идея не такая плохая.
В чем проблема существующего Биткоина:
1) большое время подтверждения транзакций, судя по всему
2) судя по мною понятому, единственный механизм защиты от компрометации - большая коммисияю
С другой стороны эти "недостатки" создают надежную рассчитаную на большие транзакции систему.

Так давайте сделаем к существующей системе отдельноживущее доплнение: что-нить аля квикЬиткоин
Особенности:
1) Блоки каждые 10 сек (с текущей направленностью на увеличение скорости и включение всех юзверей в децентрализованные сети - все вполне реально)
2) Бесконечная (но возможно замедляющаяся) эмиссия денег. (в этом нет ничего плохого)
3) Возможность удаление всех блоков меньше N-ного после того тот наберет достаточное кол-во подтверждений.
4) механизм снижения времени транзакций (аналогично текущему механизму роста сложности)
5) +возможно ветвление цепочки блоков.(это можно реализовать безопасно, есть мысли)

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

P.S. Я не экономист, но разумен. Просьба сильно не пинать, а объяснить где я не прав.


Title: Re: Временное снижение сложности или блоки с
Post by: LZ on June 03, 2011, 06:10:25 PM
Тут нечего объяснять. Люди не будут покупать это. Ну, только если их заставить.


Title: Re: Временное снижение сложности или блоки с
Post by: bootch on June 03, 2011, 06:20:03 PM
Тут нечего объяснять. Люди не будут покупать это. Ну, только если их заставить.
Не вижу разницы с биткоином, но вам видней.


Title: Re: Временное снижение сложности или блоки с
Post by: LZ on June 03, 2011, 06:26:30 PM
Я вижу. Биткоины - ограниченный ресурс, а у Вас будет армия печатных станков.
Кроме экономических, есть и технические изъяны. При генерации блоков каждые
10 секунд, жесткий диск будет заполняться в 60 раз быстрее. Вы же предлагаете
удалять блоки, но как же тогда система посчитает количество монет у каждого из
участников системы? Тут есть и территориальные ограничения: 10 минут хватит,
чтоб достигнуть всех уголков Земли и даже Луны, но 10 секунд при современных
роутерах и линиях связи явно будет недостаточно. Кроме того, если блоки будут
выпускаться каждые 10 секунд, это породит массовое мошенничество с отменой
платежа и двойной оплатой товаров. Кроме того, цепочка блоков будет всегда
в режиме форкинг-нон-стоп, что отолкнет майнеров от этой мертвой затеи. :-\


Title: Биткоин-2.
Post by: Yurock on June 03, 2011, 06:28:03 PM
Биткоин-2 на данный момент не нужен. Однако, в различных платёжных системах на базе Bitcoin есть смысл. Внутри систем типа MyBitcoin средства могут переводиться моментально и с минимальной комиссией. Тот же MyBitcoin, например, имеет также API для продавцов. Из децентрализованных систем, что-то вроде Ripple может оказаться полезным. Так что не дёргаемся, пока всё в порядке. :) Вот когда наберёмся опыта за несколько лет, тогда и будем изобретать что-то новое.

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


Title: Re: Временное снижение сложности или блоки с
Post by: LZ on June 03, 2011, 06:36:44 PM
1) большое время подтверждения транзакций, судя по всему
А с чем сравнивать? У других систем нет никаких подтверждений. А переводы и у Биткоин моментальные.

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


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 03, 2011, 06:58:43 PM
чем выше сложность блока - тем сложней его подделать, чем ниже сложность-> тем проще (насколько я понимаю)
=> снижение сложности "длинного" блока черевато упрощением " подделки " итого система следующая
допустим в 1 блок помещается n трансакций
создадим n^2 транзакций нам для этого понадобится (n^2)/n=n  блоков
допустим текущая сложность=N
cложность самого последнего в данной цепочке блока будет== N/(2^n)
приложем к текущемму моменту:
текущая сложность 434882.72175 (согласно http://www.alloscomp.com/bitcoin/calculator.php )(положим N=этому числу)
судя по тому что blockexplorer считает что это (http://blockexplorer.com/block/000000000000076bf49383019509729c7fb51a06c5cb1526b3db26143cc691a7) - блок с самым большим кол-вом транзакций 143 .. для верности возьмем 300 ( сколько всего максимум - я так и не нашел - хотя , признаюсь - искал плохо )
получаем 300 ^ 2=90000 трансакций ( 300 блоков ) ( в общем не много ) сложность при этом упадет в 2,037035976×10⁹⁰ раз... сколько это точно посчитать я не решусь ( калькулятор отказывается.. ) но очевидно что любой компьютер сможет ПАЧКАМИ накидать блоков по такому таргету ...
с одной стороны - это будет действительно быстро с другой - этот элемент цепочки будет "самым слабым звеном ".... => появится возможность скомпрометировать всю систему...
но может быть я ошибаюсь..
То ли я чего-то недопонимаю, то ли в Ваших рассуждениях изъян.
1. Минимальная сложность в биткойне - 1. Т. е. сложность в принципе не может упасть ниже, чем 1/434882 от текущей.
2. При сложности в 1 каждый блок-кандидат является валидным. Моя машина при скорости ~300MHash/s насчитывает ~10 блоков-кандидатов в минуту. Итого, при минимальной сложности средняя машина (примем мою за среднюю) будет тратить примерно 6 секунд на генерацию блока.
И что из этого? Что означает "подделать блок"? Как это может скомпрометировать систему?
Ну, создала машина поддельный блок. Даже если он и соответствует текущей сложности, другие машины всё равно будут проверять его на валидность. И не подтвердят.
Сложность - это некий критерий. Чем она выше, тем сложнее найти блок, удовлетворяющий этому критерию. Именно найти, а не подделать. Подделать блок не получится в любом случае, т. к. его просто забракуют другие узлы.
Сложность регулирует частоту генерации новых блоков, а вовсе не возможность их подделки.
Так что, по-моему, Ваш довод высосан из пальца.


Title: Время прохождения транзакции.
Post by: Yurock on June 03, 2011, 07:08:55 PM
А переводы и у Биткоин моментальные.
По-моему, полученные биткоины нельзя потратить, пока не было подтверждения транзакции. Если это так, то транзакцию нельзя сразу считать состоявшейся. Если нет доверия к отправителю, то также нельзя считать неподтверждённую транзакцию завершённой.


Title: Re: Временное снижение сложности или блоки с
Post by: bootch on June 04, 2011, 06:02:17 AM
Я вижу. Биткоины - ограниченный ресурс, а у Вас будет армия печатных станков.
На текущий момент майнеры тоже печатные станки.(А уж правительства уже 4к лет печатные станки). Приведу всеми нами любимый пример с золотом. Золото дорогое не потому, что его ограниченное количество, а потому что его сложно добывать. Сложность в придложенной мною системе тоже нужна(и кстати если бы она существовала, то стоимость обмена BTC/QBTC была бы прямо пропорциональна отношению сложностей).
Кстати электроэнергия де-факто уже неограниченный ресурс.
При генерации блоков каждые
10 секунд, жесткий диск будет заполняться в 60 раз быстрее. Вы же предлагаете
удалять блоки, но как же тогда система посчитает количество монет у каждого из
участников системы?
А вот это я столкнулся с непониманием системы. Вы хотите сказать, что кол-во монет у участника считается парсингом всей истории? Ведь каждый адрес имеет свою пару ключей и, следовательно, может подтвердить количество монет на нем.
И кстати, код офф клиента (https://github.com/bitcoin/bitcoin/raw/master/src/main.cpp ln 958)
        if (!vMissingTx.empty())
        {
            // TODO: optimize this to scan just part of the block chain?
            if (ScanForWalletTransactions(pindexGenesisBlock))
                fRepeat = true;  // Found missing transactions: re-do Reaccept.
        }

Тут есть и территориальные ограничения: 10 минут хватит,
чтоб достигнуть всех уголков Земли и даже Луны, но 10 секунд при современных
роутерах и линиях связи явно будет недостаточно.
Был предложен механизм ветвления. Как правило транзакции совершаются внутри определенной группы продавцов/покупателей. Эти люди будут висеть в одной ветке блоков. У них будут быстрые транзакции. При проведении транзакций с другой веткой блоков будет необходимо подтверждение в обеих ветках(такие операции будут иметь меньший приоритет). Это не будет замедлять локальные(частые) операции, но слегка замедлит дальние(что некритично).
Кроме того, цепочка блоков будет всегда
в режиме форкинг-нон-стоп, что отолкнет майнеров от этой мертвой затеи.
Не понял, что такое форкинг-нон-стоп? это к вопросу о ветвлении?

Теперь в целом.
1) я не призываю всех бросать все и идти делать биткоин-2.
2) Биткоин - стратегическая штука. Ее никто не продает потому что она дорогая(и растет, и будет расти). Именно по этой причине сейчас из 6кк БТС в обращении 250к. И в будущем такая ситуация сохранится.
3)С другой стороны QBTC хранить сбережения в QBTC - глупо(так же как хранить в деньгах). Если вы были очень богатым человеком с 200к долларов 50 лет назад, то сейчас при тех же 200к долларов вы отнюдь не богатый человек.
Итак в предложенной системе QBTC играет роль децентрализованных денег, BTC - ресурса.
Аналогия: QBTC - деньги, BTC - золото. ИРЛ система работает с 1947 года(вроде).

P.S.
Еще раз объясню, почему я тут пишу много букв. Я уверен, что если система QBTC и появится, она будет не такой, какую я ее предлагаю. Более того, вполне вероятно, что изменится именно биткоин. И вы, lzsaver, как человек близкий к команде разработчиков сможете донести полезные идеи(которые возможно есть в моем тексте). Поэтому, если вы не против, я буду продолжать дискуссию.


Title: Re: Временное снижение сложности или блоки с
Post by: JohnSmith on June 04, 2011, 07:13:47 AM
Идея хорошая, но как придать такой валюте ценность? Ее же будут просто печатать. Вот если бы можно было делать BTC<-> QBTC (чем и занимаются всякие майбиткоины) надежно, то у нее будет шанс. Но я себе это не представляю.

А золото дорогое, по той же самой причине что и биткоины ;) Стоимость биткоинов никак не связана со стоимостью энергии


Title: Re: Временное снижение сложности или блоки с
Post by: checker on June 04, 2011, 04:22:48 PM
всё понятно, но а чем плохи системы типа mybitcoin для тех кому критична именно скорость? главное не привязывать всех к одному единственному сервису - а плодить подобные сервисы- и всё пучком - мне кажется биткоину стоит обрастать сервисами а не форкаться. Кому критична безопасность - могут подождать несколько минут, кому критична скорость - могут доверить хранение монеток в каком либо сервисе.


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 04, 2011, 04:44:18 PM
главное не привязывать всех к одному единственному сервису - а плодить подобные сервисы
В случае с микротранзакциями даже не потребуется множество систем. Ведь риск относительно небольшой - даже в случае полного уничтожения системы, каждый участник теряет лишь небольшую часть денег (микро же). Кстати, теоретически есть возможность наладить транзакции даже между различными операторами. Например, 2 оператора договариваются о возможности переводить деньги на счёт пользователя другой системы. Такие транзакции также могут проходить мгновенно и с минимальными комиссионными. Сами же операторы должны будут периодически рассчитываться друг с другом обычными биткоинами.


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 07, 2011, 06:01:12 AM
Возвращаясь к теме.
Микробиткойн или биткойн-2, это конечно же хорошо. Однако, пока речь идёт не о создании новой валюты, а о совершенствовании существующей.
Итак...
Уже сейчас для перевода 1BTC с 40 подтверждениями не хватает приоритета и клиент просит мзду. Мне приходится ждать почти сутки, чтобы наскопить достаточное количество подтверждений.
А теперь, допустим, что биткойн наконец стал настолько популярен, что количество транзакций в единицу времени (трафик транзакций) возрос в десятки или даже в сотни раз.
Трафик будет таким, что перевести деньги без комиссии станет не реально. Мало того, комиссия тоже, не сильно поможет, т. к. комиссия лишь поднимает приоритет данной транзакции, но не увеличивает общую пропускную способность сети. Биткойн организован таким образом, что что рост вычислительной мощности сети не увеличивает её пропускной способности - просто узлы, занимающиеся генерацией блоков, как те солдаты из анекдота, начинают чистить снег не лопатами, а ломами. Т. е. выполняют больше бесполезной работы.
Таким образом, поскольку весь трафик не пролазит через сеть, а пропускная способность сети фактически константа, обязательно будут появляться "зависшие" транзакции, до которых никогда не дойдёт очередь. Причём, это будут уже транзакции с комиссией. Причём их количество начнёт расти лавинообразно. Таким образом, пытаясь дать своим транзакциям хотя бы шанс попасть в блок, люди будут всё время повышать комиссию. Но это приведёт лишь к тому, что всё более дорогие транзакции будут "зависать". Это напоминает ситуацию, когда есть рынок, где тогуют воздухом, но воздуха у продавцов на всех не хватает. Рыночная цена воздуха будет всё время расти, но всё равно, кто-то будет постоянно умирать, т. к. лишнему воздуху взяться просто неоткуда, сколько денег не неси на рынок.

На данный момент момент, исходя из моего понимания системы, я не вижу в ней технологии для решения данной проблемы.

Я предложил свой вариант решения, но не услышал ни заинтересованности, ни весомых аргументов против.
Вопрос: мне толкать идею разработчикам, или я что-то не понял и оно нафиг никому не надо?


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 07, 2011, 07:29:10 AM
А теперь, допустим, что биткойн наконец стал настолько популярен, что количество транзакций в единицу времени (трафик транзакций) возрос в десятки или даже в сотни раз.
Трафик будет таким, что перевести деньги без комиссии станет не реально. Мало того, комиссия тоже, не сильно поможет, т. к. комиссия лишь поднимает приоритет данной транзакции, но не увеличивет общую пропускную способность сети.
Пропускная способность сети действительно ограничена. Я отчасти разделяю Ваши опасения, но давайте сделаем расчёт.

Максимальный размер блока (https://github.com/bitcoin/bitcoin/blob/master/src/main.h):
Code:
static const unsigned int MAX_BLOCK_SIZE = 1000000;
Средний размер блока на сегодня (http://blockexplorer.com/q/avgblocksize): 18033
1000000 / 18033 = 55,45389
То есть, имеем более чем пятидесятикратный запас пропускной способности. Если предположить, что Bitcoin станет основной валютой интернет-расчётов (более 50% мировых объёмов), то можно предвидеть ситуацию, когда мы упрёмся в этот предел, если принять, что сейчас доля Bitcoin меньше 1%. Однако, понятно, что произойдёт это совсем не скоро.

Ещё раз напомню, что ограничение размера блока и ограничение скорости создания блоков было введено прежде всего для ограничения скорости увеличения объёма общей истории транзакций. Следующие предложенные здесь варианты увеличения пропускной способности не решают проблему роста истории:
  • создание дополнительных блоков при необходимости (оригинальная идея);
  • поднятие ограничения на размер блока (моё предложение);
  • уменьшение среднего интервала между блоками ("Bitcoin-2").

Что же плохого в росте размеров истории? То, что каждый "полный" узел сети, какими сегодня являются большинство клиентов, должен хранить всю эту историю локально. Для новых инсталляций также надо будет предоставить всю цепочку блоков, или при, собственно, установке, или загружать её автоматически из сети.
Среднее теоретическое количество блоков в год: 6 * 24 * 365,2425 = 52594,92
Максимальный прирост истории в год при текущих ограничениях: 1000000 * 52594,92 = 52594920000.
То есть, около 50 гектар в год.

Теперь рассмотрим некоторые пути решения проблемы компромисса между пропускной способностью и ростом истории.

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

Централизованные платёжные системы на базе Bitcoin эффективно решают проблему микроплатежей и проблему скорости подтверждения транзакций. Риски, связанные с централизованностью небольшие, так основная ниша для таких систем - микро-платежи. Есть также разработки децентрализованных систем микроплатежей, таких как Ripple.

Использование "неполных" узлов сделает проблему роста истории менее острой и позволит увеличить размеры блоков (и пропускную способность сети) при необходимости.


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 08, 2011, 07:13:16 AM
Максимальный размер блока (https://github.com/bitcoin/bitcoin/blob/master/src/main.h):
Code:
static const unsigned int MAX_BLOCK_SIZE = 1000000;
Средний размер блока на сегодня (http://blockexplorer.com/q/avgblocksize): 18033
1000000 / 18033 = 55,45389
То есть, имеем более чем пятидесятикратный запас пропускной способности. Если предположить, что Bitcoin станет основной валютой интернет-расчётов (более 50% мировых объёмов), то можно предвидеть ситуацию, когда мы упрёмся в этот предел, если принять, что сейчас доля Bitcoin меньше 1%. Однако, понятно, что произойдёт это совсем не скоро.
Сразу же вопрос: если в блоке места ещё дохренищща, то почему клиент уже трясёт с меня бабло за низкоприоритетные  транзакции? Готовят меня к страшному?

Quote
Ещё раз напомню, что ограничение размера блока и ограничение скорости создания блоков было введено прежде всего для ограничения скорости увеличения объёма общей истории транзакций. Следующие предложенные здесь варианты увеличения пропускной способности не решают проблему роста истории:
  • создание дополнительных блоков при необходимости (оригинальная идея);
  • поднятие ограничения на размер блока (моё предложение);
  • уменьшение среднего интервала между блоками ("Bitcoin-2").
Предлагаю разделить проблему "зависших" транзакций и проблему роста истории.
Предлагаемое мною решение направлено на решение первой проблемы. Для решения второй проблемы следует придумать что-то ещё.
Лично мне вообще, не нравится идея хранения истории на диске. Мне кажется, с этим нужно что-то делать.

Quote
Теперь рассмотрим некоторые пути решения проблемы компромисса между пропускной способностью и ростом истории.
Ok

Quote
Повышение комиссионных сборов приведёт к уменьшению числа транзакций. Пользователи будут переводить биткоины только когда это действительно будет нужно. Замечу, что повышение комиссионных неизбежно. Это заложено в систему. Когда премия за генерацию блока сойдёт на нет, всем придётся платить поборы.
Вы слишком часто напоминаете об этом. Я же не оспариваю данный тезис!
Я лишь говорю, что это - не панацея.

Quote
Использование "неполных" узлов сделает проблему роста истории менее острой и позволит увеличить размеры блоков (и пропускную способность сети) при необходимости.
Вот этим и надо заниматься! По возможности, уменьшить историю, хранимую внутри клиента. А в идеале - избавиться от неё вовсе.
Т. е. проблему роста истории нужно уменьшать не за счёт ограничения пропускной способности сети.


Title: Re: Временное снижение сложности или блоки с
Post by: bootch on June 08, 2011, 08:29:52 AM
Замечу, что повышение комиссионных неизбежно. Это заложено в систему. Когда премия за генерацию блока сойдёт на нет, всем придётся платить поборы.
С чего бы это. Мне логика подсказывает, что это не так.
Да в момент добывания последнего биткоина у майнеров резко упадут доходы, повысится комиссия итп. Но потом комисиия плавно уйдет в 0. Ибо стоимость биткоина постоянно растет.


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 08, 2011, 08:42:49 AM
С чего бы это. Мне логика подсказывает, что это не так.
Да в момент добывания последнего биткоина у майнеров резко упадут доходы, повысится комиссия итп. Но потом комисиия плавно уйдет в 0. Ибо стоимость биткоина постоянно растет.
Не вижу в этом логики. Каким образом рост стоимости может привести к падению комиссии?
Если комиссия упадёт в 0, а бонус за блок тоже, приблизится к 0, то кто будет блоки вычислять?


Title: Re: Временное снижение сложности или блоки с
Post by: foruser on June 08, 2011, 09:09:24 AM
меня тут не отпускает одна мысль
(возможно я плохо понимаю принцип работы транзакций и комиссий)
а что если каждый пул будет обслуживать только строго определенные комиссии.
скажем один пул обслуживает переводы, у которых комиссия 0.01-0.05
другой от 5 до 10 центов и т.д.
и получится, что если кто-то заходчет задосить с комиссией 0.01 от и будет крутиться в одной группе

если транзакций с 1 центов комиссий больше, то и пулов (в долгосрочной перспективе) станет соразмерно больше.

как-то так


Title: Re: Временное снижение сложности или блоки с
Post by: LZ on June 08, 2011, 05:30:01 PM
Подделать блок не получится в любом случае, т. к. его просто забракуют другие узлы.
Сложность регулирует частоту генерации новых блоков, а вовсе не возможность их подделки.
Я не проверял расчеты checker'а, но если при такой схеме действительно можно сильно снизить
сложность, станет вполне возможна отмена платежей заменой части цепочки на более сильную.

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

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

Не понял, что такое форкинг-нон-стоп? это к вопросу о ветвлении?
Допустим, я отправляю Вам 10 BTC, этот перевод попадает в блок 123. Затем, я отправляю эти же
10 BTC некоторому Васе и используя арендуемые GPU-сервера заново генерирую блок 123 и сразу
за ним блок 124. Моя цепочка будет длиннее официальной, следовательно 10 BTC получит Вася, а
не Вы. При форкинг-нон-стоп мою цепочку так же отменит кто-то другой и так далее. И при таком
режиме будет возможна не только отмена платежа, но и отмена вознаграждения в 50 BTC за блок.

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

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

Лично мне вообще, не нравится идея хранения истории на диске. Мне кажется, с этим нужно что-то делать.
В любом случае у кого-то история должна храниться, но кому мы доверяем больше чем себе?

Вот этим и надо заниматься! По возможности, уменьшить историю, хранимую внутри клиента. А в идеале - избавиться от неё вовсе.
Задача нетривиальная, но рано или поздно, я уверен, она будет решена. Сейчас и так нормально.

Если комиссия упадёт в 0, а бонус за блок тоже, приблизится к 0, то кто будет блоки вычислять?
Ну, зачем сразу в ноль? 0.0005, 0.000005, etc.
Растет курс биткоина, платить комиссию становится все накладнее, так что комиссия будет снижаться.
Еще я заметил, что появляются новые пулы, что должно привести к конкурентному снижению комиссии.


Title: Re: Временное снижение сложности или блоки с
Post by: JohnSmith on June 08, 2011, 08:04:36 PM
Лично мне вообще, не нравится идея хранения истории на диске. Мне кажется, с этим нужно что-то делать.

Хорошо. Но когда до тебя не дойдет перевод - не удивляйся.


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 08, 2011, 08:07:39 PM
если в блоке места ещё дохренищща, то почему клиент уже трясёт с меня бабло за низкоприоритетные  транзакции?
Бесплатные транзакции не приносят майнеру дополнительной прибыли, поэтому он может вообще не включать их в блок. Однако, майнер также почти не несёт и расходов в связи с включением дополнительных транзакций в блок. Решили сделать так: часть места в блоке отводится для бесплатных транзакций, всё остальное - для платных. Вот за это халявное место и происходит конкуренция. Приоритет бесплатных транзакций вычисляется по указанной ранее формуле. Если у транзакции получается низкий приоритет, то она не скоро попадёт в блок. Лечится это добавлением комиссионных.

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

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


Title: Re: Временное снижение сложности или блоки с
Post by: iLya on June 09, 2011, 03:10:06 AM
Приветствую, yurock!

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

Лучше сказать налоги, привычнее.  И эти налоги будут заметными.

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

При текущей сложности генерации блока такой корпорации как Федеральная Резервная Система не составит большого труда создать/аккумулировать вычислительную мощь в 60-80%% от мощности сети Биткоин (стоит указать, что компьютеры в топ500 -- это компьютеры общего назначения; собрать специализированую систему проще: не все видеокарты, которые выпускает AMD, занимаются майнингом, есть проект майнера на FPGA).  При наличии угрозы со стороны Биткоин этой корпорации, вычислительна мощность будет собрана и сеть атакована.  Чтобы защититься от этого -- надо привлекать майнеров, т.е. поднимать налог.

Илья


Title: Re: Временное снижение сложности или блоки с
Post by: iLya on June 09, 2011, 03:30:14 AM
2) судя по мною понятому, единственный механизм защиты от компрометации - большая коммисияю
Скорее самая маленькая комиссия в мире, к тому же со временем стремящаяся только к уменьшению.
Комиссия не будет уменьшаться.  Скорее наоборот.

Чем меньше комиссия, тем меньше майнеров.  Чем меньше майнеров, тем меньше сложность генерации блока.  Чем меньше сложность генерации блока, тем проще скомпроментировать сеть.  Это надо чётко понимать.

Илья


Title: Re: Временное снижение сложности или блоки с
Post by: iLya on June 09, 2011, 03:49:45 AM
Ещё раз напомню, что ограничение размера блока и ограничение скорости создания блоков было введено прежде всего для ограничения скорости увеличения объёма общей истории транзакций. Следующие предложенные здесь варианты увеличения пропускной способности не решают проблему роста истории:
  • создание дополнительных блоков при необходимости (оригинальная идея);
  • поднятие ограничения на размер блока (моё предложение);
  • уменьшение среднего интервала между блоками ("Bitcoin-2").

Ещё не предлагали хранить историю распределённо?  Сейчас бурными темпами развиваются распределённые файловые системы.  Вот в эту сторону и нужно смотреть.

1000/10000/100000 -кратное резервирование истории всей сетью -- этого вполне должно хватать.  Не нужно будет хранить всю историю на каждом клиенте.

Илья


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 09, 2011, 06:45:34 AM
Ещё не предлагали хранить историю распределённо?
Каждая транзакция и каждый блок сверяется с историей, и признаётся только информация, прошедшая проверку. Теоретически, клиент может хранить локально только часть информации, например, хеш каждого блока. При необходимости, он будет подгружать полные блоки из сети и сверять их хеши с хранящимися локально. Майнерам, пожалуй, удобнее будет хранить всю историю локально - вот они-то и могут стать "серверами" истории. А также те, кому надёжность важнее экономии места. Думаю, в случае успеха Bitcoin, найдётся достаточное количество желающих иметь "полные" узлы.


Title: Re: Временное снижение сложности или блоки с
Post by: iLya on June 09, 2011, 07:09:36 AM
Ещё не предлагали хранить историю распределённо?
Каждая транзакция и каждый блок сверяется с историей, и признаётся только информация, прошедшая проверку.
Клиент может кэшировать проверки.  Большая часть платежей клиента будет происходить в пределах некой группы (при достаточном развитии сети).  Поэтому кэширование будет иметь смысл.

Quote
Теоретически, клиент может хранить локально только часть информации, например, хеш каждого блока. При необходимости, он будет подгружать полные блоки из сети и сверять их хеши с хранящимися локально. Майнерам, пожалуй, удобнее будет хранить всю историю локально - вот они-то и могут стать "серверами" истории. А также те, кому надёжность важнее экономии места. Думаю, в случае успеха Bitcoin, найдётся достаточное количество желающих иметь "полные" узлы.
Это уже задачи распределённой файловой системы: балансировка нагрузки, обеспечение безотказности, равномерная нагрузка и т.п.  Главное, это снижение требований к дисковой памяти одного клиента.

Очень грубо: если сотня клиентов за сутки находится час в он-лайн, то они обеспечат примерно четырех-кратное дублирование.  Делим ещё на два для надёжности и получаем, что каждому из них достаточно хранить только половину информации.  И это всего один час он-лайн в сутки. (Это очень грубо. На самом деле объём в значительной степени будет зависить от требований к доступности.)

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

Илья


Title: Re: Временное снижение сложности или блоки с
Post by: rPman on June 09, 2011, 09:37:16 AM
После перехода к следующей стадии развития bitcoin (нормальная торговля) будут активно появляться посредники для микротранзакций, это даже не вопрос, будут, для начале на базе уже имеющихся бирж, потом, в сочетании с пулами майнинга (можно внести в код bitcoind на серверах майнинга, чтобы более приоритетно обрабатывали транзакции, идущие от и к такой бирже микротранзакций, (таким образом транзакции между адресами можно по времени сократить до 10-20 минут, а внутри биржи естественно без задержек).


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 09, 2011, 10:04:15 AM
Хорошо. Но когда до тебя не дойдет перевод - не удивляйся.
Не нужно мыслить так однобоко. Всегда существует как минимум два альтернативных способа решения проблемы.
Да, сейчас хранение полной истории необходимо, чтобы клиент, который был в оффлайне, мог узнать о свершившихся транзакциях.
Но кто сказал что это - единственное решение?


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 09, 2011, 10:31:56 AM
Приветствую, yurock!

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

Лучше сказать налоги, привычнее.  И эти налоги будут заметными.

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

При текущей сложности генерации блока такой корпорации как Федеральная Резервная Система не составит большого труда создать/аккумулировать вычислительную мощь в 60-80%% от мощности сети Биткоин (стоит указать, что компьютеры в топ500 -- это компьютеры общего назначения; собрать специализированую систему проще: не все видеокарты, которые выпускает AMD, занимаются майнингом, есть проект майнера на FPGA).  При наличии угрозы со стороны Биткоин этой корпорации, вычислительна мощность будет собрана и сеть атакована.  Чтобы защититься от этого -- надо привлекать майнеров, т.е. поднимать налог.

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

Вот есть дядя Сорос (Рокфеллер, Ротшильд, Морган - подставь по вкусу любую еврейскую фамилию) или кто-то ещё из ФРС-ного закулисья решил, что биткойн представляет для него жуткую угрозу и собрался атаковать его.
Затарился он дорогущим железом, которое считает гига(тера?)хеши.
Что дальше? Каковы его действия?
Только побольше конкретики. Без общих слов.
В чём будет заключаться его атака? Каким образом, имея даже 80% текущей вычислительной мощности сети, он угробит (скомпрометирует) систему?
Тут lzsaver пугал нон-стоп-форкингом, но насколько он страшен и реален?


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 09, 2011, 11:55:56 AM
Каким образом сложность (по сути, случайный перебор кучи вариантов в поисках того, хеш которого удовлетворяет неким условиям) позволяет защититься от атак и повышает надёжность системы в целом?
Как происходит транзакция? Рассмотрим упрощённый вариант. Отправитель передаёт в сеть пакет информации, содержащий:
  • один из адресов (адрес = открытый ключ) отправителя;
  • адрес получателя;
  • количество монет;
  • какую-то другую информацию;
  • электронную подпись пакета, полученную с помощью соответствующего секретного ключа отправителя.
Узлы системы проверяют транзакцию с помощью истории и распространяют её по сети. После завершения транзакции, все монеты списываются с указанного адреса отправителя и получатель получает право распоряжаться ими. Подвох здесь заключается в том, что нечестный отправитель может отправить монеты с того же адреса ещё раз, уже на другой адрес. В итоге, система может признать только одну из этих транзакций. Решение о закреплении транзакций в истории принимают майнеры. Чтобы доказать своё право на запись блока в историю (и получение премии), майнеры решают какую-то бесполезную задачу. Другие узлы признают блоки на основе предполагаемой сложности решённой задачи. Если появятся несколько конкурирующих блоков (хвостов цепочки), то истинным будет признан тот хвост, суммарная "сложность" блоков в котором будет наибольшей. После добавления блока в историю, последующие блоки будут вычисляться исходя из него, и чем больше блоков будет добавлено, тем сложнее надо будет решить задачу, чтобы сгенерировать другой, альтернативный хвост. Таким образом, не имея достаточной вычислительной мощности, не получится вертеть историей по своему желанию. А вот если такие мощности есть в наличии, то можно попробовать смухлевать.
  • Создаём свою сеть майнеров.
  • Изолируем её от общей сети.
  • В общую сеть передаём транзакцию на много BTC какому-нибудь трейдеру, например.
  • В свою сеть передаём такую же транзакцию, но уже на какой-то свой адрес.
  • Ждём подтверждение транзакции трейдером и получаем от него то, что нам полагается.
  • Объединяем нашу сеть с общей сетью. Если в нашей сети суммарная "сложность" новых блоков превысит сложность новых блоков в общей сети, то наш хвост будет признан истинным, и все транзакции, прошедшие в общей сети, будут отменены. (Отменённые транзакции могут быть автоматически восстановлены, кроме нашей "фальшивой" транзакции.)
  • Трейдеры SOSNOOLEY.
  • ...
  • PROFIT!
Так как монеты при этом остаются у мошенника, он может проделать всё это несколько раз. И это - довольно простая схема. Я слышал, что есть варианты атак, требующих меньший процент вычислительной мощности всей сети.


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 09, 2011, 12:45:00 PM
Каким образом сложность (по сути, случайный перебор кучи вариантов в поисках того, хеш которого удовлетворяет неким условиям) позволяет защититься от атак и повышает надёжность системы в целом?
Как происходит транзакция? Рассмотрим упрощённый вариант.
Code:
Упрощённый вариант поскипан
Таким образом, не имея достаточной вычислительной мощности, не получится вертеть историей по своему желанию. А вот если такие мощности есть в наличии, то можно попробовать смухлевать.
  • Создаём свою сеть майнеров.
  • Изолируем её от общей сети.
  • В общую сеть передаём транзакцию на много BTC какому-нибудь трейдеру, например.
  • В свою сеть передаём такую же транзакцию, но уже на какой-то свой адрес.
  • Ждём подтверждение транзакции трейдером и получаем от него то, что нам полагается.
  • Объединяем нашу сеть с общей сетью. Если в нашей сети суммарная "сложность" новых блоков превысит сложность новых блоков в общей сети, то наш хвост будет признан истинным, и все транзакции, прошедшие в общей сети, будут отменены. (Отменённые транзакции могут быть автоматически восстановлены, кроме нашей "фальшивой" транзакции.)
  • Трейдеры SOSNOOLEY.
  • ...
  • PROFIT!
Это - довольно простая схема. Я слышал, что есть варианты атак, требующих меньший процент вычислительной мощности всей сети.
Вчитайтесь внимательно в мой вопрос.
Вопрос был: "Каким образом сложность позволяет защититься от атак?"
Из Вашего объяснения следует, что вычислительная мощность "сети-шулера" должна быть выше вычислительной мощности "частной" сети. Иначе, сеть-шулер просто не успеет за указанное время нагенерить блоков на большую суммарную сложность, нежели "честная сеть".
Теперь допустим, сложность снизилась в 2 раза. Что это изменило? А ничего! Отношение вычислительных мощностей 2-х сетей осталось одинаковым! В любом случае, за то же самое время при той же сложности "честная" сеть нагенерит больше блоков, чем "сеть-шулер", соответственно и суммарная сложность блоков будет выше. Можно снизить сложность хоть в 4, хоть в 8 хоть в стопицот раз, это ничего не изменит в данной схеме. И даже не имеет значения, будет ли снижаться сложность постоянно или временно. Т. к. за одно и то же время при одинаковой вычислительной мощности ты нагенеришь либо 10 блоков текущей сложности, либо 20 блоков сниженной в 2 раза сложности. В любом случае суммарная сложность зависит только от вычислительной мощности сети и никак не от сложности генерации отдельного блока.
Итак, повторю вопрос ещё раз: "Каким образом сложность позволяет защититься от атак?"


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 09, 2011, 01:33:01 PM
В любом случае суммарная сложность зависит только от вычислительной мощности сети и никак не от сложности генерации отдельного блока.
В моём сообщении, "сложностью" я называю 2 чуть-чуть разных понятия.
  • Текущая сложность - это некая планка, которая определяет, каким должен быть результат хеширования, чтобы новый блок был признан системой.
  • Собственно сам результат хеширования. Чем он лучше, тем сложнее в среднем получить такой результат, хотя всё зависит от удачи. Конкретный результат всегда лучше минимально требуемого.
Система автоматически меняет сложность задачи в зависимости от вычислительной мощности сети, чтобы поддерживать примерно одинаковую частоту генерации блоков. Чем выше текущая сложность задачи, тем лучше будет средний результат хеширования, так как все новые блоки должны соответствовать установленной планке.

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


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 09, 2011, 05:33:30 PM
В любом случае, так как сложность напрямую зависит от вычислительной мощности, мы можем использовать любое из понятий "сложность" или "мощность", когда говорим о надёжности сети или о майнинге, например.
Ещё раз. Я не спорю с тем, что чем больше вычислительная мощность сети, тем круче. Тем она устойчивее к атакам.
Я лишь говорю, что временное снижение сложности никак не скажется на надёжности сети. Да, временно возрастёт трафик. Но не более.


Title: Re: Временное снижение сложности или блоки с
Post by: iLya on June 10, 2011, 02:11:40 AM
Hi!

В любом случае суммарная сложность зависит только от вычислительной мощности сети и никак не от сложности генерации отдельного блока.
Итак, повторю вопрос ещё раз: "Каким образом сложность позволяет защититься от атак?"
От атак позволяет защититься имеющаяся в сети мощность (чем больше в сети мощность, тем сложнее собрать машину в 60-70%% от этой мощности).  Как связана мощность и сложность -- ты сам написал (надеюсь, и понимаешь).

Ещё раз. Я не спорю с тем, что чем больше вычислительная мощность сети, тем круче. Тем она устойчивее к атакам.
Я лишь говорю, что временное снижение сложности никак не скажется на надёжности сети. Да, временно возрастёт трафик. Но не более.
Мы говорим не о временном снижении сложности, а о получении контроля над более, чем 50-ю процентами мощности сети.  При низкой сложности (ага, это означает, что мощность сети маленькая) это сделать проще.

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

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

Илья


Title: Re: Временное снижение сложности или блоки с
Post by: iLya on June 10, 2011, 03:55:41 AM
Hi!

Я лишь говорю, что временное снижение сложности никак не скажется на надёжности сети. Да, временно возрастёт трафик. Но не более.
Я подумал, что, возможно, ты полагаешь, будто я против временного снижения сложности при увеличении количества переводов. Таки да, я против этого.  Но не из-за уменьшения надёжности сети.

Временное снижение сложности не влияет на надёжность сети.  Оно бесполезно, если не вредно.  Это то же самое, что увеличить размер блока (количество переводов в транзакции/блоке).  Только второе не требует изменения существующих программ/протокола (при условии, что в клиентах отсутствует контроль размера уже подписанного блока) и безопаснее с точки зрения разветвления цепочки блоков.

Илья


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 10, 2011, 05:35:43 AM
Я лишь говорю, что временное снижение сложности никак не скажется на надёжности сети. Да, временно возрастёт трафик. Но не более.
Временное снижение сложности не влияет на надёжность сети.  Оно бесполезно, если не вредно.  Это то же самое, что увеличить размер блока (количество переводов в транзакции/блоке).  Только второе не требует изменения существующих программ/протокола (при условии, что в клиентах отсутствует контроль размера уже подписанного блока) и безопаснее с точки зрения разветвления цепочки блоков.
Вообще-то, я не против временного увеличения размера блока. Я даже писал, что возможно, это даже лучшее решение, чем временное снижение мощности. Внятного объяснения, чем это плохо я так и не услышал.


Title: Re: Временное снижение сложности или блоки с
Post by: iLya on June 10, 2011, 06:57:40 AM
Hi!

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

Чем больше вероятность вилки, тем больше блоков необходимо ждать для гарантированного подтверждения перевода/транзакции.

Илья


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 10, 2011, 07:18:10 AM
надо стимулировать рост мощности сети биткоин.  Это можно сделать увеличивая налог в пользу майнеров.
На сегодня генерация монет намного превышает комиссионные, поэтому последние практически не играют роли в стимуляции майнеров. Однако, со временем, как-то надо будет увеличивать комиссию. Где-то через годик с лишним планируется снижение генерации до 25 монет в блоке.


Title: Re: Временное снижение сложности или блоки с
Post by: iLya on June 10, 2011, 08:33:45 AM
На сегодня генерация монет намного превышает комиссионные, поэтому последние практически не играют роли в стимуляции майнеров. Однако, со временем, как-то надо будет увеличивать комиссию.
И лучше договориться об этом как можно раньше.

Quote
Где-то через годик с лишним планируется снижение генерации до 25 монет в блоке.
Если постановить, что вознаграждение за найденый блок всегда будет не менее 50 монет, а количество генерируемых монет вычислять как разницу между налогом и этими 50-ю монетами, то генерация монет со временем (с ростом оборота) сойдёт на нет.  Количество сгенерированных монет будет регулироваться рынком.

Вот более развёрнуто: http://forum.bitcoin.org/index.php?topic=13324.msg183098#msg183098
(упреждая обвинения в зацикленности на одной идеи, указываю, что да, я хочу, чтобы это прочло как можно больше людей).

Илья


Title: Re: Временное снижение сложности или блоки с
Post by: Yurock on June 10, 2011, 05:41:28 PM
На данный момент, сфера генерации блоков намного более развита, чем нормальный оборот биткоинов. Я считаю, что вместо того, чтобы стимулировать майнеров, надо уделять больше внимания внедрению Bitcoin, как платёжного средства. Ещё, как минимум, целый год проблем с майнингом быть не должно. Если за это время система получит достаточное распространение, то будет спрос на генерацию, а спрос рождает предложение. Да и потом ещё года 4 будет премия в 25 BTC за блок, а это также немало.


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 10, 2011, 06:45:17 PM
Временное снижение сложности не влияет на надёжность сети.  Оно бесполезно, если не вредно.  Это то же самое, что увеличить размер блока (количество переводов в транзакции/блоке).  Только второе не требует изменения существующих программ/протокола (при условии, что в клиентах отсутствует контроль размера уже подписанного блока) и безопаснее с точки зрения разветвления цепочки блоков.
Вообще-то, я не против временного увеличения размера блока. Я даже писал, что возможно, это даже лучшее решение, чем временное снижение мощности. Внятного объяснения, чем это плохо я так и не услышал.
Необходимость изменения протокола и увеличение вероятности вилки.  Этого достаточно.
Чем больше вероятность вилки, тем больше блоков необходимо ждать для гарантированного подтверждения перевода/транзакции.
Ещё раз и медленно. Я не спрашивал, чем хуже временное снижение сложности временного увеличения размера блока. Я спрашивал, чем такой подход (временное снижение сложности или временное увеличение размера блока) плох сам по себе. Если Вас так раздражает снижение сложности, считайте, что речь идёт только об увеличении размера блока.
Итак... чем же это плохо? Вероятность вилки в данном случае уж точно никак не увеличивается.


Title: Re: Временное снижение сложности или блоки с
Post by: iLya on June 11, 2011, 03:25:16 AM
Hi!

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

Илья


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 11, 2011, 04:58:30 AM
Увеличение размера блока -- это не плохо; это неизбежно.  С ростом числа переводов/транзакций.  Ну и к тому времени, когда это станет необходимостью, полагаю, интернет станет быстрее и память дешевле.
Ok. Тогда вопрос исчерпан.


Title: Re: Временное снижение сложности или блоки с
Post by: sb-tr on June 17, 2011, 01:17:55 PM
Прочитал всю тему. Очень интересная дискуссия.
Проблема масштабируемости биткоинта действительно встанет очень остро, если система получит большое распространение.

Но зачем изобретать велосипед? Действительно временное снижение сложности, предложенное в этом топике, полностью эквивалентно увеличению (или снятию) ограничения на максимальный размер блока (в коде это изменение одного define). Но зачем тогда разработчики вообще поставили это ограничение?
Причин я вижу две:
1. Ограничение роста истории (об этом уже упоминал yurock);
2. Ограничение трафика между узлами сети. Если блоки будут слишком большими, то они будут долго перекачиваться между узлами сети, не все же пользователи подключены к гигабитному каналу ;) А если каналы будут заняты перекачкой блоков, то распространение транзакций замедлится (и блоки и транзакции распространяются по сети по одним принципам и по одним каналам).

Но разработчики уже намечают пути решения этой проблемы. Вот здесь предлагаются варианты решения проблем узких мест системы https://en.bitcoin.it/wiki/Scalability
Если кратко и по русски то предлагается следующее. Передавать по сети не весь блок, а только его заголовок (80 байт) + хеши всех транзакций вошедших в блок (32 байта на каждую транзакцию). Сами тела транзакций передаваться не будут (сейчас это в среднем 300-500 байт на одну транзакцию). Размер блока снизится на порядок. Идея заключается в том что у клиента уже есть все эти транзакции в памяти (in-memory pool), они туда попадают когда транзакция распространяется по сети. Если каких-то транзакций не хватает, то их можно запросить у соседа. Т.е. сейчас по сути транзакции передаются по сети (и проверяются подписи) дважды: первый раз когда транзакция распространяется по сети, второй раз когда блок с этой транзакцией распространяется по сети. В общем в клиенте есть что оптимизировать и разработчики об этом думают.

Теперь о комиссии.
У меня сложилось впечатление что многие не понимают как она работает и от чего зависит. Это конечно печально. Если приходя в банк мне говорят комиссия 3% от суммы перевода - тут все понятно (только дорого). В биткоине же комиссия считается очень хитро (непонятно когда берется, а когда нет, как влияет на приоритет транзакции и т.д.). Я основательно покопался в исходниках чтобы разобраться в этой ситуации.

Вот что мне удалось выяснить (если в чем-то ошибаюсь, поправьте):
1. Есть 2 вида минимальной комиссии: MIN_TX_FEE и MIN_RELAY_TX_FEE (0.01 и 0.0005 для версии 0.3.22). MIN_TX_FEE проверяется при создании транзакции, а MIN_RELAY_TX_FEE при распространении транзакции по сети и включении в блок. Минимальная комиссия применяется в качестве коэффициента и умножается на размер транзакции в Кб.
2. Для каждой транзакции рассчитывается приоритет:
sum(valuein * age) / txsize
   valuein - количество монет на выходе входной транзакции,
   age - количество подтверждений входной транзакции,
   txsize - размер новой транзакции.
Таким образом чем больше монет мы переводим и чем большим количеством блоков они подтверждены и чем меньше размер транзакции, тем выше приоритет. Из этой формулы также следует что с каждым новым блоком созданным в системе, приоритет старых невлезших в предыдущий блок транзакций будет увеличиваться и они рано или поздно попадут в блок.
3. Транзакция может быть бесплатной если её приоритет выше COIN * 144 / 250. Это соответствует переводу одного биткоина пришедшего к вам сутки назад в стандартной транзакции (собранной не из копеек). Именно этот механизм призван чтобы защитить систему от спама. У вас есть выбор либо заплатить небольшую комиссию и использовать "свежие" коины или подождать пару дней и провести перевод без комиссий.
4. Есть еще несколько условий для бесплатности транзакции. Размер транзакции должен быть не более 10 Кб, размер блока при добавлении этой транзакции должен быть не более 27 Кб (первые 27 Кб в блоке), выходные суммы у транзакции должны быть не менее 0.01 BTC.
5. Транзакции включаются в блок в порядке приоритета.
6. Отдельные майнеры и пулы могут установить пороговую комиссию и транзакции с меньшей комиссией не включать в свои блоки. Судя по исходникам это еще не реализовано, но пока и генерируемых монет всем хватает.

Из выше описанного алгоритма следует одна очень интересная особенность. На данный момент у майнеров и пулов не установлено пороговых комиссий и средний размер блока 23 Кб, а значит плата за транзакцию никак не влияет на её приоритет. Она будет влиять только когда появятся майнеры с разными пороговыми комиссиями.

Рассмотрим пример. Есть 3 пула: A - комиссия 0.05; B - комиссия 0.01; C - комиссия 0. Допустим что мощность пулов примерно равна и других майнеров в сети нет. Тогда заплатив комиссию 0.05 наша транзакция попадет в следующий блок с вероятностью 100%, заплатив комиссию 0.01 - с вероятностью 66% и если мы не заплатили комиссию вообще, то с вероятностью 33%. Это без учета размеров блока и приоритетов. При этом комиссия не влияет на приоритет, т.е. если наша транзакция использует мало свежих биткоинов, то даже с комиссией 0.05 она имеет шанс не попасть в блок, если пользователями было создано много более приоритетных транзакций, даже если они не заплатили за них комиссию (или заплатили меньше).
Сейчас никаких порогов нет, поэтому указывать комиссии больше минимальной бессмыслено.

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


Title: Re: Временное снижение сложности или блоки с
Post by: Yagiza on June 21, 2011, 02:45:41 AM
2. Для каждой транзакции рассчитывается приоритет:
sum(valuein * age) / txsize
   valuein - количество монет на выходе входной транзакции,
   age - количество подтверждений входной транзакции,
   txsize - размер новой транзакции.
Таким образом чем больше монет мы переводим и чем большим количеством блоков они подтверждены и чем меньше размер транзакции, тем выше приоритет. Из этой формулы также следует что с каждым новым блоком созданным в системе, приоритет старых невлезших в предыдущий блок транзакций будет увеличиваться и они рано или поздно попадут в блок.
5. Транзакции включаются в блок в порядке приоритета.
6. Отдельные майнеры и пулы могут установить пороговую комиссию и транзакции с меньшей комиссией не включать в свои блоки. Судя по исходникам это еще не реализовано, но пока и генерируемых монет всем хватает.

Из выше описанного алгоритма следует одна очень интересная особенность. На данный момент у майнеров и пулов не установлено пороговых комиссий и средний размер блока 23 Кб, а значит плата за транзакцию никак не влияет на её приоритет. Она будет влиять только когда появятся майнеры с разными пороговыми комиссиями.

Рассмотрим пример. Есть 3 пула: A - комиссия 0.05; B - комиссия 0.01; C - комиссия 0. Допустим что мощность пулов примерно равна и других майнеров в сети нет. Тогда заплатив комиссию 0.05 наша транзакция попадет в следующий блок с вероятностью 100%, заплатив комиссию 0.01 - с вероятностью 66% и если мы не заплатили комиссию вообще, то с вероятностью 33%. Это без учета размеров блока и приоритетов. При этом комиссия не влияет на приоритет, т.е. если наша транзакция использует мало свежих биткоинов, то даже с комиссией 0.05 она имеет шанс не попасть в блок, если пользователями было создано много более приоритетных транзакций, даже если они не заплатили за них комиссию (или заплатили меньше).
Сейчас никаких порогов нет, поэтому указывать комиссии больше минимальной бессмыслено.
Я не пойму одного. Если есть понятие приоритета, то нафига нужен весь этот мудрёжь с порогами? Почему бы тупо не включить комиссию в формула рассчёта приоритета? И путь тогда все пулы/майнеры ведут себя одинаково.