Pull to refresh

Comments 91

Я накидал простенькую программу на Java, иллюстрирующую смысл майнинга, даже статью написал, но потом решил, что тема настолько зажевана, что смысла в этом нет. И убрал статью в черновики. С другой стороны, люди слабо знакомые с криптографией вообще не могут понять как работают биткоины, откуда берется сдача и вознаграждение за транзакции. Но может это и не интересно?
Скажу только за себя — мне очень интересно. Сколько материалов не прочитал, но так и не могу понять суть — за что дают биткоины? Понятно, что идет подбор хешей, но для каких целей? Кому это выгодно? Было бы очень интересно понять
Если простыми словами, то хэши подбираются для обеспечения работы самой сети Биткоинов. Чтобы нельзя было просто так взять и «нарисовать» себе произвольное количество монет.

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

При нахождении хэша, им «запечатываются» в новый блок все транзакции, осуществлённые с момент нахождения предыдущего блока. Майнер, сделавший это, получает (на данный момент) 25 BTC вознаграждения + сумму всех комиссий от «запечатанных» транзакций.
Присоединюсь к вопросу. Для полного понимания «магии процесса майнинга» нужно понимать, что такое хеш, что такое хеширование, детерминированный алгоритм и еще много чего. Возможно (по себе сужу, простите), вся эта информация не укладывается с первого раза в голове как надо, потому и нет понимания что же происходит, когда «майнится» биткоин. Я был бы очень признателен тому, кто смог бы «на пальцах» объяснить, какая функция используется в майнинге, с какими параметрами, какие параметры туда поступают в ходе ее расчета (в виде совершающихся транзакций и, возможно, еще чего-то), как они изменяют ее расчет и влияют на результат. Из того, что я на данный момент понял, получается что «майнить» непрерывно — нет необходимости. Достаточно подключаться к процессу на этапе, когда максимальное количество параметров функции уже известно, т.е. перед самым «запечатыванием блока». Этим можно экономить на электроэнергии и на остальных ресурсах. Поправьте меня пожалуйста, если я не прав.
Единственный параметр функции — блок байт. Блок считается валидным, если функция меньше определенного значения (или больше, неважно). Функцию хрен предскажешь, поэтому единственный способ — генерить блоки и считать от них функцию
Грубо говоря, майнер – это что-то типа такого:
function miner (transactions, nonce) {
  var hash = createHash(transactions + nonce);

  if (hash != 'tru hash') {
    return miner(transactions, nonce + 1);
  }

  return hash;
}

miner(ourTransactionsData, 1);

Т.е., оно перебирает число, пока полученный хэш не будет соответствовать требованиям (в начале хэша должно быть определённое количество нулей – чем выше сложность, тем больше нулей требуется).

Соответственно, это легко распараллеливается – Вася ищет хэши для nonce от 1 до 1000, Петя — от 1001 до 2000, Таня – от 2001 до 3000 и т.д.
Но при этом, нет возможности узнать, когда и у кого получится результат, т.к. нужный хэш может получиться при любом nonce.
Немного ближе к реальности это выглядит так:
while (1)
{
HDR[kNoncePos]++;
IF (SHA256(SHA256(HDR)) < (65535 << 208)/ DIFFICULTY)
return;
}

С этого я думал начать историческую часть продолжения
Длина ключа в битах видимо.
некоторая константа, взятая из исходников bitcoin, отвечающая за сложность майнинга в самом начале. если было бы не 208, а большее число, то майнить было бы проще.
А что мешает запечатывателю 'нарисовать' себе не 25 а 250 биткоинов?

Все блоки как я понимаю сейчас в-основном сайнятся преимущественно 2-4 мегапулами. Что мешает управляющим этих пулов сговориться и скрытно постоянно 'рисовать' себе энное к-во коинов?.. ну или переводить себе те, что от сотворения мира лежат без движения в ряде кошельков (Накамотовский премайн).

И что такое физически — 1 биток — это цепочка цифр или просто сумма на счету (число грубо говоря)?
Использование пулов потенциально опасно именно тем, что ставит под угрозу распределенную природу биткоина и, соответственно, механизм подтверждения транзакций.

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

С какой это стати?

Задача для первокурсника: Петя пять раз бросал игральный кубик, но ни разу не выпадала шестёрка. Какова вероятность, что в шестой раз выпадет шестёрка?
Отгадка
1/6, так же, как и при любом другом броске.
Броски никак не влияют один на другой.
при отдельно взятом броске — да, 1/6 что выпадет и 5/6 что не выпадет
а вот шанс, что шесть раз подряд не выпадет — уже (5/6)^6
ну а что выпадет хотя бы однажды за 6 бросков: 1-(5/6)^6
При чём здесь это?
Шанс, что следующий nonce подойдёт к старому блоку, ровно такой же, как и шанс, что следующий nonce подойдёт к новому блоку.
при том, что утверждение
Шанс, что следующий nonce подойдёт к старому блоку, ровно такой же, как и шанс, что следующий nonce подойдёт к новому блоку.

