Биткоин как произвести – Добыча криптовалюты в домашних условиях — 5 простых шагов

Содержание

Как начать. Инструкция для новичков ⋆ TeoWay.com

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

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

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

Если начать не терпится и много читать лень, читайте только то что выделено жирным шрифтом.

1. Основные понятия

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

  • Биткоин дробится, — 1 BTC = 1 000 mBTC = 1 000 000 bits. Можно купить\продать любые значения
  • Отправка и соответственно получение биткоинов необратимая процедура
  • Передача биткоинов требует времени, окончательно проведенная операция передачи именуется подтвержденной
  • Проведение транзакции обеспечивают майнеры путем создания и добавления блоков в цепь биткоин
  • Время подтверждения зависит от суммы устанавливаемой вами комиссии за отправку и от нагрузки на сеть биткоин
  • Комиссию платит только лицо которое отправляет биткоины
  • Передача и получение биткоинов осуществляется на биткоин адрес
  • Биткоин адреса генерирует и «хранит» кошелек

2. Биткоин кошелек

Кошелки рекомендуемые bitcoin.org, — официальным сайтом проекта биткоин.

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

Выбирайте Electrum, особенностям его работы и настройки будет посвящена основная часть статьи. Причины по которым я рекомендую Electrum, помимо указанных на сайте:

  • Кошелек достаточно популярен, подобного типа кошелки можно будет скачать и для других популярных криптовалют
  • Можно использовать на моб. телефонах и расплачиваться с них же, что в дальнейшем станет немаловажным
  • Легко сделать второй, третий и даже 10 Electrum кошелек полностью независимых друг от друга
  • Наличие портативной версии, — его легко закинуть на флешку, скачать снова, использовать в любом месте
  • Возможность обеспечить полною анонимность переводов

Основной аргумент для вас, — Electrum универсален, защищен и надежен, — отлично подойдет для новичка.

Установка биткоин кошелька Electrum

  1. Качаем кошелек Electrum тут, рекомендую портативную версию (Portable version). Ее легко хранить и использовать с флешки, в том числе на зараженных вирусами и троянскими програмами устройствах и общественных компьютерах =). Многие не рекомендуют портативную версию именно по этой причине, но мы же с вами не будем делать глупостей, правда? Информация далее актуальна для любой версии кошелька Electrum.
  2. Запускаем скаченный файл, устанавливаем если нужно. 
  3. Отключаем интернет, запускаем, выбираем «Auto connect», далее видим следующие пункты:
    • Standart wallet (Обычный кошелек)
    • Wallet with two-factor autentification (Кошелек с двухфакторной аутентификацией) — позволяет установить необходимость подтверждения перевода средств при помощи телефона (не за бесплатно). 
    • Multi-signature wallet (Кошелек с несколькими подписями) — для совместного доступа и управления кошельком несколькими людьми
    • Watch Bitcoin adresses (Наблюдение за адресами биткоин) — позволяет наблюдать за расходом/поступлением средств любых биткоин адресов
  4. Выбираем «Standart wallet», кошелек с двухфакторной аутентификацией вы всегда сможете сделать из него позже, видим:
    • Create a new seed (Создать новое семя) — создание нового семени кошелька
    • I alredy have a seed (Я уже имею семя) — для восстановления доступа к кошельку
    • Use public or private keys (Использовать публичный или приватный ключ) — для переноса кошелька или наблюдения за другим кошельком
    • Use a hardware device (Использовать аппаратное устройство) — для внешних, подключаемых кошельков, «в виде флешки» так сказать
  5. Вид биткоин семени во время установки кошелька Electrum.
    Выбираем «Create a new seed», видим набор из 12 слов, — Семя (Seed), на основе которых генерируется приватный ключи вашего кошелька. Зная их, любой человек, в том числе и вы, с любой точки земного шара (а скоро и Марса), сможет получить полный доступ к вашим деньгам, заменить введенный вами ранее пароль и отключить двухфакторную аутентификацию. Ничего, ничего более кроме этих слов не нужно для этого. Переписываем слова на бумагу.  Лично мне не понравилось что всего 12, автоматически сгенерированных слов дают полный доступ к моим средствам. Поэтому жмем «Options» и ставим галочку «Extend this seed with custom words» (расширить семя своими словами).
  6. Пишем любой набор символов (пароль) или слова через пробел, переписываем их на бумагу в дополнение предыдущим. Be original.
  7. Проверочный этап, вводим сюда записанную на бумаге основную часть семени.
  8. Дописываем второю часть. Прячем бумажку с семенем где нибудь, советую сделать ее копию скрыв в ней несколько слов, букв, зазубрив перед этим, — на случай если бумажка попадет в «плохие» руки. 
  9. Вводим длинный пароль, он понадобится вам для подтверждения команды отправки биткоинов, просмотра приватных ключей и тд. и тп.
  10. Поздравляю, вы успешно создали кошелек. Включаем интернет и благодарим Аллаха за его изобретение.

