Биткоин для «чайников»: лучшее руководство для непрограммистов, часть II

13 июня

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

Как происходят переводы биткоинов?

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

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

Входы и выходы транзакций

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

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

У биткоина есть условие - каждый выход используется только один раз. Поэтому при отправке на другой адрес все биткоины должны быть потрачены на выходе. Иначе сумма будет потеряна. Эту работу делает клиент. Если у адреса 100 биткоинов, а отправляется с него 50, то клиент создаст 2 выхода: 50 биткоинов на Адрес 4 и 50 биткоинов на Адрес 3, т.е. обратно:

“Сдача” по биткоину

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

Транзакция в шестнадцатеричном формате

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

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

Как создаются новые блоки биткоина?

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

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

Используя свои мощности, каждый майнер ищет хэш нового блока, который становится идентификатором блока. В этот хэш входит номер блока, хэши транзакций, хэш предыдущего блока и др. Сам хэш вычисляется за доли секунды, но с добавлением сложности новый блок находят примерно за 10 минут. Для блока нужен определённый хэш - он должен начинаться с нулей. Чтобы вычислить такой хэш, в набор данных добавляется случайное число “nonce”:

Хэш чувствителен к любым изменениям информации и он изменится, если добавится даже один пробел. Для нахождения этого блока в демоверсии блокчейн хэш-функция выполнилась 69242 раза. Начиная с 0, счётчик “nonce” увеличивался на один, добавлялся к набору данных и вычислялся хэш. Так происходило до тех пор, пока у хэша в начале не появилось 4 нуля. Когда сложность добычи растёт, то растёт и количество нулей. У настоящего хэша блока биткоина уже стоит 19 нулей в начале хэша. Поэтому, чем выше сложность, тем менее вероятна атака 51% - завладеть большими мощностями в сети и подписывать транзакции с двойными расходами.

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

Итог

  1. Для получения, хранения и передачи биткоинов создают адрес. Для доступа используют секретный ключ из 12 слов. Личный ключ - доступ к вашим биткоинам и возможность расплачиваться с адреса.
  2. Никто не знает личный ключ. Программа-клиент пользователя генерирует из личного ключа публичный и так определяет владельца биткоин-адреса.
  3. Биткоины существуют только как записи в транзакциях.
  4. У транзакции есть входы и выходы. Вход - ссылка на выход другой транзакции, которая означает, сколько пришло биткоинов. Выход - ссылка для транзакции, на которую отправлены монеты.
  5. Каждый выход используется только один раз. При следующей транзакции с адреса все средства должны быть потрачены. Остаток при этом возвращается в обратной транзакции.
  6. После подписания транзакции личным ключом клиент отправляет её ближайшим узлам, а те передают дальше.
  7. Чем выше комиссия транзакции, тем быстрее майнеры её проверят и добавят в сеть.
  8. Майнеры добавляют транзакции в блок, связывают его с хэшем предыдущего блока и ищут хэш с определённым количеством нулей в начале. Называют это доказательством работы (Proof-of-Work).
  9. Тот, кто находит хэш нового блока, получает награду в виде новых биткоинов и комиссий за транзакции.
ДЗ
Зубов Денис
@zubovd
Войдите на сайт, чтобы оставить комментарий
0 комментариев
Популярные
Новые

Рассылка

Подписывайтесь на обновления и анонсы

18+
Москва, Берсеневская набережная 6/2
+7 (495) 118-41-48
2018 © Blockchain.ru, Сделано в Charmer
  • Дисклеймер
  • Пользовательское соглашение
  • Политика конфиденциальности

К сожалению, браузер, которым вы пользуйтесь, устарел и не позволяет корректно отображать сайт. Пожалуйста, установите любой из современных браузеров, например:

Google Chrome Firefox Opera