абсолютно аналогично:
Броски никак не влияют один на другой.


а нас интересует не то, подойдет ли хэш к конкретному блоку, а подойдет ли он к какому-нибудь блоку, актуальному на момент поиска решения.
сослался на вас в начале поста.
И зря убрали, тема Биткоина сейчас весьма интересна.
Хотелось бы видеть максимально интуитивное объяснение, желательно в формате видео. Но сойдёт и слайд-шоу.
Вытащите статью из черновиков, пожалуйста. Мне очень сложно каждый раз объяснять знакомым как оно работает, а так дал ссылку — и свободен.
Огромное спасибище, вам. Похоже, это именно то, что я искал.
я не знаком с криптографией, но мне дичайше интересно было бы это узнать.
Реально ли сейчас майнить на домашнем ПК?
Я не говорю, про какой-то стабильный заработок. Просто интересно, сколько времени потребуется, чтобы хотя бы 1BTC намайнить?
есть куча калькуляторов (пример) которые помогут вам рассчитать время и все такое. А если в двух словах дома даже с хорошей видяхой, даже с двумя, делать особо нефиг
а что если электричество бесплатное и майнить другие валюты (лайткойн, например)?
dustcoin.com. Считать scrypt, 7970 это 730 kH/s, 7950 — 600 kH/s, 7990 — 1300 kH/s.
Судя по графику выше, с одной видеокарты будет получаться в районе 400 рублей в день. Но примерно столько же, а то и чуть больше, Вы заплатите за электричество. Вот на работе можно втыкать в розетку =)
Судя по калькулятору, который скинул Scratch, за год с одной видеокарты даже 1BTC не намайнить.
Интересно, что за карта такая…
Емнип, с десяти гигахэшей сейчас в сутки что-то около 200-250р (+-) выходит. По курсу ~30Кр.
Берем число 200W из статьи, видим по графику, что расходы на электричество примерно равны тому, что получится намайнить. Гугл говорит, что если мы майним круглые сутки и у нас нет газовой плиты, в мск 200W будут стоить в районе 400 рублей в сутки.
на 560ti несколько дней назад за сутки получилось намайнить ~0.1$.
Это за вычетом электричества?
Если нет — значит, числа в статье неверны или неактуальны
это без учёта затрат на электричество
может быть 40р, а не 400?
макс. цене в мск 4руб/квтч (http://energovopros.ru/spravochnik/elektrosnabzhenie/tarify-na-elektroenergiju/moskva/29449/)
Буду читать комментарии до конца. Буду читать комментарии до конца. Буду читать....
Да, я неверно посчитал. Ниже и выше уже написал об этом
Это сколько у вас электричество стоит?
Черт, там же за киловатт-час. Я идиот, не умею считать.
10 рублей получается
Много времени. Лучше займитесь форками — Лайткоин и все остальные. Да, цена на них пока невысока, но вполне реально намайнить некоторую сумму. С ASIC на домашнем компе тягаться просто бессмысленно.
плюсую, тоже переключился на форки. По-маленьку копятся, при желании можно обменять на BTC.
Цена на них значения не имеет, реально важно соотношение цена/сложность. Она сейчас такова, что майнить те же лайткоины, например, выгодней, чем биткоины, при той же скорости майнинга (правда, для биткоинов есть ASIC, а для лайткоинов потолком является GPU — но мы же о домашнем железе).

Лайткоины при этом — относительно стабильный вариант, но не самый доходный. Так-то альткоинов уже наплодили кучу, и обычно на ранней стадии своей жизни майнить и менять их очень выгодно. Можно следить за текущими фаворитами в этом списке. Еще лучше — присоединиться к майнинг пулу, который автоматически майнит самую выгодную на данный момент монету (и тут же меняет её на биткоины, которые и раздаются участникам) — например, hashco.ws.
Биткойны — нереально майнить, scrypt'овые — можно, что-то порядка 5$/сутки с HD7850, на данный момент, без учета электричества.
Вот вам годный калькулятор. Но вообще я бы на вашем месте, если у вас топовая видеокарта ATI, помайнил бы. Но биткоины при этом не тратил, а оставил в кошельке (не забыв сбэкапить), а «вспомнил» про них бы лет через 5.

На процессоре и видеоадаптерах Nvidia смысла майнить нет.
Нет. Intel продолжает заниматься повышением производительности и снижением энергопотребления CPU&GPU, в результате выигрывают все, в том числе и майнеры.
Майнинг в любом своем проявлении (за исключением парочки говнофорков) на сегодняшний день не имеет ничего общего с Intel (в отличие от AMD).
Да-а, ASIC'и от Intel по 22нм техпроцессу сломали бы рынок.
А чего не по 14нм? :)
В плане экономии на электричестве — да, а амортизация самих ASICов?
А по 14 уже что-то есть серийное? Так-то 10нм было бы ещё лучше! А вот сколько бы они стоили — не представляю. Формул ценообразования пока в открытом доступе не встречал.
> то сейчас скорость совместных усилий по брутфорсу превосходит 350 терахэшей в секунду (TH/s)