Напомню, — семя (seed) всегда дает полный доступ к кошельку, а точнее генерирует тот же самый приватный ключ что и был, приватный ключ в свою очередь генерирует те же самые биткоин адреса, на которых хранятся или будут хранится ваши средства. По этому… не «просри» свое семя.

Настройка биткоин кошелька Electrum

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

Смена языка

Для смены языка в биткоин кошельке Electrum выберите пункт «Tools» -> «Preferences» -> вкладка «Appearance» — поле «Language». Русский в наличии.

Как увидеть все адреса получения биткоина в Electrum
Адреса получения биткоина в Electrum

Выбираем пункт меню «Вид (View)» -> нажимаем на пункт «Показать адреса (Show addresses)» чтобы включить нужную вкладку кошелька. Переходим на появившеюся вкладку и под пунктом «Receiving» видим список биткоин адресов на которые вы можете получать ваши средства, они на вечно ваши.

Кстати, если вы получите биткоины на самый нижний адрес в списке «Receiving», Electrum автоматически создаст еще 20 новых.

Двухфакторная аутентификация

Двухфакторная аутентификация в кошельке Electrum предоставляется сервисом trustedcoin.com, ее наличие означает что для того чтобы отправить ваши биткоины потребуется подтверждение с вашего смартфона через приложение Google Authenticator. Стоит такое удовольствие от 0,15 — 0,5 mBTC, имеет смысл если у вас имеются значительные средства на кошельке или вы не планируете часто отправлять биткоины. Еще раз напомню, — при наличии семени есть возможность отключить или включить ее.

Для включения двухфакторной аутентификации просто пересоздайте кошелек с тем же семенем выбрав пункты «Wallet with two-factor autentification» и «I alredy have a seed». 

Как увидеть на каком адресе сколько находится биткоинов

Выбираем пункт меню «Кошелек (Wallet)» -> нажимаем на пункт «Монеты (Coins)» чтобы включить нужную вкладку. На появившейся вкладке видим список адресов с парами закрытых ключей и сумой биткоинов, если они есть.

Анонимность использования Electrum

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

В случае использования Electrum, вместо вашего IP адреса будет отображен адрес севера Electrum. В то же время, сами сервера Electrum «видят» ваш реальный IP адрес. В принципе, уже по этой причине вам не зачем беспокоится за свою конфиденциальность, если же вы все таки считаете иначе, вам следует настроить ваш Electrum для использования в сети Tor. Никто не мешает держать 2 кошелька, один для полностью анонимных операций, второй обычный. Кошелек, в анонимности которого вы хотите быть полностью уверенным, не должен содержать транзакций совершенных без подключения к сети Tor.

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

Как получить биткоины в кошельке Electrum

Вкладка получения биткоинов в Electrum

