To return your unlimited kindness and interest in algorand-qrcode, hereby I invite you to reply with any feature you want to be available to you as a developer or non-developer to do QR Code labeling Algorand transactions and flows , so that I can include them in set of Algorand QRCode React Components (WIP) I’m building to complement algorand-qrcode library usage in React ecosystem, while continuing to enhance it (Version 1.0.9 with enhancements is already out!).
All those components will have live hosted versions for non-developers to use without any extra effort.
All stars, contributions and issues are welcome, appreciated and adored on both GitHub repositories algorand-qrcode and algorand-qrcode-react (WIP)
Actually I would appriciate the samples of the QR codes and some documentation…
For example… The main issue is: Is amount integer value multiplied by 10^decimals (6 for algo) or not? If it is decimal, should it be with the decimal point dot or comma?
In a-wallet we use standard qr code generator with picture in the middle and qr codes seems fine. The only thing we need to agree is how to pass the source data and process them. QR code scanner in a-wallet is on the way and should be trivial as i have already experience in qr scanner from covid testing…
Thanks for reply Scholtz, I will make sure to put up enough documentation and samples to cover all mentioned requirements.
Yes it’s noted to mend the amount and I’m addressing it with a switch to enable or disable multiplication (it’s already enabled by default but will be switch enabled in matter of hours because as the repo and post state it’s a WIP finishing soon!).
All my effort is to complement the great Algorand Wallet functionality as well as MyAlgo wallet from RandLabls functionalities (because that’s awesome as well).
If you saw any deviation from this axiom please be kind to report here or as an issue on github which is appreciated in advance.
Actually to assert on very nice point my friend Scholtz kindly provided here I must say I am mending the amount unit problem on both algorand-qrcode and algorand-qrcode-react libraries.
I like your initiative with this and would like to cooperate… We should make some cheat book with same of codes and make it as standard… Perhaps we can make some special tag in the code to tell that the amount is multiplied by n decimals or something…
for example:
Note: 213
Amount: 123 algos algorand://4ZHVJBJGEOI3GYRA3YMXWC2IRRA62A3VWBZZRNHJJEGKSZELEV47BN7ZXU?&label=213¬e=213&amount=123000000&decimal-power=6
Also i think we should use only one note in a standard instead of 3 notes field… Also we could put there tag to tell that the note is base64
Lovely, I love collaboration and co-thinking , nothing better!
Every and each one of your brilliant inputs I will check to make sure are available and please do not stop there. I appreciate and value your ideas very much.
One more thing : there is only one note field on both libraries: algorand-qrcode & algorand-qrcodereact that I have created
Hi, I have created pull request to your git with some new tags as the suggestion to the standard
I have implemented this use cases already to a-wallet:
“P65LXHA5MEDMOJ2ZAITLZWYSU6W25BF2FCXJ5KQRDUB2NT2T7DPAAFYT3U”
Pure address scanning. This Code should fill in the address where funds should be sent.
“algorand://P65LXHA5MEDMOJ2ZAITLZWYSU6W25BF2FCXJ5KQRDUB2NT2T7DPAAFYT3U”,
Pure address scanning. This Code should fill in the address where funds should be sent.
“algorand://P65LXHA5MEDMOJ2ZAITLZWYSU6W25BF2FCXJ5KQRDUB2NT2T7DPAAFYT3U?¬e=123”,
Address with note. This Code should fill in the address where funds should be sent, and note.
“algorand://P65LXHA5MEDMOJ2ZAITLZWYSU6W25BF2FCXJ5KQRDUB2NT2T7DPAAFYT3U?¬e=234&&”,
Any number of &. This should be correctly processed by the scanning application with defining address and note.
“algorand://P65LXHA5MEDMOJ2ZAITLZWYSU6W25BF2FCXJ5KQRDUB2NT2T7DPAAFYT3U?note=345&fee=3&amount=1000&decimal-power=2&asset=312769”,
decimal-power and asset test and fee. This should set amout to be sent 10.00 USDT with fee 0,030 and note 345
“algorand://P65LXHA5MEDMOJ2ZAITLZWYSU6W25BF2FCXJ5KQRDUB2NT2T7DPAAFYT3U?note=SGVsbG8=¬eB64=1&fee=0.001&amount=1”,
Base64 encoded note. The scanning application must be able to send raw data to the network with the transaction.
Dear Scholtz, I just took the time and red the the PR which I approved in full trust (I just was sensitive about amounts at that traffic of work that I am enduring) and now I see everything in contradiction to specifications from Algorand!!! I thought there is an update on spec that I am not aware of but it was just based on your own perspective!!!
This is not productive collaboration, my trust was because you started from Algorand forum and now I have to manually undo a merged PR from a GIT repo in the middle of all that I am involved with!
Not cool dude , not cool!
We are here to comply and contribute to Algorand not impose our perspectives!
I am so sorry but I have to remove your commit from repository, for a fast growing Algorand there is no room for personal opinions I think, sorry bro, nothing personal but what you did can be considered as offensive if a bad mindset is up, but I’m sure your intentions were good and this was a rushed mistake.
Before you want to say anything to justify I repeat again it’s nothing about me and you it’s about Algorand and how to keep complying to it!
Can you be please more specific? Where is the specification cast by algorand? Who should we talk if we need to change it? Isnt this forum the right place?
I want that too… However even they cannot fill in the note in the official wallet, so i doubt they have though it enough through…
Is there anybody here who code the official algo wallet? Why dont you comply with URI scheme - Algorand Developer Portal ? How to improve this specification in order to allow
setting fee in the qr code
letting the destination system know that the note is in base 64
letting the destination system know how many decimals are in the amount tag
why is there label,note and xnote? Where to fill this in the suggested transaction?
I answer this one too so that the information stays for future seekers:
1- Customized fee is probably a planned feature but since it’s an advanced financial feature may be it’s kept for more advance usage scenarios only (These are my assumptions and Algorand Dev team have better insights)
2- The destination system does not need knowing and by detecting type of data residing in note field can detect its type , so having a field for this is useless and considered over design.
3- again having a field to specify decimal places is irrelevant because in case of Algo , decimals are not used because the unit is Micro Algo. In case of other Assets, decimals can be sent and preserved precisely because no lossy or imprecise data type (such as float) is used in the middle. Asset decimals can also me treated by transition to natural numbers (as Algo does with Micro Algo as unit of amount).
4- Label is for contact labeling (as the name suggests) and have no usage in transactions with amount. The not field comes to play for transactions with amount to specify a description or piece of information that is vital to be bound to that transaction for sake of more clarity or. The xnote and note are the same field (note) and only one of them can be present. When the field is named xnote it’s not editable by users and when it’s named note then users can edit it during the flow.
May I recommend more thoroughly reading of both Developers Portal content and documentations as I did and am doing! As I had many similar questions and found answers for.
The official Algorand Wallet team are doing their best delivering the best but the point is they need to think of 8 billion potential users and tastes and this takes a little time!!! So all we must do is effectively help, even if it is tiny like my contributions.
In my opinion the standard of qr code communication should allow exchanging any data that are input for the transaction.
Therefore:
Fee should be allowed to be set. You can always change this in the destination system. QR code should prefill the transaction data.
Not true. The base is not microalgo but 10^-6 The other problem is with ASA where you can define any number of decimal points (0-6).
Eg. if you will want to transfer NTF, which is basicaly one, you would put to qr code amount 1000 ??
Thanks for info, i will try to do more reading next time
About the label… Label does not go to transaction.
I would like to see official wallet open source, and after it will be we can use github issues to suggest this type of suggestions. Until then we can suggest it here in official dev forum, where I somehow lack the communication from those official algo hard working programmers
Dear Algorand Developers and enthusiasts:
I made one of my diagrams in rush and predictably some typos where there. I corrected them and here is the update (Specially many “Form” words were written “From”):
I have not seen any examples as I outlined earlier. Can you please navigate me?
For example if you want to make transfer of 12.345678 USDt on algorand network, how should the QR code look like?
How does “Asset QRCode Label” section differs from “Asset QRCode Form” ? What parameters does the labeling cointain? Are you sure there is opt in in both?
How does the gift card differs from coupon? Isnt it just in the supplied note field?
Have you given up the hope for negotiation of new fields that would specify the transaction more precise? Official algorand wallet has been made open source, and QR code parsing is not yet implemented there
Also, I was thinking because there is so many potential use cases, maybe it would be good to specify what the qr code maker intended to do with it…
For example if you want to tell client to pay you money on your acccount it is different type of qr code then to tell your multisig friend to sign the transaction also, and it is different type of qr code to archivate mnemonic or scan it…
Correct - just specify base units. It should always be right then. Anything generating a QR code for a particular asset should already how any decimals were defined for that type, ALGO or otherwise.
If something uses 2 decimals, then 1 would be sent as 100 (1.00). 1000 for AGLO is really 1000 microAlgo (the base unit) - and thus .001 ALGO.