Bitcoin Forum
August 07, 2024, 01:40:12 PM *
News: Latest Bitcoin Core release: 27.1 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: [1]
1  Local / Oбcyждeниe Bitcoin / Re: Вопросы по реализации on: June 24, 2011, 04:35:35 PM
Получается после ремонта, одна из цепочек клиентами отбрасывается (по какому критерию?)
Цепочка вычислить которую было проще будет отброшена. Важна не только длина цепочки, но и сложность блоков входящих в нее.

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

получается пул которого цепочка отбрасывается лишается награбленного корована?
Да. Сгенерированные монеты пропадают. Также будут отброшены все транзакции пытающиеся потратить деньги, которые уже были потрачены в другой цепочке.
2  Local / Новички / Re: Новичкам сюда! - FAQ on: June 22, 2011, 06:43:17 PM
ну круто, использую теперь 0.3.23 версию... теперь соединения сразу после запуска доходят до 8 штук... а толку!?! Блоки все равно не загружаются ничерта! Опять я сижу и жду абсолютно не понимаю чего. Почему программа тупит? Есть подключения - ну бери да загружай блоки казалось бы... ан нет!   Embarrassed
Я вот не пойму это только у меня так на двух компах? Или все мирятся с таким ожиданием?

Очень интересно.
Я сейчас сам запустил клиента и у меня тоже блоки не качаются. Полез в debug.log разбираться...

Code:
grep -r "version message|LoadBlockIndex" debug.log
File debug.log:
LoadBlockIndex(): hashBestChain=000000000000109791aa  height=132110
version message: version 32300, blocks=87638
version message: version 32300, blocks=55765
version message: version 32300, blocks=113495
version message: version 32300, blocks=101568
version message: version 32300, blocks=64836
version message: version 32300, blocks=92513

Получается что у меня скачано 132110 блоков, а у всех к кому я смог подключится скачано меньше чем у меня. Видимо наплыв новичков в сети.
Можно только надеяться что разработчики в новой версии ускорят хотя бы начальную загрузку блоков, тогда количество таких "неполноценных" узлов уменьшится.
3  Local / Новички / Re: Новичкам сюда! - FAQ on: June 21, 2011, 07:51:14 AM
и вообще, я не хочу посредников, я хочу чтобы официальный клиент после запуска сразу подключался к сети, а не тупил непонятно чего ожидая...
Используйте последнюю версию клиента (0.3.23)
Запускайте клиента с параметром:
Code:
bitcoin.exe -timeout=1000


Так он будет перебирать узлы с интервалом 1 секунда, по умолчанию интервал 5 секунд для версии 0.3.23 и 20 секунд для предыдущих версий.
4  Local / Майнеры / Re: Соло майнинг on: June 17, 2011, 01:38:25 PM
В общем шлем в сеть 100 блоков за 10 минут - сложность 100. Сколько это в мегахэшах, черт его знает, не замерял. При этом мне не очень понятна концепция обновления сложности через резинно-стабильный интервал, почему не мгновенный перерасчет, ну или с другой стороны крайности железно-стабильный интервал.
Сложность пересчитывается каждые 2016 блоков из расчета что эти 2016 блоков должны создаваться 2 недели. Сложность рассчитывается только на основании цепочки уже созданных блоков. Клиент ни у кого не спрашивает "какая сейчас сложность?", он сам её расчитывает, благодаря этому клиента нельзя обмануть и подсунуть ему сначала неправильную сложность, а потом неправильные блоки, которые под эту сложность подходят.

Кстати получается довольно интересная особенность сети. Если понабежит много новых майнеров или ФБР подключит свои суперкомпы, то сложность возрастет быстро по времени, а вот если много майнеров резко уйдут, то уменьшится сложность очень нескоро. Потому что перерасчет происходит не по четкой отметке времени, а по количеству блоков.
5  Local / Oбcyждeниe Bitcoin / Re: Временное снижение сложности или блоки с on: June 17, 2011, 01:17:55 PM
Прочитал всю тему. Очень интересная дискуссия.
Проблема масштабируемости биткоинта действительно встанет очень остро, если система получит большое распространение.

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

Но разработчики уже намечают пути решения этой проблемы. Вот здесь предлагаются варианты решения проблем узких мест системы 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 она имеет шанс не попасть в блок, если пользователями было создано много более приоритетных транзакций, даже если они не заплатили за них комиссию (или заплатили меньше).
Сейчас никаких порогов нет, поэтому указывать комиссии больше минимальной бессмыслено.

С моей точки зрения система достаточно грамотная, она и от спама защищает и майнерам позволит в будущем жить за счет комиссий и у пользователей есть выбор. Только вот простой и понятной её не назовешь.
6  Local / Майнеры / Re: Какой запрос идет на сервер когда найден б on: June 13, 2011, 12:17:37 PM
А как же тогда и шара становится подписью?
Шара становиться подписью если она прошла проверку сложности.
На примере последнего сгенерированного блока http://blockexplorer.com/block/0000000000000f6e8c5800befa6491c9bdb05f37e3eff9abe9fa0e645f560ec9
Сложность: 567 269.530162 ("Bits": 1a1d932f). Это значит что подписью станет шара хеш которой меньше 0000000000001d932f0000000000000000000000000000000000000000000000.
Проверяем:
Code:
0000000000000f6e8c5800befa6491c9bdb05f37e3eff9abe9fa0e645f560ec9
0000000000001d932f0000000000000000000000000000000000000000000000

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

Ведь шары тоже раздаются участникам пула?
Нет. Зачем они нужны участникам пула?

И в каком виде шара шлется на пул?
Возможно шлется nonce и хеш блока (или весь заголовок блока). Собственно майнер подключенный к пулу только этот nonce и меняет, до тех пор пока не найдет шару.

PS.
Перехватывать блок или не отправлять его пулу нет смысла. Найденный хеш в любом случае посчитан с учетом зачисления 50БТС на адрес пула, поэтому даже если не отправлять найденный блок пулу, а самому его опубликовать, то монетки все равно уйдут пулу.
Pages: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!