How to use ASI Alliance Wallet
Feature 3 - Send/Receive Functionalities
Send/Receive Button
This button allows the user to perform transaction send and receive functions. By utilizing this feature, users can send and receive transactions seamlessly within the app.
Send Option
Initiate Transfer
If a user wants to send money to another user, they should start by locating the transaction button.
Select Send Option
Once the transaction button is found, the user selects the option to send money.
Enter Amount and Account
After selecting the send option, the user needs to enter the amount they wish to send and choose the account from which the money will be transferred.
Add Recipient's Address
Next, the user is prompted to add the recipient's address. This can be done in two ways: either by scanning the address or by using the Add to contact option.
Review Transaction
After adding the recipient's address, the user should review the transaction details to ensure accuracy.
Optional: Add Memo
If the user wishes to add a memo to the transaction, they can do so at this stage.
Fetch transaction memo limits and storage details
-
Character/size limitations: the memo field is limited to 256 bytes by default. This is configurable and can be changed via a governance proposal if needed. To check the current value programmatically, you can query the
auth
module parameters here (opens in a new tab) and decode the response by copy-pasting there inner content ofvalue
(without quotes). You'll receive a base64-encoded response containing the parameters, which you can decode to view the structure, including themax_memo_characters
,tx_sig_limit
, andtx_size_cost_per_byte
parameters. -
Limitations: while you can add any data within the 256-byte limit, the memo field is intended for short text. Adding structured or binary data (e.g., blob attachments) is technically possible within the size constraint, but it isn't recommended due to potential gas costs and inefficiency. If you wish to store larger or more complex data, consider using other data storage methods, as encoding this data in the memo could potentially exhaust gas and processing limits. The current gas constraints are set up:
- Each byte stored in a transaction costs 10 gas (as set by
tx_size_cost_per_byte
). - The maximum gas per block is 3,000,000 gas, which limits the total data that can be stored in a block.
- While the block size limit is 300,000 bytes, the gas cost to store data near this size would max out the block's gas limit. Therefore, block gas constraints often restrict the size of a transaction more than the byte limit alone.
- Each byte stored in a transaction costs 10 gas (as set by
-
On-chain storage and migrations: once a transaction with a memo is added to a block, the memo data is stored permanently on-chain. During migrations, all transaction data, including the memo, should remain intact, as existing chain data should be preserved once migration is finalized.
Approve Transaction: once the user has reviewed the transaction and made any necessary additions, they can proceed by clicking on the Approve transaction button.
Transaction Confirmation
Upon approval, a transaction ID is generated, confirming that the transaction has been successfully processed.
Receive Option
Initiate Transaction
If a user wants to Receive money from another user, they should start by locating the transaction button.
Select Receive Option
Once the transaction button is found, the user selects the option to Receive money.
Choose Payment Method
Determine the preferred method of payment, whether it's scanning a QR code or fetching the recipient's account address.
Complete Transaction
Once the payment method is selected and the necessary details are provided, proceed to complete the transaction.