В предыдущем посте мы рассказали о некоторых основных изменениях в клиентских библиотеках и о том, как они упрощают разработку на IOTA. В этом посте мы более подробно рассмотрим концепцию адресов условного депозита (CDA).
CDA - это специальные адреса, которые позволяют указать условия, при которых они остаются пригодными для использования. Пока указанные вами условия удерживаются, CDA можно использовать для снятия средств и депозитов.
Основное использование CDA - избежать повторного использования адресов. Когда вы запрашиваете IOTA у стороны, вы создаете CDA, который активен в течение определенного периода времени и может указывать точное количество IOTA. Таким образом, вы сообщаете о намерении отправителю, который затем принимает решение о внесении депозита. Упрощенный поток:
- Вы создаете CDA.
- При создании CDA вы указываете такие условия, как тайм-аут - в течение которого CDA остается действительным и на который может быть внесен депозит. Или сумма - сколько IOTA вы ожидаете, что отправитель внесет на этот адрес.
- Вы передаете CDA депоненту через выбранный вами носитель и сериализуете как объект по вашему выбору, например, как QR-код, буфер протокола или магнитную ссылку.
- Депонент либо отправляет токены по адресу, указанному в CDA, либо запрашивает новый CDA, если, например, срок действия CDA уже истек.
CDA - это простые описательные объекты, которые можно сериализовать в любой формат. Вот как выглядит магнитная ссылка CDA, например:
iota://GODULTSVAVRXBJFKTAEAJTULFKJUHIMKKVBCS9TJCNBWEVWFHAAVKVKLABMYTSK9EKWPMZJUVHAKGULLDAMABAGQIZ/?timeout_at=1554372484&expected_amount=1000
Библиотеки могут анализировать магнитную ссылку, и отправка по полученной вами ссылке может быть такой же простой, как:
account.sendToCDA({ magnetLink: magnetLink }) .then() .catch();
Попробуйте адреса условного депозита
Чтобы продемонстрировать эту концепцию, Лука Мозер создал веб-приложение, которое работает как веб-кошелек (обратите внимание - оно запускается в devnet с использованием тестовых токенов):
- Зайдите на сайт Sigma Wallet.
- Завести аккаунт.
- Создайте адрес в веб-кошельке с суммой 1000.
- Нажмите кнопку КОПИРОВАТЬ АДРЕС RAW и используйте ее для получения средств из крана Devnet. Средства должны быть доступны в ближайшее время, как вы можете видеть в разделе Баланс.
- Создайте новый адрес в веб-кошельке и нажмите «КОПИРОВАТЬ ССЫЛКУ НА МАГНИТ».
- Вы можете вставить эту магнитную ссылку в адресное поле раздела «Отправить» кошелька и отправить определенную сумму себе.
Если вы указали количество IOTA при генерации CDA, IOTA станут доступны на вашем балансе, как только они появятся. В противном случае они будут заблокированы до истечения срока действия CDA, который в данном случае составляет 30 минут.
Адреса пожертвований и другие сценарии
Один из сценариев, поддерживаемых CDA, - это реализация фиксированных адресов для пожертвований. Вы показываете CDA на своем веб-сайте, например, в виде QR-кода. И каждый раз, когда истекает текущий CDA, скажем, в последние 48 часов действия CDA, вы генерируете новый и отображаете новый QR-код. Оставляя достаточно места для безопасного входа уже входящих транзакций и гарантируя, что все новые пожертвования будут получены новым CDA.
Вы можете увидеть пример такого подхода, реализованного в Go, в этом PoC-репозитории пожертвований.
Подробнее о клиентских библиотеках читайте в нашей документации. Или получите библиотеки из соответствующих репозиториев:
Спасибо!