Принцип генерации биткоинов: основные принципы майнинга / Хабр

Содержание

основные принципы майнинга / Хабр

(источник)

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

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

В этот раз речь пойдет об общих принципах майнинга.

UPD: с матчастью как работает сам биткоин можно ознакомиться тут.

Bitcoin mining: «кто все эти люди?»


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

1) Школьники и студенты, имеющие доступ к дешевому (или вовсе бесплатному) электричеству и hardware, за счет своих родителей и университетов.

2) Геймеры, использующие свои игровые ПК для добычи биткоинов в перерывах между компьютерными баталиями.

3) Гики, покупающие несколько ПК для майнинга, и которых обычно останавливает только исчерпание ресурсов электроснабжения/охлаждения/свободного места (ну или терпения родных и соседей)

4) Хакеры, развертывающие ботнеты и использующие для майнинга украденные вычислительные мощности.

5) Сообщества, организующиеся для совместной покупки оборудования и добычи биткоинов, с последующим разделением полученной выгоды.

6) Компании, которым удалось получить финансирование от энтузиастов, через аналог IPO на онлайн-биржах, ведущих торги за bitcoin. Такие компании разрабатывают специализированное hardware (ASIC) для последующей добычи bitcoin и распределяют дивиденды.

Как видно, довольно разношерстная компания.

Добыча Bitcoin


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

Биткоины добываются не по одному, а «пачками», или блоками. Первоначально размер блока равнялся 50 BTC, но он уменьшается вдвое после каждых 210 тыс. добытых блоков. Сейчас добыто уже больше 250 тыс. блоков, а значит, один блок приносит 25 BTC. Новый блок добывается примерно каждые 10 минут. Из-за периодического уменьшения награды за блок вдвое, общее количество BTC никогда не превысит 21млн, ~55% всех BTC уже добыто и, по прогнозам, эта цифра достигнет 99% к 2032 году.

Периодически, через каждые 2016 добытых блоков, происходит корректировка сложности их добычи. Корректировка основывается на скорости добычи в последний период и нужна для сохранения среднего интервала добычи блоков у отметки в 10 минут.

Если количество компьютеров, занятых одновременной добычей биткоинов, в целом растет, то ежедневная награда (равная 24*6*25 = 3600 BTC) остается неизменной. А значит, на каждый компьютер приходится всё меньшая доля общего «пирога».

Добыча биткоинов имеет смысл только до тех пор, пока стоимость добытых BTC превосходит затраты на оборудование и электроэнергию. Т.к. сложность добычи BTC неуклонно увеличивается, да и курс USD/BTC подвержен колебаниям, наименее энергоэффективные средства добычи BTC постепенно исключаются из процесса. Хотя, резкий рост курса USD/BTC может сделать рентабельным их возвращение в строй.

(В этот раз совсем) немного истории


Bitcoin стал результатом развития идей, заложенных в существовавшие ранее криптовалюты. А впервые он появляется на сцене в ноябре 2008го, когда пользователь под псевдонимом Сатоши Накамото (Satoshi Nakamoto) публикует статью, описывающую систему новой валюты. Уже в январе 2009го система начинает функционировать, а её популярность сначала растет медленно, но вскоре переходит в экспоненциальный рост. Известен случай, когда один человек заплатил за пиццу 10тыс. BTC (несколько миллионов $ по нынешнему курсу). Накамото исчезает в апреле 2011, и его личность до сих пор остается загадкой.

Курс USD/BTC

Рисунок 1. Динамика курса USD/BTC и сложности майнинга(источник данных)

На рисунке 1 показана динамика курса обмена USD/BTC с течением времени. Начиная с 2010го года курс резко пошел вверх. Если в июле 2010 1 BTC стоил $0.05, то к августу 2013 уже преодолел отметку $105. В этом интервале наблюдается два скачка – один в июне 2011го, когда биткоин стоил $31.5 и в апреле 2013го, когда курс подскочил до $266 (а сейчас и до $1000). Резкие скачки и обвалы курса чаще всего связаны с периодами пристального внимания СМИ и расцвета страхов/слухов об уязвимостях протокола или взломах организаций, отвечающих за обмен BTC на другие валюты. Подобные слухи каждый раз сопровождаются волной желающих продать биткоины и обвалом курса.

