Рубрики
Без рубрики

Базовые строительные блоки – фиатные токены

Требуется доступ к бета-версии Это приложение Radix в настоящее время находится в стадии предварительного тестирования, а код – нет… Помеченный блокчейном, dlt, java, javascript.

Требуется доступ к бета-версии Это приложение Radix в настоящее время проходит предварительное тестирование, и код еще не доступен на нашем github, если вы хотите получить ранний доступ, чтобы немедленно начать тестирование, или просто хотите получить информацию, когда оно будет готово к использованию, пожалуйста, зарегистрируйтесь через эту форму: https://radixdlt.typeform.com/to/QUOiQJ В настоящее время мы ожидаем, что этот код станет общедоступным к концу июля 2019 года.

В этом документе мы представляем подробное описание эталонной реализации фиатного токена (FT) и рассматриваем процессы чеканки, записи и отправки, лежащие в ее основе.

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

Для этого сценария использования мы выбрали Prime Trust в качестве нашего технологического партнера, поскольку они являются надежным участником отрасли и могут предоставить нам мощный, изолированный API-интерфейс банка хранения и подробную техническую документацию .

Система фиатных токенов была разработана как модульное решение, состоящее из нескольких взаимосвязанных компонентов:

– Веб-сервер – Служба монетного двора токенов – Интерфейс хранителя – Почтовый сервер – Учетные записи Radix -Клиентская библиотека Radix – Кошелек службы Radix -Radix мобильный/настольный кошелек

Служба FT предоставляет API REST, на который может быть нацелен непосредственно любой клиент. Он также содержит веб-приложение по умолчанию, которое использует вышеупомянутый API. Как API REST, так и веб-приложение обслуживаются этим внутренним веб-сервером.

Пользовательский интерфейс веб-приложения по умолчанию ( VueJS + Bulma ) обслуживается через встроенный веб-сервер NanoHttpd . Это позволяет зарегистрированному пользователю входить в систему и переводить средства между учетной записью Prime Trust (учетной записью хранителя) и адресом кошелька Radix, а также просматривать балансы и исторические транзакции.

Служба обмена содержит основную бизнес-логику. Этот компонент прослушивает транзакции, отправленные на кошелек Radix сервиса или учетную запись Хранителя. Когда служба обмена обнаружит новый перевод токенов в кошелек Radix, она сожжет эти токены и отправит соответствующее количество фиатных активов на учетную запись Хранителя пользователя (в нашем случае учетная запись PrimeTrust, назначенная пользователю, где он может хранить свои доллары США на хранение). Когда он обнаружит новый денежный перевод, сервис вместо этого отчеканит пропорциональное количество токенов и отправит его на кошелек пользователя Radix.

Этот компонент представляет собой слой абстракции поверх API REST Primetrust. Этот компонент позволяет службе монетного двора взаимодействовать с инфраструктурой Хранителя. Интеграция с другим поставщиком услуг активов потребует просто написания новой реализации для этого уровня.

Уровень абстракции вокруг API PrimeTrust в значительной степени зависит от OKHTTP в качестве транспортного механизма.

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

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

Помимо личной учетной записи пользователя Radix, службе кражи требуется собственная учетная запись Radix для чеканки и записи токенов.

С открытым исходным кодом Клиентская библиотека Java обеспечивает простой доступ к распределенному реестру Radix из Java-проектов. Служба кражи использует клиентскую библиотеку Java для обработки всех необходимых взаимодействий с бухгалтерской книгой Radix.

Служба фиатных токенов имеет кошелек, связанный с собственной учетной записью Nadex, для получения, хранения, чеканки и обработки запрошенных фиатных токенов.

Radix предоставляет любому пользователю полностью децентрализованный мобильный и рабочий стол кошелек, связанный с их учетной записью Radix. С помощью этих кошельков пользователь может отправлять, хранить и получать фиатные токены от сервиса FT.

Система фиатных токенов обеспечивает простые рабочие процессы для следующих поездок пользователей:

1.Ввод наличных 2.Создание фиатных токенов 3.Вывод фиатных токенов 4.Внесение фиатных токенов 5.Вывод наличных

Если пользователь хочет перевести наличные со своего личного банковского счета на услугу FT:

1.Пользователь получает доступ к своему личному банковскому счету 2.Пользователь переводит желаемую сумму в долларах США на свой счет Хранителя 3.Инфраструктура Хранителя отправляет обратный вызов службе FT, как только транзакция будет произведена. 4.Служба FT получает уведомление и обновляет баланс денежных средств.

Как только пользователь решает конвертировать активы в долларах США для ИСПОЛЬЗОВАНИЯ фиатных токенов, вступает в действие следующий рабочий процесс:

1.Сервис кражи переводит запрошенную сумму наличных денег со счета Хранителя пользователя на счет Хранителя сервиса. 2.Инфраструктура Хранителя отправляет обратный вызов службе FT, как только транзакция будет произведена. 3.Затем служба кражи чеканит соответствующее количество токенов JUST и отправляет их на кошелек пользователя Radix. 4.Когда бухгалтерская книга отвечает состоянием “успешно”, веб-приложение обновляется, и пользователю отправляется уведомление по электронной почте.

Теперь пользователь может выводить эти токены по мере необходимости.

Когда пользователь решает вывести фиатные токены UST на свой личный кошелек, применяется следующий рабочий процесс:

1.Пользователь указывает сумму для вывода и адрес получателя 2.Служба кражи переводит токены UST с кошелька пользователя ABT на указанный адрес назначения. 3.Пользователь получает токены UST на свой собственный кошелек Radix.

