How to spend/tx minted FIRO via CLI

I’ve been looking through the help in order to find the right command and recall that I’ve done this in the past successfully but somehow I dont remember which command I need to use in order to spend minted FIRO.

Say i’ve issued my balance is 20, then I issue $ firo mintlelantus 10 .
Afterwards, when executing $ firo-cli sendtoaddress <addr> 5 , 5 FIRO from the remaining (unminted) balance will be transferred (as getbalance returns 5 afterwards).

How would I practically (command example) send 5 FIRO from my minted balance?
A user on BCT has asked pretty much the same in his posting but it seems that no answer has been adressed to this question so I guess I’m not the only one missing a piece of intormation here…

As always, thanks for your help!

2 Likes
Send two amounts to two different addresses:
> firo-cli joinsplit "{\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\":0.01,\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\":0.02}"
4 Likes

I’m sorry but I think I don’t understand how that command send 5.0 FIRO to an address, could you please elaborate/explain further what the outcome of your command would be and how that aligns to what I was aiming for?

thanks for your help!

1 Like

To send 5.0 FIRO from the private balance to an address using the CLI, do:

firo-cli joinsplit "{\"theAddressYoureSendingTo\":5.0}"

3 Likes

Nice, this worked! :ok_hand:t4:

Thanks for pointing this out :pray:t4:, i believe this should be more explicitly mentioned in the documentation/guides if FIROs burn-/minting-feature should be one of its main selling points.

Am I further understanding correctly that if I’d specify 2 addresses (and amounts) that the’d both be minted from my virtual balance created somewhen before through mintlelantus ?

To me it first seemed that joinsplit is not affecting lelantus mints and still feel like the name is slightly misleading for this part of the operations functionality. if there were a command like mintsendtoaddress or minttoaddress I would have surely stumbled over it by browsing through the available operation-commands but maybe thats just my own logic…

1 Like

I can see why this can cause confusion. While people on the outside use the term ‘burn/mint’ to describe our anonymisation process, we use ‘mint/spend’ for most of our existence. Minting is the process of anonymising your transparent Firo balance. Spending is the process of bringing these anonymised Firo back to the transparent layer.

In your wallet’s Debug Console, you can enter help and locate commands with lelantus in them, and you will notice that joinsplit is associated with Lelantus.

In the past, one must spend exactly the denomination that was minted (i.e. if you mint 25, you’ll have to spend 25). This changed with Lelantus, where you can mint any amount and spend any amount from your private balance. For example, mint 125 Firo and from this only spend 4 with the change reminted - this avoids observers linking that the person who minted the 125 Firo is also the same one that spend the 125 Firo later down the road.

This improvement with “of the 125 minted, spend 4 and remint the rest” is a massive departure from the previous method with Zerocoin/Sigma. Joinsplit can be thought of as a combination of mint and spend, so we can’t call it spend like for Zerocoin/Sigma previously.

Am I further understanding correctly that if I’d specify 2 addresses (and amounts) that the’d both be minted from my virtual balance created somewhen before through mintlelantus ?

The amount will be taken from the balance that you anonymised earlier with mintlelantus. It will not be taken from your transparent balance.

To me it first seemed that joinsplit is not affecting lelantus mints and still feel like the name is slightly misleading for this part of the operations functionality. if there were a command like mintsendtoaddress or minttoaddress I would have surely stumbled over it by browsing through the available operation-commands but maybe thats just my own logic…

As we have plans to enable users to send their mint (anonymised Firo) directly to other users in the future, we could not use those commands. And since the operation of bringing an anonymised Firo back to the transparent layer is both a mint and a spend, it will be even more misleading.

Here are some examples of Lelantusjsplit. You can compare it with the previous protocol.

2 Likes

Thank you once more for taking the time for your writeup which clarifies several aspects for me. Still, joinsplit appears not really intuitive to understand in terms of its use with Firo for me but I also learned why other options were not chosen.

After learning this I believe various parts of your answer would be useful if they’d be available in some FAQ or documentation (I’m missing some easily accessible readthedocs-style documentation for Firo) as other incoming users might stumple over similar questions which are rather easy to explain.

Directly sending anonymised Firo sounds nice (NPP a.k.a. lelantus spark will aim for this, right?) but also makes me wonder why someone would not want to use that feature but this seems linke an entirely different discussion/topic.

EDIT: the examples of lelantusjsplits you provided are also interesting, I’ve even found some examples where more than one spend-address was used. Am I assuming correctly that the value Total Sent reflects to total amount of anonymized Firo ever spent to transparent addresses and No. Transactions the amount of transactions using joinsplits across the Firo lelantus universe? If so, the average amount being spent would be ~110 Firo.

1 Like