В предыдущем посте мы рассказали о некоторых основных изменениях в клиентских библиотеках и о том, как они упрощают разработку на IOTA. В этом посте мы более подробно рассмотрим концепцию адресов условного депозита (CDA).

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

Основное использование CDA - избежать повторного использования адресов. Когда вы запрашиваете IOTA у стороны, вы создаете CDA, который активен в течение определенного периода времени и может указывать точное количество IOTA. Таким образом, вы сообщаете о намерении отправителю, который затем принимает решение о внесении депозита. Упрощенный поток:

  1. Вы создаете CDA.
  2. При создании CDA вы указываете такие условия, как тайм-аут - в течение которого CDA остается действительным и на который может быть внесен депозит. Или сумма - сколько IOTA вы ожидаете, что отправитель внесет на этот адрес.
  3. Вы передаете CDA депоненту через выбранный вами носитель и сериализуете как объект по вашему выбору, например, как QR-код, буфер протокола или магнитную ссылку.
  4. Депонент либо отправляет токены по адресу, указанному в CDA, либо запрашивает новый CDA, если, например, срок действия CDA уже истек.

CDA - это простые описательные объекты, которые можно сериализовать в любой формат. Вот как выглядит магнитная ссылка CDA, например:

iota://GODULTSVAVRXBJFKTAEAJTULFKJUHIMKKVBCS9TJCNBWEVWFHAAVKVKLABMYTSK9EKWPMZJUVHAKGULLDAMABAGQIZ/?timeout_at=1554372484&expected_amount=1000

Библиотеки могут анализировать магнитную ссылку, и отправка по полученной вами ссылке может быть такой же простой, как:

account.sendToCDA({
    magnetLink: magnetLink
})
    .then()
    .catch();

Попробуйте адреса условного депозита

Чтобы продемонстрировать эту концепцию, Лука Мозер создал веб-приложение, которое работает как веб-кошелек (обратите внимание - оно запускается в devnet с использованием тестовых токенов):

  1. Зайдите на сайт Sigma Wallet.
  2. Завести аккаунт.
  3. Создайте адрес в веб-кошельке с суммой 1000.
  4. Нажмите кнопку КОПИРОВАТЬ АДРЕС RAW и используйте ее для получения средств из крана Devnet. Средства должны быть доступны в ближайшее время, как вы можете видеть в разделе Баланс.
  5. Создайте новый адрес в веб-кошельке и нажмите «КОПИРОВАТЬ ССЫЛКУ НА МАГНИТ».
  6. Вы можете вставить эту магнитную ссылку в адресное поле раздела «Отправить» кошелька и отправить определенную сумму себе.

Если вы указали количество IOTA при генерации CDA, IOTA станут доступны на вашем балансе, как только они появятся. В противном случае они будут заблокированы до истечения срока действия CDA, который в данном случае составляет 30 минут.

Адреса пожертвований и другие сценарии

Один из сценариев, поддерживаемых CDA, - это реализация фиксированных адресов для пожертвований. Вы показываете CDA на своем веб-сайте, например, в виде QR-кода. И каждый раз, когда истекает текущий CDA, скажем, в последние 48 часов действия CDA, вы генерируете новый и отображаете новый QR-код. Оставляя достаточно места для безопасного входа уже входящих транзакций и гарантируя, что все новые пожертвования будут получены новым CDA.

Вы можете увидеть пример такого подхода, реализованного в Go, в этом PoC-репозитории пожертвований.

Подробнее о клиентских библиотеках читайте в нашей документации. Или получите библиотеки из соответствующих репозиториев:

Спасибо!