Основная причина, делающая BTC столь привлекательным для спекуляций – верхний предел на количество BTC, равный 21млн. Если когда-нибудь BTC всё-таки заменит золото как эталон для хранения сбережений, то, приравняв стоимость мирового золотого запаса к общей стоимости биткоинов, можно сказать что один BTC будет стоить $71000 – гораздо больше, чем сейчас (практически, на два порядка, даже с учетом последних спекуляций).

Сложность майнинга BTC


На рисунке 1 также показано как менялась сложность майнинга биткоинов с течением времени. За неполные 4 года сложность возросла в 50млн. раз. Если в начале сложность соответствовала 4-8 процессорным ядрам общего назначения, способным перебрать примерно 7 млн. хэшей в секунду (MH/s), то сейчас скорость совместных усилий по брутфорсу превосходит 7 петахэшей в секунду (PH/s).Такому росту способствовали 2 фактора. Первое – рост курса USD/BTC позволяет покрыть расходы на эксплуатацию большего количества оборудования для майнинга. Второе – за это время произошли значительные изменения как в программном, так и в аппаратном обеспечении для майнинга биткоинов. Опять-таки, точки падения сложности добычи BTC соответствуют местам обвала курса USD/BTC.

Инновации в hardware и software для майнинга


Прогресс шел невероятно быстро, изменения следовали одно за другим.

В сентябре 2010 появляется первый общедоступный CUDA miner. Уже в октябре 2010 за ним последовал первый майнер для OpenCL.

Практически сразу после этого, в ноябре 2010, возникло такое явление как pooled mining, когда группа компьютеров выполняет распределенный перебор хэшей, а, при добыче блока биткоинов, делит награду между участниками пропорционально их вкладу в общее дело. Подобные пулы очень быстро выросли до размера тысяч участников, позволив последним получать небольшие суммы каждый день, а не большие (50 или 25 BTC) каждые несколько месяцев.

На тот момент сложность добычи блока биткоинов равнялась примерно месяцу работы одного Hi-End GPU. Одной из ключевых инноваций, сделавшей возможным существование mining pool’ов, стала возможность убедиться, что компьютер действительно провел работу по перебору хэшей, которую он заявил как выполненную, и исключение возможности того, что пользователь «сбежит», когда его компьютеру в ходе перебора посчастливится наткнуться на ответ.

К сожалению, mining pools служат своего рода «концентраторами», что противоречит распределенной природе bitcoin и потенциально ставит под угрозу процесс подтверждения транзакций.

В июне 2011 появился первый open source miner для FPGA. А затем в январе 2013 появляется первый ASIC майнер и множество улучшений последовавших за этим. На графике сложности добычи BTC показаны даты появления этих технологий.

производительность и энергоэффективность


Hi-End CPU (вроде Core i7 990x), подвергнутые оверклокингу, достигли производительности 33 MH/s, а Hi-End GPU от NVidia (вроде GTX 570) 155 MH/s. В то же время GPU от AMD (вроде 7970 за $450) выступали гораздо убедительнее, на уровне 675 MH/s.

Следующий шаг эволюции связан с появлением FPGA майнеров, которые хоть и немного проигрывали видеокартам от AMD в стоимости железа на единицу производительности ($/MH/s), но зато потребляли 60W вместо 200W. Компания под названием Butterfly Labs (BFL) начала продавать FPGA майнеры, которые в итоге могли бы постепенно вытеснить GPU за счет меньшего энергопотребления.

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

Рисунок 2. Установка для майнинга биткоинов на основе FPGA (источник)

Стратегия майнинга


