Bitcoin Forum

Local => Кодеры => Topic started by: somenick on March 12, 2013, 02:42:09 PM



Title: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: somenick on March 12, 2013, 02:42:09 PM
Моё частное мнение.
Говонокодеры наговнокодили так что они сами не понимают какие блоки должна нормально принимать их программа.
Биткоин нуждается в нормальных клиентах и жёстко описанном протоколе, а не в том что есть сейчас, когда ВНЕЗАПНО появляются две ветки транзакций.
Ждём полного раследования и подтвержения моих слов.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: rPman on March 12, 2013, 03:15:04 PM
И кого винить? сатоши-дайс, за огромный объем микротранзакций (а я бы им памятник поставил, за то что благодаря им такие баги выявляют СЕЙЧАС а не через 10-20 лет) фирме Oracle, за то что их база berkleydb где то какой то лимит ввела, в который упирался клиент 0.7, или разработчиков bitcoin новой версии 0.8, которые умудрились сделать смену бакенда движка и добились уменьшения размера базы в разы и скорости первой загрузки так же в разы (часы а не недели)?
p.s. прежде чем вопить так дибильно, разберись сначала.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: giv on March 12, 2013, 04:03:59 PM
Еще учтите, что биткоин до сих пор в бете. И никто вам никаких гарантий не давал. Протокол описан вполне нормально. А вот говнокод там местами еще тот. Что такое "инкапсуляция" разработчики явно не слышали.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: Azrace on March 12, 2013, 04:51:43 PM
Что такое "инкапсуляция" разработчики явно не слышали.

а что это такое?


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: giv on March 12, 2013, 05:15:51 PM
Инкапсуляция (https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29)

Я, конечно, утрирую. Это просто то, что сразу бросается в глаза. Добавьте сюда неатомарные операции там, где они должны быть атомарными, куча магических чисел, разбросанных по коду и т.д. Впервые увидел этот код, когда захотел написать i2p-патч, первое желание - закрыть код и написать свой кошелек. Но одному писать такой большой проект слишком долго. Поэтому я все-таки разобрался с существующим кодом. В то же время читабельность кода на довольно высоком уровне, а это не мало. Да и попадаются нормально написанные места. Т.е. называть весь код говнокодом я бы не стал (я видел и похуже, даже в более серьезных проектах), но претензии к коду точно имеются. Думаю к версии 1.0 или хотя бы 2.0 будет выглядеть прилично. Ну а пока мы все с вами бета-тестеры.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: somenick on March 12, 2013, 07:03:30 PM
Протокол описан вполне нормально.
В протоколе должно быть чётко описано max колличество транзакций max кошельков  и тд.
И желательно тесты с этими значениями. Без такой очевидной вещи сеть не может существовать что очевидно.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: somenick on March 12, 2013, 07:04:36 PM
p.s. прежде чем вопить так дибильно, разберись сначала.
прежде чем защищать так дибильно разберись сначала


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: giv on March 12, 2013, 07:29:48 PM
Протокол описан вполне нормально.
В протоколе должно быть чётко описано max колличество транзакций max кошельков  и тд.
И желательно тесты с этими значениями. Без такой очевидной вещи сеть не может существовать что очевидно.


Если вы так считаете - опишите сами, опен сорс же. Если сами не можете - откройте тикет на гитхабе.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: somenick on March 12, 2013, 07:35:51 PM
Если вы так считаете - опишите сами, опен сорс же. Если сами не можете - откройте тикет на гитхабе.
а вы так не считаете ?
тикет открывать, на изменение днк ?  :D

кстати вы же читали код, вам нравиться хеширование блока по УКАЗАТЕЛЮ на экземпляр блока CBlock? По моему это ахтунг.
И там вся серелизация на этом построена.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: Ivica on March 12, 2013, 07:55:58 PM
Sell. ;)


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: rPman on March 13, 2013, 04:28:48 AM
Неуважаемый somenick, вы никогда не делали ошибок? вы никогда не делали ошибок в том, в чем вы ничего и не гарантировали, в том, за что вам даже не заплатили, то есть в деле 'на интерес'? в том, что никто никогда до вас не делал, где вы первопроходец?..

