Псевдошара

Материал из P2POOL WIKI
Версия от 10:28, 23 февраля 2018; Uxal (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Вступление.

Здесь мы попытаемся объяснить очень важное для P2POOL понятие псевдошары. Если понятия блока и шары для вас уже знакомы, можете смело пропустить соответствующие разделы.

Блоки.

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

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

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

Шары.

Кое-где встречается утверждение, что шары это частички работы, помогающие разгадать блок. Это не совсем верно. Шара это практически готовый блок, отличающийся от настоящего блока только одним: его хэш-сумма не удовлетворяет критерию сложности, чтобы стать блоком, который примет сеть. То есть непосредственной пользы шары не несут. Тогда почему же многие пулы платят реальную криптовалюту просто за то, что майнеры посылают им шары? Дело в том, что именно шара является доказательством, что была майнером проделана работа по нахождению блока. Мощность современного майнингового оборудования очень высока, например Antminer S9 вычисляет более 13 Терахэшей в секунду. Разумеется, передавать все вычисленные хэши невозможно: не хватит никакой пропускной способности сети. Поэтому пул устанавливает свою сложность, разумеется, меньше сложности для нахождения блока, и майнеры присылают только те шары, которые удовлетворяют этому новому критерию сложности. И именно эти шары являются доказательством проделанной работы и правом на долю в добыче пула. Итак, мы вплотную подошли к понятию псевдошары.

Псевдошары.

В случае обычного пула всё достаточно просто: достаточно учитывать шары поступившие от майнеров и распределять «добычу» в соответствие с выбранной владельцем пула стратегией (PPS, Prop, PPLNS тысячи их). Всё сложнее в случае распределенного пула, которым является P2POOL, ведь там блок могут искать десятки и даже сотни узлов по всему миру. Необходимо учитывать вклад в общее дело каждого майнера и справедливо распределять награду. Кроме того надо защититься от недобросовестных узлов. И на помощь приходит та же технология блокчейн, что используется и в BitCoin. Прежде всего, p2pool использует шары особого рода, называемые «псевдошарами», как доказательство работы. Узлы p2pool выбирают сложность для псевдошар таким образом, чтобы промежуток времени между нахождением, в среднем, составлял определенное значение, для каждой монеты свое. Например для BitCoin среднее время между псевдошарами составляет 30 секунд, для LiteCoin 15 секунд. Если общая мощность пула увеличивается, сложность тоже увеличивается и наоборот. Если помните, подобным образом сеть BitCoin регулирует сложность, чтобы среднее время между блоками составляло 10 минут. Псевдошары объединены в подобие блокчейна шаречейн (sharechain): каждая псевдошара содержит указатель на предыдущую. Однако, если в блокчейне все блоки, начиная с первого, сохраняются, для шаречейна это излишне, поэтому сохраняется только определенное количество псевдошар, заданное в исходниках P2POOL (для BitCoin 8640 или в среднем 3 суток), а все старые псевдошары выбрасываются. В псевдошаре обязательно указывается адрес, который был указан в настройках майнера, который нашел эту псевдошару. Пропорционально доле псевдошар конкретного адреса в шаречейне начисляется награда для этого адреса при нахождении блока. Причем награда указывается транзакцией в псевдошаре (мы же помним, что псевдошара это по формату блок?) Если хэш псевдошары удовлетворяет сложности сети монеты, то такая псевдошара объявляется блоком и посылается в сеть монеты, и все получают свою награду. Нода P2POOL не знает заранее получится ли блок или псевдошара, поэтому для ноды важно, чтобы псевдошара удовлетворяла требованиям (в частности, что награда всем распределена в соответствии с предыдущими псевдошарами), иначе псевдошара будет отвергнута сетью, и тому адресу, на который она была найдена не будет начислена причитающаяся доля. Таким образом пул защищается от недобросовестных нод.

Параметры псевдошар P2Pool для некоторых криптовалют
Криптовалюта Период блока, мин Период псевдошары, сек Размер шаречейна Период шаречейна, сут Псевдошар в блоке
Bitcoin 10 30 8640 3 20
Bitcoin Cash 10 60 4320 3 10
Litecoin 2,5 15 8640 1,5 10
Dash 2,5 20 4320 1 7,5

Связь системы псевдошар и выплат P2Pool.

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

Шары и псевдошары P2Pool.

Часто майнеры задают вопрос «Почему у меня в размере выплат написано No shares yet», хотя в интерфейсе ASIC майнера или программы для майнинга на GPU есть некоторое количество принятых (Accepted) шар? Нет ли тут обмана?». Обмана тут нет, просто шара с точки зрения программы для майнинга и псевдошара p2pool это несколько разные вещи. Дело в том, что нода P2Pool выставляет для майнера сложность ниже, чем сложность псевдошары, а шары не проходящие по сложности на псевдошару не учитываются в определении доли майнера, а используются только для того, чтобы рассчитать его статистику. Почему так делается? Дело в том, что время нахождения псевдошары может составлять десятки минут и даже часы. Вследствие этого по псевдошарам статистику по хэшрейту и DoA майнера можно составить только на очень большом периоде времени в недели даже месяцы, тогда как по шарам с меньшей сложностью можно дать майнеру полную картину гораздо быстрее.

Резюме.

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