Термины Путь перевода Что не можем Вопросы
Mitilena Mitilena Wallet Cold crypto wallet
ONLINE · 22,000+ COINS Создать кошелекСоздать
Как это устроено · путь перевода за 7 шагов

Мы не можем потратить ваши деньги. Сейчас покажем, где именно это ломается.

Перевод в Mitilena проходит семь шагов. Ключ от ваших денег нужен ровно на одном из них — и он происходит на вашем устройстве. На сервер уходит уже подписанный результат, который нельзя переписать.

Подпись транзакции на устройстве Сервер видит только подпись Некастодиальный кошелёк — ключ у вас
Семь шагов, одна подпись
01Выбираете адрес отправителяничего секретного02Указываете получателяпубличные данные03Считаем комиссиюключ не нужен04Собираем черновикеще не деньги05Подпись на вашем устройствеединственный шаг с ключом06На сервер уходит результатподписанный конверт07Запись в историюбез имени и IP
Ваше устройство
собрали и подписали
ключ участвует только здесь
подписанная транзакция
Сервер Mitilena
передал в сеть, ключа не видит
хэш возвращается вам
Блокчейн
записал · видит адреса, не людей
Три слова, без которых дальше непонятно

Адрес

Это как номер счёта. Его можно показывать кому угодно — на него принимают деньги. Он не говорит, кто вы: в блокчейне нет графы «имя».

Приватный ключ

Это ваша подпись. Не пароль от личного кабинета, а именно подпись: у кого ключ, тот и распоряжается монетами на адресе. Приватный ключ где хранится — только у вас; нам его не показывают и у нас его нет.

Транзакция

Это поручение: «с адреса А на адрес Б перевести столько-то». Само по себе оно ничего не стоит, пока под ним нет подписи. Сеть принимает только подписанное.

Путь перевода

Как кошелёк отправляет криптовалюту: семь шагов — и ровно один с ключом

Каждый шаг — сначала простыми словами, потом одна строка «под капотом» с техникой. Новичок её пропускает, технарь читает только её. Всё сверено с кодом кошелька и бэкенда — без домыслов.

Шаг 01

Вы выбираете, с какого адреса платите

Вы открываете список кошельков и выбираете тот, с которого уйдут деньги. В этот момент ничего секретного не происходит: приложение просто берёт строку адреса.

Где лежат ваши адреса. Без регистрации — только на вашем устройстве, в локальном хранилище браузера или приложения, рядом с балансами и настройками. Ни один адрес к нам не уходит: мы даже не знаем, что вы есть. Если завели аккаунт (почта, Google или Apple) — на сервер уезжает адрес и только адрес, чтобы список совпадал на телефоне и компьютере. Приватный ключ в аккаунт не попадает: для него там просто нет места в коде.

Под капотомСписок кошельков - JSON в localStorage под ключом walletsWithCryptoIds. При регистрации адрес добавляется сокетом addSpecificWalletToUser и привязывается к хэшу пользователя. В объекте, который уходит на сервер, поля для приватного ключа нет вообще.
Поле «Из» — строка адреса и баланс из блокчейна. Больше кошельку на этом шаге ничего не нужно.
Без регистрации
Адреса только на вашем устройстве. Мы не знаем, что вы есть.
С аккаунтом
На сервер уходит адрес и только адрес. Поля для ключа нет.
Шаг 02

Вы указываете, кому отправляете

Адрес получателя можно вставить из буфера, отсканировать QR или взять из адресной книги. Книга строится из ваших же переводов: приложение отправляет список ваших адресов в этой сети и получает обратно тех, кому вы с них уже платили. Мы не собираем «контакты» и не просим доступ к телефонной книге.

Имена и звёздочки — только у вас. Подпись «Маме» или «Поставщик» и закреплённые адреса лежат в локальном хранилище устройства — на сервере их нет. Пока вы печатаете, кошелёк проверяет адрес по правилам сети: длину, формат, контрольную сумму. Опечатка не пройдёт дальше поля ввода.

