# Отправка транзакций
Убедитесь в выполнении требований для отправки транзакций.
# Требования
- Кошелёк: Создайте кошелёк с помощью Keeper Wallet или WX Network.
Примечание: Сохраните сид-фразу кошелька для отправки транзакций.
- Токены: Получите токены WAVES для оплаты комиссии каждой транзакции:
- Для сети Mainnet: Приобретите 0.001 WAVES через доступные способы пополнения кошелька.
- Для сети Testnet: Приобретите 0.001 WAVES через Faucet.
- Для сети Stagenet: Приобретите 0.001 WAVES через Faucet.
# Руководство
Выполните шаги инструкции для необходимого типа транзакции:
- Issue.
- Reissue.
- Burn.
- Transfer.
- Mass Transfer.
- Exchange.
- Lease.
- Lease Cancel.
- Create Alias.
- Data.
- Set Script.
- Set Asset Script.
- Update Asset Info.
- Invoke Script.
- Sponsor Fee.
# Issue
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; import fetch from 'node-fetch'; // Получение необходимого типа транзакции. const { issue, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Компиляция Ride-скрипта через REST API ноды. const scriptSource = ` {-# STDLIB_VERSION 8 #-} {-# CONTENT_TYPE EXPRESSION #-} {-# SCRIPT_TYPE ASSET #-} true `.trim(); const response = await fetch(`${nodeUrl}/utils/script/compileCode`, { method: 'POST', headers: { 'Content-Type': 'text/plain', 'accept': 'application/json' }, body: scriptSource }); if (!response.ok) throw new Error(`Failed to compile script: ${response.statusText}`); const { script: compiledScript } = await response.json(); // Создание Issue-транзакции. const tx = issue( { name: 'Наименование', // Наименование. description: 'Описание Токена', // Описание. quantity: 1_00000000, // Количество. decimals: 8, // Знаков после запятой. reissuable: true, // Флаг, указывающий на возможность повторного выпуска актива. fee: 1_00000000, // Комиссия. chainId, // ID сети. senderPublicKey: publicKey, // Публинчый ключ отправителя транзакции. script: compiledScript // Скрипта актива или `undefined`. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Reissue
Обратите внимание: Вы можете перевевыпустить только ассет, созданный вами с флагом перевыпускаемости (reissue) со значением
true
.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; // Получение необходимого типа транзакции. const { reissue, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; // Укажите ID ассета. const assetId: string = 'УКАЖИТЕ ID АССЕТА'; (async (): Promise<void> => { try { // Создание Reissue-транзакции. const tx = reissue( { assetId, // ID перевыпускаемого ассета. quantity: 2_00000000, // Количество токена к перевыпуску. reissuable: true, // Флаг, указывающий на перевыпускаемость актива. fee: 1_00000000, // Комиссия. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Burn
О транзакции Burn Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; // Получение необходимого типа транзакции. const { burn, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; // Укажите ID ассета. const assetId: string = 'УКАЖИТЕ ID АССЕТА'; (async (): Promise<void> => { try { // Создание Burn-транзакции. const tx = burn( { assetId, // ID сжигаемого ассета. amount: 50000000, // Количество сжигаемого ассета. Например: `50000000` для 0.5 токенов. fee: 1_00000000, // Комиссия. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Transfer
О транзакции Transfer Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; // Получение необходимого типа транзакции. const { transfer, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); // Укажите адрес получателя. const recipient: string = 'УКАЖИТЕ АДРЕС ПОЛУЧАТЕЛЯ'; // Укажите ID ассета или `null` для WAVES. const assetId: string | null = null; /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Создание Transfer-транзакции. const tx = transfer( { amount: 50000000, // Количество токена для трансфера. recipient, // Адрес получателя. assetId, // ID ассета или `null` для WAVES. fee: 100000, // Комиссия в WAVES. feeAssetId: null, // ID ассета для уплаты комиссии или `null` для WAVES. attachment: '', // Приложение. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Mass Transfer
О транзакции Mass Transfer Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; // Получение необходимого типа транзакции. const { massTransfer, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); // Укажите ID ассета или `null` для WAVES. const assetId: string | null = null; /* * Укажите получателей. * Каждая запись содержит адрес получателя и сумму перевода в наименьшей единице. */ const transfers = [ { recipient: 'УКАЖИТЕ АДРЕС ПЕРВОГО ПОЛУЧАТЕЛЯ', amount: 10000000 // Пример: 0.1 токена. }, { recipient: 'УКАЖИТЕ АДРЕС ВТОРОГО ПОЛУЧАТЕЛЯ', amount: 20000000 // Пример: 0.2 токена. }, // ... ]; /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Создание Mass-транзакции transaction. const tx = massTransfer( { assetId, // ID ассета или `null` для WAVES. transfers, // Список с трансферами. fee: 100000 + 50000 * transfers.length, // Комиссия + 0.0005 WAVES за каждый трансфер. attachment: '', // Приложение. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Exchange
О транзакции Exchange Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import { order, exchange, broadcast } from '@waves/waves-transactions'; import axios from 'axios'; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string; privateKey: string } = keyPair(seed); // Specify asset IDs. const matcherFeeAssetId: string | null = null; // null = WAVES. const amountAsset: string = 'kza1SwBGYkha3tWMjZ68p5dUN1o4CgenbbKkVFFEVc4'; // Пример кастомного токена. const priceAsset: string | null = null; // null = WAVES. // Specify the matcher address. const matcherPublicKey: string = publicKey; // Helper to fetch decimals for any asset. async function getTokenDecimals(assetId: string | null, nodeUrl: string): Promise<number> { if (!assetId) return 8; // WAVES always has 8 decimals. const resp = await axios.get(`${nodeUrl}/assets/details/${assetId}`); return resp.data.decimals; } /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: number = 'T'.charCodeAt(0); /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; // Define shared order parameters. const commonOrderParams = { matcherPublicKey, // Публичный ключ матчера. matcherFee: 300000, // Комиссия матчера. version: 3 as const, // Версия ордера. expiration: Date.now() + 1000 * 60 * 60, // Время эксипрации ордера: 1 час. timestamp: Date.now() // Временная метка. }; (async (): Promise<void> => { try { // Получение данных о десятичных дробях для обоих ассетов. const amountAssetDecimals = await getTokenDecimals(amountAsset, nodeUrl); const priceAssetDecimals = await getTokenDecimals(priceAsset, nodeUrl); // Вычисление количество и цены ордера. const amount = 1 * 10 ** amountAssetDecimals; // Количество: 1 токен. const pricePerTokenInWaves = 0.01; // Цена токена: 0.01 WAVES. const priceInWavesMinimalUnits = pricePerTokenInWaves * 10 ** priceAssetDecimals; // 1_000_000. const price = (priceInWavesMinimalUnits * 10 ** amountAssetDecimals).toString(); // Пример расчёта финальной стоимости. // Create a buy order. const buyOrder = order( { ...commonOrderParams, orderType: 'buy', // Тип ордера. price, // Стоимость токена. amount, // Количество токена. senderPublicKey: publicKey, // Публинчый ключ отправителя транзакции. matcherFeeAssetId, // ID ассета, используемого матчера для оплаты комиссии. amountAsset, // Количество токена. priceAsset // Цена токена. }, seed ); // Create a sell order. const sellOrder = order( { ...commonOrderParams, orderType: 'sell', // Тип ордера. price, // Стоимость токена. amount, // Количество токена. senderPublicKey: publicKey, // Публинчый ключ отправителя транзакции. matcherFeeAssetId, // ID ассета, используемого матчера для оплаты комиссии. amountAsset, // Количество токена. priceAsset // Стоимость токена. }, seed ); // Создание Exchange transaction-транзакции. const tx = exchange( { order1: buyOrder, // Тип первого ордера: buy. order2: sellOrder, // Тип второго ордера: sell. amount, // Сумма обмена. price, // Стоимость обмена. buyMatcherFee: 300000, // Комиссия матчера на покупку. sellMatcherFee: 300000, // Комиссия матчера на продажу. fee: 700000, // Комиссия. senderPublicKey: publicKey, // Комиссия ключ отправителя транзакции. chainId, // ID сети. type: 7, // Тип транзакции. timestamp: Date.now(), // Временная метка. version: 3, // Версия транзакции. proofs: [] // Proofs. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Lease
О транзакции Lease Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; // Получение необходимого типа транзакции. const { lease, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); // Укадите адрес получателя. const recipient: string = 'УКАЖИТЕ АДРЕС ПОЛУЧАТЕЛЯ'; /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Создание Lease-транзакции. const tx = lease( { recipient, // Адрес получателя лизинга. amount: 500000000, // Сумма лизинга в наименьшей единице. Например: `500000000` для 5 WAVES. fee: 100000, // Комиссия. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Lease Cancel
О транзакции Lease Cancel Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; // Получение необходимого типа транзакции. const { cancelLease, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); // Укажите ID Lease-транзакции для отмены. const leaseId: string = 'УКАЖИТЕ ID LEASE-ТРАНЗАКЦИИ'; /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Создание Lease-транзакции. const tx = cancelLease( { leaseId, // ID of the lease transaction to cancel. fee: 100000, // Комиссия. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Create Alias
О транзакции Create Alias Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; // Получение необходимого типа транзакции. const { alias, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); // Укажите псевдоним. const aliasName: string = 'my-custom-alias'; // Пример значения. /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Создание Alias-транзакции. const tx = alias( { alias: aliasName, // Псевдоним. fee: 100000, // Комиссия. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Data
О транзакции Data Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; // Получение необходимого типа транзакции. const { data, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); // Укажите записи данных в формате ключ-значение. const dataEntries = [ { key: 'intKey', type: 'integer' as const, value: 123 }, { key: 'boolKey', type: 'boolean' as const, value: true }, { key: 'stringKey', type: 'string' as const, value: 'Hello Waves' }, { key: 'binaryKey', type: 'binary' as const, value: 'base64:SGVsbG8=' } ]; /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Создание Data-транзакции. const tx = data( { data: dataEntries, // Записи данных в формате «ключ-значение». fee: 500000, // Комиссия. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Set Script
О транзакции Set Script Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; import fetch from 'node-fetch'; // Получение необходимого типа транзакции. const { setScript, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); // Укажите Ride-скрипт аккаунта. const script: string = ` {-# STDLIB_VERSION 6 #-} {-# CONTENT_TYPE EXPRESSION #-} {-# SCRIPT_TYPE ACCOUNT #-} true `; /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Компиляция скрипта через REST API ноды. const response = await fetch(`${nodeUrl}/utils/script/compileCode`, { method: 'POST', headers: { 'Content-Type': 'text/plain', 'accept': 'application/json' }, body: script.trim() }); if (!response.ok) throw new Error(`Ошибка компиляции скрипта: ${response.statusText}`); const { script: scriptBase64 } = await response.json(); // Создание транзакции Set Script. const tx = setScript( { script: scriptBase64, // Скомпилированный Ride-скрипт или `null` для удаления скрипта. fee: 1400000, // Комиссия. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Set Asset Script
О транзакции Set Asset Script Transaction.
NOTE: You can set an asset script only on those asset that were issued with a ride script attached.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; import fetch from 'node-fetch'; // Получение необходимого типа транзакции. const { setAssetScript, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); // Укажите ID ассета. const assetId: string = 'УКАЖИТЕ ID АССЕТА'; // Укажите Ride-скрипт ассета. const script: string = ` {-# STDLIB_VERSION 6 #-} {-# CONTENT_TYPE EXPRESSION #-} {-# SCRIPT_TYPE ASSET #-} true `; /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Compile the script using the Node REST API. const response = await fetch(`${nodeUrl}/utils/script/compileCode`, { method: 'POST', headers: { 'Content-Type': 'text/plain', 'accept': 'application/json' }, body: script.trim() }); if (!response.ok) throw new Error(`Ошибка компиляции скрипта: ${response.statusText}`); const { script: scriptBase64 } = await response.json(); // Создание Set-транзакции Script transaction. const tx = setAssetScript( { assetId, // ID ассета. script: scriptBase64, // Скомпилированный скрипт или `null`. fee: 100000000, // Комиссия in WAVES. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Update Asset Info
О транзакции Update Asset Info Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; // Получение необходимого типа транзакции. const { updateAssetInfo, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); // Specify the asset ID to update. const assetId: string = 'УКАЖИТЕ ID АССЕТА'; /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Build an Update Asset Info transaction. const tx = updateAssetInfo( { assetId, // ID ассета. name: 'NewTokenName', // Новое наименование. description: 'Updated description', // Новое описание. fee: 100000000, // Комиссия. Пример: `100000000` для 1 WAVES. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Invoke Script
О транзакции Invoke Script Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; // Получение необходимого типа транзакции. const { invokeScript, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); // Укажите адрес dApp-приложения. const dappAddress: string = 'УКАЖИТЕ АДРЕС DAPP-ПРИЛОЖЕНИЯ'; // Укажите ID ассета или `null` для WAVES. const assetId: string = 'kza1SwBGYkha3tWMjO68p5dUN1o4CgenbbKkVFFEVc5'; // Пример значения. /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Build an Invoke Script transaction. const tx = invokeScript( { dApp: dappAddress, // Адрес dApp. call: { function: 'yourFunctionName', // Вызываемая функция. args: [] // Аргументы при их наличии. }, payment: [ { assetId, // ID ассета или `null` для WAVES. amount: 1000000 // Сумма трансфера. } ], fee: 500000, // Комиссия. Минимальная комиссия = 0.005 WAVES. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.
# Sponsor Fee
О транзакции Sponsor Fee Transaction.
В директории проекта:
- Замените содержимое файла
waves.ts
следующим блоком кода:// Необходимые импорты. import { keyPair } from '@waves/ts-lib-crypto'; import waves from '@waves/waves-transactions'; // Получение необходимого типа транзакции. const { sponsorship, broadcast } = waves; // Укажите вашу сид-фразу. const seed: string = 'УКАЖИТЕ СИД-ФРАЗУ'; // Создание пары ключей из сид-фразы. const { publicKey }: { publicKey: string } = keyPair(seed); // Укажите ID спонсорского ассета. const assetId: string = 'УКАЖИТЕ ID АССЕТА'; /* * Укажите ID сети: * - 'W' для Mainnet. * - 'T' для Testnet. */ const chainId: string = 'T'; /* * Укажите ссылку на сеть: * - Mainnet: 'https://nodes.wavesnodes.com/' * - Testnet: 'https://nodes-testnet.wavesnodes.com/' */ const nodeUrl: string = 'https://nodes-testnet.wavesnodes.com'; (async (): Promise<void> => { try { // Создание транзакции Sponsor Fee. const tx = sponsorship( { assetId, // ID ассета. minSponsoredAssetFee: 1, // Минимальная комиссия актива в наименьшей единице. fee: 100000000, // Комиссия in WAVES. chainId, // ID сети. senderPublicKey: publicKey // Публинчый ключ отправителя транзакции. }, seed ); // Отправка транзакции на ноду. const result = await broadcast(tx, nodeUrl); // Вывод результатов. console.log('ID транзакции:', result.id); console.log('JSON-детали транзакции:', JSON.stringify(tx, null, 2)); } catch (e) { console.error('Ошибка:', e); } })();
- Запустите файл
waves.ts
.