August 6

Самый безопасный способ хранения крипты

За все время существования этой индустрии топ-1 проблемой было, есть и будет хранение крипты. Где хранить? Какой кошелек выбрать? Подходит ли биржа? Нужен горячий или холодный кошелек? Эти вопросы задают как новички, так и люди поопытнее чуть ли не каждый день.

Но если быть честным, никакой из вышеперечисленных способов не гарантирует вам 100% безопасность:

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

Каков выход? Мультиподпись! Здесь могла бы быть реклама, но ее не будет, поскольку это действительно самый безопасный способ, если вы принимаете все меры предосторожности.

Что такое мультиподпись (или как еще пишут, мультисиг (multisig))? Это кошелек, в котором для выполнения транзакции нужна подпись сразу нескольких участников (в данном случае несколько ваших подписей с разных кошельков на разных устройствах).

Как вы знаете, при совершении любой транзакции вам нужна подпись. С бирж, горячих и холодных кошельков вам нужна всего лишь одна подпись ну и код с телефона, если включена двухфакторная аутентификация. В то время через мультисиг потребуется сразу несколько: 2, 3, 5, да хоть 10, смотря как настроите.

И именно это значительно снижает риск взлома и кражи средств, ведь если мошенник получит доступ к одному или даже двум (как?) кошелькам, то он все равно не сможет вывести деньги, т.к. у него будет недостаточно подтверждений.

Создание мультисига

Для этого нам понадобится старый-добрый Safe (бывшие Gnosis Safe, пару лет назад провели ребрендинг).

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

Здесь мы задаем имя, можете выбрать любое.

Здесь нам нужно выбрать аккаунты, которые вы хотите добавить, но у вас их пока нет, мы добавим их позже.

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

Далее выбираем как именно мы будем использовать Safe (ни на что не влияет) и нажимаем Create Workspace.

Итак, мы попали на страницу хранилища, теперь нам нужно добавить кошельки, с которых мы будем подтверждать транзакции. Для этого нажимаем Manage Accounts.

Далее нажимаем Create New Safe.

Здесь мы выбираем название своего хранилища и сеть, в которой будут храниться средства. Учтите, что каждое хранилище имеет только 1 сеть. Здесь я выбрал BNB Chain, но если мне нужен будет, допустим, Ethereum, то придется создавать новый кошелек.

Далее мы выбираем количество кошельков, которые будут участвовать в подписи, и указываем их. Для этого нажимаем "Add new signer".

Для примера я добавил 3 кошелька:

Ниже я указал, что для вывода средств потребуется подпись всех 3 кошельков и нажал Next.

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

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

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

В открывшемся окне подтверждаем, что хотим активировать данный аккаунт.

Подтверждаем транзакцию в своем кошельке.

Теперь ваш аккаунт активирован и вы можете им пользоваться: делать депозит, выводить средства, а также делать свапы и бриджи.

Процесс вывода средств

Итак, теперь пройдемся по тому, как происходит вывод средств с мультиподписью.

Для этого пополняем уже аккаунт хранилища.

Важно, пополнить нужно именно хранилище, а не какой-то из своих кошельков. Адрес можно скопировать вверху страницы.

Я вывел напрямую с биржи, но вы можете это сделать любым удобным для вас способом.

Прежде, чем выводить средства, вам нужно подключить к этому сейфу те свои кошельки, которые вы указывали при создании аккаунта. Я рекомендую сделать как минимум 1 кошелек себе на телефон, мейн оставить на главном устройстве и третий (если вы также создаете 3) на стороннем девайсе, чтобы сделать максимальный разброс и снизить вероятность кражи ваших денег.

Я же в данном случае просто создал 2 профиля в антике под 2 кошелька.

Это вид с другого кошелька в антике

Чтобы присоединить свои кошельки, копируем ссылку на ваше хранилище в браузере (не адрес кошелька, именно ссылку).

https://app.safe.global/home?safe=bnb:0хABCDE (пример)

Она должна выглядеть так, только вместо букв адрес вашего хранилища.

Далее просто вставляем эту ссылку в браузер и подключаем кошельки.

После этого можем выводить свои средства. Для этого нажимаем Send.

В открывшемся окне выбираем адрес и желаемую сумму для вывода.

Далее нажимаем Continue

Далее нажимаем Sign.

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

Заходим в хранилище с другого устройства и подтверждаем транзакцию.

Это вид с другого кошелька.

То же самое делаем и с оставшегося аккаунта.

Как видите, стоит подпись 2/3.

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

Вот и все, мы совершили подпись со всех трех кошельков для вывода средств. Историю транзакций можно посмотреть во вкладке Transactions.

