:RU: Объяснение модели Cardano eUTXO для пятилетнего ребенка

Перевод статьи Explaining Cardano's eUTXO model for a five-year-old | Cardanians

Cardano принципиально отличается от Ethereum своей моделью учета. В то время как Cardano использует расширенную модель UTXO (eUTXO), Ethereum использует учетные записи. В этой статье мы объясним разницу между этими подходами упрощенным способом.

image

Модель учета

Вы можете думать о блокчейне как о регистре, истории бухгалтерских записей, написанных бухгалтером. Регистр открыт, поэтому все записи могут быть просмотрены всеми бухгалтерами, а также всеми пользователями в любое время. Бухгалтеры будут представлять сеть в нашей аналогии. Представьте, что бухгалтеры сидят в банке, и к ним обращаются клиенты (пользователи), которые просят их сделать бухгалтерские записи (транзакции). Все бухгалтеры совместно используют один регистр, который они используют для бухгалтерских записей.

В блокчейн сетях пользователи владеют монетами. Даже если записи находятся в регистре, когда пользователи приходят к бухгалтеру с просьбой изменить запись, они должны подтвердить это отпечатком большого пальца (аналог цифровой подписи транзакции). Представьте себе монеты ADA и ETH в виде листиков бумаги, которые пользователи кладут в деревянные ячейки (кошельки). Листики бумаги физически находятся в учетном регистре, и вместе они образуют отдельные страницы учетного регистра, но благодаря ячейкам пользователи могут просмотреть их и передать бухгалтеру, если они попросят внести изменения в запись (отправить транзакцию).

Cardano и Ethereum отличаются тем, как делаются записи в регистре, а следовательно, и тем, как клиенты хранят монеты.

Cardano работает с монетами ADA аналогично банкнотам, за исключением того, что номинал может быть любым. Например, 12 ADA, 3,5 ADA и 0,3 ADA. У пользователя в ячейке есть 3 листочка бумаги с написанными на них этими значениями (т.е. у него есть 3 UTXO). Это в общей сложности 15,8 ADA. В отличие от Ethereum, Cardano обладает дополнительной возможностью, заключающейся в том, что в ячейке может быть несколько ячеек меньшего размера, содержащих отдельные листочки бумаги (меньшие ячейки представляют адреса блокчейна). В одной ячейке меньшего размера может быть больше листочков бумаги.

oxQNeikq2Yo83ghvqH5tGApT8LMO7-UNoOrf3x9OJZ9vEm88bkIotULZRABh9WTNf1HpvYwMHj27c6xRGkxBM1_Fq_Gvh5NMDO9QUrQPKXUGTXsf_blVJHivsgvDg0K92HyZkm5bnnqERrZRh9TMK5c

Если бы Алиса хотела отправить Бобу 14 ADA, ей пришлось бы отдать бухгалтеру 2 листочка бумаги с 12 ADA и 3,5 ADA. Бухгалтер создал бы новый листик бумаги (новый UTXO) и написал бы на нем 14 ADA. Он положил бы этот листочек бумаги в ячейку Боба. Затем он создал бы еще один новый листочек бумаги стоимостью 1,5 ADA, который вернул бы в ячейку Алисы.

o.f52987ac8cf3a9c86823c9992de36dd3

Когда бухгалтер завершит запись в регистре (обработает транзакцию), у Алисы в ячейке будет 2 листика бумаги стоимостью 0,3 ADA и 1,5 ADA. Ячейка Боба был пуст до того, как была сделана запись. После внесения записи в регистр у него будет 14 ADA.

Мы немного упростили аналогию. Бухгалтер взял бы плату (комиссию за транзакцию) за запись в регистре, скажем, 0,2 ADA, поэтому он положил бы обратно в ячейка Алисы только 1,3 ADA.

В модели учетных записей Ethereum у пользователей всегда есть только один листочек бумаги в ячейке с написанным на нем значением. Это похоже на текущий баланс на банковском счете. В случае с Cardano у Алисы в ячейке было 15,8 ADA. Предположим, у нее есть 15,8 ETH в Ethereum, поэтому в ее ячейке есть один листочек бумаги с таким значением.

