pbft - это согласованный алгоритм, предложенный Барбарой Лисков и Мигелем Кастро в 1999 году для предотвращения злонамеренных атак, поскольку злонамеренные атаки и ошибки программного обеспечения могут привести к тому, что неисправные узлы будут проявлять византийское (то есть произвольное) поведение. pBFT был разработан для эффективной работы в асинхронных системах по сравнению с предыдущими алгоритмами bft, которые работали только на синхронных системах.
здесь - исследовательская работа, в которой говорится, что
Практический алгоритм репликации конечного автомата, который допускает византийские ошибки. Алгоритм обеспечивает как жизнеспособность, так и безопасность при условии, что самое большее ⌊n-1 / 3⌋
из общего количества реплик одновременно являются неисправными. Это означает, что клиенты в конечном итоге получают ответы на свои запросы, и эти ответы являются правильными в соответствии с линеаризуемостью. Алгоритм работает в асинхронных системах, таких как Интернет, и включает в себя важные оптимизации, которые позволяют ему эффективно выполнять
Двойные траты - это потенциальный недостаток в цифровой или электронной кассовой схеме, в которой один и тот же цифровой токенможно потратить более одного раза. В отличие от физических денег, цифровой токен состоит из цифрового файла, который может быть продублирован или фальсифицирован.
Атака с двойным расходом - это потенциальная атака на криптовалюты, которая произошла с несколькими криптовалютами, например, из-за атаки на 51%.
Но эту проблему можно предотвратить, используя согласованные алгоритмы и блокчейн
Если две транзакции пытаются использовать одинаковые токены, каждая из них сочтет первую транзакцию, которую она считает действительной, а другую -инвалид. Как только узлы расходятся во мнениях, невозможно определить истинные балансы, так как наблюдения каждого узла считаются одинаково действительными, способ вернуть узлы обратно в синхронизацию - использовать согласованные алгоритмы, а с помощью блокчейна транзакции в этой системе технически никогда не являются «окончательными»поскольку конфликтующая цепочка блоков всегда может перерасти текущую каноническую цепочку, однако, поскольку блоки строятся поверх транзакции, становится все менее вероятным / дорогостоящим для другой цепочки обойти ее и, следовательно, предотвратить проблему двойных расходов.