Важным вопросом для тех, кто занимается добычей биткоинов, является: когда инвестирование денег в «железо» для добычи биткоинов принесет больше прибыли, чем просто их покупка через биржу. Многая специализированная аппаратура для майнинга BTC (или доли в компаниях, эксплуатирующих такую аппаратуру за вас) имеет цену, указанную в BTC. Согласитесь, было бы глупо купить такую аппаратуру и так никогда и не вернуть свои вложения, особенно с учетом обслуживания и счетов за электричество.

Чтобы ответить на этот вопрос, необходимо оценить возврат средств за счет майнинга в биткоинах. В условиях экспоненциального роста сложности добычи новых биткоинов, способность железа к добыче биткоинов падает также экспоненциально. При росте сложности примерно в 1.2 раза каждые две недели, 66% биткоинов, которые «железо» способно добыть за время своей эксплуатации, приходится на первый квартал работы. 22% на второй квартал, 7% на третий, а на всё оставшееся время приходится лишь 4%. При этом в первый день работы будет добыто ~1/80 всех биткоинов, что можно добыть на этом девайсе за время его эксплуатации.

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

Некоторые из этих параметров известны в момент покупки; например, цена аппаратуры, курс USD/BTC на этот момент и расходы на эксплуатацию. Также легко оценить количество биткоинов, добываемых за первый день работы, т. к. сроки поставки аппаратуры легко оценить (только не надо тут вспоминать про Почту России), а производительность тех же GPU в GH/s – первое, чем пользователи начинают меряться на соответствующих форумах. Расходы на обслуживание напрямую вытекают из спецификации оборудования и счетов за электричество. Оценка того, за какую сумму в будущем удастся продать железо, делается (хоть и приблизительно) изучая сайты вроде e-bay.

Основной риск кроется в динамике курса USD/BTC. Если курс растет – растет и прибыль от добываемых биткоинов, а также имеет смысл оставить оборудование в строю на больший срок. Если курс перестает расти или обваливается, добыча биткоинов становится менее привлекательной, а также для максимизации прибыли имеет смысл отключить оборудование и попытаться продать его раньше.

Изменение цены оборудования со временем ведет себя различным образом для разных типов устройств. Цена на GPU от AMD за год эксплуатации снижается весьма незначительно. В то время, как ситуация со специализированным оборудованием прямо противоположная, т. к. единственное его назначение – майнинг. Специализированные решения на основе FPGA или ASIC имеют гораздо более высокие риски, связанные с датой поставок оборудования – цена, за которую их готовы купить, и то, сколько на них можно заработать, напрямую зависит о даты их ввода в процесс майнинга. Управление этим риском – важная часть майнинга биткоинов.

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

Отключение оборудования

Рисунок 3. Дневная прибыль от добычи биткоинов и соответствующие расходы на электроэнергию. (источник данных)

Рисунок 3 показывает дневную прибыль на 1 GH/s, которую приносил майнинг биткоинов с 2010го года. Данный график комбинирует исторические данные о сложности майнинга и курсе USD/BTC. Резкий обвал в районе ноября 2012 года соответствует уменьшению награды за блок с 50 BTC до 25 BTC. Горизонтальные линии показывают расходы на электроэнергию на 1 GH/s за день для: CPU (Core i5), GPU (AMD 7970), FPGA (Bitforce SHA256) и 110nm ASIC (AvalonBatch 1). Когда прибыль на 1 GH/s опускается ниже этой линии, майнинг становится убыточным и соответствующее оборудование выключается.

Продолжение следует.

Bitcoin. Как это работает / Хабр

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

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

Настоящие деньги?


Первое место в списке главных заблуждений насчет Bitcoin занимает идея о том, что Bitcoin это очередные «бумажки», пускай и электронные, которые лишь представляют «настоящие» деньги, являются эдакими долговыми расписками. Отсюда берет начало большинство остальных заблуждений: раз это бумажки, то они ничего не стоят; их можно напечатать или уничтожить сколько угодно; их можно подделать; их можно скопировать.

