# Отправка транзакций
Убедитесь в выполнении требований для отправки транзакций.
# Требования
- Кошелёк: Создайте кошелёк с помощью 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
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import com.wavesplatform.transactions.IssueTransaction; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.transactions.common.Base64String; import com.wavesplatform.wavesj.Node; import com.wavesplatform.wavesj.ScriptInfo; public class IssueTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего кошелька. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите Ride-скрипт ассета. String scriptSource = "{-# STDLIB_VERSION 6 #-}\n" + "{-# CONTENT_TYPE EXPRESSION #-}\n" + "{-# SCRIPT_TYPE ASSET #-}\n\n" + "func trueReturner() = {\n" + " true\n" + "}\n\n" + "trueReturner()"; // Пример Ride-скрипта. // Компиляция Ride-скрипта ScriptInfo compiled = node.compileScript(scriptSource); // Получение скомпилированного скрипта в качестве base64-строки. Base64String scriptBase64 = compiled.script(); // Создание транзакции Issue. IssueTransaction tx = IssueTransaction .builder( "TOKEN_NAME", // Наименование токена. 1_00000000L, // Количество в наименьшей единице. Например: `1_00000000L` для 1 токена. (byte)8 // Знаков после запятой. ) .description("TOKEN_DESCRIPTION") // Описание токена. .isReissuable(true) // Флаг, указывающий на возможность повторного выпуска актива. .fee(1_00000000L) // Комиссия за транзакцию в наименьшей единице. Например: `1_00000000L` для 1 WAVES. .chainId(networkChainId) // ID сети. .script(scriptBase64) // Скомпилированный скрипт. Для выпуска актива без скрипта - удалите вызов метода `.script()`. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классIssueTx
.
# Reissue
Обратите внимание: Вы можете перевевыпустить только ассет, созданный вами с флагом перевыпускаемости (reissue) со значением
true
.
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import com.wavesplatform.transactions.ReissueTransaction; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.transactions.common.AssetId; import com.wavesplatform.transactions.common.Amount; import com.wavesplatform.wavesj.Node; public class ReissueTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите ID выпущенного вами актива. AssetId assetId = AssetId.as("УКАЖИТЕ ID АКТИВА"); // Укажите количество токена для перевыпуска в наименьшей единицы. Amount amount = new Amount(100000000L, assetId); // Например: `100000000L` для 1 токена. // Создание транзакции Reissue. ReissueTransaction tx = ReissueTransaction .builder(amount) // Количество токена для перевыпуска. .fee(100000L) // Комиссия в WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классReissueTx
.
# Burn
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import com.wavesplatform.transactions.BurnTransaction; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.transactions.common.AssetId; import com.wavesplatform.transactions.common.Amount; import com.wavesplatform.wavesj.Node; public class BurnTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите ID сжигаемого ассета. AssetId assetId = AssetId.as("УКАЖИТЕ ID АКТИВА"); // Укажите количество токена для сжигания в наименьшей единицы. Amount amount = new Amount(100000000L, assetId); // Например: `100000000L` для 1 токена. // Создание транзакции Burn. BurnTransaction tx = BurnTransaction .builder(amount) // Количество токена. .fee(100000L) // Комиссия в WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классBurnTx
.
# Transfer
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import com.wavesplatform.transactions.TransferTransaction; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.transactions.common.AssetId; import com.wavesplatform.transactions.common.Amount; import com.wavesplatform.wavesj.Node; public class TransferTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите адрес получателя. Address recipient = Address.as("УКАЖИТЕ АДРЕС ПОЛУЧАТЕЛЯ"); /* * Укажите ассет для трансфера: * - Используйте `AssetId.WAVES` для WAVES. * - Или укажите ID актива. */ AssetId assetId = AssetId.as("УКАЖИТЕ ID АКТИВА"); // Укажите количество токена для трансфера в наименьшей единице. Amount amount = new Amount(100000000L, assetId); // Например: `100000000L` для 1 токена. // Создание транзакции Transfer. TransferTransaction tx = TransferTransaction .builder(recipient, amount) // Адрес получателя и сумма трансфера. .fee(100000L) // Комиссия в WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классTransferTx
.
# Mass Transfer
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import java.util.Arrays; import com.wavesplatform.transactions.MassTransferTransaction; import com.wavesplatform.transactions.mass.Transfer; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.transactions.common.AssetId; import com.wavesplatform.wavesj.Node; public class MassTransferTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите адреса получателей. Address recipient1 = Address.as("УКАЖИТЕ АДРЕС ПЕРВОГО ПОЛУЧАТЕЛЯ"); Address recipient2 = Address.as("УКАЖИТЕ АДРЕС ВТОРОГО ПОЛУЧАТЕЛЯ"); /* * Укажите ассет для трансфера: * - Используйте `AssetId.WAVES` для WAVES. * - Или укажите ID актива. */ AssetId assetId = AssetId.as("УКАЖИТЕ ID АКТИВА"); // Define the transfer amount for each recipient. Transfer t1 = Transfer.to(recipient1, 100000000L); // Например: `100000000L` для 1 токена. Transfer t2 = Transfer.to(recipient2, 200000000L); // Например: `200000000L` для 2 токенов. // Создание транзакции Mass Transfer Transaction. MassTransferTransaction tx = MassTransferTransaction .builder(Arrays.asList(t1, t2)) // Массив данных о получателях и суммах трансфера. .assetId(assetId) // ID ассета для трансфера. .fee(300000L) // Комиссия в WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классMassTransferTx
.
# Exchange
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import com.wavesplatform.transactions.ExchangeTransaction; import com.wavesplatform.transactions.exchange.Order; import com.wavesplatform.transactions.exchange.OrderType; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.transactions.common.AssetId; import com.wavesplatform.transactions.common.Amount; import com.wavesplatform.wavesj.Node; public class ExchangeTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите ID ассета для обмена. AssetId assetId = AssetId.as("УКАЖИТЕ ID АКТИВА"); // Укажите сумму обмена и его стоимость. Amount amount = new Amount(100000000L); // Сумма обмена в наименьшей единице. Например: `100000000L` для 1 токена. Amount price = new Amount(1000000L, assetId); // Цена за токен в наименьшей единице. Например: `1000000L` для 0.01 WAVES. // Комиссия матчера для покупателя и продавца. long matcherFee = 300000; // Например: `300000L` для 0.003 WAVES. // Создание ордеров на покупку и продажу. Для простоты примера используется один публичный ключ. Order buy = Order.builder(OrderType.BUY, amount, price, privateKey.publicKey()) // Ордер на покупку: оплата `price` за указанный `amount`. .getSignedWith(privateKey); Order sell = Order.builder(OrderType.SELL, amount, price, privateKey.publicKey()) // Ордер на продажу: предложение `amount` за данный `price`. .getSignedWith(privateKey); // Создание транзакции Exchange. ExchangeTransaction tx = ExchangeTransaction .builder( buy, // Ордер на покупку. sell, // Ордер на продажу. amount.value(), // Сумма обмена (не должна превышать сумму ордера). price.value(), // Согласованная цена (должна совпадать с обеими ордерами). matcherFee, // Комиссия матчера на продажу. matcherFee // Комиссия матчера покупку. ) .fee(300000L) // Комиссия за транзакцию обмена. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классExchangeTx
.
# Lease
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; import java.time.Instant; // Необходимые импорты. import com.wavesplatform.transactions.LeaseTransaction; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.wavesj.Node; public class LeaseTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите адрес получателя. Address recipient = Address.as("УКАЖИТЕ АДРЕС ПОЛУЧАТЕЛЯ"); // Создание транзакции Lease Transaction. LeaseTransaction tx = LeaseTransaction .builder(recipient, 100000000L) // Сумма лизинга. Например: `100000000L` для 1 WAVES. .fee(100000L) // Комиссия за транзакцию. Например: `100000L` для 0.001 WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классLeaseTx
.
# Lease Cancel
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import com.wavesplatform.transactions.LeaseCancelTransaction; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.crypto.base.Base58; import com.wavesplatform.transactions.common.Id; import com.wavesplatform.wavesj.Node; public class LeaseCancelTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего кошелька. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите ID Lease-транзакции. String leaseIdString = "УКАЖИТЕ ID LEASE-ТРАНЗАКЦИИ"; byte[] leaseIdBytes = Base58.decode(leaseIdString); Id leaseId = new Id(leaseIdBytes); // Создание транзакции Lease Cancel. LeaseCancelTransaction tx = LeaseCancelTransaction .builder(leaseId) // ID Lease-транзакции, которую необходимо отменить. .fee(100000L) // Комиссия за транзакцию. Например: `100000L` для 0.001 WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классLeaseCancelTx
.
# Create Alias
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import com.wavesplatform.transactions.CreateAliasTransaction; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.wavesj.Node; public class CreateAliasTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите псевдоним. String alias = "youralias"; // Пример псевдонима. // Создание транзакции Create Alias. CreateAliasTransaction tx = CreateAliasTransaction .builder(alias) // Псевдонима. .fee(100000L) // Комиссия за транзакцию. Например: `100000L` для 0.001 WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + address); System.out.println("Псевдоним: " + alias); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классCreateAliasTx
.
# Data
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import java.util.Arrays; import com.wavesplatform.transactions.DataTransaction; import com.wavesplatform.transactions.data.BooleanEntry; import com.wavesplatform.transactions.data.IntegerEntry; import com.wavesplatform.transactions.data.StringEntry; import com.wavesplatform.transactions.data.DataEntry; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.wavesj.Node; public class DataTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Добавление записей данных. DataEntry intEntry = new IntegerEntry("counter", 123); DataEntry boolEntry = new BooleanEntry("flag", true); DataEntry strEntry = new StringEntry("message", "Hello Waves"); // Создание транзакции Data. DataTransaction tx = DataTransaction .builder(Arrays.asList(intEntry, boolEntry, strEntry)) // Записи данных. .fee(100000L) // Комиссия за транзакцию. Например: `100000L` для 0.001 WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классDataTx
.
# Set Script
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import com.wavesplatform.transactions.SetScriptTransaction; import com.wavesplatform.transactions.common.Base64String; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.wavesj.Node; public class SetScriptTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите Ride-скрипт. String scriptSource = "{-# SCRIPT_TYPE ACCOUNT #-} true"; // Пример Ride-скрипта. // Компиляция Ride-скрипта. Base64String script = node.compileScript(scriptSource).script(); // Пример скрипта. // Создание транзакции Set Script. SetScriptTransaction tx = SetScriptTransaction .builder(script) // Ride-скрипт. .fee(1000000) // Минимальная комиссия за транзакцию. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классSetScriptTx
.
# Set Asset Script
О транзакции Set Asset Script.
Обратите внимание: Вы можете установить скрипт актива только для тех активов, которые были выпущены с установленным Ride-скриптом.
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import com.wavesplatform.transactions.SetAssetScriptTransaction; import com.wavesplatform.transactions.common.Base64String; import com.wavesplatform.transactions.common.AssetId; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.wavesj.Node; public class SetAssetScriptTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите ID смарт ассета. AssetId assetId = AssetId.as("УКАЖИТЕ ID АКТИВА"); // Укажите Ride-скрипт. Base64String script = node.compileScript("{-# SCRIPT_TYPE ACCOUNT #-} true").script(); // Пример скрипта. // Создание транзакции Set Asset Script. SetAssetScriptTransaction tx = SetAssetScriptTransaction .builder(assetId, script) // ID ассета и его скрипт. .fee(1000000L) // Комиссия за транзакцию. Например: `1000000L` для 0.01 WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классSetAssetScriptTx
.
# Update Asset Info
О транзакции Update Asset Info.
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import com.wavesplatform.transactions.UpdateAssetInfoTransaction; import com.wavesplatform.transactions.common.AssetId; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.wavesj.Node; public class UpdateAssetInfoTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите ID актива. AssetId assetId = AssetId.as("УКАЖИТЕ ID АКТИВА"); // Укажите новое наименование и описание актива. String newName = "UpdatedToken"; // Новое наименование. String newDescription = "Updated description"; // Новое описание. // Создание транзакции Update Asset Info. UpdateAssetInfoTransaction tx = UpdateAssetInfoTransaction .builder(assetId, newName, newDescription) // ID актива, новое наименование и описание. .fee(100000L) // Комиссия за транзакцию. Например: `100000L` для 0.001 WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address address = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + address); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классUpdateAssetInfoTx
.
# Invoke Script
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; // Необходимые импорты. import java.time.Instant; import java.util.List; import com.wavesplatform.transactions.InvokeScriptTransaction; import com.wavesplatform.transactions.invocation.*; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.transactions.common.AssetId; import com.wavesplatform.transactions.common.Amount; import com.wavesplatform.wavesj.Node; public class InvokeScriptTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите адрес dApp-приложения. Address dApp = Address.as("УКАЖИТЕ АДРЕС DAPP-ПРИЛОЖЕНИЯ"); // Укажите наименование вызываемой функции и её аргументы. Function function = Function.as( "myFunction", // Наименование Callable-функции dApp'а. StringArg.as("arg1"), // Первый аргумент типа `string`. IntegerArg.as(42), // Второй аргумент типа `integer`. BooleanArg.as(true) // Третий аргумент типа `boolean`. ); // Укажите сумму платежа. long paymentAmount = 1_00000000L; // Например: `1_00000000L` для 1 токена. /* * Укажите ассет для трансфера: * - Используйте `AssetId.WAVES` для WAVES. * - Или укажите ID актива. */ AssetId paymentAsset = AssetId.WAVES; // Трансформация платежных данных. List<Amount> payments = List.of( Amount.of(paymentAmount, paymentAsset) ); // Создание транзакции Invoke Script. InvokeScriptTransaction tx = InvokeScriptTransaction .builder(dApp, function) // dApp и его функция для вызова. .payments(payments) // Список платежей. .fee(500000L) // Комиссия за транзакцию. Например: `500000L` для 0.005 WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address sender = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + sender); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классInvokeScriptTx
.
# Sponsor Fee
В директории проекта:
- Замените содержимое файла
Main.java
следующим блоком кода:package com.example; import java.time.Instant; // Необходимые импорты. import com.wavesplatform.transactions.SponsorFeeTransaction; import com.wavesplatform.transactions.common.AssetId; import com.wavesplatform.transactions.account.PrivateKey; import com.wavesplatform.transactions.account.Address; import com.wavesplatform.transactions.common.ChainId; import com.wavesplatform.wavesj.Node; public class SponsorFeeTx { public static void main(String[] args) throws Exception { // Укажите сид-фразу вашего аккаунта. String seedPhrase = "УКАЖИТЕ СИД-ФРАЗУ"; // Генерация приватного ключа из сид-фразы. PrivateKey privateKey = PrivateKey.fromSeed(seedPhrase); /* * Укажите ID сети: * - Mainnet: `MAINNET` * - Testnet: `TESTNET` * - Stagenet: `STAGENET` */ byte networkChainId = ChainId.TESTNET; /* * Укажите ссылку на сеть: * - Mainnet: "https://nodes.wavesnodes.com/" * - Testnet: "https://nodes-testnet.wavesnodes.com/" * - Stagenet: "https://nodes-stagenet.wavesnodes.com/" */ Node node = new Node("https://nodes-testnet.wavesnodes.com"); // Укажите ID спонсорского актива. AssetId assetId = AssetId.as("УКАЖИТЕ ID АКТИВА"); // Укажите минимальную спонсорскую комиссию. long minSponsoredFee = 50000L; // Например: `50000L` для 0.0005 единиц спонсорского токена. // Создание транзакции Sponsor Fee Transaction. SponsorFeeTransaction tx = SponsorFeeTransaction .builder(assetId, minSponsoredFee) // ID ассета и его спонсорская комиссия. .fee(100000000L) // Комиссия в WAVES. Например: `100000000L` для 1 WAVES. .timestamp(Instant.now().toEpochMilli()) // Временная метка. .chainId(networkChainId) // ID сети. .getSignedWith(privateKey); // Приватный ключ отправителя. // Отправка транзакции на ноду. node.broadcast(tx); // Контекст для отмены выполнения запроса по таймауту. Thread.sleep(5000); // Получение информации о транзакции от ноды. Address sender = Address.from(networkChainId, privateKey.publicKey()); System.out.println("Адрес отправителя: " + sender); System.out.println("ID транзакции: " + tx.id()); System.out.println("JSON-данные транзакции: " + tx.toJson()); } }
- В файле
Main.java
запустите классSponsorFeeTx
.