Сообщения
Сообщения Z-Text -- это блокчейн-транзакции. Каждое сообщение зашифровано, неизменно и устойчиво к цензуре.
Отправка сообщений
Чтобы отправить сообщение, откройте беседу с контактом, прошедшим рукопожатие, и введите текст. Приложение зашифрует его общим ключом и транслирует как экранированную транзакцию в блокчейне BitcoinZ.
- Откройте беседу из вкладки Сообщения
- Введите сообщение в поле ввода
- Нажмите кнопку отправки -- сообщение шифруется локально
- Создаётся экранированная транзакция и транслируется в сеть
- Сообщение доставляется почти мгновенно через push-уведомление G-stream из мемпула (обычно 1-5 секунд)
Доставка сообщений
Сообщения доставляются почти мгновенно через push-уведомление G-stream из мемпула. Когда транзакция транслируется, G-stream отправляет непрочитанное memo на устройство получателя в течение 1-5 секунд. Подтверждение блока следует позже для постоянной фиксации в блокчейне.
| Статус | Значение |
|---|---|
| Отправка | Транзакция создаётся и подписывается |
| В ожидании | Транзакция транслирована в мемпул |
| Доставлено | Push-уведомление G-stream из мемпула получено адресатом |
| Подтверждено | Транзакция включена в блок для постоянной фиксации |
Протокол рукопожатия
Прежде чем вы сможете написать кому-либо, необходимо выполнить криптографическое рукопожатие. Оно устанавливает общий секретный ключ, который обе стороны используют для шифрования сообщений.
- Инициация -- вы отправляете запрос на рукопожатие, содержащий ваш публичный ключ, встроенный в экранированную транзакцию
- Ответ -- получатель принимает, отправляя свой публичный ключ в другой экранированной транзакции
- Выведение ключа -- оба клиента вычисляют общий секрет с помощью обмена ключами Diffie-Hellman
- Готово -- общий секрет сохраняется локально и используется для шифрования/расшифровки всех будущих сообщений
Бездоверительная верификация
Рукопожатие является бездоверительным -- ни один сервер не опосредует обмен ключами. Оба публичных ключа передаются через экранированные транзакции, поэтому даже обмен ключами невидим для наблюдателей.
Шифрование
Z-Text использует двухуровневую модель шифрования:
- Уровень 1 -- экранирование zk-SNARK: memo транзакции (содержащее ваше сообщение) шифруется встроенным механизмом экранированных транзакций блокчейна. Только z-address отправителя и получателя могут его расшифровать.
- Уровень 2 -- шифрование общим ключом: перед размещением в поле memo ваше сообщение дополнительно шифруется общим ключом, установленным во время рукопожатия. Это означает, что даже если кто-то скомпрометирует ключ просмотра z-address, он всё равно не сможет прочитать сообщения без ключа, полученного при рукопожатии.
Стикеры
Z-Text поддерживает отправку стикеров в беседах. Стикеры кодируются и встраиваются в memo транзакции так же, как текстовые сообщения. Приложение включает встроенный набор стикеров, а премиум-пользователи получают доступ к дополнительным наборам.
Ограничения сообщений
Поскольку сообщения хранятся в memo транзакций, существует ограничение на количество символов в сообщении, определяемое размером поля memo блокчейна. Для более длинных сообщений приложение автоматически разбивает содержимое на несколько транзакций и собирает их воедино на стороне получателя.
Премиум: ускоренные сообщения
Премиум-подписчики получают приоритетную ретрансляцию транзакций, что может сократить время доставки сообщений за счёт маршрутизации через оптимизированную инфраструктуру нод.