Повторюсь — все это не более, чем заблуждения. В основе идеи Bitcoin лежало желание создать не очередные «бумажки», которые представляют реальные деньги, такие как золото, а аналог самого золота. Взять те свойства золота, благодаря которым оно является идеальными деньгами, и сделать электронную валюту на их основе.

Сложность добычи


Золото нельзя скопировать — его можно только добыть. Но это очень затратный процесс как по времени, так и по ресурсам. Частично из-за этого золото ценится так высоко. Чтобы было понятнее, рассмотрим на примере.

Допустим человек весь день усердно добывал золото и добыл в итоге 1 кг. Для него стоимость добытого золота равна одному дню усердной работы. После тяжелого рабочего дня он решил отдохнуть и сходить в кинотеатр. По счастливому совпаденью кассир отдавал билеты в обмен на золото. Почему? Потому что кассиру нравится золото, но не нравится весь день работать с киркой. Поэтому он готов оказать услугу — отдать билет — в обмен на 1 кг золота. Фактически же он обменивает свою услугу на один день тяжелой работы.

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

В Bitcoin процесс добычи монеток тоже требует ресурсов и времени. Но в данном случае это не человеческие ресурсы, а компьютерные.

Условно ограниченный ресурс


Чем дольше добывается золото, тем труднее (затратнее по ресурсам) становится его добывать. Это гарантирует, что инфляция будет под контролем.

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


Здесь видно, что общее число монеток стремится к 21 000 000. Подробности работы Bitcoin будут рассмотрены далее. А пока нужно знать две вещи: монетки появляются в системе пачками приблизительно каждые 10 минут, количество монеток в одной пачке — 50, и оно уменьшается вдвое каждые 4 года.

Материальность


Это уже свойство не столько золота, сколько любой не электронной валюты. Один слиток золота нельзя дважды обменять на услугу или товар. Т. е. в один момент времени он может быть либо у продавца, либо у покупателя.

Такое поведение естесственно для материальной валюты, но не для электронной. Чтобы добиться такого поведения виртуальных денег, нужно приложить немало смекалки. В Bitcoin это поведение обеспечено механизмом транзакций. Все транзакции объеденяются в цепочки. Каждая транзакция берет монетки из одной или нескольких существующих транзакций и указывает, кому они предназначаются. Поэтому всегда можно проверить всю цепочку на валидность.

Сложность добычи, ограниченный ресурс, материальность — эти свойства, плюс использование криптографии для обеспечения безопасности, позволяют использовать Bitcoin в качестве денег. На них основано ядро Bitcoin. Это не просто договоренности. Все они заложены в системе by design, и по-другому она работать не будет. Настало время рассмотреть этот самый дизайн.

Цепочка блоков


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

В текущих версиях программы Bitcoin цепочка блоков скачивается целиком каждым клиентом, что делает систему полностью децентрализованной. Данные никак не шифруются и любой может вручную проследить все транзакции. Существует даже специальный сайт — Bitcoin Block Explorer, на котором можно легко посмотреть всю информацию о блоках и транзакциях.

На момент написания статьи количество блоков в цепочке было равно 110 968, и, как я уже говорил ранее, это количество приблизительно через каждые 10 минут увеличивается на 1. Это значит, что кто-то из участников смог создать новый блок.

Кстати говоря, все участники делятся на две группы: на тех, кто работает над новым блоком и кто не работает. По статистике эти группы соотносятся как 1 к 3. Зачем вообще создавать блоки, да еще каждые 10 минут? В блоках записываются транзакции. Каждый блок содержит все транзакции, которые проходили во время его создания, т. е. за 10 минут.