89xE2DvITCQK45EZZHB3Ke6qkQSmhX_4OHY-l9C_7-GrOtIOzU7oZgVFW0-1XUYtcvhqhxkmQXz_pZV7hNeIUlNDiHjHHLSz6ScFBkvhAhw9gvarXI5fG8a5RUs_ihKzCQLW_ImgMrVG9Npkei4YjKc

В случае с Ethereum, когда бухгалтер хочет сделать новую бухгалтерскую запись, он одновременно перезаписывает данные на листочках бумаги Алисы и Боба. Если Алиса отправит Бобу 14 ETH, как в предыдущем примере, бухгалтер перепишет значение с 15,8 на 1,8 на листочке бумаги Алисы. В то же время она перезапишет листок бумаги Боба и превратит значение 0 в 14. В этом примере мы также опустили вознаграждение бухгалтера.

Esyg3Ds5h46Tlp-Fl577Ouex5Gwa5G80v69UAWJ4zm1uZrJ4sGwnsyotQ3hwPzDVteDBuQegPHKMV6U4R5zimNNwcyUFmfN2iZzBg-5r-6Pp57TC3pRKFrEyToCBgx3I_FNMVb147NCb-FjvjdBRif8

Мы использовали примеры, чтобы показать, как пользователи обращаются к бухгалтерам и просят их внести запись в регистр, что аналогично отправке транзакции. Подобным образом бы происходил процесс, если бы пользователи запрашивали у бухгалтеров более сложную операцию, такую как кредит или обмен двумя активами (исполнение смарт контрактов).

Новая запись в Ethereum создается путем перезаписи листиков бумаги (изменение баланса), в то время как в сети Cardano создаются отдельные новые листочки бумаги, которые основаны на предыдущих листочках бумаги. Ключевым различием между моделями учета является создание новых листочков бумаги вместо их переписывания.

Разница в использовании регистра (леджера)

Модель учета влияет на то, как Cardano и Ethereum используют регистр или как бухгалтеры могут создавать новую запись. Бухгалтер в сети Ethereum должен вынимать регистр из хранилища при создании новой записи (или нескольких записей) и приносить его на свой рабочий стол, чтобы работать со всеми ячейками одновременно (общее глобальное состояние).

Для того чтобы была сделана новая запись, бухгалтер должен иметь обзор всех ячеек и должен быть уверен, что во время его записи другой бухгалтер не попытается сделать запись. Взяв регистр к себе на стол, бухгалтер сигнализирует другим бухгалтерам, что теперь только он может делать записи.

Другие бухгалтеры в сети не могут вносить свои записи в регистр, потому что она есть у другого бухгалтера для его нужд. Они даже не могут заранее подготовить новые записи, потому что не знают, какие новые записи будут внесены в регистр. Как только регистр вернется в хранилище, его сможет забрать другой бухгалтер. Все бухгалтеры могут просмотреть новые записи и убедиться, что они верны (блок проверки).

o.db74fc9602351d306330572018b1ce2e

Преимущество заключается в том, что бухгалтер, который забрал регистр для себя, может вносить любые изменения во все графы. Он может даже менять (переписывать) листочки бумаги в одной ячейке более одного раза подряд. Недостатком является то, что важен порядок, в котором записываются новые записи. Если бухгалтер вводит 20 новых записей, другие бухгалтеры должны соблюдать этот порядок. Отдельные записи взаимозависимы.

Может случиться так, что в очереди окажется больше пользователей, заинтересованных во внесении записи в регистр. Даже если их запрос был действителен на момент становления в очередь, когда подойдет их очередь, бухгалтер может оказаться не в состоянии обработать запрос. Тем не менее, пользователь должен осуществить оплату бухгалтеру за попытку обработки. Невозможность выполнить бухгалтерскую операцию связана с тем фактом, что она зависела от ячеек (листиков бумаги в ячейках), которые поменялись, когда регистр находился в распоряжении другого бухгалтера. К сожалению, у пользователей нет возможности заранее проверить, будет ли их запрос действительным до того, как стать в очередь.

Бухгалтер в сети Cardano также должен брать регистр к себе на стол из хранилища, когда он хочет создать новые записи, но он не мешает другим бухгалтерам выполнять свою работу. Бухгалтеру не нужно следить за всеми остальными ячейками, потому что он работает только с теми листиками бумаги, которые клиент положил ему на стол. Бухгалтер может проверить действительность требуемой бухгалтерской транзакции независимо от других ячеек (нет глобального состояния).

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