Пересылка биткоинов всегда выполняется на биткоин адрес. Выбираем вкладку «Получение (Receive)» -> поле «Адрес получения (Receiving address)» -> копируем адрес путем нажатия на иконку справа от поля адреса, предоставляем адрес лицу или сервису который должен вам передать биткоины. 

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

Как отправить биткоины в кошельке Electrum

Выбираем вкладку «Отправить (Send)». В поле «Получатель (Pay to)» вставляем биткоин адрес. В поле сумму «Сумма (Amount)» пишем нужную сумму. Выбираем «Комиссию (Fee)» которою вы заплатите за отправку, — чем выше комиссия, тем быстрее будет подтверждена передача средств.

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

Расчет времени подтверждения передачи биткоинов
Так можно посмотреть примерное количество блоков необходимых для подтверждения транзакции

Время ожидания очень сильно зависит от нагрузки на сеть. При выборе комиссии обратите внимание на указанное количество блоков, которые нужны для подтверждения транзакции. Переходим на статистику сайта blockchain.info и смотрим поле «Время между блоками«. Путем умножения количества блоков на время получаем приблизительный ответ.

При выборе комиссии для которой вместо количества блоков пишется «low fee», время подтверждения может составлять от 12 до 48 часов, опять же таки, и этот диапазон приблизительный.

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

3. Покупка биткоинов

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

Ниже приведен список наиболее важных ресурсов по биткоину:

Биткоин информация и статистика 
  • blockchain.info — вся статистика по биткоину.
  • investing.com — текущий курс биткоина на различных биржах. В комментариях внизу часто можно увидеть споры между различного рода «экспертами», а так же получить совет.
Биткоин обменники
  • bestchange.ru — мониторинг обменников, тут можно присмотреть самый выгодный, в данный момент времени, сервис.
  • localbitcoins.com — самый популярный в мире сервис обмена. Тут можно найти самые фантастические способы обмена. Но как правило, курс в обменниках bestchange выгоднее.
Биткоин биржи
  • wex.nz (ранее btc-e.com) — одна из самых известных криптовалютных бирж болгарского происхождения. Есть русский интерфейс, ввод/вывод и торговля в рублях. Из минусов можно выделить довольно таки высокие комиссии. Рекомендую для обмена в рублях.
  • btc-trade.com.ua — относительно новая украинская биржа, ввод/вывод и торговля в гривне. Из минусов, — низкая ликвидность. Рекомендую для обмена в гривне.
  • bitfinex.com — известная Гонконгская биржа, возможен ввод/вывод и торговля в долларе (но только после прохождения нереально сложных и долгих проверок, поэтому ввод/вывод лучше делать через криптовалюты ) имеет фантастически крутой и удобный интерфейс, с которым приятно и удобно работать. Русский присутствует но перевод неполный. Рекомендую для спекулятивной торговли. 

Не храните деньги на биржах, — не спешите с выводами и прочтите эти строки до конца. Все биржи из списка выше были как минимум 1 раз взломаны и/или обворованы. Wex.nz (btc-e.com) была даже арестована министерством юстиции США за отмывание денег и даже, за содействие во взломе и отмывании украденного с других бирж (подчеркиваю, с других бирж, поэтому, кстати, и изменили название). У вас наверное возникает вопрос, — какого *** я их рекомендую их для обмена/торговли? Ответ, — было, есть и будет множество криптовалютных бирж которые после 1-2 лет жизни кидают своих клиентов и «валят» со всем баблом. Те что в списке, уже не раз доказали что не имеют цель кинуть своих клиентов, а хотят жить за счет комиссий с торговли и обмена. После каждого взлома, они как могли возвращали деньги клиентам, латали дыры в защите и свою репутацию. Есть много других нормальных и крупных бирж кроме этих 3, но почти со всеми была подобная история. Поймите, — нет идеальной безопасности с учетом того количества денег, что оборачивается на этом рынке. Таков этот гребаный мир. Запомните, эти биржи не хотят вас кинуть, поэтому не стоит в них сомневаться, а вот в том, что они смогут это сделать, пожалуй стоит.

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

