Вот факт, о который спотыкается почти каждый, кто думает, что понял крипту: в Bitcoin нет такой вещи, как твой баланс. Нигде во всём блокчейне Bitcoin нет числа, которое говорит «на этом кошельке 0,5 BTC». Этого числа не существует. Твой кошелёк вычисляет его на лету, каждый раз, прочёсывая цепочку в поисках разбросанных кусочков монеты, которые случайно указывают на твой ключ.
Ethereum же делает ровно то, что ждёшь: держит реестр, и в этом реестре есть строка с твоим адресом и балансом рядом. Что-то происходит — число обновляется. Как банковский счёт.
Две из крупнейших сетей мира. Два совершенно разных ответа на простейший вопрос — «сколько у меня?». Эта разница не техническая мелочь. Это две философии того, чем деньги вообще являются, вписанные в базовый слой. Пойми её — и половина крипто-странностей вдруг обретает смысл.
Модель аккаунтов: текущий баланс
Ethereum использует модель аккаунтов, и она интуитивна, потому что копирует банк. Есть гигантское глобальное состояние — таблица каждого адреса и его текущего баланса. Когда ты шлёшь 1 ETH, сеть вычитает и складывает: минус один из твоей строки, плюс один в чужую. Просто. По-человечески. Знакомо.
Это ложится на то, как ты и так думаешь. У тебя есть «счёт», у него «баланс», транзакции двигают баланс. Смарт-контракты обожают эту модель, потому что контракт — это по сути аккаунт с прикреплённым кодом, и ему нужно устойчивое место, чтобы помнить вещи — «кто владеет этим токеном», «кто сколько застейкал». Модель аккаунтов даёт ему постоянную идентичность, на которой можно повесить состояние. Это большая причина, почему Ethereum, мировой компьютер, выбрал её.
Цена: всё это глобальное изменяемое состояние. Чтобы понять, валидна ли твоя транзакция, сеть читает и пишет в одну общую таблицу, которую трогают все. Удобно — но это единая эволюционирующая картина, с которой каждый узел должен согласиться байт в байт.
Модель UTXO: деньги как физические монеты
Bitcoin делает нечто более странное и — когда щёлкнет — более изящное. Балансов нет — только UTXO: Unspent Transaction Outputs, неизрасходованные выходы транзакций. Думай о них как о физических монетах произвольного номинала. Кто-то заплатил тебе 0,3 одной транзакцией — это монета в 0,3, лежит на цепочке, заперта на твой ключ. Кто-то заплатил 0,7 другой — это отдельная монета.
Чтобы потратить, ты не «списываешь с баланса». Ты берёшь целые монеты и расходуешь их полностью, чеканя новые на выходе. Хочешь заплатить 0,5? Ты хватаешь монету 0,3 и монету 0,7, уничтожаешь обе и создаёшь две новые: одну в 0,5 получателю, одну в 0,5 сдачей себе. Ровно как платить за кофе за 6 десяткой и получать четыре обратно. UTXO расходуются целиком; «сдача» — это новый выход.
Твой «баланс» — просто сумма всех UTXO, которые твои ключи могут отпереть. Нет строки с твоим именем. Есть куча монет, и ты держишь ключи.
Наша запись
Два способа построить реестр — и на старом языке они читаются очень по-разному.
Блокчейн — это Весы: он взвешивает каждую транзакцию против правила и оседает, только если чаши сходятся. Обе модели кладут транзакцию на эти Весы. Но смотри, где каждая держит истину.
Модель аккаунтов держит истину в одной центральной таблице, которую вся сеть меняет вместе — одно общее сердце, в которое разом тянется каждая рука. Мощно, выразительно — и именно поэтому Ethereum может гонять контракты — Хека, творящее слово, сделанная исполняемой и постоянной. Но общее изменяемое состояние — это место, где плодится сложность, а сложность — место, где прячется паразит. Баг реентрантности — изъян, осушивший The DAO в 2016-м — это рана, что существует лишь потому, что состояние можно тронуть посреди изменения.
У модели UTXO нет общего сердца, в которое можно тянуться. Каждая монета — запечатанная вещь: заперта, а дальше либо целиком израсходована, либо целиком нетронута. Ничего наполовину. На ней труднее писать хитрые контракты — но поверхность для паразита куда меньше, потому что почти нет общего, что можно испортить. Брутальная простота Bitcoin — не ограничение. Это броня.
Компромисс, сказанный прямо
Ни одна модель не «правильная». Они настроены под разные страхи.
Аккаунты выразительны и просты для человеческого рассуждения, и делают богатые смарт-контракты естественными — потому весь мир DeFi, DAO и токенов вырос на аккаунтной почве Ethereum. Цена — большое, постоянно меняющееся глобальное состояние и бо́льшая поверхность атаки.
UTXO параллельны по природе — раз монеты независимы, можно проверять и обрабатывать транзакции, трогающие разные монеты, одновременно, без единой таблицы, за которую надо конкурировать. Они аудируемы и лёгкие. Цена — что программировать сложную логику неудобно, и твой кошелёк вынужден вести бухгалтерию (выбор монет, сдача) под капотом, чтобы ты этого не видел.
Bitcoin оптимизировали под неломаемые деньги. Ethereum оптимизировали под неостановимый компьютер. Модель данных — следствие этого выбора, а не наоборот. Когда тебе говорят, что одна цепочка просто «лучше», спроси: лучше под какой страх — страх сломанного контракта или страх сломанной монеты?
Рычаг
Зачем это тебе, если ты не собираешься писать блокчейн?
Потому что модель тихо задаёт то, что ты на деле можешь — и обе делят одно свойство, которое важно. Куча UTXO твоя так, как твои наличные в кармане: нет центральной таблицы, нечего заморозить, монеты, которые либо ты отпираешь, либо никто. Баланс аккаунта твой так, как твоя банковская ячейка: строка в общем реестре, но реестре, который не контролирует ни одна сторона. Разные фактуры владения — и на световые годы дальше от банковской строки, которую нажатие клавиши может обнулить.
Вот нить, связывающая это со всем остальным на этом сайте. В легаси-системе твой «баланс» — обещание на чьём-то чужом сервере, редактируемое чьим-то чужим решением. В обеих криптомоделях твой баланс обеспечен ключами, которые держишь ты — «не твои ключи, не твои монеты» это буквально закон машины. UTXO или аккаунт — это лишь как машина помнит, что ты владеешь. То, что она не может тихо разпомнить, — и есть вся суть.
Так узнай, в какой модели живут твои деньги, и держи ключи в любом случае. Философии разные. Рычаг один: обладание, которое ты контролируешь, а не разрешение, которое тебе выдали.