Под капотомСокет getAddressBook делает выборку из таблицы txs по условию «отправитель - один из ваших адресов» и отдает до трех последних переводов на каждого получателя. Метки и избранное - ключи mitilenaAddrLabels_v1 и mitilenaAddrFavs_v1 в localStorage.
Плашка «адрес живой»: баланс и активность получателя. Это публичные данные — их может посмотреть любой по любому адресу.
Что показывает плашка
Баланс отправляемой монеты; для токена — ещё и «родную» монету сети (иначе получателю нечем платить комиссию); и сколько транзакций адрес уже видел.
Шаг 03

Считаем комиссию — и ключ для этого не нужен

Комиссия сети криптовалюта не фиксированная: её платят сети за то, что перевод включат в блок. Чтобы показать честное число, нужно спросить сеть. Наружу уходят ваш адрес, адрес получателя и сумма. Ни ключа, ни подписи — ничего, чем можно распорядиться деньгами.

Почему это безопасно. Это чтение, а не действие: спросить «сколько сейчас стоит перевод» — всё равно что глянуть на табло вылетов. Никакое чтение не спишет монеты: списание бывает только по подписи.

Три скорости. Вы выбираете: медленнее и дешевле или быстрее и дороже. Это не наша наценка — комиссия целиком уходит майнерам и валидаторам сети. Mitilena за перевод ничего не берёт.

Под капотомБазовые уровни комиссии - сокет getFee, и ваш адрес в этот запрос не передается вообще, только идентификатор сети. Адресные данные - отдельные вызовы: getBtcUnspent и соседние, getTronResources, getXrpAccountStatus, getTonFee. Ставка EVM-сетей берется у ноды методом eth_gasPrice.
Слайдер комиссии: 1-4 sat/vB при размере 374 vBytes. Все эти числа сеть отвечает без ключа.
Что именно спрашиваем — по сетям
BTC, LTC, DOGE, BCH, ZEC - список ваших непотраченных «кусочков»: от их числа зависит размер транзакции и комиссия.
EVM-сети: ETH, BNB, Polygon, Arbitrum, Base, AVAX, ETC - цена газа у сети и порядковый номер платежа.
Tron - бесплатные ресурсы адреса, bandwidth и energy: хватает - перевод дешевле.
XRP - существует ли счёт получателя: неактивированный требует резерва.
TON и Solana - оценка комиссии и есть ли у получателя «карман» под этот токен.
Шаг 04

Собираем черновик транзакции

Кошелёк складывает поручение целиком: откуда, куда, сколько, какая комиссия и номер по порядку. У каждого адреса есть счётчик исходящих платежей — nonce. Он нужен, чтобы одна и та же транзакция не прошла дважды и платежи шли по порядку. Мы спрашиваем у сети текущее значение, включая переводы, которые ещё висят в очереди.

Черновик — это ещё не деньги. На этом шаге есть только текст поручения. Без подписи он ничего не стоит: сеть его не примет, как банк не примет платёжку без подписи. Его можно потерять, показать, выбросить — на баланс это не влияет.

Под капотомnonce приходит сокетом getNonce; для EVM-сетей это getTransactionCount(адрес, 'pending'). В UTXO-сетях номера нет - его роль играют сами непотраченные выходы. Tron: extendExpiration на 1200 секунд.
Экран перед подписью: сумма, откуда, куда. Пока это только текст поручения — сеть его не примет.
Нюанс Tron
Заготовку собирает узел сети, и живёт она около минуты — мало, чтобы достать карту и ввести PIN. Мы продлеваем срок до 20 минут; лишних прав это нам не даёт.
Нюанс Solana
Перед подписью проверяем, что адрес — обычный кошелёк, а не аккаунт смарт-контракта: такие часто приходят из «подаренных» сид-фраз — баланс виден, а вывести нельзя.
Шаг 05
единственный шаг с ключом

Подпись транзакции. Это происходит на вашем устройстве