Откуда такие цифры?
Сейчас суммарная мощность только одного пула (не самого крупного) ghash.io в районе 2.2 Ph/s.
Но ведь превосходит же?) Формально, всё верно.
А если серьезно, то данные 2 месячной давности. Лишний пример того, как всё стремительно меняется.
Спасибо.
— Афоня, ты мне bitcoin должен! (… Дваа)
— Двааа!
Мне вот что любопытно — если мы ищем брутфорсом хеш, удовлетворяющий определённым условиям (которые с ростом сложности становятся всё ограниченнее) — то ведь есть вероятность, возможно, сравнимая с вероятностью выигрыша в лото, но тем не менее, отличная от нуля, что даже имея скромные показатели производительности можно «наткнуться» на тот самый заветный хеш, разве нет?
UFO just landed and posted this here
Всё верно. Но, например, зайти в казино с долларом ва-банк и получить стрит флэш роял шансов больше. Намного.
Тут ещё есть вопрос доверия. Да и просто физической безопасности.
Во-первых, для этого надо настроить соло майнинг, во-вторых, вероятность крайне мала.
У меня насущный вопрос — ориентировочно и примерно какова будет сложность в апреле-мае, если у майнеров появятся THash'эвые майнеры от Cointerra и Fasthash.
А как, по-вашему мнению, отразится на сложности появление на у майнеров столь больших мощностей? Корректно ли использовать экспоненту для экстаполяции? На каком этапе рост станет медленнее n*exp(t).

Я понимаю, что это всё «вилами по воде», но тем не менее, от чего следует отталкиваться рассчитывая, окупаемость майнера, скажем, в апреле? Как думаете?
Хорошо бы, конечно, знать реальные мощности майнеров, объемы партий производства и сроки поставок предзаказавшим товарищам. Без этих данных хоть сколь-нибудь точно, боюсь, не выйдет. Лучшее, что остается — экпонента.
Зачем? Какая разница с какими мощностями никого в космосе не находить?
К сожалению, спецжелезки ничего кроме хэшей считать не умеют :(
А так да — было бы круто после майнинга заюзать их в мирных целях.
Вспоминаются всякие утопические проекты передачи энергии с орбиты на Землю. Теперь к ним добавится ещё преобразование энергии в деньги прямо на орбите.
Добрый день.
Спасибо за статью Есть вопрос. В статье вы написали:
Одной из ключевых инноваций, сделавшей возможным существование mining pool'ов, стала возможность убедиться, что компьютер действительно провел работу по перебору хэшей, которую он заявил как выполненную
.

Интересно, как это проверяется?
Хороший вопрос, я уж думал никто не спросит. :)

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

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

А в качестве подтверждения проделанной работы предоставляется найденное решение, достаточно близкое к требуемому. Т.е. если мы ищем хэш, у которого 20 ведущих разрядов равны нулю, а у вас есть ответ, который дает 18 ведущих нулей, то, статистически говоря, вы решили четверть задачи.
Мне всё равно непонятно.
Если данные блока неизвестны, тогда хэш чего ищется? Только заголовка?
Почему корню пула найденного решения достаточно, чтобы подписать блок, а самому узлу, нашедшему решение — недостаточно?
В заголовке содержится хэш блока.
блок, дающий тот же заголовок, самому сфабриковать не получится.
Но ведь блок состоит из всех транзакций, требующих подтверждения.
Все такие транзакции общедоступны.
Что же мешает майнеру составить из них блок самому?
getwork был популярен до середины 2012, сейчас давно все перешли сначала на GBT а потом на stratum
image
-4
-8
-103
Вас история ничему не учит?
Если пролистать дальше, то там комменты агитирующие за ммм.
В свете этого вас вопрос становится риторическим :)
Облачко ты наше, ути-пути!
«Колесо — прошлый век, все пересели на автомобили»?
Как вы думаете, из чего строят эти облака?
Sign up to leave a comment.