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 & waves-transactions
      • Установка SDK
        Установка SDK
      • Запуск кода
        • Отправка транзакций
          Отправка транзакций
        • Использование криптографических утилит
          Использование криптографических утилит
        • Взаимодействие с нодой
          Взаимодействие с нодой
        • Развертывание смарт-контрактов
          Развертывание смарт-контрактов
        Запуск кода
      Ts-lib-crypto & waves-transactions
    • Waves-PHP
      • Установка SDK
        Установка SDK
      • Запуск кода
        • Отправка транзакций
          Отправка транзакций
        • Использование криптографических утилит
          Использование криптографических утилит
        • Взаимодействие с нодой
          Взаимодействие с нодой
        • Развертывание смарт-контрактов
          Развертывание смарт-контрактов
        Запуск кода
      Waves-PHP
    • PyWaves-CE
      • Установка SDK
        Установка SDK
      • Запуск кода
        • Отправка транзакций
          Отправка транзакций
        • Использование криптографических утилит
          Использование криптографических утилит
        • Взаимодействие с нодой
          Взаимодействие с нодой
        • Развертывание смарт-контрактов
          Развертывание смарт-контрактов
        Запуск кода
      PyWaves-CE
    • Waves-rust
      • Установка SDK
        Установка SDK
      Waves-rust
    Клиентские библиотеки
      • English
      • Русский
      On this page
        • Приватный ключ
        • Публичный ключ
        • Адрес
      waves_logo Docs

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

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

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

          Обратите внимание: Библиотека преобразует приватные ключи в clamped-формат для устойчивости к атакам.

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

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

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

          <?php
          
          require_once __DIR__ . '/vendor/autoload.php';
          
          // Необходимые импорты.
          use Waves\Account\PrivateKey;
          use Waves\Model\ChainId;
          use Waves\Model\WavesConfig;
          
          // Временно скрыть deprecated-предупреждения.
          error_reporting(E_ALL & ~E_DEPRECATED);
          
          /* 
           * Укажите ID сети:
           * - Mainnet:  `ChainId::MAINNET()`
           * - Testnet:  `ChainId::TESTNET()`
           * - Stagenet: `ChainId::STAGENET()`
           */
          WavesConfig::chainId(ChainId::TESTNET());
          
          // Укажите сид-фразу вашего аккаунт.
          $seed = 'УКАЖИТЕ ВАШУ СИД-ФРАЗУ';
          
          // Получение приватного ключа из сид-фразы.
          $account = PrivateKey::fromSeed($seed);
          $privateKey = $account->toString();
          
          // Вывод результатов.
          echo "Сид-фраза: $privateKey\n";
          echo "Приватный ключ: $seed\n";
          

          # Генерация случайной сид-фразы и приватного ключа

          <?php
          
          require_once __DIR__ . '/vendor/autoload.php';
          
          // Необходимые импорты.
          use Waves\Account\PrivateKey;
          use Waves\Util\Functions;
          use Waves\Model\ChainId;
          use Waves\Model\WavesConfig;
          
          // Временно скрыть deprecated-предупреждения.
          error_reporting(E_ALL & ~E_DEPRECATED);
          
          /* 
           * Укажите ID сети:
           * - Mainnet:  `ChainId::MAINNET()`
           * - Testnet:  `ChainId::TESTNET()`
           * - Stagenet: `ChainId::STAGENET()`
           */
          WavesConfig::chainId(ChainId::TESTNET());
          
          // Генерация случайной сид-фразы.
          $seed = Functions::getRandomSeedPhrase();
          
          // Получение приватного ключа из сид-фразы.
          $account = PrivateKey::fromSeed($seed);
          $privateKey = $account->toString();
          
          // Вывод результатов.
          echo "Сид-фраза: $seed\n";
          echo "Приватный ключ: $privateKey\n";
          

          # Генерация случайной сид-фразы с nonce = 2 и приватного ключа

          <?php
          
          require_once __DIR__ . '/vendor/autoload.php';
          
          // Необходимые импорты.
          use Waves\Account\PrivateKey;
          use Waves\Util\Functions;
          use Waves\Model\ChainId;
          use Waves\Model\WavesConfig;
          
          // Временно скрыть deprecated-предупреждения.
          error_reporting(E_ALL & ~E_DEPRECATED);
          
          /* 
           * Укажите ID сети:
           * - Mainnet:  `ChainId::MAINNET()`
           * - Testnet:  `ChainId::TESTNET()`
           * - Stagenet: `ChainId::STAGENET()`
           */
          WavesConfig::chainId(ChainId::TESTNET());
          
          // Генерация случайной сид-фразы.
          $seed = Functions::getRandomSeedPhrase();
          
          // Получение приватного ключа из сид фразы с nonce = 2.
          $account = PrivateKey::fromSeed($seed, 2);
          $privateKey = $account->toString();
          
          // Вывод результатов.
          echo "Сид-фраза: $seed\n";
          echo "Приватный ключ (nonce 2): $privateKey\n";
          

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

          <?php
          
          require_once __DIR__ . '/vendor/autoload.php';
          
          // Необходимые импорты.
          use Waves\Account\PrivateKey;
          use Waves\Model\ChainId;
          use Waves\Model\WavesConfig;
          
          // Временно скрыть deprecated-предупреждения.
          error_reporting(E_ALL & ~E_DEPRECATED);
          
          /* 
           * Укажите ID сети:
           * - Mainnet:  `ChainId::MAINNET()`
           * - Testnet:  `ChainId::TESTNET()`
           * - Stagenet: `ChainId::STAGENET()`
           */
          WavesConfig::chainId(ChainId::TESTNET());
          
          // Создание массива байтов.
          $seedBytes = pack('C*', 1, 2, 3, 4, 5, 6, 7); // Пример массива.
          
          // Создание приватного ключа из байтов сид-фразы.
          $account = PrivateKey::fromSeed($seedBytes);
          $privateKey = $account->toString();
          
          // Вывод результатов.
          echo "Приватный ключ: $privateKey\n";
          

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

          <?php
          
          require_once __DIR__ . '/vendor/autoload.php';
          
          // Необходимые импорты.
          use Waves\Account\PrivateKey;
          use Waves\Util\Functions;
          use Waves\Model\ChainId;
          use Waves\Model\WavesConfig;
          
          // Временно скрыть deprecated-предупреждения.
          error_reporting(E_ALL & ~E_DEPRECATED);
          
          /* 
           * Укажите ID сети:
           * - Mainnet:  `ChainId::MAINNET()`
           * - Testnet:  `ChainId::TESTNET()`
           * - Stagenet: `ChainId::STAGENET()`
           */
          WavesConfig::chainId(ChainId::TESTNET());
          
          // Генерация случайных байтов сид-фразы.
          $randomSeedBytes = random_bytes(32);
          
          // Создание приватного ключа из случайно сгенерированных байтов сид-фразы.
          $account = PrivateKey::fromSeed($randomSeedBytes);
          $privateKey = $account->toString();
          
          // Вывод результатов.
          echo "Приватный ключ: $privateKey\n";
          

          # Создание приватного ключа из массива байтов

          <?php
          
          require_once __DIR__ . '/vendor/autoload.php';
          
          // Необходимые импорты.
          use Waves\Account\PrivateKey;
          use Waves\Model\ChainId;
          use Waves\Model\WavesConfig;
          
          // Временно скрыть deprecated-предупреждения.
          error_reporting(E_ALL & ~E_DEPRECATED);
          
          /* 
           * Укажите ID сети:
           * - Mainnet:  `ChainId::MAINNET()`
           * - Testnet:  `ChainId::TESTNET()`
           * - Stagenet: `ChainId::STAGENET()`
           */
          WavesConfig::chainId(ChainId::TESTNET());
          
          // Создание массива байтов.
          $bytes = pack('c*', 56, -3, 37, 64, 2, 38, 78, 37, -98, -45, -23, 117, 14, 88, 20, 42, -9, 21, 55, 87, 117, -8, -81, 77, 77, -99, -87, -23, 7, 116, -99, -20); // Пример массива.
          
          // Создание приватного ключа из массива байтов.
          $account = PrivateKey::fromSeed($bytes);
          $privateKey = $account->toString();
          
          // Вывод результатов.
          echo "Приватный ключ: $privateKey\n";
          

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

          <?php
          
          require_once __DIR__ . '/vendor/autoload.php';
          
          // Необходимые импорты.
          use Waves\Account\PrivateKey;
          use Waves\Util\Functions;
          use Waves\Model\ChainId;
          use Waves\Model\WavesConfig;
          
          // Временно скрыть deprecated-предупреждения.
          error_reporting(E_ALL & ~E_DEPRECATED);
          
          /* 
           * Укажите ID сети:
           * - Mainnet:  `ChainId::MAINNET()`
           * - Testnet:  `ChainId::TESTNET()`
           * - Stagenet: `ChainId::STAGENET()`
           */
          WavesConfig::chainId(ChainId::TESTNET());
          
          // Создание Base58-строки.
          $base58String = "A5u9Ugt2nG1rWfLkL7pzZrtkP8LgF2rD3g1XBjsF8ZzV"; // Пример значения.
          
          // Преобразование Base58-строки в байты.
          $decodedBytes = Functions::base58Decode($base58String);
          
          // Создание приватного ключа из байтов.
          $account = PrivateKey::fromSeed($decodedBytes);
          $privateKey = $account->toString();
          
          // Вывод результатов.
          echo "Приватный ключ: $privateKey\n";
          

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

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

          1. Сгенерируйте приватный ключ.
          2. Вставьте следующий блок кода после генерации приватного ключа:
            // Создание публичного ключа из приватного.
            $publicKey = $account->publicKey()->toString();
            
            // Вывод результатов.
            echo "Публичный ключ:  $publicKey\n";
            

          # Адрес

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

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

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

            // Создание адреса из публичного ключа.
            $address = $account->publicKey()->address()->toString();
            
            // Вывод результатов.
            echo "Адрес: $address\n";
            
          Отправка транзакций
          Взаимодействие с нодой
          Отправка транзакций
          Взаимодействие с нодой