Работает это следующим образом. Один из клиентов создает новую транзакцию и рассылает ее другим клиентам, которые заняты генерацией блока. Они добавляют эту транзакцию к своему блоку и продолжают генерацию. Рано или поздно у кого-то получится сгенерировать блок. Такой блок запечатывается (к нему больше не добавляются транзакции) и рассылается по сети. Далее клиенты проверяют блок и транзакции внутри него на валидность. Если никаких проблем нет, то транзакции считаются одобренными. К этому моменту свежий блок уже доехал до каждого клиента и добавлен в цепочку. После этого процесс повторяется — клиенты начинают генерировать очередной блок и собирать в него новые транзакции.

Блок


Рассмотрим содержимое блока и процесс его генерации более подробно. Пример блока можно найти на все том же Bitcoin Block Explorer. Блок состоит из заголовка и списка транцакций. Заголовок состоит из следующих свойств:

hash — SHA-256 хэш заголовка блока. Такой хэш является достаточно случайным, а время его вычисления предсказуемо. Хочу заметить, что хэшируется только заголовок, без транзакций. Так что число транзакций не будет сильно влиять на время вычисления хэша.

ver — Версия схемы блока. На данный момент у всех блоков одна версия — 1.

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

mrkl_root — Merkle root — список хэшей транзакций. Хэш блока должен обязательно зависеть от транзакций, чтобы их нельзя было подделать. Но вычислять его напрямую будет долго, если количество транзакций велико. Поэтому сначала хэшируются сами транзакции, а затем их хэши используются для вычисления хэша всего блока.

Может показаться абсурдным — зачем дважды вычислять хэш одного и того же. Но дело в том, что хэш транзакций обновляется только при добавлении к блоку новой транзакции, а хэш заголовка блока пересчитывается несколько тысяч раз в секунду. К тому же, чем ближе размер заголовка в константе, тем точнее можно предсказать время вычисления его хэша.

time — uint32_t представляющее время создания блока. Максимально допустимый год — 2106.

bits — Одно из самых важных свойств. Является сокращенной формой целевого значения хэша. Блок считается сгенерированным (валидным), когда его хэш меньше этого целевого значения. Целевое значение определяет сложность создания блока. Чем оно меньше, тем меньше вероятность подобрать подходящий хэш за одну итерацию. Это свойство обновляется каждые две недели.

Происходит это следующим образом. Подсчитывается число сгенерированных блоков за последние две недели и сравнивается с эталоном (1 блок каждые 10 минут). Если блоков слишком много, то сложность увеличивается. Если блоков слишком мало — уменьшается. Таким образом система адаптируется к увеличению числа пользователей и, как следствие, суммарной мощности их компьютеров.

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

Например, версия никогда не меняется. Хэш предыдущего блока обновляется тогда, когда кто-нибудь нас опередит и сгенерирует новый блок. Merkle root обновляется при добавлении транзакции. Время — каждые несколько секунд. Bits (целевое значение, сложность) — каждые две недели. Все это слишком долго. Чтобы не ждать, пока обновится одно из свойств и существует nonce.

Рассмотрим гипотетическую ситуацию. Все значения nonce были проверены и ни одно из них не подходит. За это время ни одно другое свойство не изменилось. Происходит переполнение nonce и оно снова начинается с нуля. Получается, что далее хэши будут повторяться. Чтобы избежать подобных ситуаций, после переполнения nonce, меняется специальное свойство одной из транзакций. После этого обновляется Merkle root и хэши заголовка блока уже не будут повторяться.

n_tx — Количество транзакций в списке.

size — Размер блока в байтах.

Транзакции


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

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

На практике все это реализовано с помощью следующих свойств:

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

ver — Версия схемы транзакции. Пока она ни разу не менялась, так что везде равна 1.

vin_sz — Количество предыдущих транзакций, из которых деньги переводятся на новые адреса. Одна или более.

vout_sz — Количество адресов, на которые переводятся деньги. Один или более.

lock_time — Пока не используется и везде равно 0. Идея в том, чтобы создавать отложенные транзакции, чтобы они добавлялись не в текущий генерируемый блок, а, например, в слещующий. Подразумевается, что в этом свойстве указано количество блоков, которые должна пропустить транзакция перед добавлением. Это дает возможность в течении некоторого времени изменить транзакцию и переподписать ее.

