Где на самом деле хранятся биткойны пользователя?

На компьютере человека?

На bitcoin.org? :)

Где находится эта информация, которая сообщает другим и мне, сколько у меня биткойнов?

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

Все криптоактивы, такие как Биткойн, Эфир и т. д., хранятся в соответствующих цепочках блоков. Такая информация, как ваш баланс, хранится в определенном блоке с другими деталями, такими как время создания и т. д., которые нельзя изменить. Такие сайты, как live.blockcypher.com/btc , показывают ваш баланс, используя ваш публичный адрес. Любой, кто знает ваши открытые ключи, может также узнать ваш баланс и историю транзакций. Однако, имея доступ к закрытым ключам, вы заявляете, что конкретный публичный адрес принадлежит вам, что означает, что у вас есть «права» на управление вашими средствами (перевод и т. д.).

Ответы (8)

Кажется, что здесь требуется базовое объяснение двух основных концепций Биткойна: кошелька и блокчейна:

  • «Кошелек» — это набор пар ключей ECDSA. Для тех, кто не знаком с криптографией, пара ключей состоит из «открытого ключа» и «закрытого ключа», которые можно использовать для шифрования или подписи битов данных. Открытый ключ, как следует из названия, известен всем и может использоваться для шифрования сообщений таким образом, что только владелец закрытого ключа может их расшифровать. Закрытый ключ также может использоваться для подписи сообщений таким образом, чтобы любой, у кого есть открытый ключ, мог убедиться, что сообщение действительно пришло от вас. Каждый биткойн-адрес состоит из такой пары ключей: «адрес», который вы отправляете людям, является общедоступной половиной, а частная половина находится в вашем файле wallet.dat.
  • «Блокчейн» — это постоянно растущая база данных информации о транзакциях, которая рассылается всем узлам в сети Биткойн. Когда вы выполняете транзакцию, эта транзакция распространяется по сети и, если транзакция действительна, будет включена в следующий «блок». Здесь хранятся сами монеты. Когда вы инициируете транзакцию, все предыдущие транзакции на этот адрес или с него сканируются и рассчитывается баланс. Если ваша транзакция превышает этот доступный баланс, она будет отклонена сетью и не будет включена в блок.

Также важно отметить, что технически блокчейн хранит не «монеты», а информацию о транзакциях. Сами монеты не являются дискретными вещами, которые нуждаются в хранении — когда монеты добываются, баланс майнера зачисляется через «генерирующую» транзакцию, которая добавляется к его или ее доступному балансу. Когда монеты отправляются от A к B, эта транзакция вычитается из баланса A и добавляется к балансу B. Это похоже на то, как ваш работодатель может через EFT отправить «деньги» в ваш банк, и вы можете использовать свою дебетовую карту, чтобы потратить эти «деньги» в магазине, и все это так, что никто никогда не увидит дискретную физическую долларовую купюру. Большая часть денег в мире сегодня существует просто как история транзакций и балансов — биткойн не является исключением.

Отличное объяснение, спасибо. Таким образом, вы действительно можете просто хранить автономную резервную копию своего кошелька на флэш-накопителе, и вам действительно не нужно активно запускать клиент кошелька, пока вы не захотите совершить транзакцию?
Вы хотите сказать, что каждый узел в сети биткойнов содержит всю историю всех транзакций, когда-либо совершенных владельцами биткойнов? Во-вторых, что такое «узел»? Любой компьютер с биткойн-кошельком?
На самом деле это зависит от того, какое программное обеспечение вы используете. Еще когда я писал этот ответ, на самом деле было только одно программное обеспечение кошелька, и да, оно хранило каждую транзакцию. На сегодняшний день существует несколько вариантов и не все они хранят все данные. Electrum, например, запускает тонкие клиенты, которые подключаются к серверам, на которых хранится вся цепочка блоков, а многие телефонные кошельки хранят только блоки, содержащие относящиеся к ним транзакции. Однако в целом считается предпочтительным, чтобы каждый узел (компьютер, на котором запущено программное обеспечение) хранил все.
Дэвид, спасибо, но я не могу понять несколько неясных вещей. Я перечислю: 1) в случае, если все транзакции были сохранены на отдельном узле/ПК, чтобы человек (владелец ПК) мог открывать (просматривать) эти данные и изменять? (да или нет) 2) если он может изменить данные, то что тогда? система проверяет, совпадают ли эти данные с данными, которые хранятся на других тысячах узлов? как это проверяется, я не могу понять, если люди могут изменить данные... 3) где находится основной хост (сервер) или устройство, которое дает вам разрешение отклонить или добавить транзакцию («генерировать») в вашу учетную запись? кто это решает?
4) когда происходит транзакция, где она сначала хранится/обновляется? т.е. на чьем-то узле? и где-то на дальней стороне земли, на узле, это обновление транзакции может произойти через X секунд/минут, и если в течение этого времени другая транзакция произойдет тем же держателем??
@T.Todua, ты нашел ответ на 4 вопроса, перечисленных выше? Если да, пожалуйста, напишите здесь.
@VishalSingh Сомневаюсь, что даже создатель биткойнов вряд ли знает, как все это работает :)
@David. Не могли бы вы уточнить: «Когда вы инициируете транзакцию, все предыдущие транзакции на этот адрес или с него сканируются и рассчитывается баланс». ? Как они сканируются? Существует ли текущий баланс, который можно определить, просмотрев самый последний блок, содержащий этот адрес, или необходимо сканировать все блоки?
Предположим, что владелец биткойн-счета умирает, тогда куда идут эти деньги? Я имею в виду, что в устаревших случаях деньги находятся в безопасности в банке и могут быть переданы номинальному лицу.

