# Использование криптографических утилит
Вы можете создать приватный ключ, публичный ключ и адрес аккаунта.
# Приватный ключ
Вы можете создать приватный ключ из:
# Создание приватного ключа из сид-фразы
package main
// Необходимые импорты.
import (
"bytes"
"encoding/binary"
"fmt"
"github.com/wavesplatform/gowaves/pkg/crypto"
)
func main() {
// Укажите вашу сид-фразу.
seedPhrase := "УКАЖИТЕ СИД-ФРАЗУ"
accountNumber := uint32(0)
// Преобразование номера аккаунта и сид-фразу в строку.
accountNumConcatSeedPhrase := bytes.Join([][]byte{
binary.BigEndian.AppendUint32(nil, accountNumber),
[]byte(seedPhrase),
}, nil)
// Хэширование сид-фразы.
accountSeed, err := crypto.SecureHash(accountNumConcatSeedPhrase)
if err != nil {
panic(err)
}
// Генерация приватного ключа из данной сид-фразы.
senderPrivateKey, _, err := crypto.GenerateKeyPair(accountSeed.Bytes())
if err != nil {
panic(err)
}
// Вывод приватного ключа.
fmt.Println("Приватный ключ:", senderPrivateKey.String())
}
# Создание приватного ключа из cлучайно сгенерированных байтов сид-фразы
package main
// Необходимые импорты.
import (
"fmt"
"github.com/tyler-smith/go-bip39"
"github.com/wavesplatform/gowaves/pkg/crypto"
)
func main() {
// Создание случайных байтов.
entropy, err := bip39.NewEntropy(160)
if err != nil {
panic(err)
}
// Генерация сид-фразы из данных байтов.
seedPhrase, err := bip39.NewMnemonic(entropy)
if err != nil {
panic(err)
}
// Создание приватного ключа из сид-фразы.
senderPrivateKey := crypto.GenerateSecretKey([]byte(seedPhrase))
// Вывод приватного ключа.
fmt.Println("Приватный ключ:", senderPrivateKey.String())
}
# Создание приватного ключа из массива байтов
package main
// Необходимые импорты.
import (
"fmt"
"github.com/tyler-smith/go-bip39"
"github.com/wavesplatform/gowaves/pkg/crypto"
)
func main() {
// Создание массива байтов.
seedBytes := []byte{
0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF,
0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x00,
}
// Генерация сид-фразы из данного массива.
seedPhrase, err := bip39.NewMnemonic(seedBytes)
if err != nil {
panic(err)
}
// Создание приватного ключа из сид-фразы.
senderPrivateKey := crypto.GenerateSecretKey([]byte(seedPhrase))
// Вывод приватного ключа.
fmt.Println("Приватный ключ:", senderPrivateKey.String())
}
# Публичный ключ
Вы можете создать публичный ключ из приватного ключа:
- Сгенерируйте приватный ключ.
- Вставьте следующий блок кода после генерации приватного ключа:
// Создание публичного ключа из приватного. senderPublicKey := crypto.GeneratePublicKey(senderPrivateKey) // Вывод публичного ключа. fmt.Println("Публичный ключ:", senderPublicKey.String())
# Адрес
Вы можете создать адрес на основе публичного ключа:
Вставьте следующий блок кода после генерации публичного ключа:
Обратите внимание: Для успешной генерации адреса аккаунта необходим импорт зависимости
"github.com/wavesplatform/gowaves/pkg/proto"
в блокеimport {}
./* Укажите сеть вашего кошелька: - `proto.MainNetScheme` для Mainnet. - `proto.TestNetScheme` для Testnet. - `proto.StageNetScheme` для StageNet. */ const = { network = proto.MainNetScheme } // Получение адреса аккаунта из публичного ключа. senderAddress, err := proto.NewAddressFromPublicKey(network, senderPublicKey) if err != nil { log.Fatalf(err) } // Вывод адреса аккаунта. fmt.Println("Адрес аккаунта:", senderAddress.String())