Z-TextДокументация

Сообщения

Сообщения Z-Text -- это блокчейн-транзакции. Каждое сообщение зашифровано, неизменно и устойчиво к цензуре.

Отправка сообщений

Чтобы отправить сообщение, откройте беседу с контактом, прошедшим рукопожатие, и введите текст. Приложение зашифрует его общим ключом и транслирует как экранированную транзакцию в блокчейне BitcoinZ.

  1. Откройте беседу из вкладки Сообщения
  2. Введите сообщение в поле ввода
  3. Нажмите кнопку отправки -- сообщение шифруется локально
  4. Создаётся экранированная транзакция и транслируется в сеть
  5. Сообщение доставляется почти мгновенно через push-уведомление G-stream из мемпула (обычно 1-5 секунд)

Доставка сообщений

Сообщения доставляются почти мгновенно через push-уведомление G-stream из мемпула. Когда транзакция транслируется, G-stream отправляет непрочитанное memo на устройство получателя в течение 1-5 секунд. Подтверждение блока следует позже для постоянной фиксации в блокчейне.

СтатусЗначение
ОтправкаТранзакция создаётся и подписывается
В ожиданииТранзакция транслирована в мемпул
ДоставленоPush-уведомление G-stream из мемпула получено адресатом
ПодтвержденоТранзакция включена в блок для постоянной фиксации

Протокол рукопожатия

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

  1. Инициация -- вы отправляете запрос на рукопожатие, содержащий ваш публичный ключ, встроенный в экранированную транзакцию
  2. Ответ -- получатель принимает, отправляя свой публичный ключ в другой экранированной транзакции
  3. Выведение ключа -- оба клиента вычисляют общий секрет с помощью обмена ключами Diffie-Hellman
  4. Готово -- общий секрет сохраняется локально и используется для шифрования/расшифровки всех будущих сообщений

Бездоверительная верификация

Рукопожатие является бездоверительным -- ни один сервер не опосредует обмен ключами. Оба публичных ключа передаются через экранированные транзакции, поэтому даже обмен ключами невидим для наблюдателей.

Шифрование

Z-Text использует двухуровневую модель шифрования:

  • Уровень 1 -- экранирование zk-SNARK: memo транзакции (содержащее ваше сообщение) шифруется встроенным механизмом экранированных транзакций блокчейна. Только z-address отправителя и получателя могут его расшифровать.
  • Уровень 2 -- шифрование общим ключом: перед размещением в поле memo ваше сообщение дополнительно шифруется общим ключом, установленным во время рукопожатия. Это означает, что даже если кто-то скомпрометирует ключ просмотра z-address, он всё равно не сможет прочитать сообщения без ключа, полученного при рукопожатии.

Стикеры

Z-Text поддерживает отправку стикеров в беседах. Стикеры кодируются и встраиваются в memo транзакции так же, как текстовые сообщения. Приложение включает встроенный набор стикеров, а премиум-пользователи получают доступ к дополнительным наборам.

Ограничения сообщений

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

Премиум: ускоренные сообщения

Премиум-подписчики получают приоритетную ретрансляцию транзакций, что может сократить время доставки сообщений за счёт маршрутизации через оптимизированную инфраструктуру нод.