Не забудьте включить 2х факторную аутентификацию после регистрации. Она надежно защитит ваш аккаунт от несанкционированного доступа, осуществляется при помощи приложения Google Authenticator. Важный момент, вы потеряете доступ к аккаунту в случае утери телефона или ключа (вайп, перепрошивка и тд.). В таком случае, не существует способа восстановить доступ к аккаунту кроме как доказывать администрации биржи что вы и есть настоящий его владелец. Кстати, на этих биржах имя, фамилию, номер телефона никто не спросит. Поэтому отдельно позаботьтесь о хранении ключа в виде QR-кода или набора символов

Успехов.

teoway.com

Обменник биткоин. Как произвести обмен Биткоинов — Умные Деньги

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

Порядок обмена Биткоинов на Payeer через обменник

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

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

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

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

Программа предложит абоненту ознакомиться с правилами обмена и дать подтверждение о согласии с ними. Для этого необходимо в определённом поле поставить галочку. Далее, должен быть произведён клик на кнопку с надписью «Начать обмен». Появится всплывающее окна, в котором появится текстовое сообщение. В нём содержится информация о том, что для запуска обработки заявки придётся подождать, пока в системе Биткоин дважды поступит подтверждение. Этот процесс может занять пару минут, но может растянуться на несколько часов.

После нажатия кнопки «ОК», осуществляется переход к завершающему шагу. Здесь клиент извещается о номере, присвоенном поданной им заявке. Помимо этого, ему будет предложено ознакомиться с краткой инструкцией по поводу пересылки Биткоин-адреса в систему Пайер. Каждая заявка становится обладателем индивидуального адреса Bitcoin. Для произведения оплаты, клиент должен осуществить вход в свой кошелёк. При этом он обязан указать там данный адрес. Как только будет осуществлена транзакция, необходимо снова вернуться на сайт и активировать кнопку «Я оплатил». Делать это надо обязательно.

Как перевести Bitcoin на Payeer без выплаты большой комиссии

Благодаря увеличивающейся популярности Биткоинов стала востребованной и услуга, связанная с их переводом в другие криптовалюты, в том числе и Payeer. Это служит объяснением того, что данная услуга доступна практически на каждом обменнике. И величина комиссионных сборов при этом не больше 1%, что, конечно же, является выгодным для клиентов. Каждый пользователь может по собственному желанию изменить величину комиссионных сборов при пополнении Bitcoin-кошелька через Payeer. Но при этом необходимо учитывать, что размер комиссионных напрямую влияет на оперативность проведения обмена.

Алгоритм обмена Bitcoin на Payeer RUB

Для выполнения этой операции клиент должен предпринять следующие действия:

1. В предлагаемой системой форме выполнить заполнение всех полей. Свободных остаться не должно.

2. Активировать кнопку «Продолжить».

3. Вдумчиво ознакомиться с условиями, на которых будет произведён обмена, о чём речь идёт в тексте договора. Если после прочтения всех пунктов никаких вопросов не возникло, то следует кликнуть по кнопке «Принимаю».

4. Ещё раз внимательно проверяются данные, которые были указаны пользователем при составлении заявки на транзакцию на Payeer с Биткоин-кошелька.

5. Производится оплата. Для выполнения этой операции надо просто следовать инструкции, которая высвечивается сайтом.

6. После завершения в должном порядке всех действий, система осуществит возврат к страничке «Состояние заявки». Тут можно будет получить информацию о реальном статусе транзакции.

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

Выбирая обменный сервис для проведения любой операции с Биткоинами, необходимо уделять внимание таким нюансам:

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

• Наличие сведений, на основание которых можно сделать вывод об отношениях с банковскими системами в процессе транзакций на Payeer с Биткоин-кошелька.

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

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

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

smartmoney.today

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

О 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 хотя бы немного вырастет.

habr.com

Обновлено: 01.07.2019 — 15:06

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *