В основном я предлагаю идею ниже, потому что я чувствую, что блокчейн — это излишество, но я предполагаю, что я что-то упускаю. Так что, если кто-то может указать на недостаток ниже, я был бы очень признателен.
Предположим, есть альтернативная архитектура:
Каждый пользователь ведет полный реестр не всех исторических транзакций, а текущего баланса каждого другого пользователя. Чтобы отправить монету, я бы просто разослал каждому узлу сообщение о том, кому пойдут деньги и сколько. Затем, используя мой адрес (открытый ключ), все остальные узлы могут определить, действительно ли сообщение пришло от меня, и если да, то изменить свою копию леджера. В качестве защиты от двойных расходов, прежде чем произойдет это изменение, каждый узел будет опрашивать другие узлы и проверять, получило ли большинство одно и то же сообщение. Если присутствуют две транзакции, он будет проводить самую раннюю сделку с отметкой времени (или ту, которая, по мнению большинства, будет первой), а затем принять или отклонить более позднюю в зависимости от баланса.
Проблемы:
1) Атака Sybil (на самом деле это огромная атака, которая применялась десятилетиями во всех видах приложений). Другие ответы уже упоминали об этом. Что такое большинство, если один злоумышленник может легко притвориться 10 миллионами узлов?
Биткойн заставляет (майнинговые) узлы выполнять Proof of Work, и учитывается количество (неподдающейся подделке) выполненной работы, а не количество (легко подделываемых) узлов.
2) Отметка времени? Не существует такого понятия, как «самая ранняя сделка с отметкой времени». Транзакции поступают на разные узлы в разное время. Доверяете ли вы отметке времени, которую прикрепленный поставил внутри транзакции, или вы слушаете большинство (см. 1).
Обратите внимание, что Биткойн решает, что является «самым ранним», создавая глобальные часы, которые бьют очень неравномерно, но в среднем каждые 10 минут.
3) Первоначальная загрузка. Где в вашей системе новый узел получит текущую бухгалтерскую книгу? От большинства? (См. 1) Биткойн решает эту проблему, сохраняя историю, поэтому, пока вы начинаете с начального блока генезиса, вы придете к текущему реестру, не доверяя никому.
4) Поддержание баланса на самом деле не более эффективно, если вам небезразлична псевдонимная природа Биткойна. Каждый адрес должен быть уникальным, поэтому, если вы сохраните баланс для каждого адреса, он все равно будет большим. Конечно, вы можете сбросить нулевой баланс, но Биткойн делает это и в наборе UTXO. После проверки старые блоки больше не имеют значения. Они архивируются на диске или даже удаляются (обрезаются). Так что 50 ГБ блоков в любом случае больше не имеют значения.
Что-то, что вы должны объяснить, это то, что вы должны определить, как узлы могут присоединиться к сети. Если нет барьера для входа, кто-то может создать достаточно узлов, чтобы стать большинством, а затем удвоить расходы.
Другое дело, что вы описали клиринговый механизм, а не эмиссионный. Как деньги попадают в систему в начале и на всем протяжении?
Ник Оделл
Nob0dySp3cial
Ник Оделл
Наюки