Как работает Ripple. Консенсус

#1 2015.08.02 18:52:55

0

При некотором упрощении, Ripple можно представить, как систему транзакций в сети интернет, которая основывается на определённых «договорённостях» между серверами (узлами) сети Ripple. Сердцем системы является «реестр» (ledger) в виде распределённой базы данных. Этот реестр - общий между всеми серверами, т.е. у каждого сервера своя копия базы, содержащая информацию о всех аккаунтах сети Ripple. Новый реестр создаётся каждые несколько секунд.

Самый актуальный реестр называется LCL (Last Close Ledger – последний зафиксированный реестр). В любой момент времени LCL является точным отражением состояния всех аккаунтов сети. Транзакция в сети Ripple – это любое предложенное (любым узлом, сервером) изменение реестра, причём инициатором транзакции может быть любой сервер сети. Каждая транзакция распространяется по всей сети активных узлов (серверов) Ripple аналогично ряби на спокойной поверхности водоёма. Получив или сформировав транзакцию, серверы автоматически приходят к консенсусу, какие новые транзакции стоит добавить в реестр, а какие исключить из добавления.

Как же работает консенсус? Давайте разберёмся. Цель консенсуса – добавление одинакового набора новых транзакций к текущему реестру LCL на всех серверах сети. Каждый сервер постоянно обменивается новыми транзакциями с другими серверами сети, а все эти транзакции формируют набор кандидатов, ждущих добавления в реестр.

В то же время каждый сервер получает предполагаемые наборы в кандидаты от других серверов и для предложенного набора транзакций будет решаться, добавлять ли их в реестр. Сервер принимает предлагаемые наборы от так называемого списка уникальных узлов (UNL – unique node list). Этот список (список внешних серверов) есть у каждого сервера, а предлагаемые наборы от других серверов, отсутствующих в списке UNL, игнорируются. Транзакции из предлагаемых наборов сравниваются с набором кандидатов самого сервера.

Если транзакция из предлагаемого набора присутствует в кандидатах, она получает один голос за добавление. Сервер продолжает сравнивать предложения с набором кандидатов, пока не истекает время. Затем сервер берёт транзакции, которые получили не менее 50% голосов и формирует из них свой новый предлагаемый набор. Это предложение распространяется к другим серверам по всей сети.

Затем процесс повторяется, но с важной разницей – необходимый для попадания в набор кандидатов, процент голосов увеличивается до 60%. Сервер опять получает предлагаемые наборы и рассматривает их, только если они поступили от серверов из списка UNL, а затем сравнивает их со своим набором кандидатов. Транзакции с подтверждением не менее 60% формируют новый предлагаемый набор и рассылаются по сети. По истечению установленного времени порог подтверждения устанавливается на 70%. С каждым шагом (итерацией) предлагаемые наборы становятся всё более и более похожи друг на друга, а количество подтверждений увеличивается.

В результате этого процесса спорные транзакции неизбежно отбраковываются, в то время как принятые множеством серверов транзакции включаются в предлагаемый набор. Разница между предлагаемыми наборами быстро стремится к нулю - в этом случае считается, что сеть пришла к консенсусу. Сервер знает, что состояние считается консенсусом, если для каждого кандидата как минимум 80% голосов положительны, т.е. 80% серверов сети считают набор кандидатов корректным (валидным). В данном случае 80% - это порог, задающий математическую определённость. Когда набор достигает порога 80%, сервер утверждает его, уведомляет об этом сеть и останавливает процесс консенсуса. Утверждённый набор транзакций добавляется к реестру LCL, а все сомнительные транзакции с меньшим рейтингом отбрасываются.

Таким образом создаётся новый реестр LCL с консенсусом всех серверов сети Ripple. Транзакции, не включённые в реестр, остаются в наборе кандидатов. Туда же попадают и все новые транзакции, полученные сервером во время консенсуса, а затем процесс начинается заново. Такая непрерывная цикличная работа сети позволяет проводить транзакции за достаточно небольшой промежуток времени с сохранением высокой степени достоверности.
Отредактировано: Panda 2022.08.16 08:11:27
#2 2015.08.02 19:26:07

0

«Линии доверия» и шлюзы

Мы разобрались в том, как проходят транзакции и как работает сеть Ripple. Но как она взаимодействует с «внешним миром»? Для этого существуют так называемые «шлюзы» - связующее звено между сетью Ripple и магазинами, обменниками и любыми другими сервисами, позволяющие вам совершать покупки «в один клик» за считанные секунды. Чтобы воспользоваться шлюзом, вам нужно или иметь кошелёк, активированный на сайте RippleTrade (подробнее о регистрации и активации кошелька Ripple мы расскажем в следующей статье) или отправить деньги шлюзу путём банковского перевода, кредитной карточки или любой другой поддерживаемой платёжной системой.

При этом шлюз выдаёт вам на сумму ваших активов своего рода «универсальный вексель», которым вы можете пользоваться внутри сети в пределах предоставляемой шлюзом линией доверия при совершении всех своих операций.

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

Вообще, оплатить можно в любой валюте, вне зависимости от того, какая на данный момент имеется у вас в кошельке. В этом случае будет произведена автоматическая конвертация через доверенные шлюзы, по оптимальному курсу, и оплата будет произведена в нужной валюте.
Отредактировано: Panda 2022.08.16 08:12:27