Момент, ради которого всё затевалось. Кошелёк берёт черновик и ваш ключ и считает подпись — прямо здесь, в приложении или во вкладке браузера. Ключ может прийти четыр��мя путями, и все четыре заканчиваются на вашем устройстве:

1Вводите вручную — из бумажки, из PDF, из менеджера паролей.
2Сканируете QR — камера, никакой сети.
3Прикладываете NFC-карту или стикер — ключ читается с носителя, расшифровывается вашим паролем и живёт в памяти ровно до конца подписи.
4Вводите PIN — если раньше разрешили сохранить ключ на устройстве.

Проверка «а тот ли это ключ». Перед отправкой кошелёк выводит адрес из введённого ключа и сравнивает с адресом отправителя. Не совпало — перевод не уходит, вы видите «Wrong private key». Подпись — математика над текстом транзакции и ключом: из подписи нельзя получить ключ обратно, и годится она ровно для одной транзакции. Поменяйте сумму или получателя хоть на символ — подпись перестанет сходиться.

Про сохранение под PIN — честно. Ключ шифруется на вашем устройстве и в зашифрованном виде лежит в локальном хранилище. PIN — от 6 до 12 символов, можно эмодзи. Мы этот PIN не знаем и восстановить не можем: его нигде нет, кроме вашей головы.

Под капотомИз PIN выводится ключ шифрования через PBKDF2-SHA256, 100 000 итераций, случайная соль на каждую запись; шифрование AES-256-CBC, хранится как соль:iv:шифротекст в localStorage. Гейт «ключ соответствует отправителю» - SignOnline.vue, sendTrans.
Нюанс Monero
Транзакция собирается и подписывается прямо в браузере локальным криптомодулем. Сервер отдает чужие публичные выходы для кольца подписи и проверяет, не потрачены ли ваши. Для баланса Monero нужен ключ просмотра — он только читает, потратить им нельзя.
Если подписываете офлайн
Mitilena Air подписывает на устройстве без интернета: транзакция уезжает туда QR-кодом, звуком или NFC и возвращается уже подписанной. Ключ ни на секунду не появляется на устройстве, которое ходит в сеть.
Три способа подписи: на этом устройстве, NFC-картой или офлайн через Mitilena Air. Ключ никуда не уходит ни в одном из них.
Экран подписи: приватный ключ или 12 слов, QR-код или карта. Поле ввода живет на вашем устройстве.
Сохранение под PIN: зашифровано и хранится только в этом браузере.
Шаг 06

Что видит сервер криптокошелька: только результат подписи

Подпись готова. Теперь кошелёк отправляет нам подписанную транзакцию — и всё. Это одна строка, в которой уже лежит: от кого, кому, сколько, комиссия, номер по порядку и сама подпись. Изменить в ней хоть что-нибудь нельзя — подпись сломается, и сеть откажет. Мы не можем ни переписать сумму, ни подменить получателя, ни отправить её второй раз.

Что делает сервер. Ровно одно: передаёт конверт в блокчейн через узел сети и возвращает вам хэш — номер, по которому перевод можно найти в любом обозревателе. Как почтальон, который не умеет вскрывать письма. Подписанная транзакция ничем не привязана к Mitilena: её примет любой узел этой сети. Если завтра наш сервер исчезнет, монеты останутся вашими — ключ-то у вас.

Под капотомСокет pushSignedTxToBlockchain принимает поле txHex - подписанную транзакцию - и вызывает метод отправки нужной сети. Приватного ключа в этом запросе нет: для него нет поля ни в одном из форматов.
Кнопка «Послать транзакцию» отправляет на сервер уже подписанный конверт. Подменить в нём что-то нельзя.
Шаг 07

История переводов — и что в ней записано

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

Чего в записи нет: вашего имени, почты, IP-адреса и идентификатора пользователя. Строка привязана не к человеку, а к адресам, которые и так публично видны в блокчейне. Поэтому мы и называем её обезличенной. При офлайн-подписи через Mitilena Air онлайн-часть о переводе ничего не сохраняет: она видит только готовый конверт.

