waves_logo Docs
  • Overview
    Overview
  • How-to Guides
    • Reading Blockchain Data
      Reading Blockchain Data
    • Creating & Broadcasting Transactions
      Creating & Broadcasting Transactions
    • Tokenization
      Tokenization
    • Airdrop
      Airdrop
    • Payments
      Payments
    • Exchange Tokens
      Exchange Tokens
    • Simple Voting
      Simple Voting
    • List as argument
      List as argument
    How-to Guides
  • Waves Smart Contracts
    Waves Smart Contracts
  • dApp
    • Creating & Launching dApp
      Creating & Launching dApp
    dApp
  • Smart Account
    • Creating smart account
      Creating smart account
    • Creating and deploying a script manually
      Creating and deploying a script manually
    • Video tutorials
      • Introduction to the Waves blockchain, Waves Smart Accounts and Waves Smart Assets
        Introduction to the Waves blockchain, Waves Smart Accounts and Waves Smart Assets
      • Waves Smart Account with multisignature
        Waves Smart Account with multisignature
      • Waves Smart Account with escrow service
        Waves Smart Account with escrow service
      • Creating multisignature account via Waves IDE tools
        Creating multisignature account via Waves IDE tools
      • Creating multisignature account via Waves Client
        Creating multisignature account via Waves Client
      • Waves console explained
        Waves console explained
      Video tutorials
    Smart Account
  • Smart Asset
    Smart Asset
  • Developer Tools
    • Waves IDE
      Waves IDE
    • Visual Studio Code Extension
      Visual Studio Code Extension
    • Surfboard
      Surfboard
    • Ride REPL
      Ride REPL
    Developer Tools
  • 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
  • Client Libraries
    • Waves C#
      • Install SDK
        Install SDK
      • Run Code Sample
        • Send Transactions
          Send Transactions
        • Use Crypto Utilities
          Use Crypto Utilities
        • Interact With Node
          Interact With Node
        • Set Up Smart Contracts
          Set Up Smart Contracts
        Run Code Sample
      Waves C#
    • Gowaves
      • Install SDK
        Install SDK
      • Run Code Sample
        • Send Transactions
          Send Transactions
        • Use Crypto Utilities
          Use Crypto Utilities
        • Interact With Node
          Interact With Node
        • Set Up Smart Contracts
          Set Up Smart Contracts
        Run Code Sample
      Gowaves
    • WavesJ
      • Install SDK
        Install SDK
      • Run Code Sample
        • Send Transactions
          Send Transactions
        • Use Crypto Utilities
          Use Crypto Utilities
        • Interact With Node
          Interact With Node
        • Set Up Smart Contracts
          Set Up Smart Contracts
        Run Code Sample
      WavesJ
    • Ts-lib-crypto
      • Install SDK
        Install SDK
      Ts-lib-crypto
    • Waves-PHP
      • Install SDK
        Install SDK
      Waves-PHP
    • PyWaves-CE
      • Install SDK
        Install SDK
      • Run Code Sample
        • Send Transactions
          Send Transactions
        • Use Crypto Utilities
          Use Crypto Utilities
        • Interact With Node
          Interact With Node
        • Set Up Smart Contracts
          Set Up Smart Contracts
        Run Code Sample
      PyWaves-CE
    • Waves-rust
      • Install SDK
        Install SDK
      Waves-rust
    Client Libraries
      • English
      • Русский
      On this page
        • Prerequisites
        • Tutorial
      waves_logo Docs

          # Send Transactions

          Send transactions after meeting the prerequisites.

          # Prerequisites

          • Wallet: Set up a wallet via Keeper Wallet or WX Network .

            NOTE: Ensure saving your wallet's seed phrase to send transactions.

          • Tokens: Obtain WAVES tokens to cover each transaction's fee:
            • For the Mainnet network: Get at least 0.001 WAVES via Available Market Options .
            • For the Testnet network: Get at least 0.001 WAVES via Faucet .
            • For the Stagenet network: Get at least 0.001 WAVES via Faucet .

          # Tutorial

          Follow the instructions for the transaction type you want to send:

          • 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

          About Issue Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            • For creating a regular asset:
              # Necessary imports.
              import pywaves as pw
              import time
              import json
              
              # Set the node link and chain ID.
              pw.setNode(
                  # Specify the link for the network:
                  # - Mainnet: 'https://nodes.wavesnodes.com/'
                  # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                  # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                  node='https://nodes-testnet.wavesnodes.com', 
              
                  # Specify the network chain ID:
                  # - Mainnet: 'M'
                  # - Testnet: 'T'
                  # - Stagenet: 'S'
                  chain='T'
              )
              
              # Specify your wallet seed phrase.
              seed_phrase = 'PASTE YOUR SEED PHRASE'
              
              # Create an address object from the seed phrase.
              my_address = pw.Address(seed=seed_phrase)
              
              # Define the asset parameters.
              asset_name = 'MyToken'                  # Name.
              asset_description = 'Asset description' # Description.
              total_tokens = 1000                     # Quantity.
              decimals = 2                            # Decimals.
              reissuable = True                       # Flag indicating whether the asset is reissuable.
              
              # Calculate the token quantity in minimal units.
              quantity = total_tokens * (10 ** decimals)
              
              # Create the Issue transaction.
              try:
                  print("Issuing asset...")
                  issue_tx = my_address.issueAsset(
                      name=asset_name,
                      description=asset_description,
                      quantity=quantity,
                      decimals=decimals,
                      reissuable=reissuable
                  )
              except Exception as e:
                  print(f"An error occurred while issuing the asset: {e}")
                  exit(1)
              
              # Wait for the transaction to be processed.
              print("Waiting for the transaction to be confirmed...")
              time.sleep(5)
              
              # Retrieve and print the transaction details.
              try:
                  tx_data = issue_tx
                  print("Transaction successfully broadcasted. Details:")
                  print(json.dumps(tx_data, indent=4))
              except Exception as e:
                  print(f"An error occurred while retrieving transaction details: {e}")
              
            • For creating a smart asset:
              # Necessary imports.
              import pywaves as pw
              import time
              import json
              
              # Set the node link and chain ID.
              pw.setNode(
                  # Specify the link for the network:
                  # - Mainnet: 'https://nodes.wavesnodes.com/'
                  # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                  # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                  node='https://nodes-testnet.wavesnodes.com',
              
                  # Specify the network chain ID:
                  # - Mainnet: 'M'
                  # - Testnet: 'T'
                  # - Stagenet: 'S'
                  chain='T'
              )
              
              # Specify your wallet seed phrase.
              seed_phrase = 'PASTE YOUR SEED PHRASE'
              
              # Create an address object from the seed phrase.
              my_address = pw.Address(seed=seed_phrase)
              
              # Define the smart asset parameters.
              asset_name = 'MySmartToken'              # Name.
              asset_description = 'A smart asset test' # Description.
              total_tokens = 1000                      # Quantity.
              decimals = 2                             # Decimals.
              reissuable = True                        # Flag indicating whether the asset is reissuable.
              
              # Specify a Ride script of the smart asset.
              script_source = """
              {-# STDLIB_VERSION 8 #-}
              {-# CONTENT_TYPE EXPRESSION #-}
              {-# SCRIPT_TYPE ASSET #-}
              true
              """
              
              # Calculate the quantity in minimal units.
              quantity = total_tokens * (10 ** decimals)
              
              # Create the Issue transaction.
              try:
                  print("Issuing smart asset...")
                  issue_tx = my_address.issueSmartAsset(
                      asset_name,
                      asset_description,
                      quantity,
                      scriptSource=script_source,
                      decimals=decimals,
                      reissuable=reissuable
                  )
              except Exception as e:
                  print(f"An error occurred while issuing the smart asset: {e}")
                  exit(1)
              
              # Wait for the transaction to be processed.
              print("Waiting for the transaction to be confirmed...")
              time.sleep(5)
              
              # Retrieve and print the transaction details.
              try:
                  tx_data = issue_tx
                  print("Smart asset successfully issued. Details:")
                  print(json.dumps(tx_data, indent=4))
              except Exception as e:
                  print(f"An error occurred while retrieving the transaction details: {e}")
              
          2. Run the main.py file:
            python main.py 
            

          # Reissue

          About Reissue Transaction.

          NOTE: You can reissue only those asset that were issued by you with the reissuable flag set to true.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            # Necessary imports.
            import pywaves as pw
            import time
            import json
            
            # Set the node link and chain ID.
            pw.setNode(
                # Specify the link for the network:
                # - Mainnet: 'https://nodes.wavesnodes.com/'
                # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                node='https://nodes-testnet.wavesnodes.com',
            
                # Specify the network chain ID:
                # - Mainnet: 'M'
                # - Testnet: 'T'
                # - Stagenet: 'S'
                chain='T'
            )
            
            # Specify your wallet seed phrase.
            seed_phrase = 'PASTE YOUR SEED PHRASE'
            
            # Create an address object from the seed phrase.
            my_address = pw.Address(seed=seed_phrase)
            
            # Specify the asset ID of the token to reissue.
            asset_id = 'PASTE YOUR ASSET ID'
            
            # Create an asset object using the asset ID.
            my_token = pw.Asset(asset_id)
            
            # Define the reissue parameters.
            additional_tokens = 500  # Number of additional tokens to issue.
            decimals = 2             # Number of decimals the token uses.
            reissuable = True        # Flag indicating whether the asset remains reissuable.
            
            # Calculate the token quantity in minimal units.
            quantity = additional_tokens * (10 ** decimals)
            
            # Create the Reissue transaction.
            try:
                print("Reissuing asset...")
                reissue_tx = my_address.reissueAsset(
                    asset=my_token,
                    quantity=quantity,
                    reissuable=reissuable
                )
            except Exception as e:
                print(f"An error occurred while reissuing the asset: {e}")
                exit(1)
            
            # Wait for the transaction to be processed.
            print("Waiting for the transaction to be confirmed...")
            time.sleep(5)
            
            # Retrieve and print the transaction details.
            try:
                tx_data = reissue_tx
                print("Transaction successfully broadcasted. Details:")
                print(json.dumps(tx_data, indent=4))
            except Exception as e:
                print(f"An error occurred while retrieving transaction details: {e}")
            
          2. Run the main.py file:
            python main.py 
            

          # Burn

          About Burn Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            # Necessary imports.
            import pywaves as pw
            import time
            import json
            
            # Set the node link and chain ID.
            pw.setNode(
                # Specify the link for the network:
                # - Mainnet: 'https://nodes.wavesnodes.com/'
                # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                node='https://nodes-testnet.wavesnodes.com',
            
                # Specify the network chain ID:
                # - Mainnet: 'M'
                # - Testnet: 'T'
                # - Stagenet: 'S'
                chain='T'
            )
            
            # Specify your wallet seed phrase.
            seed_phrase = 'PASTE YOUR SEED PHRASE'
            
            # Create an address object from the seed phrase.
            my_address = pw.Address(seed=seed_phrase)
            
            # Specify the asset ID of the token to burn.
            asset_id = 'PASTE AN ASSET ID'
            
            # Create an asset object using the asset ID.
            my_token = pw.Asset(asset_id)
            
            # Define the burn parameters.
            tokens_to_burn = 100  # Number of tokens to burn.
            decimals = 2          # Number of decimals the token uses.
            
            # Calculate the token quantity in minimal units.
            quantity = tokens_to_burn * (10 ** decimals)
            
            # Create the Burn transaction.
            try:
                print("Burning asset...")
                burn_tx = my_address.burnAsset(
                    asset=my_token,
                    quantity=quantity
                )
            except Exception as e:
                print(f"An error occurred while burning the asset: {e}")
                exit(1)
            
            # Wait for the transaction to be processed.
            print("Waiting for the transaction to be confirmed...")
            time.sleep(5)
            
            # Retrieve and print the transaction details.
            try:
                tx_data = burn_tx
                print("Transaction successfully broadcasted. Details:")
                print(json.dumps(tx_data, indent=4))
            except Exception as e:
                print(f"An error occurred while retrieving transaction details: {e}")
            
          2. Run the main.py file:
            python main.py 
            

          # Transfer

          About Transfer Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            • For custom asset transfers:
              # Necessary imports.
              import pywaves as pw
              import time
              import json
              
              # Set the node link and chain ID.
              pw.setNode(
                  # Specify the link for the network:
                  # - Mainnet: 'https://nodes.wavesnodes.com/'
                  # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                  # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                  node='https://nodes-testnet.wavesnodes.com',
              
                  # Specify the network chain ID:
                  # - Mainnet: 'M'
                  # - Testnet: 'T'
                  # - Stagenet: 'S'
                  chain='T'
              )
              
              # Specify your wallet seed phrase.
              seed_phrase = 'PASTE YOUR SEED PHRASE'
              
              # Create an address object from the seed phrase.
              my_address = pw.Address(seed=seed_phrase)
              
              # Specify the asset ID of the token to transfer.
              asset_id = 'PASTE AN ASSET ID'
              
              # Create an asset object using the asset ID.
              my_token = pw.Asset(asset_id)
              
              # Specify the recipient address.
              recipient_address = 'PASTE A RECIPIENT ADDRESS'
              
              # Specify the amount to transfer in token units (not minimal units).
              amount = 10
              
              # Number of decimals the token uses.
              decimals = 2
              
              # Calculate the token amount in minimal units.
              amount_in_minimal_units = amount * (10 ** decimals)
              
              # Create the Transfer transaction.
              try:
                  print("Performing asset transfer...")
                  transfer_tx = my_address.sendAsset(
                      recipient=pw.Address(address=recipient_address),
                      asset=my_token,
                      amount=amount_in_minimal_units
                  )
              except Exception as e:
                  print(f"An error occurred while performing the asset transfer: {e}")
                  exit(1)
              
              # Wait for the transaction to be processed.
              print("Waiting for the transaction to be confirmed...")
              time.sleep(5)
              
              # Retrieve and print the transaction details.
              try:
                  tx_data = transfer_tx
                  print("Transaction successfully broadcasted. Details:")
                  print(json.dumps(tx_data, indent=4))
              except Exception as e:
                  print(f"An error occurred while retrieving transaction details: {e}")
              
            • For transfers in WAVES:
              # Necessary imports.
              import pywaves as pw
              import time
              import json
              
              # Set the node link and chain ID.
              pw.setNode(
                  # Specify the link for the network:
                  # - Mainnet: 'https://nodes.wavesnodes.com/'
                  # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                  # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                  node='https://nodes-testnet.wavesnodes.com',
              
                  # Specify the network chain ID:
                  # - Mainnet: 'M'
                  # - Testnet: 'T'
                  # - Stagenet: 'S'
                  chain='T'
              )
              
              # Specify your wallet seed phrase.
              seed_phrase = 'PASTE YOUR SEED PHRASE'
              
              # Create an address object from the seed phrase.
              my_address = pw.Address(seed=seed_phrase)
              
              # Specify the recipient address.
              recipient_address = 'PASTE A RECIPIENT ADDRESS'
              
              # Specify the amount to transfer in WAVES.
              amount = 1.5 # Amount example.
              
              # Number of decimals WAVES uses.
              decimals = 8 # Decimals' example.
              
              # Calculate the WAVES amount in minimal units.
              amount_in_minimal_units = int(amount * (10 ** decimals))
              
              # Create the Transfer transaction.
              try:
                  print("Performing WAVES transfer...")
                  transfer_tx = my_address.sendWaves(
                      recipient=pw.Address(address=recipient_address),
                      amount=amount_in_minimal_units
                  )
              except Exception as e:
                  print(f"An error occurred while performing the WAVES transfer: {e}")
                  exit(1)
              
              # Wait for the transaction to be processed.
              print("Waiting for the transaction to be confirmed...")
              time.sleep(5)
              
              # Retrieve and print the transaction details.
              try:
                  tx_data = transfer_tx
                  print("Transaction successfully broadcasted. Details:")
                  print(json.dumps(tx_data, indent=4))
              except Exception as e:
                  print(f"An error occurred while retrieving transaction details: {e}")
              
          2. Run the main.py file:
            python main.py 
            

          # Mass Transfer

          About Mass Transfer Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            • For custom asset transfers:
              # Necessary imports.
              import pywaves as pw
              import time
              import json
              
              # Set the node link and chain ID.
              pw.setNode(
                  node='https://nodes-testnet.wavesnodes.com',
                  chain='T'
              )
              
              # Specify your wallet seed phrase.
              seed_phrase = 'PASTE YOUR SEED PHRASE'
              
              # Create an address object from the seed phrase.
              my_address = pw.Address(seed=seed_phrase)
              
              # Specify the asset ID of the token to transfer.
              asset_id = 'PASTE AN ASSET ID'
              
              # Create an asset object using the asset ID.
              my_token = pw.Asset(asset_id)
              
              # Define the transfer parameters.
              decimals = 2 # Number of decimals the token uses.
              
              # Define the list of recipients and amounts.
              # Each transfer is a dictionary with 'recipient' and 'amount' keys.
              # Amounts should be specified in token units (not minimal units).
              transfers = [
                  # Specify the first recipient address and the relevant transfer amount.
                  {'recipient': 'PASTE THE FIRST RECIPIENT ADDRESS', 'amount': 10},
              
                  # Specify the second recipient address and the relevant transfer amount.
                  {'recipient': 'PASTE THE SECOND RECIPIENT ADDRESS', 'amount': 20},
              
                  # Specify the third recipient address and the relevant transfer amount.
                  {'recipient': 'PASTE THE THIRD RECIPIENT ADDRESS', 'amount': 30}
              
                  # ...
              ]
              
              # Convert amounts to minimal units.
              for transfer in transfers:
                  transfer['amount'] *= 10 ** decimals
              
              # Create the Mass Transfer transaction.
              try:
                  print("Performing mass transfer of asset...")
                  mass_transfer_tx = my_address.massTransferAssets(
                      asset=my_token,
                      transfers=transfers
                  )
              except Exception as e:
                  print(f"An error occurred while performing the mass transfer: {e}")
                  exit(1)
              
              # Wait for the transaction to be processed.
              print("Waiting for the transaction to be confirmed...")
              time.sleep(5)
              
              # Retrieve and print the transaction details.
              try:
                  tx_data = mass_transfer_tx
                  print("Transaction successfully broadcasted. Details:")
                  print(json.dumps(tx_data, indent=4))
              except Exception as e:
                  print(f"An error occurred while retrieving transaction details: {e}")
              
            • For transfers in WAVES:
              # Necessary imports.
              import pywaves as pw
              import time
              import json
              
              # Set the node link and chain ID.
              pw.setNode(
                  # Specify the link for the network:
                  # - Mainnet: 'https://nodes.wavesnodes.com/'
                  # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                  # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                  node='https://nodes-testnet.wavesnodes.com',
              
                  # Specify the network chain ID:
                  # - Mainnet: 'M'
                  # - Testnet: 'T'
                  # - Stagenet: 'S'
                  chain='T'
              )
              
              # Specify your wallet seed phrase.
              seed_phrase = 'PASTE YOUR SEED PHRASE'
              
              # Create an address object from the seed phrase.
              my_address = pw.Address(seed=seed_phrase)
              
              # Define the transfer parameters.
              decimals = 8  # Number of decimals WAVES uses.
              
              # Define the list of recipients and amounts.
              # Each transfer is a dictionary with 'recipient' and 'amount' keys.
              # Amounts should be specified in WAVES units (not minimal units).
              transfers = [
                  # Specify the first recipient address and the relevant transfer amount.
                  {'recipient': 'PASTE THE FIRST RECIPIENT ADDRESS', 'amount': 0.1},
              
                  # Specify the second recipient address and the relevant transfer amount.
                  {'recipient': 'PASTE THE SECOND RECIPIENT ADDRESS', 'amount': 0.2},
              
                  # Specify the third recipient address and the relevant transfer amount.
                  {'recipient': 'PASTE THE THIRD RECIPIENT ADDRESS', 'amount': 0.3}
              
                  # ...
              ]
              
              # Convert amounts to minimal units.
              for transfer in transfers:
                  transfer['amount'] = int(transfer['amount'] * (10 ** decimals))
              
              # Create the Mass Transfer transaction without attachment.
              try:
                  print("Performing mass transfer of WAVES...")
                  mass_transfer_tx = my_address.massTransferWaves(
                      transfers=transfers
                  )
              except Exception as e:
                  print(f"An error occurred while performing the mass transfer: {e}")
                  exit(1)
              
              # Wait for the transaction to be processed.
              print("Waiting for the transaction to be confirmed...")
              time.sleep(5)
              
              # Retrieve and print the transaction details.
              try:
                  tx_data = mass_transfer_tx
                  print("Transaction successfully broadcasted. Details:")
                  print(json.dumps(tx_data, indent=4))
              except Exception as e:
                  print(f"An error occurred while retrieving transaction details: {e}")
              
          2. Run the main.py file:
            python main.py 
            

          # Exchange

          About Exchange Transaction.

          Note: While the SDK does not support the Exchange transaction directly, it does provide separate support for creating buy and sell orders.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            • For creating a buy order:
              # Necessary imports.
              import pywaves as pw
              import time
              import json
              
              # Set the node link and chain ID.
              pw.setNode(
                  # Specify the link for the network:
                  # - Mainnet: 'https://nodes.wavesnodes.com/'
                  # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                  # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                  node="https://nodes-testnet.wavesnodes.com",
              
                  # Specify the network chain ID:
                  # - Mainnet: 'M'
                  # - Testnet: 'T'
                  # - Stagenet: 'S'
                  chain="T"
              )
              
              # Set the matcher node for trades.
              pw.setMatcher("http://matcher-testnet.waves.exchange") # Address example.
              
              # Specify your wallet seed phrase.
              seed_phrase = "PASTE YOUR SEED PHRASE"
              
              # Create an address object from the seed phrase.
              my_address = pw.Address(seed=seed_phrase)
              
              # Specify the trading pair: asset you want to buy and asset to pay with.
              amount_asset = pw.Asset("PASTE AN ASSET ID") # Asset to buy.
              price_asset = pw.Asset("WAVES")              # Native WAVES asset.
              
              # Create the asset pair object.
              asset_pair = pw.AssetPair(amount_asset, price_asset)
              
              # Define order parameters.
              amount = 0.001 # Amount of tokens to buy.
              price = 0.001  # Price per token in WAVES.
              
              # Convert to minimal units using asset decimals attributes.
              amount_min = int(amount * (10 ** amount_asset.decimals))
              price_min  = int(price  * (10 ** price_asset.decimals))
              
              # Define matcher fee and order lifetime.
              matcher_fee  = pw.DEFAULT_MATCHER_FEE
              max_lifetime = 3600 # 1 hour
              
              # Create the Buy Order.
              try:
                  print("Posting a buy order...")
                  buy_order = my_address.buy(
                      assetPair=asset_pair,
                      amount=amount_min,
                      price=price_min,
                      matcherFee=matcher_fee,
                      maxLifetime=max_lifetime
                  )
                  print("Buy order successfully posted.")
                  print("Order details:")
                  print(json.dumps(buy_order, indent=4))
              except Exception as e:
                  print(f"An error occurred while posting the buy order: {e}")
                  exit(1)
              
            • For creating a sell order:
              # Necessary imports.
              import pywaves as pw
              import time
              import json
              
              # Set the node link and chain ID.
              pw.setNode(
                  # Specify the link for the desired network:
                  # - Mainnet: 'https://nodes.wavesnodes.com/'
                  # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                  # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                  node="https://nodes-testnet.wavesnodes.com",
              
                  # Specify the network chain ID:
                  # - Mainnet: 'M'
                  # - Testnet: 'T'
                  # - Stagenet: 'S'
                  chain="T"
              )
              
              # Set the matcher node for trades.
              pw.setMatcher("https://matcher-testnet.waves.exchange") # Matcher address example.
              
              # Specify your wallet seed phrase.
              seed_phrase = "PASTE YOUR SEED PHRASE"
              
              # Create an address object from the seed phrase.
              my_address = pw.Address(seed=seed_phrase)
              
              # Specify the trading pair: asset you want to sell and asset to receive.
              amount_asset = pw.Asset("PASTE AN ASSET ID") # Asset to sell.
              price_asset = pw.Asset("WAVES")              # Asset to receive.
              
              # Create the asset pair object.
              asset_pair = pw.AssetPair(amount_asset, price_asset)
              
              # Define order parameters.
              amount = 0.001 # Amount of tokens to sell.
              price = 0.001  # Price per token in WAVES.
              
              # Convert to minimal units using asset decimals attributes.
              amount_min = int(amount * (10 ** amount_asset.decimals))
              price_min  = int(price  * (10 ** price_asset.decimals))
              
              # Define matcher fee and order lifetime.
              matcher_fee  = pw.DEFAULT_MATCHER_FEE
              max_lifetime = 3600  # 1 hour
              
              # Create the Sell Order.
              try:
                  print("Posting a sell order...")
                  sell_order = my_address.sell(
                      assetPair=asset_pair,
                      amount=amount_min,
                      price=price_min,
                      matcherFee=matcher_fee,
                      maxLifetime=max_lifetime
                  )
                  print("Sell order successfully posted.")
                  print("Order details:")
                  print(json.dumps(sell_order, indent=4))
              except Exception as e:
                  print(f"An error occurred while posting the sell order: {e}")
                  exit(1)
              
          2. Run the main.py file:
            python main.py 
            

          # Lease

          About Lease Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            # Necessary imports.
            import pywaves as pw
            import time
            import json
            
            # Set the node link and chain ID.
            pw.setNode(
                # Specify the link for the network:
                # - Mainnet: 'https://nodes.wavesnodes.com/'
                # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                node='https://nodes-testnet.wavesnodes.com',
            
                # Specify the network chain ID:
                # - Mainnet: 'M'
                # - Testnet: 'T'
                # - Stagenet: 'S'
                chain='T'
            )
            
            # Specify your wallet seed phrase.
            seed_phrase = 'PASTE YOUR SEED PHRASE'
            
            # Create an address object from the seed phrase.
            my_address = pw.Address(seed=seed_phrase)
            
            # Specify the recipient address.
            recipient_address = 'PASTE A RECIPIENT ADDRESS'
            
            # Specify the amount to lease in WAVES.
            amount = 1.5
            
            # Number of decimals WAVES uses.
            decimals = 8
            
            # Calculate the WAVES amount in minimal units.
            amount_in_minimal_units = int(amount * (10 ** decimals))
            
            # Create the Lease transaction.
            try:
                print("Performing WAVES lease...")
                lease_tx = my_address.lease(
                    recipient=pw.Address(address=recipient_address),
                    amount=amount_in_minimal_units
                )
            except Exception as e:
                print(f"An error occurred while performing the WAVES lease: {e}")
                exit(1)
            
            # Wait for the transaction to be processed.
            print("Waiting for the transaction to be confirmed...")
            time.sleep(5)
            
            # Retrieve and print the transaction details.
            try:
                tx_data = lease_tx
                print("Transaction successfully broadcasted. Details:")
                print(json.dumps(tx_data, indent=4))
            except Exception as e:
                print(f"An error occurred while retrieving transaction details: {e}")
            
          2. Run the main.py file:
            python main.py 
            

          # Lease Cancel

          About Lease Cancel Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            # Necessary imports.
            import pywaves as pw
            import time
            import json
            
            # Set the node link and chain ID.
            pw.setNode(
                # Specify the link for the network:
                # - Mainnet: 'https://nodes.wavesnodes.com/'
                # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                node='https://nodes-testnet.wavesnodes.com',
            
                # Specify the network chain ID:
                # - Mainnet: 'M'
                # - Testnet: 'T'
                # - Stagenet: 'S'
                chain='T'
            )
            
            # Specify your wallet seed phrase.
            seed_phrase = 'PASTE YOUR SEED PHRASE'
            
            # Create an address object from the seed phrase.
            my_address = pw.Address(seed=seed_phrase)
            
            # Specify the lease transaction ID to cancel.
            lease_id = 'PASTE A LEASE TRANSACTION ID'
            
            # Create the Lease Cancel transaction.
            try:
                print("Cancelling lease transaction...")
                lease_cancel_tx = my_address.leaseCancel(leaseId=lease_id)
            except Exception as e:
                print(f"An error occurred while cancelling the lease: {e}")
                exit(1)
            
            # Wait for the transaction to be processed.
            print("Waiting for the transaction to be confirmed...")
            time.sleep(5)
            
            # Retrieve and print the transaction details.
            try:
                tx_data = lease_cancel_tx
                print("Lease cancellation transaction successfully broadcasted. Details:")
                print(json.dumps(tx_data, indent=4))
            except Exception as e:
                print(f"An error occurred while retrieving transaction details: {e}")
                ```
            
          2. Run the main.py file:
            python main.py 
            

          # Create Alias

          About Create Alias Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            # Necessary imports.
            import pywaves as pw
            import time
            import json
            
            # Set the node link and chain ID.
            pw.setNode(
                # Specify the link for the network:
                # - Mainnet: 'https://nodes.wavesnodes.com/'
                # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                node='https://nodes-testnet.wavesnodes.com',
            
                # Specify the network chain ID:
                # - Mainnet: 'M'
                # - Testnet: 'T'
                # - Stagenet: 'S'
                chain='T'
            )
            
            # Specify your wallet seed phrase.
            seed_phrase = 'PASTE YOUR SEED PHRASE'
            
            # Create an address object from the seed phrase.
            my_address = pw.Address(seed=seed_phrase)
            
            # Define the alias to be created.
            alias = 'new_alias' # Alias example.
            
            # Create the Create Alias transaction.
            try:
                print("Creating alias...")
                alias_tx = my_address.createAlias(alias=alias)
            except Exception as e:
                print(f"An error occurred while creating the alias: {e}")
                exit(1)
            
            # Wait for the transaction to be processed.
            print("Waiting for the transaction to be confirmed...")
            time.sleep(5)
            
            # Retrieve and print the transaction details.
            try:
                tx_data = alias_tx
                print("Transaction successfully broadcasted. Details:")
                print(json.dumps(tx_data, indent=4))
            except Exception as e:
                print(f"An error occurred while retrieving transaction details: {e}")
            
          2. Run the main.py file:
            python main.py 
            

          # Data

          About Data Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            # Necessary imports.
            import pywaves as pw
            import time
            import json
            
            # Set the node link and chain ID.
            pw.setNode(
                # Specify the link for the network:
                # - Mainnet: 'https://nodes.wavesnodes.com/'
                # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                node='https://nodes-testnet.wavesnodes.com',
            
                # Specify the network chain ID:
                # - Mainnet: 'M'
                # - Testnet: 'T'
                # - Stagenet: 'S'
                chain='T'
            )
            
            # Specify your wallet seed phrase.
            seed_phrase = 'PASTE YOUR SEED PHRASE'
            
            # Create an address object from the seed phrase.
            my_address = pw.Address(seed=seed_phrase)
            
            # Define the data to be stored.
            data = [
                {'type': 'string', 'key': 'exampleKey', 'value': 'exampleValue'}
            ]
            
            # Create the Data transaction.
            try:
                print("Creating data transaction...")
                data_tx = my_address.dataTransaction(data=data)
            except Exception as e:
                print(f"An error occurred while creating the data transaction: {e}")
                exit(1)
            
            # Wait for the transaction to be processed.
            print("Waiting for the transaction to be confirmed...")
            time.sleep(5)
            
            # Retrieve and print the transaction details.
            try:
                tx_data = data_tx
                print("Transaction successfully broadcasted. Details:")
                print(json.dumps(tx_data, indent=4))
            except Exception as e:
                print(f"An error occurred while retrieving transaction details: {e}")
            
          2. Run the main.py file:
            python main.py 
            

          # Set Script

          About Set Script Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            # Necessary imports.
            import pywaves as pw
            import time
            import json
            
            # Set the node link and chain ID.
            pw.setNode(
                # Specify the link for the network:
                # - Mainnet: 'https://nodes.wavesnodes.com/'
                # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                node='https://nodes-testnet.wavesnodes.com',
            
                # Specify the network chain ID:
                # - Mainnet: 'M'
                # - Testnet: 'T'
                # - Stagenet: 'S'
                chain='T'
            )
            
            # Specify your wallet seed phrase.
            seed_phrase = 'PASTE YOUR SEED PHRASE'
            
            # Create an address object from the seed phrase.
            my_address = pw.Address(seed=seed_phrase)
            
            # Define the script to be set.
            script = '{-# SCRIPT_TYPE ACCOUNT #-} true' # Script example.
            
            # Create the Set Script transaction.
            try:
                print("Setting script for the address...")
                set_script_tx = my_address.setScript(script)
            except Exception as e:
                print(f"An error occurred while setting the script: {e}")
                exit(1)
            
            # Wait for the transaction to be processed.
            print("Waiting for the transaction to be confirmed...")
            time.sleep(5)
            
            # Retrieve and print the transaction details.
            try:
                tx_data = set_script_tx
                print("Transaction successfully broadcasted. Details:")
                print(json.dumps(tx_data, indent=4))
            except Exception as e:
                print(f"An error occurred while retrieving transaction details: {e}")
            
          2. Run the main.py file:
            python main.py 
            

          # Set Asset Script

          About Set Asset Script Transaction.

          NOTE: You can set an asset script only on those asset that were issued with a ride script attached.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            # Necessary imports.
            import pywaves as pw
            import time
            import json
            
            # Set the node link and chain ID.
            pw.setNode(
                # Specify the link for the network:
                # - Mainnet: 'https://nodes.wavesnodes.com/'
                # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                node='https://nodes-testnet.wavesnodes.com',
            
                # Specify the network chain ID:
                # - Mainnet: 'M'
                # - Testnet: 'T'
                # - Stagenet: 'S'
                chain='T'
            )
            
            # Specify your wallet seed phrase.
            seed_phrase = 'PASTE YOUR SEED PHRASE'
            
            # Create an address object from the seed phrase.
            my_address = pw.Address(seed=seed_phrase)
            
            # Specify the asset ID of the smart asset.
            asset_id = 'PASTE AN ASSET ID'
            
            # Create an asset object.
            asset = pw.Asset(asset_id)
            
            # Define the new script to be set for the asset.
            script_source = '{-# SCRIPT_TYPE ACCOUNT #-} true' # Script example.
            
            # Set the new script for the asset.
            try:
                print("Setting new script for the asset...")
                set_asset_script_tx = my_address.setAssetScript(asset, script_source)
            except Exception as e:
                print(f"An error occurred while setting the asset script: {e}")
                exit(1)
            
            # Wait for the transaction to be processed.
            print("Waiting for the transaction to be confirmed...")
            time.sleep(5)
            
            # Retrieve and print the transaction details.
            try:
                tx_data = set_asset_script_tx
                print("Transaction successfully broadcasted. Details:")
                print(json.dumps(tx_data, indent=4))
            except Exception as e:
                print(f"An error occurred while retrieving transaction details: {e}")
            
          2. Run the main.py file:
            python main.py 
            

          # Update Asset Info

          About Update Asset Info Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            # Necessary imports.
            import pywaves as pw
            import time
            import json
            
            # Set the node link and chain ID.
            pw.setNode(
                # Specify the link for the network:
                # - Mainnet: 'https://nodes.wavesnodes.com/'
                # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                node='https://nodes-testnet.wavesnodes.com',
            
                # Specify the network chain ID:
                # - Mainnet: 'M'
                # - Testnet: 'T'
                # - Stagenet: 'S'
                chain='T'
            )
            
            # Specify your wallet seed phrase.
            seed_phrase = 'PASTE YOUR SEED PHRASE'
            
            # Create an address object from the seed phrase.
            my_address = pw.Address(seed=seed_phrase)
            
            # Define the asset ID of the asset to be updated.
            asset_id = 'PASTE YOUR ASSET ID'
            
            # Define the new name and description for the asset.
            new_name = 'NewAssetName'                             # Name example.
            new_description = 'Updated description for the asset' # Description example.
            
            # Creating the Update Asset Info transaction.
            try:
                print("Generating Update Asset Info transaction...")
                update_asset_info_tx = my_address.updateAssetInfo(
                    assetId=asset_id,
                    name=new_name,
                    description=new_description
                )
            except Exception as e:
                print(f"An error occurred while generating the Update Asset Info transaction: {e}")
                exit(1)
            
            # Wait for the transaction to be processed.
            print("Waiting for the transaction to be confirmed...")
            time.sleep(5)
            
            # Retrieve and print the transaction details.
            try:
                print("Transaction successfully broadcasted. Details:")
                print(json.dumps(update_asset_info_tx, indent=4))
            except Exception as e:
                print(f"An error occurred while retrieving transaction details: {e}")
            
          2. Run the main.py file:
            python main.py 
            

          # Invoke Script

          About Invoke Script Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            # Necessary imports.
            import pywaves as pw
            import time
            import json
            
            # Set the node link and chain ID.
            pw.setNode(
                # Specify the link for the network:
                # - Mainnet: 'https://nodes.wavesnodes.com/'
                # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                node='https://nodes-testnet.wavesnodes.com',
            
                # Specify the network chain ID:
                # - Mainnet: 'M'
                # - Testnet: 'T'
                # - Stagenet: 'S'
                chain='T'
            )
            
            # Specify your wallet seed phrase.
            seed_phrase = 'PASTE YOUR SEED PHRASE'
            
            # Create an address object from the seed phrase.
            my_address = pw.Address(seed=seed_phrase)
            
            # Define the dApp address to be invoked.
            dapp_address = 'PASTE A DAPP ADDRESS'
            
            # Define the callable function name.
            function_name = 'PASTE A FUNCTION NAME'
            
            # Define the arguments to pass to the function.
            params = [
                # Example arguments:
                # {'type': 'string', 'value': 'example'},
                # {'type': 'integer', 'value': 123}
                # Add your function arguments here.
            ]
            
            # Define any payments to be sent with the invocation.
            payments = [
                # Example payment:
                # {'amount': 1000000, 'assetId': 'WAVES'}
                # Add your payment details here.
            ]
            
            # Define the transaction fee (in WAVES' smallest unit).
            tx_fee = pw.DEFAULT_INVOKE_SCRIPT_FEE  # Default fee is 500000 (0.005 WAVES)
            
            # Create the Invoke Script transaction.
            try:
                print("Creating Invoke Script transaction...")
                invoke_tx = my_address.invokeScript(
                    dappAddress=dapp_address,
                    functionName=function_name,
                    params=params,
                    payments=payments,
                    txFee=tx_fee
                )
            except Exception as e:
                print(f"An error occurred while creating the Invoke Script transaction: {e}")
                exit(1)
            
            # Wait for the transaction to be processed.
            print("Waiting for the transaction to be confirmed...")
            time.sleep(5)
            
            # Retrieve and print the transaction details.
            try:
                tx_data = invoke_tx
                print("Transaction successfully broadcasted. Details:")
                print(json.dumps(tx_data, indent=4))
            except Exception as e:
                print(f"An error occurred while retrieving transaction details: {e}")
            
          2. Run the main.py file:
            python main.py 
            

          # Sponsor Fee

          About Sponsor Fee Transaction.

          In your project directory:

          1. Replace the main.py file code with the following snippet:
            # Necessary imports.
            import pywaves as pw
            import time
            import json
            
            # Set the node link and chain ID.
            pw.setNode(
                # Specify the link for the network:
                # - Mainnet: 'https://nodes.wavesnodes.com/'
                # - Testnet: 'https://nodes-testnet.wavesnodes.com/'
                # - Stagenet: 'https://nodes-stagenet.wavesnodes.com/'
                node='https://nodes-testnet.wavesnodes.com',
            
                # Specify the network chain ID:
                # - Mainnet: 'M'
                # - Testnet: 'T'
                # - Stagenet: 'S'
                chain='T'
            )
            
            # Specify your wallet seed phrase.
            seed_phrase = 'PASTE YOUR SEED PHRASE'
            
            # Create an address object from the seed phrase.
            my_address = pw.Address(seed=seed_phrase)
            
            # Define the asset ID to be sponsored.
            asset_id = 'PASTE ASSET ID'
            
            # Create the Sponsor Fee transaction.
            try:
                print("Creating Sponsor Asset transaction...")
                sponsor_tx = my_address.sponsorAsset(assetId=asset_id)
            except Exception as e:
                print(f"An error occurred while creating the Sponsor Asset transaction: {e}")
                exit(1)
            
            # Wait for the transaction to be processed.
            print("Waiting for the transaction to be confirmed...")
            time.sleep(5)
            
            # Retrieve and print the transaction details.
            try:
                tx_data = sponsor_tx
                print("Transaction successfully broadcasted. Details:")
                print(json.dumps(tx_data, indent=4))
            except Exception as e:
                print(f"An error occurred while retrieving transaction details: {e}")
            
          2. Run the main.py file:
            python main.py 
            
          Run Code Sample
          Use Crypto Utilities
          Run Code Sample
          Use Crypto Utilities