ТЕМА ЗАКРЫТА НА ПРОВЕРКУ! НЕ СОВЕРШАЙТЕ С ПОЛЬЗОВАТЕЛЕМ НИКАКИХ СДЕЛОК ДО ПРОХОЖДЕНИЯ ПРОВЕРКИ!
You must be registered for see images
В духе статьи «Заблуждения программистов о телефонных номерах» (
You must be registered for see links
Блоки
- Высота блока будет только расти.
You must be registered for see links
You must be registered for see links
You must be registered for see links
Придумать сценарий, в котором это могло бы произойти, — та ещё задачка.
Мысленный эксперимент: допустим, есть майнер с приличным хешрейтом, превосходящим мощность сети. Этот майнер не сообщает публично о найденных им блоках. После 2016 блоков происходит корректировка сложности, и сложность спрятанной цепочки многократно увеличивается. Все блоки, намайненные в скрытой цепочке, теперь содержат больше работы, чем соответствующие блоки в публичной. Майнер добавляет ещё несколько блоков, прекращает майнить и ждёт, пока другая цепь доберётся до [размера его цепочки + 1]. После этого он объявляет о своих блоках. Все ноды переключатся на цепочку с меньшей высотой, потому что в ней больше работы.
Насколько это вероятно? Ответ на этот вопрос оставлю упражнением для читателя. Если придумаете ещё какой-нибудь вариант, пожалуйста, во имя Сатоши, сделайте пулл-реквест (прим. переводчика: к репозиторию, в котором лежит оригинал статьи)!
2. Время, требуемое для создания нового блока, будет только расти.
3. Когда майнер находит новый блок, он точно будет добавлен в блокчейн.
4. Ну ладно, но когда майнер единолично находит валидный блок, этот блок точно добавят в блокчейн.
Нет, если хэш нового блока
You must be registered for see links
You must be registered for see links
5. Каждый блок всегда генерирует ровно${CURRENT_BLOCKREWARD} биткоинов.
В
You must be registered for see links
You must be registered for see links
6. Чем больше нулей в начале хэша блока (то есть, чем ниже хэш), тем больший вклад этот блок делает в общую работу.
Довольно распространённое заблуждение — считать, что блоки с более низким хэшем (т.е. имеющие в начале хэша больше нулей) больше вкладываются в общую
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
7. Корретировки сложности основаны на предыдущих 2016 блоках.
У алгоритма корректировок сложностей есть баг на единицу. Из-за него расчёты основываются на предыдущих 2015 блоках, а не ровно 2016.
8. Пустые блоки пусты.
В пустых блоках всё ещё есть данные. В них просто нет других транзакций, кроме наградогенерирующей. Поскольку блок не содержит никаких транзакций из мемпула, он считается пустым. Пустые блоки тоже дорого обходятся с точки зрения вычисительной мощности, потому что им тоже нужно производить доказательство работы в рамках консенсуса. У них тоже есть блоковые шапки, весящие 80 байтов, и у них есть все поля, которые есть у не-пустых блоков.
Транзакции
- Если валидная транзакция оказалась в мемпуле, её обязательно в итоге включат в блокчейн.
2. Прежде чем транзакцию включат в блокчейн, она обязательно должна пройти через мемпул.
3. Если я вижу транзакцию в своём мемпуле, я могу быть уверен, что она есть в мемпуле всех нод.
Нет. И вот почему:
- Транзакции всегда нужно время, чтобы «дойти» до всех нод. Если вы её видите, это не значит, что её видят все.
- Каждая нода настраивается по-своему и имеет свои ограничения (например, достигнут размерmaxmempool).
- Нода не обязана включать транзакцию в мемпул и имеет право отказаться это делать.
Нода может не принять, не добавить и не запросить транзакцию по множеству самых разных причин, например из-за того, что предлагаемая за эту транзакцию комиссия ниже, чем minrelaytxfee ноды.
Параметр minrelaytxfee указывает уровень комиссии, который для мемпула этой ноды считается нижней планкой. Нода не будет принимать неподверждённые транзакции с комиссией ниже этого уровня в свой мемпул, а значит, не будет и передавать её никому. minrelaytxfee — настройка, которая задаётся в конфигурации. Каждый оператор ноды может задавать её сам, независимо от кого-либо.
Это не значит, что транзакция невалидная, или её нельзя будет включить в блок.
5. Ну дадно, но как только транзакцию включают в блок, значит, она останется в блокчейне навсегда
6. У каждой транзакции ровно один получатель.
7. У каждой транзакции ровно один отправитель.
8. Назначение для выхода Биткоин-транзакции — это всегда адрес.
9. Майнер всегда выберет транзакцию с самой высокой комиссией
10. Все хэши транзакций в блокчейне уникальны.
11. Комиссия явно задаётся в транзакции.
12. Если я создам транзакцию, помеченную как RBF, я всегда её смогу заменить другой, пока она ещё не подтвердилась.
13. Если я вижу не-RBF транзакцию с достаточной комиссией, я могу быть уверен, что она будет принята в блокчейн без каких-либо изменений.
14. Если я вижу неподтверждённую транзакцию, отправленную на мой адрес, я могу сохранить её ID — он никогда не поменяется.15.
15. Если ID неподтверждённой транзакции изменился, значит, это однозначно была злоумышленная попытка двойной траты.
Кошельки
- Все кошельки поддерживают p2pkh-транзакции.
- Все кошельки используют стандартизированные пути деривации/вывода.
- Brain wallets — это безопасно.
- 12 (или 15, 18, 21, 24) слов мнемоники — это всё, что нужно, чтобы восстановить свой кошелёк.
- Существует только один стандарт для мнемоник (12/24 слов).
- Каждый путь деривации/вывода (например, m/44'/0'/0'/0/0, m/44'/0'/0'/0/1, так далее) гарантированно выведет валидный адрес.
You must be registered for see links
You must be registered for see links
Таким образом, возможно, что существуют кошельки с пропусками в индексах. Для таких пропущенных индексов просто не существует адреса, и они в итоге будет просто молча проигнорированы кошельками. Однако, вероятность этого так мала, что никто, скорее всего, подобного никогда не увидит. Забавный факт: автор
You must be registered for see links
You must be registered for see links
7. Если я частично опустошу (sweep) бумажный кошелёк, остаток денег всегда будет и дальше лежать на этом кошельке.
8. Но если я воспользуюсь приложением, отдельно предлагающим функцию опустошения бумажного кошелька, и при этом переведу только часть средств, всё остальное непременно вернётся именно на тот адрес, что указан в бумажном кошельке.
Ключи
- Каждый приватный ключ соответствует ровно одному адресу.
- Приватные ключи, сокращённые в WIF, короче несокращённых.
- Каждое целое число от 1 до 2^256 — валидный приватный ключ от Биткоин-аккаунта.
- Возможно перевести существующий Биткоин-ключ в мнемонику формата BIP39 (12/24 слов).
- Если у меня есть приватный ключ, выведенный из расширенного (xpub/xprv) ключа, то можно со спокойной душой сообщить его человеку, который знает родительский xpub (не xprv) этого ключа. Это безопасно.
- У каждого Биткоин-адреса есть ровно один приватный ключ.
- Всегда возможно вывести адрес из входных данных (или выходных).
- Все Биткоин-адреса имеют одинаковую длину (количество символов).
- Все Биткоин-адреса чувствительны к регистру.
- Биткоин анонимен.
Адреса — это просто строки с буквами и цифрами, которые сами по себе никак не привязаны к определённому пользователю или кошельку. И пользователи, и кошельки могут использовать какое угодно количество адресов, чтобы держать биткоины, а multisig-адреса могут хранить монеты, принадлежащие нескольким пользователям. Таким образом, Биткоин скорее можно назвать псевдонимным, чем анонимным.
2. Все монеты, потраченные в рамках одной транзакции (входы), контролируются одной и той же сущностью или принадлежат одному и тому же человеку.
Прочее
- Всего существует ровно 21 миллион биткоинов.
You must be registered for see links
Таким образом, невозможно точно узнать, сколько биткоинов будет существовать в 2140, но точно меньше, чем 21 миллион.
2. Ну ладно, но я хотя бы могу быть уверен, что выпущенных биткоинов никогда не будет больше 21 миллиона.
Ну как сказать... Нет.
В августе 2010 произошёл небольшой инцидент на высоте
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
То есть, технически, был такой короткий промежуток времени, в котором общая сумма всех биткоинов превосходила 21 миллион. Если бы RPC-запрос bitcoin-cli gettxoutsetinfo уже существовал в 2010, то 15 августа 2010 года, между 17:02 and 23:53
3. Все UTXO (непотраченные выходы транзакций) можно потратить.
Некоторые доказанно нельзя потратить в принципе никогда (например,
You must be registered for see links
You must be registered for see links
Примеры:
You must be registered for see links
You must be registered for see links
You must be registered for see links