Отдельные листики бумаги не зависят друг от друга, поэтому порядок записей, выполняемых бухгалтером, который ведет регистр в данный момент, не имеет значения. Когда бухгалтер возвращает регистр в хранилище, другие бухгалтеры могут проверять записи параллельно.

Независимость конкретной учетной операции от других ячеек (листиков бумаги в ячейках) имеет то преимущество, что она почти наверняка будет успешной, если она прошла локальную проверку пользователем. Пользователь может сам выступить в роли бухгалтера, чтобы проверить, действителен ли его запрос. Это особенно важно для более сложных операций, таких как кредиты и обмен активами (смарт контракты).

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

На данный момент бухгалтеры в сети Cardano работают аналогично сети Ethereum. Главное отличие заключается в том, что бухгалтерам не нужно знать контекст всех листиков бумаги в ячейках других пользователей, чтобы выполнять свою работу. Принцип создания нового набора записей и последующей проверки аналогичен тому, как это делается в сети Ethereum. Один избранный бухгалтер берет регистр к себе на стол из хранилища, чтобы сделать новые записи. Мы увидим больше различий, когда перейдем к новой версии консенсуса Ouroboros PoS.

Варианты масштабируемости по отношению к модели учета

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

В сети Cardano несколько бухгалтеров смогут работать одновременно, и каждый сможет обрабатывать запросы клиентов в своей собственной очереди. Эта возможность будет использоваться в консенсусе PoS под названием Leios. Сеть Cardano сможет заставить бухгалтеров заранее подготовить бухгалтерские транзакции, чтобы один главный бухгалтер мог просмотреть подготовленные записи.

Когда бухгалтер резервирует регистр для себя, он всегда добавляет новые записи (создает новый блок). Это создает список записей, которые затем должны быть проверены другими бухгалтерами (сетевой консенсус). Этот процесс обычно занимает некоторое время (время создания блока), а количество новых записей ограничено (размер блока). Бухгалтеры по очереди делятся регистром друг с другом примерно с интервалом в 20 секунд. Даже если бухгалтер работает, например, одну секунду, остальное время требуется другим бухгалтерам для проверки записей.

Cardano позволит выбранному бухгалтеру (или, возможно, нескольким бухгалтерам) готовить новые записи каждую секунду, а затем позволит главному бухгалтеру выполнить основную проверку (найти и отбросить попытки двойного расходования, удалить дубликаты и т.д.). Это возможно только потому, что работа отдельных бухгалтеров в значительной степени не зависит от результатов работы других бухгалтеров и главного бухгалтера. Независимость исходит из того факта, что листочки бумаги в ячейках независимы друг от друга.

o.aff88384a9324fbaa0d768888d4f21f4

В сети Ethereum масштабируемость должна обрабатываться по-другому. Один и тот же подход не может быть использован, поскольку работа отдельных бухгалтеров взаимозависима. Каждый бухгалтер должен точно знать, что делал предыдущий. Однако эта информация может быть им недоступна из-за времени, необходимого для распространения данных по сети. Ограничением является необходимость блокировки регистра для одного бухгалтера, которому необходимо работать со всеми ячейками, и неспособность других бухгалтеров сделать что-то полезное в то же время. Создание и последующая проверка новых записей (блок) занимают 20 секунд, и в течение этого времени может работать только один бухгалтер. Остальные бухгалтеры бездействуют.

Вывод

Мы надеемся, что наша аналогия помогла вам понять разницу в моделях учета Cardano и Ethereum. На первый взгляд разница не так уж велика, но на самом деле модель бухгалтерского учета влияет на масштабируемость, предсказуемость результата желаемой бухгалтерской операции, предсказуемость размера комиссии, безопасность и т.д.

// От переводчика: для получения дополнительных переведенных на русский язык статей о Cardano посетите русскоязычный раздел на форуме Cardano. Видеоролики о Cardano на русском можно найти на YouTube канале нашего замечательного амбасадора Тимура Сахабутдинова, а также на канале Чарльз Хоскинсон на русском. Хотите поговорить или задать вопрос о Cardano по-русски? Приглашаем вас в наше уютное сообщество в Telegram. Оставайтесь на связи, все только начинается!