На этом гайд подходит к концу. Если у вас все работало сразу, то можете идти смело пользоваться данным сервисом.

Но если вдруг по какой-то причине у вас некликабельна кнопка Send, а также нет возможности добавить новые кошельки для подписи и при наведении на эти кнопки у вас показывает "SDK is not initialized yet", то ниже будет решение данной проблемы с предысторией.

Фикс SDK is not initialized yet

Когда я сел писать данный гайд я зашел в Safe и обнаружил старый аккаунт, который и решил использовать для примера. Закинул на него $20 для теста, но не смог вывести из-за вышеописанной проблемы.

Перепробовал все:

  • Перезагрузить страницу
  • Подождать
  • Отключить блокировщик рекламы
  • Отключить антивирус (зачем, хз, но так писали)

Обратился даже в поддержку, но мне и там не помогли.

Также мне показало, что данная версия устарела и для управления этим хранилищем нужна командная строка Safe.

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

Поэтому я решил поиграться с командной строкой при помощи нейронки и в итоге с помощью скрипта смог вывести эти $20 на биржу.

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

Установка всего необходимого:

  • Для начала нужно установить Python 3.11.
  • Устанавливаем библиотеки Python: pip install web3 eth-account safe-eth-py

После этого на рабочем столе создаем текстовый файл, в который вставляем следующий скрипт:

from web3 import Web3 from eth_account import Account from eth_utils import to_checksum_address

from safe_eth.safe import Safe

RPC = "https://bsc-dataseed.binance.org/"

SAFE_ADDRESS = to_checksum_address( "0x2249515651Ce2A19E110Ae34582563eb4914727D" )

PRIVATE_KEY = "0xYOUR_PRIVATE_KEY"

TO = to_checksum_address( "0xDC4bd0ba572afeacc4a159253d229652e4db5703" )

VALUE = 30000000000000000 # 0.03 BNB

w3 = Web3(Web3.HTTPProvider(RPC))

account = Account.from_key(PRIVATE_KEY)

print("Owner:", account.address)

safe = Safe( SAFE_ADDRESS, w3 )

print( "Safe balance:", w3.from_wei( w3.eth.get_balance(SAFE_ADDRESS), "ether" ), "BNB" )

print( "Safe nonce:", safe.retrieve_nonce() )

safe_tx = safe.build_multisig_tx( to=TO, value=VALUE, data=b"", operation=0 )

print( "Safe tx hash:", safe_tx.safe_tx_hash.hex() )

safe.send_multisig_tx( to=TO, value=VALUE, data=b"", operation=0, safe_tx_gas=0, base_gas=0, gas_price=0, gas_token="0x0000000000000000000000000000000000000000", refund_receiver="0x0000000000000000000000000000000000000000", signatures=safe_tx.signatures, tx_sender_private_key=PRIVATE_KEY )

print("DONE")

В этом скрипте мы заменяем данные строки:

RPC = "https://bsc-dataseed.binance.org/"

SAFE_ADDRESS = "адрес Safe"

PRIVATE_KEY = "приватный ключ вашего кошелька (никуда кроме powershell его не вставляем!)"

TO = "адрес получателя"

VALUE = 30000000000000000 (или другую сумму в WEI!)

Учтите, что скрипт написан под BNB Smart Chain!

Данный текстовый файл мы называем "send_safe_bnb.py", именно так, без .txt в конце.

Далее мы сохраняем данный файл в c/users/username и запускаем его в PowerShell: python send_safe_bnb.py

Если у вас пишет ошибку газа (web3.exceptions.Web3RPCError: {'code': -32000, 'message': 'insufficient funds for transfer'}), то пополняем свой кошелек (не хранилище) нативным токеном, у меня также было BNB.

После этого запускаем скрипт заново: python send_safe_bnb.py.

Если все произошло успешно, то вы увидите это:

Вот моя транза, которую я совершил через скрипт: https://bscscan.com/tx/0x3af7bdf6fbad085c0a03be97f9be15fd13f68fcf44b4938411da96d0507a4d7e

При этом на самом Safe до сих пор пишет SDK is not initialized yet.

После этого ваши средства поступят на адрес, который вы указали в скрипте.

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

Но все же советую все шаги делать с нейронкой, мне помог даже бесплатный ChatGPT, именно он и написал скрипт выше, который мне вывел эти копейки.

Понимаю, что сумма небольшая, но если кто-то по ошибке закинул котлету?

Ну вот и все, на этом гайд точно подходит к концу, надеюсь для вас было полезно!