Случившееся вчера с сетью произошло с точностью по описанному ранее сценарию, в том, о чем твердят на каждом углу вики и форумов, в том, к чему готовили пользователей bitcoin с его самого рождения! Что неоднократно было протестировано на форках! Фундаментальная уязвимость особенность проекта - возможность одномоментно сосуществовать двум или более ветвям и опасность double spend. И конечно же, по всем заветам закона Мерфи, произошло подобное именно так, как не ожидали, но судя по тому что проблема была обнаружена в считанные часы, за этим есть кому следить.

Вот пожалуйста, свершилось, есть даже упоминания об успешном использовании double spend (https://bitcointalk.org/index.php?topic=152348.0), и что? небо перевернулось, bitcoin умер, больше никто в криптовалюту никогда не поверит?

Серьезному бизнесу на все это наплевать! Будет принято к сведению, выработаны дополнительные стратегии и страховки, либо просто будет повышен на еще один процент уровень риска при использовании bitcoin, все равно кому то этот инструмент окажется удобнее/выгоднее.

p.s. по поводу говнокода, я же не спорю, но подумайте про сложность разработки проектов такого уровня:
Quote
Мастер автосервиса разговорился с клиентом:
(М)астер: А вот вы где работаете?
(К)лиент: Я кардиохирург, операции на сердце провожу
М: Круто! и сколько платят?
К: 20000$ за операцию...
М: Ни фига себе!!! а ведь по сути мы с тобой одним и тем же занимаемся - движки перебираем. Только мне платят намного меньше!
К: А хочешь как я получать?
М: Есессно!!!
Клиент заводит движок, открывает капот:
-ПЕРЕБИРАЙ!!!!


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: naima53 on March 13, 2013, 09:48:56 AM
Неуважаемый somenick, вы никогда не делали ошибок? вы никогда не делали ошибок в том, в чем вы ничего и не гарантировали, в том, за что вам даже не заплатили, то есть в деле 'на интерес'? в том, что никто никогда до вас не делал, где вы первопроходец?..

Случившееся вчера с сетью произошло с точностью по описанному ранее сценарию, в том, о чем твердят на каждом углу вики и форумов, в том, к чему готовили пользователей bitcoin с его самого рождения! Что неоднократно было протестировано на форках! Фундаментальная уязвимость особенность проекта - возможность одномоментно сосуществовать двум или более ветвям и опасность double spend. И конечно же, по всем заветам закона Мерфи, произошло подобное именно так, как не ожидали, но судя по тому что проблема была обнаружена в считанные часы, за этим есть кому следить.

Вот пожалуйста, свершилось, есть даже упоминания об успешном использовании double spend (https://bitcointalk.org/index.php?topic=152348.0), и что? небо перевернулось, bitcoin умер, больше никто в криптовалюту никогда не поверит?

Серьезному бизнесу на все это наплевать! Будет принято к сведению, выработаны дополнительные стратегии и страховки, либо просто будет повышен на еще один процент уровень риска при использовании bitcoin, все равно кому то этот инструмент окажется удобнее/выгоднее.

p.s. по поводу говнокода, я же не спорю, но подумайте про сложность разработки проектов такого уровня:
Quote
Мастер автосервиса разговорился с клиентом:
(М)астер: А вот вы где работаете?
(К)лиент: Я кардиохирург, операции на сердце провожу
М: Круто! и сколько платят?
К: 20000$ за операцию...
М: Ни фига себе!!! а ведь по сути мы с тобой одним и тем же занимаемся - движки перебираем. Только мне платят намного меньше!
К: А хочешь как я получать?
М: Есессно!!!
Клиент заводит движок, открывает капот:
-ПЕРЕБИРАЙ!!!!
+100
Отдел мониторинга создать и вести просветельскую работу среди майнеров. Из нас кто на гильдию пересел в связи с инцидентом? Никто :( Да еще и куча народа на 50бтц сидит с их варварским движком, позволяющим вести 2-спенд (по словам Бальтазара, поправьте если это не так)


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: giv on March 13, 2013, 11:33:21 AM
а вы так не считаете ?
Ситуация довольно проста.
Есть описанный протокол. В нем нет ограничений на количество и размер транзакций. Все клиенты должны придерживаться этого протокола. Но выясняется, что в версии 0.7 было скрытое ограничение на количество транзакций в блоке, о котором даже не знали сами разработчики. Оно было связано с каким-то внутренним ограничением BDB. Налицо несоответствие протокола и клиента. Если бы это был сторонний клиент, все бы сказали: "сами виноваты, что пользовались клиентом, не соответствующим протоколу", но ведь это "официальный" клиент. Выхода ровно два: подогнать протокол под кривой клиент или пофиксить клиент. Вы предлагаете подогнать протокол. Думаю, найдутся люди, которые с вами не согласятся. Лично я против внесения в протокол каких-то магических констант и непонятных ограничений. Я считаю, что правильный путь - это пофиксить клиент, т.е. заставить всех обновится до 0.8. Кстати, Гэвин предлагал именно этот путь. http://bitcoinstats.com/irc/bitcoin-dev/logs/2013/03/12 (http://bitcoinstats.com/irc/bitcoin-dev/logs/2013/03/12)


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: somenick on March 13, 2013, 12:09:16 PM
giv
вы считаете не нужны магичесие константы ?
может тогда их нужно сделать большими ? и опять же проверить работоспособность.

ограничение BDB
ЭТО МЕГА ФЕЙЛ
у них при любой ошибке, программа возвращала что блок не принят, а должен возвращать внутренюю ошибку в записью в лог об ошибке и отсылке разработчику письма об ошибке с пометкой срочно.

ps остальным не отвечаю ибо некомпетентны


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: giv on March 13, 2013, 01:18:19 PM
Именно. Считаю, что в протоколе ограничения, не обусловненные какими-то фундаментальными причинами (например, разрядностью соответствующего поля), не нужны. Считаю, что ситуация, когда блок с 1700 (например) транзакциями верен, а с 1701 транзакией - нет, является бредовой. Клиент должен обрабатывать любое количество. Как он будет это делать - это уже работа программистов. И то, что они не справились - действительно фейл. Но фейл именно в клиенте, а не в протоколе. В конце концов, сатоши-клиент - не последняя инстанция, и в сети теоретически может быть куча разных клиентов, которые будут хранить свои данные, как им вздумается. Поэтому ставить какое-то ограничение на протокол только потому что 0.7 версия сатоши-клиента не может чего-то там обработать, т.к. кому-то было лень прочитать документацию на BDB во время проектирования - считаю глупостью. Надо фиксить баг и заставлять всех переходить на новый клиент, а старый выкинуть, как несоответствующий протоколу. А тесты - понятно, что нужны, в том числе и на соответствие протоколу. И понятно, что 0.7 не просто должна была отбросить этот блок, а кричать "ай-ай-ай не могу сохранить в базу, ахтунг!!! голактеко опасносте!!!!11!11".


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: A-Bolt on March 13, 2013, 02:29:14 PM
Ситуация довольно проста.
Есть описанный протокол. В нем нет ограничений на количество и размер транзакций. Все клиенты должны придерживаться этого протокола.

А как тогда понимать фразу, которая сейчас висит в новостях:
Mining on 0.8 is OK, but you should not increase the target block size from the default.   ?

Получается, что в клиенте версии 0.8 ограничение на размер блока есть, но владельцы пулов его увеличили ?


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: giv on March 13, 2013, 03:48:34 PM
Оно задется опцией командной строки.
Code:
        "\n" + _("Block creation options:") + "\n" +
        "  -blockminsize=<n>      "   + _("Set minimum block size in bytes (default: 0)") + "\n" +
        "  -blockmaxsize=<n>      "   + _("Set maximum block size in bytes (default: 250000)") + "\n" +
        "  -blockprioritysize=<n> "   + _("Set maximum size of high-priority/low-fee transactions in bytes (default: 27000)") + "\n" +
Эта опция нужна для размера генерируемого именно этим кошельком блока. Вполне логично, что майнеры сами могут решать какие блоки им генерировать. Но если они уже сгенерировали блок, и он соответствует всем правилам, то остальные кошельки обязаны его принять, независимо от их настроек. А кошелек версии 0.7 отбросил правильный блок, просто потому что не смог записать его в базу.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: naima53 on March 13, 2013, 06:30:39 PM
somenick я не хотел Вас оскорбить, согласившись с rPman в том, что действительно была ошибка и все ошибаются тем более что насколько я понял, кодируют "на перед и за бесплатно".  :-\ Да, действительно фейл, самое противное что создатели заложили туда алерты, в моем понимании, у Гэвина (и у кого еще там глав-ключи) на стене должна в спальне красный фонарь закрутиться и заморгать  :D когда половина клиентов отклонила блок и автоматом сработал алерт (они похоже его в ручную только разослать могут).


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: Format.C^ on May 30, 2013, 05:06:43 AM
Именно. Считаю, что в протоколе ограничения, не обусловненные какими-то фундаментальными причинами (например, разрядностью соответствующего поля), не нужны. Считаю, что ситуация, когда блок с 1700 (например) транзакциями верен, а с 1701 транзакией - нет, является бредовой. Клиент должен обрабатывать любое количество. Как он будет это делать - это уже работа программистов. И то, что они не справились - действительно фейл. Но фейл именно в клиенте, а не в протоколе. В конце концов, сатоши-клиент - не последняя инстанция, и в сети теоретически может быть куча разных клиентов, которые будут хранить свои данные, как им вздумается. Поэтому ставить какое-то ограничение на протокол только потому что 0.7 версия сатоши-клиента не может чего-то там обработать, т.к. кому-то было лень прочитать документацию на BDB во время проектирования - считаю глупостью. Надо фиксить баг и заставлять всех переходить на новый клиент, а старый выкинуть, как несоответствующий протоколу. А тесты - понятно, что нужны, в том числе и на соответствие протоколу. И понятно, что 0.7 не просто должна была отбросить этот блок, а кричать "ай-ай-ай не могу сохранить в базу, ахтунг!!! голактеко опасносте!!!!11!11".
+100. Более добавить нечего.

somenick, потрудитесь сначала разобраться в том потоке мыслей, которые Вы озвучиваете. Я тоже согласен, что "да, фейл!". Но, что катастрофического произошло? Вы еще спасибо Сатоши [Гэвину] должны сказать, что все произошло именно так, а не иначе...имхо. На всякий случай напомню, что их работу никто не оплачивал, и фрагменты "говнокода" в ней не исключены.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: arruah on May 30, 2013, 05:09:18 AM
Называть говнокодом биткоин мягко говоря опрометчиво.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: Format.C^ on May 30, 2013, 06:14:07 AM
arruah, что Вы, как вообще можно назвать Bitcoin говнокодом, даже и в мыслях не было, естесственно нет. Концепция Bitcoin - гениальна. Я говорил лишь о фрагментах "говнокода", которые есть в исходниках (https://github.com/bitcoin/bitcoin). Не верите - убедитесь сами.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: Balthazar on May 30, 2013, 12:54:32 PM
Оно задется опцией командной строки.
Code:
        "\n" + _("Block creation options:") + "\n" +
        "  -blockminsize=<n>      "   + _("Set minimum block size in bytes (default: 0)") + "\n" +
        "  -blockmaxsize=<n>      "   + _("Set maximum block size in bytes (default: 250000)") + "\n" +
        "  -blockprioritysize=<n> "   + _("Set maximum size of high-priority/low-fee transactions in bytes (default: 27000)") + "\n" +
Эта опция нужна для размера генерируемого именно этим кошельком блока. Вполне логично, что майнеры сами могут решать какие блоки им генерировать. Но если они уже сгенерировали блок, и он соответствует всем правилам, то остальные кошельки обязаны его принять, независимо от их настроек. А кошелек версии 0.7 отбросил правильный блок, просто потому что не смог записать его в базу.
На самом деле, все немножко сложнее. Баг проявляется не всегда, а в момент reorganize. И связан он не с самим по себе bdb, а с его настройками при инициализации. Как известно, клиент вытаскивает транзакции из отклоненных блоков в memorypool. Так вот, происходил упор в лимит количества блокировок (lk_max_locks ) в случае, если в отклоняемой цепочке блоков содержалось достаточно транзакций для этого.

Фикс довольно прост в реализации:

https://github.com/CryptoManiac/novacoin/commit/16e1262471dba899f3e9251b485abec219aec844

И на данный момент доступен для всех актуальных веток клиента.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: Azrace on May 30, 2013, 09:09:19 PM
Balthazar,  вы вроде общаетесь в "высших кругах" http://bitcoinstats.com/irc/bitcoin-dev/logs/2013/05
что с этим:
http://blockchain.info/ru/unconfirmed-transactions
будут делать?
если 2-3 мес назад висящий мегабайт пугал, то щас вообще жесть!


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: Balthazar on May 30, 2013, 10:32:39 PM
Насколько я знаю, пока ничего с этим делать не планируется. Более того, 0.8.2 ужесточает правила выбора транзакций, установленные по умолчанию.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: arruah on May 31, 2013, 05:31:59 AM
Насколько я знаю, пока ничего с этим делать не планируется. Более того, 0.8.2 ужесточает правила выбора транзакций, установленные по умолчанию.
Насколько глупа моя мысль.
Сделать пул который обрабатывает только транзакции с минимальным либо указанными без комиссии. Поможет ли это в быстрой обработки таких транзакций? Чисто теоретически. Чисто гипотетически.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: Balthazar on May 31, 2013, 08:04:33 AM
Никак не поможет, пул заддосят транзакциями по 0.00000001 бтц.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: arruah on May 31, 2013, 09:10:22 AM
А какой практический смысл ддосить пул?


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: rPman on May 31, 2013, 07:26:40 PM
А какой практический смысл ддосить пул?
чтобы не выпендривался и не позволял клиентам экономить на комиссиях. Комиссии уже дают +1% к награде майнерам (а значит пулам, некоторые забирают ее себе, например PPS пулы в расчетах комиссии не учитывают по определению).

p.s. ожидаю в будущем появления дополнительной услуги пулов майнинга - вы даете им id транзакции а они ее проводят без комиссии, за отдельную плату (абонентка та же) а те кто генерируют такие транзакции своим клиентам плюшки.


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: vodz on June 01, 2013, 03:41:20 AM
p.s. ожидаю в будущем появления дополнительной услуги пулов майнинга - вы даете им id транзакции а они ее проводят без комиссии, за отдельную плату
Похоже, что эти всякие микроплатящие типа  www.bitvisitor.com так давно работают :)


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: arruah on June 01, 2013, 05:37:32 AM
А какой практический смысл ддосить пул?
чтобы не выпендривался и не позволял клиентам экономить на комиссиях. Комиссии уже дают +1% к награде майнерам (а значит пулам, некоторые забирают ее себе, например PPS пулы в расчетах комиссии не учитывают по определению).

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


Title: Re: Мега фейл 10 марта с разделением версий 0.7 0.8
Post by: Balthazar on June 01, 2013, 03:43:23 PM
Я думаю никто не будет на этом заморачиваться :)
Попробуй выключить защиту от dust spam и увидишь, насколько неправ.