Под капотомСокет saveAnonymTxDataForTrackingLinkPurposes кладет строку в таблицу txs. Колонок под пользователя там нет. Адресная книга из шага 2 читает эту же таблицу по вашим адресам - поэтому она знает ваших получателей, не зная вас.
таблица txs · одна строкабез колонки «пользователь»
Есть
сеть и монета
сумма
адрес отправителя
адрес получателя
хэш транзакции
курс на момент отправки
дата
код ссылки-отслеживания
Нет
ваше имя
почта
IP-адрес
идентификатор пользователя
Что мы физически не можем сделать

Не «обещаем не делать», а не можем — потому что нечем

Потратить ваши деньги

Может ли кошелёк украсть крипту? Нет: для списания нужна подпись, для подписи — ключ. Ключа у нас нет, он не передаётся ни на одном шаге.

Заморозить или отменить перевод

Подписанная транзакция уходит в сеть и живёт по её правилам. Кнопки «откатить» нет ни у нас, ни у кого-либо ещё.

Подменить получателя

Адрес зашит в подписанный конверт. Любая правка ломает подпись.

Восстановить ваш PIN или ключ

Их нет на наших серверах. Это неприятно, но это же и есть гарантия.

Показать вашу историю постороннему как «вашу»

В базе она привязана к адресам, а не к личности.

И чего мы не обещаем

Тоже честно: где кошелек не поможет

Блокчейн публичный

Ваши адреса, суммы и время переводов видны всем и навсегда. Приватность даёт не кошелёк, а аккуратность с адресами — или сети вроде Monero.

Потеряли ключ — потеряли доступ

Никто, включая нас, его не вернёт. Сохраните в двух местах сразу, лучше офлайн.

Устройство под контролем злоумышленника — это его устройство

Подпись происходит там, где вы её запускаете. Вирус на телефоне опаснее любой серверной дыры; для крупных сумм есть NFC-карта и офлайн-подпись.

Monero требует ключ просмотра

Он нужен, чтобы показать баланс. Он только читает, потратить им нельзя — но знать об этом стоит заранее.

Вопросы

Что спрашивают, дочитав до этого места

Безопасно ли отправлять крипту через ваш сервер, если всё делается на устройстве?

Да, если понимать роль сервера: спросить у сети комиссию и порядковый номер, получить курсы и передать готовый конверт дальше. Всё это публичные операции, ключ для них не нужен. Часть узлов сети мы держим сами, чтобы не зависеть от чужих сервисов.

Вы видите мой баланс?

Баланс любого адреса видит кто угодно — это открытая запись в блокчейне. Вопрос только в том, связан ли адрес с вами. Без регистрации мы даже списка ваших адресов не знаем: он лежит на вашем устройстве.

Что если вы подмените адрес получателя, пока я не вижу?

Адрес попадает внутрь подписи. Подменённый после подписи — сломает её, и сеть откажет. А до подписи адрес перед вами на экране: сверяйте последние символы — привычка на всю жизнь в крипте.

Почему комиссия всё время разная?

Это аукцион за место в блоке. Когда сеть загружена, места дороже. Мы показываем то, что сеть отвечает в этот момент, и даём выбрать скорость.

Перевод висит без подтверждения. Что делать?

Он уже в сети — у него есть хэш, и его видно в обозревателе. В EVM-сетях застрявший перевод можно перебить: отправить новый с тем же порядковым номером и большей комиссией.

Что такое nonce простыми словами?

Порядковый номер платежа с вашего адреса. Первый перевод — ноль, второй — один и так далее. Не даёт провести один и тот же платёж дважды.

Чем это отличается от биржи?

На бирже монеты записаны на счёт компании, а вы — строка в её базе: могут заморозить, попросить документы, ограничить вывод. Здесь монеты записаны на ваш адрес в блокчейне, а ключ — у вас.

А если я потеряю телефон?

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

Проверьте сами: путь из семи шагов, ключ — только у вас

30 секунд, без регистрации и паспорта · support@mitilena.com · @mitilena_wallet
Создать бесплатный кошелек