Как поменять приватник в Braavos

Как поменять приватник в Braavos

Разнорабочий
UPD: Информация в статье актуальная, но появились дополнения:
https://t.me/raznorabochiy_notes/38
вообще лучше подпишитесь на канал, там все обновления


Я знаю несколько способов.

Способ 1 (не совсем смена, но нечто похожее)

Для этого нужно рассказать, как устроен Braavos.

Если установить Braavos не только в браузер, но и на телефон, то в приложении можно включить Hardware Signer.

Теперь транзакции будут подписываться не основным приватником, а новым приватником, который хранится в телефоне и и доступен при помощи биометрии.

Включенный Hardware Signer

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

Кошелёк предлагает открыть телефон чтобы подписать транзакцию

С того момента, как вы добавили HW Signer, ваш основной приватник перестаёт работать и не сможет подписывать транзакции, кроме одного типа транз - удаления HW Signer. При этом HW Signer будет удалён не сразу, а по истечении 4 дней, если эта транза не будет отменена HW Signer'ом.

Транзу на удаления самого себя HW Signer тоже может подписать, старый приватник начнёт работать сразу после удаления, не нужно будет ждать 4 дня.

Способ подписи у HW Signer отличается от той, что используется в старкнете по умолчанию, поэтому транзы подписанные HW Signer стоят чуть дороже, так как требуют больше газа.

Если вдаваться в технические детали, HW Signer использует эллиптическую кривую secp256r1.

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

Немного расскажу о методах аккаунта Braavos:

add_signer(signer) — добавляет HW Signer в аккаунт Braavos, стандартный приватник перестаёт работать

is_valid_signature(hash, signarure_len, signature) — проверяет, может ли ваш аккаунт подписывать транзы стандартным приватником или HW Signer-приватником

remove_signer(index) — удаляет HW Signer, делает подпись HW Signer'ом, не нужно ждать 4 дня, старый приватник опять начинает работать

remove_signer_with_etd(index) — удаляет HW Signer используя старый приватник, нужно ждать 4 дня чтобы старый приватник снова начал работать

cancel_deferred_signer_req(removed_signer_id) — отменяет удаление HW Signer, нужно подписывать HW Signer'ом


Способ 2 (реальная смена приватника как в Аргент)

Этот способ я увидел буквально вчера, когда угнали аккаунты у одного парня из нашей приватки, Ильдара.

У аккаунта Бравос есть метод setPublicKey(newPublicKey), но если посмотреть код в гитхабе, то этот метод пустышка, который в реальности ничего не меняет.

Небольшое отступление, сейчас все свежие Браавос кошельки имеют версию контракта 000.000.011

Актуальная версия контракта Braavos

А на гитхабе самый свежий код 000.000.010 и давно нет активности в проекте, делаем выводы, что они переехали на другой git-сервис, возможно закрытый.

Но это не важно, в 11 версии setPublicKey тоже ничего не делает.

На угнанных аккаунтах Ильдара, сначала делается upgrade кошелька на новую версию и потом вызов setPublicKey который меняет приватник.

При этом на этом аккаунте у же был ранее вызов upgrade сделанный хозяином аккаунта, когда он обновлялся несколько месяцев назад на 11 версию. А после вызова скамером кошелёк стал версии 10.

Я предполагаю, что скамер взял код с гитхаба, дописал функцию setPublicKey, задеплоил этот контракт и в вызове апгрейд у угнанных аккаунтов указал свою новую имплементацию контракта, а далее вызвал setPublicKey.

Вот такой хитрый способ.

Пост Ильдара о случившемся скаме: https://t.me/ildar_scripts/19

Полезные ссылки:

https://braavos.notion.site/Hardware-Signer-FAQs-5d5ae07e999e45ddaf8a7f5c4abbad80

https://github.com/myBraavos/braavos-account-cairo




Report Page