Информация разделена. Некоторая информация хранится на вашем ПК в файле кошелька. Некоторая информация хранится в публичном блокчейне .

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

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

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

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

Вот почему взламывать собственный клиент или wallet.dat бесполезно. Ваши монеты не там, они везде.

Например, вы можете найти любой из ваших (или чужих) адресов здесь и увидеть текущее значение. http://blockexplorer.com/

Так что же мешает другим людям тратить ВАШИ монеты?
Трата биткойнов заключается в создании транзакции, перемещающей их с одного адреса на другой.

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

Ваш файл wallet.dat содержит все ваши пары открытых ключей. Любой, у кого есть ваш файл wall.dat (и кодовая фраза для шифрования), может подписывать транзакции как владелец этих общедоступных адресов и, таким образом, имеет контроль над монетами. Это подчеркивает, почему вы всегда должны защищать свой wallet.dat и кодовую фразу шифрования.

Этот метод хранения стоимости уникален для Биткойна (и последующих монет-подражателей). Подводя итог в паре предложений:

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

Отличное объяснение. Ткс!
Что произойдет, если вы потеряете файл wallet.dat?
@DeathAndTaxes «Монеты» не являются объектами, хранящимися в блокчейне; они просто абстракция поверх информации о транзакциях, такой как балансы. Это информация о транзакциях и балансы, которые хранятся в блокчейне и связаны с адресами.

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

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

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

Где хранится эта база данных блокчейна?
Его копия хранится на каждом компьютере, на котором запущено программное обеспечение Биткойн.
Блокчейн дистрибутивно хранится на компьютерах, на которых запущено программное обеспечение Битокоин. Большинство клиентов не хранят полную цепочку блоков (поскольку ее размер составляет порядка 1 ГБ), но они хранят интересующие их транзакции (например, те, в которых есть монеты, принадлежащие им, и новейшие блоки). Однако некоторые клиенты хранят всю цепочку блоков. Итак, у всех есть несколько блоков, у некоторых людей есть все блоки, и в Интернете хранится несколько копий одного и того же блока.
ThePiachu, вы говорите о легковесном клиенте, который, насколько мне известно, еще не реализован. В настоящее время все клиенты хранят всю цепочку блоков.
О, наверное, я где-то ошибся в информации. Прости за это.
Мени, это реализовано но не в основном клиенте. То, о чем говорит ThePiachu, — это «эгоистичный клиент», реализованный в основном на мобильных устройствах. BitcoinJ, Java-порт Биткойна, который в настоящее время используется на мобильных устройствах, на самом деле хранит только заголовки блоков и блоки, содержащие интересующие транзакции. Это было предметом по крайней мере одного вопроса , хотя я хотел бы увидеть больше - это интересная тема.

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

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

Биткойн-токены на самом деле не «принадлежат» адресам. Идея адреса — это просто удобная абстракция. Адреса на самом деле не имеют баланса (и блокчейн Биткойн даже не понимает, что адреса существуют), но обращение к балансу адресов — это просто быстрый способ сослаться на общую сумму токенов, хранящихся в неизрасходованных выходах, которые владелец конкретного адрес имеет возможность тратить.

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

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

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

Биткойн (BTC) не является физическим объектом. С концептуальной точки зрения мы можем сказать, что BTC (в цифровом мире) чем-то похож на воду в физическом мире. Точно так же, как количество воды на Земле ограничено, количество BTC в блокчейне ограничено. Точно так же, как количество воды можно разделить на наименьший квант (молекулу H2O), количество BTC можно разделить на наименьший квант, сатоши (0,00000001 BTC). Количество BTC представлено числом, например 3728 BTC. Таким образом, если число может представлять некоторое количество BTC, то все, что требуется для хранения некоторого количества BTC, — это возможность записать число. В цифровом мире вы храните информацию в файлах. Следовательно, биткойны буквально хранятся в файлах. Эти файлы содержат (помимо прочей информации) целую кучу адресов, к которым последовательно прикрепляются номера,

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

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

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

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

Хотя общая суть верна, этот ответ слишком упрощает. «Количество BTC» хранится в utxo , это немного больше, чем просто адрес и число, в первую очередь существует криптографическая блокировка расходов. Кроме того, блоки не являются необратимыми. Кончик цепи всегда вероятностный. Блок может быть перехвачен конкурирующим цепным наконечником и в конечном итоге не станет частью лучшей цепочки. Ознакомьтесь с реорганизацией цепочки тегов , чтобы узнать больше.
Хороший вопрос, Марч. Спасибо за комментарий. Мое намерение состояло в том, чтобы предложить точку зрения, которая помогла бы мне, когда я впервые познакомился с криптовалютами. Я бы хотел, чтобы кто-нибудь объяснил это так. Это сэкономило бы мне часы исследований.