Circular SDK
  • Getting Started
    • Circular APIs
      • Setting Up a Wallet
      • Get you NAG Access Key
      • Select a Programming Language
  • API Docs
    • APIs
      • Check Wallet Existence
      • Get Wallet Content
      • Get Wallet Balance
      • Get Wallet Nonce
      • Call a Smart Contract Function
      • Get a Domain
      • Get the Asset List
      • Get Asset
      • Get the Asset Supply
      • Get a range of Blocks
      • Get a Block
      • Get the number of Blocks
      • Get the Blockchain Analytics
      • Get the available blockchains
      • Get a Transaction by its TxID
      • Get transactions processed by a node
      • Get a transaction by an involved address
      • Get transactions by a range of dates
      • Submit a new Transaction
      • Registering a New Wallet
      • Transferring an Asset
    • Node.js
      • Mainnet Integration
      • checkWallet()
      • getWallet()
      • getWalletBalance()
      • getWalletNonce()
      • callContract()
      • testContract()
      • registerWallet()
      • getDomain()
      • getAssetList()
      • getAsset()
      • getAssetSupply()
      • getBlockRange()
      • getBlock()
      • getBlockCount()
      • getAnalytics()
      • getBlockchains()
      • getTransactionbyID()
      • getTransactionbyNode()
      • getTransactionbyAddress()
      • getTransactionbyDate()
      • getTransactionOutcome()
      • getPendingTransaction()
      • sendTransaction()
      • signMessage()
      • verifySignature()
      • getPublicKey()
      • stringToHex()
      • hexToString()
      • hexFix()
      • setNAGKey()
      • setNAGURL()
      • getFormattedTimestamp()
    • Javascript
      • Mainnet Integration
      • checkWallet()
      • getWallet()
      • getWalletBalance()
      • getWalletNonce()
      • callContract()
      • testContract()
      • registerWallet()
      • getDomain()
      • getAssetList()
      • getAsset()
      • getAssetSupply()
      • getBlockRange()
      • getBlock()
      • getBlockCount()
      • getAnalytics()
      • getBlockchains()
      • getTransactionbyID()
      • getTransactionbyNode()
      • getTransactionbyAddress()
      • getTransactionbyDate()
      • getTransactionOutcome()
      • getPendingTransaction()
      • sendTransaction()
      • signMessage()
      • verifySignature()
      • getPublicKey()
      • stringToHex()
      • hexToString()
      • hexFix()
      • setNAGKey()
      • setNAGURL()
      • getFormattedTimestamp()
    • Typescript
      • Including TypeScript Library
      • SetNAGKey & SetNAGURL
      • GetWallet
      • RegisterWallet
      • GetAsset
      • GetAssetSupply
      • GetBlock
      • SendTransaction
      • SignMessage
      • getFormattedTimestamp
      • Transferring an Asset
    • Python
      • Mainnet Integration
      • checkWallet()
      • getWallet()
      • getWalletBalance()
      • getWalletNonce()
      • callContract()
      • registerWallet()
      • getDomain()
      • getAssetList()
      • getAsset()
      • getAssetSupply()
      • getBlockRange()
      • getBlock()
      • getBlockCount()
      • getAnalytics()
      • getBlockchains()
      • getTransactionByID()
      • getTransactionByNode()
      • getTransactionByAddress()
      • getTransactionByDate()
      • getTransactionOutcome()
      • sendTransaction()
    • Dart
      • checkWallet()
      • getWallet()
      • getWalletBalance()
      • getWalletNonce()
      • callContract()
      • callContractWithPlainConsoleOutput()
      • registerWallet()
      • getDomain()
      • getAssetList()
      • getAsset()
      • getAssetSupply()
      • getBlockRange()
      • getBlock()
      • getBlockCount()
      • getAnalytics()
      • getBlockchains()
      • getTransactionByID()
      • getTransactionByNode()
      • getTransactionByAddress()
      • getTransactionByDate()
      • sendTransaction()
      • signMessage()
      • verifySignature()
      • getPublicKey()
      • getKeysFromString()
      • getKeysFromListOfStrings()
    • Go
      • Mainnet Integration
      • CheckWallet()
      • GetWallet()
      • GetWalletBalance()
      • GetWalletNonce()
      • CallContract()
      • RegisterWallet()
      • GetDomain()
      • GetAssetList()
      • GetAsset()
      • GetAssetSupply()
      • GetBlockRange()
      • GetBlock()
      • GetBlockCount()
      • GetAnalytics()
      • GetBlockchains()
      • GetTransactionByID()
      • GetTransactionByNode()
      • GetTransactionByAddress()
      • GetTransactionByDate()
      • GetTransactionOutcome()
      • SendTransaction()
      • SignMessage()
      • VerifySignature()
      • GetPublicKey()
      • GetKeysFromString()
    • PHP
      • Mainnet Integration
      • checkWallet()
      • getWallet()
      • getWalletBalance()
      • getWalletNonce()
      • callContract()
      • registerWallet()
      • getDomain()
      • getAssetList()
      • getAsset()
      • getAssetSupply()
      • getBlockRange()
      • getBlock()
      • getBlockCount()
      • getAnalytics()
      • getBlockchains()
      • getTransactionByID()
      • getTransactionByNode()
      • getTransactionByAddress()
      • getTransactionByDate()
      • getTransactionOutcome()
      • sendTransaction()
      • signMessage()
      • verifySignature()
      • getPublicKey()
      • stringToHex()
      • hexToString()
      • hexFix()
      • setNAGKey()
      • setNAGURL()
      • getFormattedTimestamp()
    • C++
    • C#
    • Rust
    • Arduino
Powered by GitBook
On this page
  1. API Docs
  2. APIs

Transferring an Asset

This particular transaction type is designed for transferring a specified amount of an available asset from one sending wallet to a recipient wallet. In this context, the transaction body and payload will have the following structure:

TBody = {
         "ID" : [ID],
         "From" : [From],
         "To" : [To],<
         "Timestamp" : [Timestamp],
         "Payload" : {
                       "Action":"CP_SEND",
                       "Asset":[Name of the Asset],
                       "Amount":[Amount to be transferred],
                       "Fee":[Fee]
         },
         "Nonce" : [Nonce],
         "Signature" : [Signature],
         "PublicKey" : [PublicKey],
         "Blockchain" : [Blockchain],
         "Type" : "C_TYPE_TOKEN"
    }

For this specific transaction type, the Payload undergoes parsing and processing to execute the intended operation, which is a CP_SEND transfer. In this operation, the specified asset, identified by name, is moved to the "To" wallet. If the asset being transferred is the native coin "CIRX," the transaction type is labeled as C_TYPE_COIN. For all other tokens, it is identified as C_TYPE_TOKEN. For CIRX coins, the Asset name will be "Circular Coin." The amount to be transferred is represented as a double-precision floating-point number, indicating the quantity of the asset destined for the recipient wallet.

The "fee" field allows the sender to include an optional fee, signifying their willingness to expedite the transaction's inclusion in the next block. If the fee is set to zero, a nominal fee is applied, giving the transaction the lowest priority in block inclusion. It's important to note that even with an additional fee, there is no guarantee of immediate inclusion in the next block. Subsequently, the payload is converted into a string format and must be encoded in hexadecimal (Hex) without the "0x" identifier.

Last updated 7 months ago