Я понимаю, что транзакция — это запись о передаче более 1 биткойнов от одной стороны к другой.
Я понимаю, что блок — это набор непроверенных (ожидающих) транзакций, которые проверяются каждые ~ 10 минут или около того.
Я понимаю, что майнинг — это запуск специализированного программного обеспечения, которое решает некоторые криптографические проблемы и, как следствие, позволяет добавить блок ожидающих транзакций в цепочку блоков (история всех транзакций, когда-либо).
Итак, во-первых, если что-то, что я сказал до сих пор, не соответствует действительности или вводит в заблуждение, пожалуйста, начните с исправления меня!
Предполагая, что я более или менее прав, я все еще не понимаю, почему майнинг имеет решающее значение для системы, и я (очевидно) не вижу здесь леса за деревьями.
Если я отправлю кому-то 10 BTC, зачем кому-то другому («майнеру») это проверять? Разве эта транзакция не должна храниться где-то в БД и проверяться путем запроса этой БД?
Вы должны начать здесь: http://www.youtube.com/watch?v=GmOzih6I1zs
Как упоминается в видео, майнинг необходим для обеспечения справедливости и поддержания стабильности, безопасности и надежности сети.
Теперь давайте посмотрим, что это значит. Но сначала очень краткое объяснение принципа майнинга.
Сеть Биткойн состоит из узлов, которые хранят базу данных со всеми транзакциями, называемую цепочкой блоков. Эта база данных состоит из длинной цепочки блоков, каждый из которых содержит одну или несколько транзакций. В основном майнеры объединяют все неподтвержденные транзакции в блок. Форма блока должна удовлетворять определенным условиям, прежде чем блок будет считаться действительным. Это условие называется доказательством работы и не является тривиальным для понимания. Когда майнер находит действительный блок, он может отправить свой блок в сеть, и другие проверят его. Когда он действительно будет действительным, все клиенты добавят его в свою цепочку блоков. Каждый раз, когда майнер находит действительный блок, он имеет право назначить себе определенное количество биткойнов, называемое вознаграждением за блок .. Они также получают все комиссионные сборы за все транзакции, включенные в его блок. Таким образом, новые биткойны добавляются в сеть, и можно гарантировать, что транзакции могут быть подтверждены.
Поскольку биткойн является одноранговым, и нет центрального органа, который бы его контролировал, каждый может отправить в сеть любую транзакцию, независимо от того, действительна она или нет. Вы можете просто отправить транзакцию, которая отправляет чужие монеты себе.
К счастью, никто в сети не примет вашу транзакцию. Если вы хотите потратить биткойны с определенного адреса, вам нужно будет подписать транзакцию закрытым ключом этого адреса. Другие клиенты в сети могут подтвердить, что вы владеете этим закрытым ключом, потому что у них есть открытый ключ. Этот метод основан на криптографии с открытым ключом .
Поэтому, когда майнеры пытаются объединить неподтвержденные транзакции в блок, им сначала нужно подтвердить каждую транзакцию, чтобы убедиться, что все транзакции в этом блоке действительны. Если это не так, другие клиенты не примут добытый ими блок при отправке его в сеть.
Таким образом, майнеры гарантируют, что люди могут тратить только биткойны, которыми они владеют.
Это наименее сложно для понимания. Биткойн-протокол устанавливает сложность задачи майнинга таким образом, что в среднем каждые 10 минут какой-то майнер может найти новый блок. Таким образом, подтверждение транзакции занимает в среднем 10 минут.
Однако после того, как транзакция была включена в блок, она все еще не является необратимой. Это непросто понять, но когда майнеры пытаются добыть новый блок, они включают в этот блок номер и идентификатор предыдущего. Итак, допустим, кто-то добыл блок 100, который следует за номером 99. Может случиться так, что кто-то еще не заметил, что кто-то нашел действительный блок, чтобы следовать за 99, и также сам сделал действительный номер 100, назовем его 100'. В этом случае большинство клиентов примут только первый полученный блок. Но может случиться так, что другой майнер сначала получил 100' и найдет следующий блок на 100', а не на 100. Тогда получается следующая ситуация:
98 - 99 - 100
\ _ 100' - 101'
Когда клиенты замечают такую ситуацию, они всегда выбирают самую длинную существующую цепочку (которая состоит только из блоков, которые они считают действительными). Это означает, что блок 100 будет отброшен, а блоки 100' и 101' или теперь два последних блока основной цепи. Это означает, что транзакция, которая была подтверждена блоком 100, теперь, возможно, больше не подтверждена. К счастью, майнеры, которые нашли блок 100' или 101', вероятно, также знали об этой транзакции и, скорее всего, также включили ее в один из этих блоков. Но может случиться так, что они этого не сделали, и транзакция может быть отменена.
По этой причине большинству клиентов и продавцов требуется, чтобы транзакция была подтверждена как минимум 6 блоками . Это означает, что он должен быть включен в блок, за которым следует не менее 5 блоков.
Тот факт, что транзакцию можно будет считать подтвержденной в среднем через 1 час, делает ее стабильной. Редко случается, что транзакции, подтвержденные более 1 часа, когда-либо снова отменяются.
Предыдущая часть о стабильности уже включала некоторые аспекты безопасности майнинга. Понятно, что майнеры делают цепочку блоков Биткойн заслуживающей доверия. Когда транзакция включена в блок и прошло 5 или более других блоков, вы можете быть уверены, что принять ее в качестве платежа необратимо и безопасно.
Также ясно, что безопасность Биткойна как платежной системы находится в руках майнеров и что каждый раз, когда один из них решает блок, он имеет право решать, какие транзакции он принял в цепочку блоков.
В основном, все майнеры честные, и они будут включать как можно больше действительных транзакций. Всякий раз, когда майнер недобросовестен и выборочно исключает некоторые транзакции, другой майнер, скорее всего, включит их в следующий блок.
Однако есть один недостаток. Когда майнер обладает большей вычислительной мощностью, чем все остальные майнеры вместе взятые , он всегда может создавать новые блоки с большей скоростью, чем другие. Это дает ему большую власть над цепочкой блоков, и этого следует избегать любой ценой. Этот недостаток называется атакой 51%. Этот ответ суммирует последствия того, что могло бы произойти, если бы кто-то получил 51% вычислительной мощности сети.
Но это недостаток безопасности, какое это имеет отношение к тому, почему майнеры должны майнить? Чем больше людей занимается майнингом, тем выше общая вычислительная мощность, и кому-то будет намного сложнее провести такую атаку 51%. В настоящее время иметь оборудование, способное выполнять такую атаку, было бы настолько дорого, что это экономически невыполнимо, если не полностью невозможно. Таким образом, каждый майнер, который вкладывает свои силы в сеть, гарантирует, что только честные майнеры найдут блоки и что сеть будет безопасной для людей, которым можно доверять.
Чтобы предотвратить двойное расходование, подписанные транзакции должны иметь отметку времени в четко определенном порядке (чтобы клиенты могли определить действительность каждой транзакции, т. е. источник средств, достаточный для поддержки транзакции).
Вместо того, чтобы иметь единый централизованный доверенный орган, Биткойн распределяет эту функцию по сети. Но как решить, кому доверить это сделать? Ответ заключается в том, чтобы дать полномочия тому, кто демонстрирует наибольшую вычислительную мощность.
Поскольку демонстрацию вычислительной мощности нельзя надежно подделать (в отличие от других мер индивидуальной идентификации), люди могут объединить свои ресурсы, чтобы заработать право на отметку времени транзакций. Пока в руках незлонамеренных пользователей больше вычислительной мощности, чем у злонамеренных, ни один злонамеренный пользователь (или группа пользователей) не сможет подорвать функцию отметки времени.
Где будет БД?
Если БД хранится в каком-то централизованном месте, то Биткойн больше не является децентрализованным.
По сути, БД должна храниться в распределенной сети честных узлов и совместно использоваться в сети P2P. Однако нам нужен способ, чтобы отдельные узлы могли проверить, не подделан ли блок. Введите одноразовый номер/хеш: это сложно сгенерировать (подделать), но легко проверить. Нужно выбрать правильный одноразовый номер, чтобы хэш блока соответствовал критериям, а поиск рабочего одноразового номера занимает время. (С другой стороны, проверка хэша — это быстрая работа)
Теперь, конечно, нам нужен способ «законно» генерировать одноразовые номера — нет центрального органа, раздающего одноразовые номера. Введите майнеров: пока почти все майнеры работают над созданием одноразовых номеров для «хороших» блоков (блоков, содержащих все транслируемые транзакции без вмешательства), мы можем гарантировать, что все сгенерированные блоки получены от этих майнеров, и, таким образом, эти блоки являются «законными».
Хотя транзакции транслируются, нет никакого способа узнать, достигла ли транзакция остального мира. Я могу направить вам транзакцию и сделать так, чтобы это выглядело так, как будто я дал вам деньги, хотя на самом деле этого не было. Однако запечь транзакцию в блок почти невозможно для любого человека, поскольку ему приходится конкурировать с большинством майнеров.
Смотрите также: http://codinginmysleep.com/bitcoin-mining-in-plain-english/
Краткий ответ таков: в отсутствие какой-либо центральной власти упомянутая вами простая схема не сработает для Биткойна.
Предположим, вы перевели одни и те же 10 биткойнов на два разных счета с двумя разными транзакциями. Что может помешать некоторым людям распознать первую транзакцию, а некоторым — вторую?
Биткойн использует доказательство работы (майнинг) для решения этой «проблемы двойного расходования».
Стивен Руз