Satoshi, сокращённо sat, — одна стомиллионная часть биткоина: 1 sat = 0,00000001 BTC. Это наименьшая единица стоимости, записываемая в транзакциях базового уровня Bitcoin. Satoshi не является другой криптовалютой. Одну сумму можно выразить в BTC или целых satoshi, как длину в метрах или сантиметрах.
Анне нужно заплатить 25000 sat, но кошелёк показывает 0,00025 BTC. Это не другие деньги и не более выгодный курс, а две записи одной суммы. Соотношение неизменно: 1 BTC = 100000000 sat, поэтому 0,001 BTC = 100000 sat. Для небольших повседневных сумм sats часто понятнее ряда нулей после запятой. Курс биткоина к рублю или доллару может меняться; пересчёт между BTC и sat от него не зависит. [1] [2]
Когда Анна выбирает sats в настройках, её биткоины никуда не перемещаются и новые монеты не появляются. Меняются только число и единица на экране. sat обозначает единицу, а sats часто используют как форму множественного числа. Название посвящено Satoshi Nakamoto, создателю Bitcoin, а не отдельному активу, который нужно покупать дополнительно. Меньшая единица упрощает описание небольших сумм. Она не гарантирует постоянной покупательной способности или прибыли. [2]
Допустим, кошелёк Анны использует прежнее поступление 50000 sat. Получателю отправляет 25000 sat, Анне возвращает 24000 sat, а 1000 sat оставляет как комиссию майнеру, который включит транзакцию в блок. Сумма сходится: 50000 = 25000 + 24000 + 1000. Значит, Анна потратила на платёж 26000 sat, а не всё использованное поступление. Это пример, а не обычная или рекомендуемая комиссия. Перед подтверждением проверяйте сумму получателю и комиссию отдельно. [8]
Рядом с комиссией кошелёк может показывать Fee Rate — ставку в sat/vB. Это количество satoshi за виртуальный байт, единицу размера транзакции для расчёта комиссий. При размере 100 vB и ставке 10 sat/vB комиссия составит 1000 sat. Ставка не является процентом от отправленных денег. Два платежа одинаковой стоимости могут иметь разный размер, например если один объединяет больше прежних поступлений. Поэтому проверяйте результат в итоговом обзоре кошелька. [7] [8]
Числа без единицы недостаточно. Значение 25000 в поле для sats означает совсем не то же самое, что в поле для BTC. После сканирования платёжного QR-кода проверьте адрес, сеть, сумму и комиссию до подписания. Подпись — это цифровое разрешение потратить средства: кошелёк создаёт её с помощью закрытого ключа, секретного значения, позволяющего распоряжаться биткоинами. По спецификации платёжных ссылок BIP 321 параметр amount платёжной ссылки использует десятичные BTC с точкой: amount=0.00025 означает 25000 sat. Это верно и тогда, когда кошелёк показывает sats или местную десятичную запятую. Править ссылку вручную не нужно; важен правильный результат на экране подтверждения. [3]
В сети нет маленьких файлов, представляющих отдельные satoshi. Есть выходы транзакций с суммой и условиями её расходования. Ещё не потраченный выход называют UTXO. Кошелёк может иметь несколько таких поступлений и сложить их значения в один баланс. При платеже он расходует выбранные выходы целиком и создаёт новые для получателя и возможной сдачи. Satoshi — единица учёта этих сумм, а не отдельный предмет в кошельке. [2]
Точность суммы и практичный размер платежа — разные вещи. Выход может содержать 1 sat. Однако узлы — компьютеры, которые проверяют и передают транзакции, — могут отказаться распространять транзакцию, создающую слишком маленький выход. Dust связан с правилами распространения транзакций узлом и оценкой будущей стоимости расходования. Порог зависит также от типа выхода и настроек правил. Это не всеобщее требование одинакового минимума для каждого действительного платежа. Даже маленький выход, уже включённый в блок, может стоить при расходовании больше, чем составляет его ценность. [7]
Lightning Network использует платёжные каналы, в которых участники обновляют распределение внесённых в канал средств. Поэтому не нужно записывать каждый платёж отдельно в блок Bitcoin. Во внутренних расчётах используются также millisatoshi, сокращённо msat: 1 sat = 1000 msat. Это полезно, например, для более точного начисления комиссий. Но на базовом уровне не возникает выхода с дробной частью satoshi. При закрытии каналов правила Lightning переводят суммы в целые satoshi и исключают некоторые слишком маленькие выходы. Более точный внутренний учёт и окончательный расчёт — разные вещи. [6] [5]
Разделение одного BTC на сто миллионов частей не увеличивает количество биткоинов, как пересчёт метров в сантиметры не удлиняет стол. Новые биткоины создаются по правилам субсидии блока — новой эмиссии, связанной с блоком. При Halving эта субсидия делится пополам в целых satoshi; дробные части отбрасываются, пока в отдалённом будущем результат не станет нулевым. Техническая константа MAX_MONEY служит контрольной границей сумм. Сама она не означает, что ровно 21 миллион BTC будет выпущен и доступен для расходования. Потерянные ключи и некоторые непригодные либо невостребованные награды также уменьшают доступность. [1] [8]
Bitcoin Core использует для сумм CAmount — 64-битный целочисленный тип — и константу COIN со значением 100000000. Поэтому 0,00025 BTC внутри обрабатывается как целое число 25000. Это помогает избегать неточностей обычной двоичной арифметики с плавающей точкой, или floating point. Для пользователя вывод прост: проверять единицу и точную сумму. Создавая калькулятор или программно обрабатывая платежи, используйте целые satoshi либо точную десятичную арифметику, а не последующее округление приблизительного результата. [1]
Для полной картины прочитайте эту статью вместе с Bitcoin, 21 Million, Unit of Account, Lightning Network, UTXO, Transaction Fees. На эту статью также ссылаются Bitcoin Pizza Day, Chaumian eCash, Blind Signature, OP_CHECKTEMPLATEVERIFY.