Если пользователь хочет внести фиатные токены со своего личного кошелька обратно в сервис FT:

1. Пользователь открывает свой личный кошелек Radix 2.Пользователь отправляет желаемое количество токенов обратно на адрес своего кошелька ABT Radix 3.Сервис ABT получает токены UST и сохраняет их доступными на кошельке пользователя FT для будущих транзакций.

Если пользователь хочет конвертировать токены UST обратно в активы в долларах США, рабочий процесс выглядит следующим образом:

1.Сервис кражи переводит токены UST с кошелька пользователя FT Radix на кошелек сервиса Radix. 2.Сервис кражи обнаруживает транзакцию на кошелек сервиса, сжигает полученные токены и отправляет соответствующую сумму активов в долларах США на счет хранителя пользователя. 3.Веб-приложение обновляется с новым балансом, и по электронной почте отправляется сообщение с подтверждением.

Теперь пользователь может выбрать вывод средств на свой личный банковский счет.

Служба FT отслеживает выделенный банковский счет PrimeTrust и соответствующий выделенный базовый адрес. Как только он обнаруживает транзакцию активов с учетной записью Prime Trust, он ищет отправителя в базе данных пользователей. Если отправитель найден, соответствующее количество токенов чеканится и отправляется в кошелек Radix указанных пользователей.

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

Чтобы упростить задачу, в этой демонстрационной реализации мы имеем дело только с внутренними денежными переводами PrimeTrust. Кроме того, сервис предназначен для того, чтобы быть “владельцем” как учетной записи Prime Trust пользователей, так и кошелька Radix. Это значительно облегчает обработку последнего закрытого ключа. Когда пользователь хочет обменять активы на токены (или наоборот), он или она просто просит демонстрационный сервис выполнить необходимые транзакции от его/ее имени.

В сервисе, готовом к производству, эти предположения не обязательно будут верными, и поэтому потребуется какой-то четко определенный способ для пользователя предоставить ссылку на транзакцию, служащую методом псевдоидентификации. Кроме того, любые программы “Знай своего клиента” (KYC) и борьбы с отмыванием денег (AML) потребуют гораздо более подробной информации о пользователе перед обработкой этих транзакций.

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

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

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

общедоступная одинарная < Строка > в токены( Строковый идентификатор пользователя, десятичная сумма, Строковый идентификатор передачи активов) { Основной адрес.getmyaddress(); Токен.of(Адрес службы, “UST”); Строка + “/” + Идентификатор передачи активов + “/монетный двор”; Действие.создать(токен, сумма); Действие putuniqueidaction(Адрес службы, уникальный идентификатор); Действие atomicaction(mintaction, уникальное действие); возврат radixApplicationApi .выполнить(атомарное действие). Быть завершенным () .() .тайм-аут(20 СЕКУНД) .toSingleDefault(идентификатор актива); }

В приведенном выше фрагменте кода мы создаем атомарное действие для выполнения в бухгалтерской книге. Операция состоит из двух частей:

-фактическая чеканка токенов, -прикрепление к ним определенного уникального идентификатора.

Используя идентификатор передачи активов Prime Trust в качестве части уникального идентификатора, мы не только обеспечиваем связь “один к одному”, но и синхронизируем две инфраструктуры (банк и бухгалтерскую книгу), и мы делаем это с помощью всего нескольких строк кода. Дополнительной привлекательной особенностью уникального идентификатора является то, что его уникальность обеспечивается только по указанному адресу (адрес службы в приведенном выше примере). Обычно мы можем применять уникальные идентификаторы только для наших собственных адресов, что не позволяет нам загрязнять другие части реестра нашими уникальными идентификаторами.

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

общедоступные одиночные < Строка > токены отправки( Строковый идентификатор пользователя, десятичная сумма, Строковый адрес, строковый идентификатор передачи активов) { radixaddress.from(адрес); radIxAddress.getMyAddress(); Токен.of(от, “UST”); Строка + “/” + Идентификатор передачи активов + “/отправить”; Действие.создать(от, до, сумма, принято); Действие Поместить уникальный идентификатор Действия(от, уникальный идентификатор); Действие Атомарное действие(mintaction, uniqueidaction); вернуть radixApplicationApi .выполнить(атомарное действие) .Завершить () .() .тайм-аут(20 СЕКУНД) .toSingleDefault(идентификатор передачи); }

Опять же, мы используем тот же идентификатор передачи Prime Trust в вашем действии отправки, что и в нашем действии mint, чтобы убедиться, что мы не отправляем токены более одного раза для любой передачи активов.

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

Если мы слишком стремимся добиться успешного результата, мы можем – теоретически – оказаться в ситуации, когда библиотека Java Radix по любой уважительной причине временно может потерять соединение с узлом, на котором были отчеканены некоторые токены, и немедленно повторно подключиться к другому узлу, который еще не знает об успешно отчеканенных токенах. Затем этот узел, например, покажет баланс кошелька, отличный от баланса нашей исходной заметки, до тех пор, пока на него не будет распространено успешное действие монетного двора.

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

Телеграмма для общего чата ​Discord для чата разработчиков Reddit для общего обсуждения Форум для технического обсуждения ​ Твиттер для объявлений Электронная почта рассылка новостей для еженедельных обновлений Отправить по почте hello@radixdlt.com для общих запросов

Оригинал: “https://dev.to/radixdlt/radix-building-blocks-fiat-tokens-f4j”