Hyper Code IDE Guide
  • Introduction to Hyper Code IDE
  • Lesson 1: Get Started
    • Smart Contract Project Files
    • Project Files
    • CRC_Contract
    • Contract Method
  • Lesson 2: Smart Contracts
    • Introduction to Smart Contracts
    • Creating your first smart contract
    • Debugging
    • Deployment
    • Smart Contract Interaction
  • Lesson 3: Wallet Access
    • Introduction to Wallet Access
    • Circular Wallet Architecture
    • Native CRC Wallet
    • Custom Wallet Data
  • Lesson 4: Your First Token
    • Introduction
    • Simple Token Balance
    • GetBalance Function
    • Drop Function
    • Transfer Function
Powered by GitBook
On this page
  1. Lesson 4: Your First Token

Transfer Function

The transfer function is likely the most important endpoint, as it handles token transfers between two wallets. Similar to the Drop endpoint, we must carefully manage the order of execution to ensure optimal performance.

Transfer: function (to, amount) {
        
       // tests the transfer amount
       if(amount<=0) 
       {
         print("Inproper amount\n");
         return false;
       }
      
       // Createa a new wallet instance
        var From = Object.create(CRC_Wallet); 
      
        // Opens the Sender's wallet
        From.OpenWallet(msg.From);
      
        // If there are enough tokens and the amount is positive
        if (From.Balance >= amount) {
            
            // Create a new wallet instance 
            var To = Object.create(CRC_Wallet); 
          
            // Opens the recipient's wallet
            if(To.OpenWallet(to)){
              
                // Transfers the tokens
                From.Balance -= amount;
                To.Balance   += amount;
              
                //Prints out the message 
                println('Transfered : ' + amount + ', To : "' + To.Address );
              
                // Saves the wallets
                From.CloseWallet();
                To.CloseWallet();
              
                return true;
            } else {
              
                // Invalid Recipient Address
                print("Invalid Recipient\n");
              
                return false;    
            }
        }
      
        print("Transfer failed\n");
      
        return false;
    },

Similar to the “Drop” function, the “Transfer” function requires a strategic sequence of operations for efficiency.

First, we check if the transfer amount is greater than zero, avoiding unnecessary wallet access otherwise. We open the sender’s wallet and verify that the balance covers the transfer amount. Once confirmed, we open the recipient’s wallet, ensuring it’s successful.

The transfer is executed by deducting tokens from the sender and crediting the recipient. A message is logged before updating both wallets.

With the transfer function complete, our token is ready for deployment. We’ll now explore common smart contract templates to ensure a smooth start in Circular Protocol development.​

PreviousDrop Function

Last updated 7 months ago