waves_logo Docs
  • Обзор
    Обзор
  • Практические руководства
    • Получение данных из блокчейна
      Получение данных из блокчейна
    • Создание и отправка транзакций
      Создание и отправка транзакций
    • Токенизация
      Токенизация
    • Распространение токена (airdrop)
      Распространение токена (airdrop)
    • Прием платежей
      Прием платежей
    • Обмен токенов
      Обмен токенов
    • Простое голосование
      Простое голосование
    • Список как аргумент
      Список как аргумент
    Практические руководства
  • Смарт-контракты Waves
    Смарт-контракты Waves
  • dApp
    • Создание и запуск dApp
      Создание и запуск dApp
    dApp
  • Cмарт-аккаунт
    • Создание смарт-аккаунта
      Создание смарт-аккаунта
    • [en] Creating and deploying a script manually
      [en] Creating and deploying a script manually
    • [en] Video tutorials
      [en] Video tutorials
    Cмарт-аккаунт
  • Cмарт-ассет
    Cмарт-ассет
  • Инструменты разработчика
    • Waves IDE
      Waves IDE
    • Расширение для VS Code
      Расширение для VS Code
    • Surfboard
      Surfboard
    • Ride REPL
      Ride REPL
    Инструменты разработчика
  • Signer ◆
    Signer ◆
  • Waves API
    • Data Service API
      Data Service API
    • Node REST API 🡥
      Node REST API 🡥
    • Node gRPC Server 🡥
      Node gRPC Server 🡥
    • Blockchain Updates 🡥
      Blockchain Updates 🡥
    Waves API
  • Клиентские библиотеки
    • Waves C#
      • Установка SDK
        Установка SDK
      • Запуск кода
        • Отправка транзакций
          Отправка транзакций
        • Использование криптографических утилит
          Использование криптографических утилит
        • Взаимодействие с нодой
          Взаимодействие с нодой
        • Развертывание смарт-контрактов
          Развертывание смарт-контрактов
        Запуск кода
      Waves C#
    • Gowaves
      • Установка SDK
        Установка SDK
      • Запуск кода
        • Отправка транзакций
          Отправка транзакций
        • Использование криптографических утилит
          Использование криптографических утилит
        • Взаимодействие с нодой
          Взаимодействие с нодой
        • Развертывание смарт-контрактов
          Развертывание смарт-контрактов
        Запуск кода
      Gowaves
    • WavesJ
      • Установка SDK
        Установка SDK
      WavesJ
    • Ts-lib-crypto
      • Установка SDK
        Установка SDK
      Ts-lib-crypto
    • Waves-PHP
      • Установка SDK
        Установка SDK
      Waves-PHP
    • Waves-python
      • Установка SDK
        Установка SDK
      Waves-python
    • Waves-rust
      • Установка SDK
        Установка SDK
      Waves-rust
    Клиентские библиотеки
      • English
      • Русский
      On this page
        • Приватный ключ
        • Публичный ключ
        • Адрес
      waves_logo Docs

          # Использование криптографических утилит

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

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

          Вы можете создать приватный ключ из:

          • Сид-фразы.
          • Случайно сгенерированных байтов сид-фарзы.
          • Массива байтов.

          # Создание приватного ключа из сид-фразы

          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())
          }
          

          # Публичный ключ

          Вы можете создать публичный ключ из приватного ключа:

          1. Сгенерируйте приватный ключ.
          2. Вставьте следующий блок кода после генерации приватного ключа:
            // Создание публичного ключа из приватного.
            senderPublicKey := crypto.GeneratePublicKey(senderPrivateKey)
            
            // Вывод публичного ключа.
            fmt.Println("Публичный ключ:", senderPublicKey.String())
            

          # Адрес

          Вы можете создать адрес на основе публичного ключа:

          1. Сгенерируйте публичный ключ.

          2. Вставьте следующий блок кода после генерации публичного ключа:

            Обратите внимание: Для успешной генерации адреса аккаунта необходим импорт зависимости "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())
          Отправка транзакций
          Взаимодействие с нодой
          Отправка транзакций
          Взаимодействие с нодой