size — Размер транзакции в байтах. Подразумевается размер транзакции в формате JSON.

in — Содержит список входов (источников) транзакции. В качестве входов используются выходы предыдущих транзакций (prev_out). У каждого выхода есть следующие свойства:

hash — Хэш предыдущей транзакции.

n — Так как у транзакции может быть несколько выходов, то нужно указывать, из какого из них берутся деньги. Для этого и существует данное свойство. В нем содержится порядковый номер выхода предыдущей транзакции, начиная с 0.

scriptSig — В этом свойстве отправитель должен доказать, что он переводит именно свои деньги, а не чужие. Для этого он указавает публичный ключ получателя предыдущей транзакции, т. е. свой ключ, так как он должен быть получателем. Кроме того он добавляет ECDSA подпись этой же транзакции, которая сделана его приватным ключем. Это доказывает, что он распоряжается своими деньгами, а не чужими.

После списка входов транзакции (in) указывается список выходов (out), т. е. адресатов. Каждый выход имеет следующие свойства:

value — Содержит количество денег, которые будут переведены по новому адресу. Они берутся из предыдущих транзакций. Поэтому данное число не должно превышать их сумму. Например, мы хотим взять 10 монеток из одной транзакции и 20 из другой и направить 25 по новому адресу. Чтобы оставшися 5 монеток не пропали, мы посылаем их самим себе, как сдачу. Таким образом в нашей транзакции будет два адресата, одним из которых являемся мы сами. Value всегда указывается в наномонетах, чтобы избежать дробных чисел.

scriptPubKey — Это свойство, вместе с scriptSig составляют сценарий на модифицированном Forth-like языке. ScriptPubKey содержит операторы языка и хэш публичного ключа получателя транзакции. Сценарий проверяет транзакцию на валидность. Использование подобного сценария дает богатые возможности для описания условий получения денег адресатом. Например, можно заставить получателя указывать пароль вместо ECDSA.

Суммарное количество денег на входе транзакции всегда равно суммарному количеству на выходе. В противном случае деньги либо возникали из воздуха, либо исчезали из оборота. Но в самом начале был график, по которому видно, что число денег экспоненциально растет. Так откуда берутся новые деньги в системе?

На мой вкус, эмиссия денег реализовано просто и элегантно. В каждом блоке первая транзакция в списке является особой транзакцией. У нее всегда один вход, у которого вместо свойства scriptSig есть свойство coinbase. Это свойство может содержать что угодно.

Выход у транзакции также всегда один. Он перенаправляет 50 монеток тому, кто сгенерировал блок, в котором расположена эта транзакция. Это своего рода награда за потраченное время и ресурсы на генерацию блока. Создавая новый блок в цепочке, клиент вносит вклад в работу Bitcoin.

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

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

Заключение

Proof of work (доказательство работы) — результат работы, которого трудно добиться, но легко проверить. Работа сети Bitcoin основана на этом принципе. Проверить хэш (результат работы) можно за доли секунды. А для того, чтобы его подобрать, требуется много работы.

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

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

Изначальная стоимость золота определялась исключительно тем, кто его добывал. За добытое золото он просил столько, чтобы можно было компенсировать усилия на его добычу. А уже после этого на цену золота начинает влиять рынок.

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

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

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

Принцип Ландауэра: термодинамика майнинга биткойнов | Дэрил Тнг | Интуиция

Физика

https://www.fool.com/investing/2021/07/02/3-reasons-to-invest-in-crypto-and-1-reason-not-to/

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

Однако для целей этой статьи мы не будем усложнять.

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

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

Как вы можете видеть ниже, простая 3-символьная строка «abc» соответствует почти неразборчивой строке.

SHA-256 работает, беря строку произвольной длины и преобразовывая ее в хэш из 64 символов.

