# Отправка транзакций
Убедитесь в выполнении требований для отправки транзакций.
# Требования
- Кошелёк: Создайте кошелёк с помощью 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
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из привантного. var senderPublicKey = senderPrivateKey.PublicKey; /* Укажите скрипт ассета: - Укажите `null` для создания обычного ассета. - Укажите Ride-скрипт для создания смарт-ассета. */ var txScript = "PASTE YOUR ASSET SCRIPT HERE"; // Создайте Issue транзакцию. var issueTx = IssueTransactionBuilder.Params( "Sampleasset1", // Имя. 1000, // Количество (в наименьшей единице, например, `1000` для 10 токенов). 2, // Количество знаков после запятой. "description of the asset", // Описание. false, // Флаг, указывающий на возможность повторного выпуска актива. txScript // Скомпилированный скрипт в кодировке base64 или `null`. ).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(issueTx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<IssueTransactionInfo>(issueTx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Reissue
NOTE: You can reissue only those asset that were issued by you with the reissuable flag set to
true
. Обратите внимание: Вы можете перевевыпустить только ассет, созданный вами с флагом перевыпускаемости (reissue) со значениемtrue
.
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из привантного. var senderPublicKey = senderPrivateKey.PublicKey; // Укажите ID вашего ассета. var assetId = AssetId.As("УКАЖИТЕ ID ВАШЕГО АССЕТА"); // Создайте Reissue транзакцию. var reissueTx = ReissueTransactionBuilder.Params( assetId, 143, // Новое количество. false // Новый флаг перевыпускаемости ассета. ).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(reissueTx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<ReissueTransactionInfo>(reissueTx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Burn
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из привантного. var senderPublicKey = senderPrivateKey.PublicKey; // Укажите ID вашего ассета. var assetId = AssetId.As("УКАЖИТЕ ID ВАШЕГО АССЕТА"); // Укажите количество ассета в наименьшей единице, например, `1000` для 10 токенов. var amount = 1000; // Создайте Burn транзакцию. var burnTx = BurnTransactionBuilder.Params(assetId, amount).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(burnTx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<BurnTransactionInfo>(burnTx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Transfer
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из привантного. var senderPublicKey = senderPrivateKey.PublicKey; // Укажите адрес получателя. Address recipient = new Address("УКАЖИТЕ АДРЕС ПОЛУЧАТЕЛЯ"); // Укажите сумму перевода в наименьшей единице, например, `1000` для 10 токенов. var amount = 1000; /* Укажите ID ассета: - Для WAVESs, используйте `AssetId.Waves`. - Для кастомных ассетов укажите ID ассета. */ var assetId = AssetId.As("УКАЖИТЕ ID ВАШЕГО АССЕТА"); /* Укажите вложение: - Используйте `null` для отправки пустого сообщения. - Или введите сообщение. */ var attachment = "УКАЖИТЕ СООБЩЕНИЕ"; // Создайте Transfer транзакцию. var tx = TransferTransactionBuilder.Params(recipient, amount, assetId, attachment) .GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(tx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<TransferTransactionInfo>(tx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Mass Transfer
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из привантного. var senderPublicKey = senderPrivateKey.PublicKey; /* Укажите ID ассета: - Для WAVESs, используйте `AssetId.Waves`. - Для кастомных ассетов укажите ID ассета. */ var assetId = AssetId.As("УКАЖИТЕ ID ВАШЕГО АССЕТА"); // Укажите адрес первого получателя. var recipientAddress = new Address("УКАЖИТЕ АДРЕС ПЕРВОГО ПОЛУЧАТЕЛЯ"); // Укажите сумму первого трансфера в наименьшей единице, например, `1000` для 10 токенов. var amount = 1000; // Укажите адрес второго получателя. var recipientAddressTwo = new Address("УКАЖИТЕ АДРЕС ВТОРОГО ПОЛУЧАТЕЛЯ"); // Укажите сумму второго трансфера в наименьшей единице, например, `1000` для 10 токенов. var amountTwo = 1000; // Укажите адрес третьего получателя. var recipientAddressThree = new Address("УКАЖИТЕ АДРЕС ТРЕТЬЕГО ПОЛУЧАТЕЛЯ"); // Укажите сумму третьего трансфера в наименьшей единице, например, `1000` для 10 токенов. var amountThree = 1000; // Создайте список получателей и сумм трансфера. var transfers = new List<Transfer> { Transfer.To(recipientAddress, amount), Transfer.To(recipientAddressTwo, amountTwo), Transfer.To(recipientAddressThree, amountThree) }; // Создайте Mass Transfer транзакцию. var massTx = MassTransferTransactionBuilder.Params(transfers, assetId).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(massTx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<MassTransferTransactionInfo>(massTx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Exchange
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из приватного ключа. var senderPublicKey = senderPrivateKey.PublicKey; // Укажите публичный ключ получателя. var recipientPublicKey = PublicKey.As("УКАЖИТЕ ПУБЛИЧНЫЙ КЛЮЧ ПОЛУЧАТЕЛЯ"); /* Укажите ID ассета: - Для WAVESs, используйте `AssetId.Waves`. - Для кастомных ассетов укажите ID ассета. */ var assetId = AssetId.As("PASTE THE ASSET ID HERE"); // Укажите сумму транзакции в наименьшей единице, например, `1000` для 10 токенов. var amount = Amount.As(250); // Укажите стоимость актива. var price = Amount.As(100, assetId); // Укажите комиссии матчера. var buyMatcherFee = 300_000; // Комиссия за ордер на покупку. var sellMatcherFee = 350_000; // Комиссия за ордер на продажу. var assetPair = new AssetPair { AmountAsset = assetId, PriceAsset = assetId }; // Создайте ордер на покупку (например, отправителем является матчер). var buyOrder = new OrderBuilder( OrderType.Buy, // Типа оредера: на покупку. amount, // Сумма покупки. price, // Стоимость актива. senderPublicKey, // Публичный ключ отправителя транзакции. assetPair // Пара активов. ).GetSignedWith(recipientPrivateKey); // Создайте ордер на продажу (например, отправителем является продавец). var sellOrder = new OrderBuilder( OrderType.Sell, // Типа оредера: на продажу. amount, // Сумма продажи. price, // Стоимость актива. senderPublicKey, // Публичный ключ отправителя транзакции. assetPair // Пара активов. ).GetSignedWith(senderPrivateKey); // Создайте Exchange транзакцию. var exchangeTx = ExchangeTransactionBuilder.Params(buyOrder, sellOrder, amount, price, buyMatcherFee, sellMatcherFee) .GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(exchangeTx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<ExchangeTransactionInfo>(exchangeTx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Lease
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из приватного ключа. var senderPublicKey = senderPrivateKey.PublicKey; // Define the recipient's public key. var recipientPublicKey = PublicKey.As("УКАЖИТЕ ПУБЛИЧНЫЙ КЛЮЧ ПОЛУЧАТЕЛЯ"); // Define the recipient’s address var recipientAddress = new Address("УКАЖИТЕ АДРЕС ПОЛУЧАТЕЛЯ"); // Создайте Lease транзакцию. var leaseTx = LeaseTransactionBuilder.Params(recipientAddress, amount).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(leaseTx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<LeaseTransactionInfo>(leaseTx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Lease Cancel
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из приватного ключа. var senderPublicKey = senderPrivateKey.PublicKey; // Укажите ID транзакции Lease. var leaseTxId = new Base58s("УКАЖИТЕ ID ТРАНЗАКЦИИ LEASE"); // Создайте Lease Cancel транзакцию. var leaseCancelTx = LeaseCancelTransactionBuilder.Params(leaseTxId).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(leaseCancelTx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<LeaseCancelTransactionInfo>(leaseCancelTx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Create Alias
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из привантного. var senderPublicKey = senderPrivateKey.PublicKey; // Создайте псевдоним, используя текущее время. var alias = Alias.As("alias" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()); // Создайте Create Alias транзакцию. var createAliasTx = CreateAliasTransactionBuilder .Params(alias) // Псевдоним. .GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(createAliasTx).Id); // Получите информацию о транзакции от ноды. var createAliasTxInfo = node.GetTransactionInfo<CreateAliasTransactionInfo>(createAliasTx.Id); // Выведите созданный псевдоним. Console.WriteLine(createAliasTxInfo.Transaction.Alias.ToFullString());
- Запустите приложение:
dotnet run
# Data
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из приватного ключа. var senderPublicKey = senderPrivateKey.PublicKey; // Создайте Data транзакцию. var dataTx = DataTransactionBuilder.Params( // Список, состоящий из параметров `BinaryEntry`, `BooleanEntry`, `IntegerEntry`, `StringEntry` или `null`. new List<EntryData> { // `data.type` строка с параметром `data.key`, равным `test key 1` и `data.value`, равным `test value`. DataEntry.AsString("test key 1", "test value"), // `data.type` логическое значение с параметром `data.key`, равным `test key 2` и параметром `data.value`, равным `true`. DataEntry.AsBoolean("test key 2", true) }).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(dataTx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<DataTransactionInfo>(dataTx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Set Script
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из приватного ключа. var senderPublicKey = senderPrivateKey.PublicKey; // Создайте скрипт. var txScript = "PASTE YOUR SCRIPT HERE". // Скомпилируйте скрипт в кодировку Base64. var compiledScript = node.CompileScript(txScript).Script; // Создайте Set Script транзакцию. var tx = SetScriptTransactionBuilder.Params(compiledScript).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(tx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<SetScriptTransactionInfo>(tx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Set Asset Script
О транзакции Set Asset Script.
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из приватного ключа. var senderPublicKey = senderPrivateKey.PublicKey; /* Укажите ID ассета: - Для WAVESs, используйте `AssetId.Waves`. - Для кастомных ассетов укажите ID ассета. */ var assetId = AssetId.As("PASTE THE ASSET ID HERE"); // Создайте скрипт и скомипилируйте его в строку в кодировке Base64. var script = node.CompileScript("PASTE YOUR SCRIPT HERE").Script; // Создайте Set Asset Script транзакцию. var tx = SetAssetScriptTransactionBuilder.Params(assetId, script).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(tx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<SetAssetScriptTransactionInfo>(tx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Update Asset Info
О транзакции Update Asset Info.
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из приватного ключа. var senderPublicKey = senderPrivateKey.PublicKey; // Укажите ID ассета. var assetId = AssetId.As("УКАЖИТЕ ID АССЕТА"); // Укажите наименование ассета. var name = "УКАЖИТЕ НАИМЕНОВАНИЕ АССЕТА"; // Укажите описание ассета. var description = "УКАЖИТЕ ОПИСАНИЕ АССЕТА"; // Создайте Update Asset Info транзакцию. var updateAssetInfoTx = UpdateAssetInfoTransactionBuilder.Params(assetId, name, description).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(updateAssetInfoTx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<UpdateAssetInfoTransactionInfo>(updateAssetInfoTx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Invoke Script
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из приватного ключа. var senderPublicKey = senderPrivateKey.PublicKey; // Укажите адрес вашего dApp-приложения. var dAppAddress = Address.As("УКАЖИТЕ АДРЕС ВАШЕГО DAPP"); /* Укажите ID ассета: - Для WAVESs, используйте `AssetId.Waves`. - Для кастомных ассетов укажите ID ассета. */ var assetId = AssetId.As("УКАЖИТЕ ID ПЕРВОГО АССЕТА"); var assetIdTwo = AssetId.As("УКАЖИТЕ ID ВТОРОГО АССЕТА"); var assetIdThree = AssetId.As("УКАЖИТЕ ID ТРЕТЬЕГОА АССЕТА"); // Создайте список платежей. var payments = new List<Amount> { Amount.As(1005, assetId), Amount.As(1005, assetIdTwo), Amount.As(1005, assetIdThree) }; var call = new Call { Function = "fname", Args = new List<CallArg> { // Бинарное значение `call.args.type` с параметром `call.args.value`, равным `senderAddress.bytes()`. CallArg.AsBinary(senderAddress.Bytes), // Логическое выражение `call.args.type` с параметром `call.args.value`, равным `true`. CallArg.AsBoolean(true), // Число `call.args.type` с параметром `call.args.value`, равным `100000`. CallArg.AsInteger(100000), // Строка `call.args.type` string с параметром `call.args.value`, равным `string value`. CallArg.AsString("string value"), // Список `call.args.type` с параметром `call.args.value`, равным `100000`. CallArg.AsList(new [] {CallArg.AsInteger(100000) }) } }; // Создайте Invoke Script транзакцию. var invokeScriptTx = InvokeScriptTransactionBuilder.Params(dAppAddress, payments, call).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(invokeScriptTx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<InvokeScriptTransactionInfo>(invokeScriptTx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run
# Sponsor Fee
В директории проекта:
- Замените содержимое файла
Program.cs
следующим блоком кода:// Необходимые импорты. using WavesLabs.Node.Client; using WavesLabs.Node.Transactions.Common; using WavesLabs.Node.Transactions; using WavesLabs.Node.Client.Transactions; // Создайте экземпляр ноды в необходимой сети: Testnet, Mainnet или Stagenet. var node = new Node(Profile.MainNet); // Создайте приватный ключ из сид-фразы кошелька. var senderPrivateKey = PrivateKey.FromSeed("УКАЖИТЕ ВАШУ СИД-ФРАЗУ"); // Создайте публичный ключ из приватного ключа. var senderPublicKey = senderPrivateKey.PublicKey; /* Укажите ID ассета: - Для WAVESs, используйте `AssetId.Waves`. - Для кастомных ассетов укажите ID ассета. */ var assetId = AssetId.As("PASTE THE ASSET ID HERE"); // Define the minimum sponsored asset fee в наименьшей единице, например, `1000` для 10 токенов. var minSponsoredAssetFee = 100000; // Создайте Sponsor Fee транзакцию. var sponsorFeeTx = SponsorFeeTransactionBuilder.Params(assetId, minSponsoredAssetFee).GetSignedWith(senderPrivateKey); // Отправьте транзакцию на ноду. node.WaitForTransaction(node.Broadcast(sponsorFeeTx).Id); // Получите информацию о транзакции от ноды. var txInfo = node.GetTransactionInfo<SponsorFeeTransactionInfo>(sponsorFeeTx.Id); // Выведите ID транзакции. Console.WriteLine(txInfo.Transaction.Id.ToString());
- Запустите приложение:
dotnet run