# Как создать аккаунт / кошелек Waves
Чтобы создать аккаунт Waves, не нужно регистрироваться где-либо. Создание аккаунта заключается в генерации ключей аккаунта и адреса на основе секретной фразы (seed-фразы).
⚠️ Предупреждение о безопасности
- Секретная фраза или созданный из нее закрытый ключ предоставляют полный доступ к аккаунту, включая возможность распоряжаться средствами. Никому не сообщайте секретную фразу и закрытый ключ, не публикуйте и не пересылайте их.
- Секретную фразу нельзя изменить: из другой секретной фразы (даже отличающейся на один символ) получится другая пара ключей, а следовательно, другой аккаунт.
- Если вы потеряете секретную фразу и закрытый ключ, вы утратите доступ к аккаунту навсегда, без возможности восстановления. Рекомендуем записать секретную фразу на бумаге и хранить в надежном месте.
- Если секретная фраза скомпрометирована (вы ее кому-то отправили или подозреваете, что ее узнали мошенники), немедленно создайте новый аккаунт и переведите на него все активы со старого.
Для создания аккаунта вы можете использовать одно из рекомендованных приложений:
Расширение браузера Keeper Wallet
См. инструкции в разделе Начало.
Online-/desktop-/мобильное приложение WX Network, разработанное сторонней командой из сообщества.
См. инструкции в разделе Как создать новый аккаунт базы знаний WX Network.
WavesFX, разработанное сторонней командой из сообщества.
Или одну из клиентских библиотек, например:
TypeScript/JavaScript-библиотеку ts-lib-crypto (также входит в состав waves-transactions):
const libCrypto = require('@waves/ts-lib-crypto') const seed = libCrypto.randomSeed() // or input your existing seed const sk = libCrypto.privateKey(seed) const pk = libCrypto.publicKey(seed) const addressBase58 = libCrypto.address(seed) // address for Mainnet const addressTestnetBase58 = libCrypto.address(seed, 'T') // address for Testnet
Python-библиотеку Pywaves
import pywaves as pw # Установка настроек ноды. pw.setNode( # Укажите ссылку на сеть ноды: # - Mainnet: 'https://nodes.wavesnodes.com/' # - Testnet: 'https://nodes-testnet.wavesnodes.com/' # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/' node='https://nodes-testnet.wavesnodes.com', # Укажите ID сети: # - Mainnet: 'M' # - Testnet: 'T' # - Stagenet: 'S' chain='T' ) # Генерация адреса. myAddress = pw.Address(seed='УКАЖИТЕ ВАШУ СИД-ФРАЗУ') print(f'Сид-фраза: {myAddress.seed}') print(f'Приватный ключ: {myAddress.privateKey}') print(f'Публичный ключ: {myAddress.publicKey}') print(f'Адрес: {myAddress.address}')
Java-библиотеку WavesJ
package com.example; // Необходимый импорт. import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.PublicKey; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.transactions.account.Address; public class CreatePrivateKeyFromSeedPhrase { public static void main(String[] args) { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Создание приватного ключа из сид-фразы. PrivateKey accountPrivateKey = PrivateKey.fromSeed(seedPhrase); // Создание публичного ключа из приватного. PublicKey publicKey = accountPrivateKey.publicKey(); /* * Укажите ID сети кошелька: * - Используйте `ChainId.MAINNET` для Mainnet. * - Используйте `ChainId.TESTNET` для Testnet. * - Используйте `ChainId.STAGENET` для StageNet. */ Address senderAddress = Address.from(ChainId.TESTNET, publicKey); } }
Обратите внимание:
- Ключи аккаунта и адрес генерируются и хранятся локально. Никакие данные не нужно отправлять на ноду или куда-либо еще.
- Адрес сразу же доступен для перевода токенов — например, его можно указать в качестве получателя в транзакции перевода.
- Информация об адресе появляется на блокчейне вместе с первой транзакцией, в которой участвует аккаунт.
- Чтобы пользоваться аккаунтом в другом приложении или на другом устройстве, нужно ввести там секретную фразу и повторить генерацию ключей из нее.
# Как массово создавать кошельки для пользователей?
Централизованно генерировать аккаунты для пользователей — плохая практика. Владение секретной фразой или закрытым ключом позволяет делать что угодно от имени аккаунта. Хранить и передавать эти данные небезопасно: кроме риска злоупотребления, есть риск кражи или утечки данных.
Каждый пользователь должен создать свой аккаунт самостоятельно, а приложение должно запрашивать подпись пользователя отдельно для каждой транзакции. Для этого можно подключить на сайте библиотеку Signer — она предоставляет пользователю возможность войти в свой аккаунт или создать его и подписывать транзакции, не передавая приложению секретную фразу или закрытый ключ.