Ввод может состоять из 3 символов, 300 или даже 3000 символов. И в результате получается хэш из 64 символов.

https://www.movable-type.co.uk/scripts/sha256.html

Проще говоря, биткойн считается добытым, когда найдено решение .

Это 64-символьная строка с 36 возможными входами на символ. 26 букв алфавита и 10 цифр. Итак, это 36⁶⁴ входов.

Следующий ниже веб-сайт демонстрирует рабочий пример решения хеш-функции.

Тяжелый способ майнинга биткойнов: алгоритмы, протоколы и байты

В этой статье подробно описывается майнинг биткойнов, вплоть до шестнадцатеричных данных и сетевого трафика. Если вы когда-нибудь…

www.righto.com

http://www.righto.com/2014/02/bitcoin-mining-hard-way-algorithms. html

Правильное решение было найдено после 856 192 328 попыток . И эта задача уже была значительно упрощена за счет использования блока, который, как уже было показано, содержит решение.

В подавляющем большинстве ситуаций решений не существует.

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

CoinDesk: Биткойн, Эфириум, Новости криптовалют и данные о ценах

«Хешрейт» относится к общей совокупной вычислительной мощности, которая используется для майнинга и обработки транзакций на…

www.coindesk.com

По данным CoinDesk, скорость хеширования по состоянию на 6 февраля 2021 года составляет около 89 Exa Hash/секунду (EH/s).

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

Следующее соотношение было предложено Рудольфом Ландауэром в 1961 году, когда он был научным сотрудником IBM.

Нижняя граница энергии, необходимой для стирания (или создания) одного комплекта информации.

Где k_B — постоянная Больцмана, T — температура системы в кельвинах.

Согласно исследовательским журналам [3], современные компьютеры примерно в a миллионов раз менее энергоэффективны. Таким образом, для стирания 1 бита информации требуется в 10⁶ раз больше энергии.

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

Я понимаю, что это может быть сильно не по адресу, но на этот раз просто побалуйте меня!

1. Хэш SHA-256 дает 256 бит.

Наименьшее теоретическое потребление энергии каждым хешем составляет 256 K T ln2.

Таким образом, каждый хэш требует энергии не менее 7,30/10¹⁹ джоулей .

2. Учет 10⁶ стоимости энергии.

Это гораздо ближе к 7,30/10¹³ джоулей на каждый хэш.

3. Учет огромного количества попыток

В примере потребовалось 856 192, 328 попыток получить правильный хэш.

То есть: 6,25/10⁴ джоулей за каждый правильный хэш.

4. Текущая скорость хеширования составляет 89 EH/s.

Итак, это 89 x 10¹⁸ хэшей в секунду.

И мы получаем глобальное потребление энергии 5,56 x 10¹⁶ ватт или 5,56 x 10¹⁰ гигаватт (ГВт).

Для справки [4] атомная электростанция среднего размера вырабатывает примерно 1 ГВт энергии.

===================================

Источники:

[1]:

Биткойн трудный путь майнинга: алгоритмы, протоколы и байты

В этой статье подробно объясняется майнинг биткойнов, вплоть до шестнадцатеричных данных и сетевого трафика.

Если вы когда-либо…

www.righto.com

[2]:

CoinDesk: Bitcoin, Ethereum, Crypto News and Price Data

«Хешрейт» относится к общей используемой вычислительной мощности. майнить и обрабатывать транзакции на…

www.coindesk.com

[3]:

Наномагнитная память приближается к пределу мощности | Ручка Блумфилда

Автор: Томас Дж. Томпсон 22 июля 2011 г. Даллас, Техас. По словам Белль Дюме, крошечная магнитная память и логические устройства, которые…

web.archive.org

[4]: ​​

ИНФОГРАФИКА: Сколько энергии производит ядерный реактор?

Знаете ли вы, что 20% электроэнергии в Америке вырабатывается атомной энергией? Это невероятная статистика, учитывая тот факт, что…

www.energy.gov

5 вопросов о воздействии майнинга криптовалюты на окружающую среду

Наносит ли майнинг криптовалюты вред окружающей среде? Мы попросили нашего местного технолога оценить этот новый ландшафт.

Два популярных слова в корпоративном и финансовом мире сегодня кажутся криптовалютами и ESG (экологические, социальные вопросы и вопросы корпоративного управления) — но переплетены ли они? В частности, являются ли криптовалюты экологически безопасными или они представляют собой глобальную угрозу для достижения климатических целей, сформулированных на недавней Конференции сторон Организации Объединенных Наций (COP26)?

Мы поговорили с Джозефом Рачински, штатным технологом и футуристом Thomson Reuters и первопроходцем криптовалюты, о майнинге криптовалют, ущербе для окружающей среды и его устойчивости в будущем.

Thomson Reuters Institute: В самом общем смысле, что такое крипто-майнинг?

Джозеф Рачински: Традиционный процесс майнинга криптовалюты обусловлен высокой вычислительной мощностью компьютера, поскольку процессоры сначала решают математическую задачу, чтобы единственный победитель мог добавить группу транзакций в блокчейн. Например, транзакцией может быть один человек, отправляющий деньги другому человеку через биткойн.

Вычислительная мощность компьютера, которую вы можете ощутить, когда ваша машина нагревается, означает, что процессор очень усердно работает, чтобы что-то сделать. Акт майнинга финансово вознаграждает первый компьютер или группу объединенных компьютеров, которые решают математическую головоломку с собственным токеном этой криптовалюты. В примере с Биткойном более 100 000 узлов (компьютерных группировок) по всему миру соревнуются за победу в гонке, и если они это сделают, они заработают 6,25 биткойнов (сегодняшняя стоимость составляет около 237 500 долларов США) за возможность добавить группу транзакций в следующий блок в цепочке. Это происходит примерно каждые 10 минут.

Джозеф Рачински из Thomson Reuters

В код встроено уменьшение вознаграждения с течением времени, и существует фиксированный запас биткойнов, который будет существовать когда-либо , поэтому майнинг, вероятно, со временем станет более сложным в зависимости от сколько компьютеров конкурирует в любой момент. Этот процесс называется proof of work и является очень энергоемким; в то время как другой формой консенсуса майнинга является доказательство доли, и он гораздо более эффективен.

Институт Thomson Reuters: Сколько криптовалюта стоит окружающей среде?

Джозеф Рачински: Это очень тонкая и политически противоречивая тема. Находясь в этом пространстве с 2011 года, я вижу обе стороны дебатов и верю, что могу выявить их реальность. Доказательство работы изначально неэффективно, так как использует много электроэнергии для решения этой математической задачи, чтобы получить вознаграждение. На первый взгляд, это не экологически безопасно.

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

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

Институт Thomson Reuters: Можно ли как-то уменьшить влияние криптомайнеров?

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

Институт Thomson Reuters: Одна из криптовалют, Ethereum, заявила, что хочет сократить потребление энергии почти на 100% в этом году за счет перехода на процесс подтверждения доли. Как криптовалюты могут использовать доказательство доли, чтобы быть более устойчивыми ?

Джозеф Рачински: Есть отличные новости, которые в значительной степени решают проблему электричества и, в свою очередь, проблему окружающей среды. Основные блокчейны, Ethereum, Solana, Avalanche, Cosmos, а также многие другие, за которыми будущее отрасли, полагаются на Proof of Stake , который сам по себе использует другой механизм для подтверждения и добавления транзакций в цифровую книгу. Существует много разновидностей proof of Stakes , но если кто-то хочет участвовать в качестве крипто-майнера в этом случае, он не использует вычислительную мощность для победы в математической гонке. Вместо этого каждый человек вкладывает деньги или кол , участвовать. Эти пользователи надеются заработать от 7% до 1000% от денег, которые они ставят, зафиксировав их в смарт-контракте, который повышает устойчивость сети.