In the deflationary discussion @jreighley mentioned concerns about the divisibility of Safecoin
I will first put a short disclaimer: the past few months have been a relentless focus on the SAFE network, and Safecoin considerations are a consequence of the SAFE network, as illustrated by the work on StructuredData. So opinions expressed here are purely my own, although hopefully largely in sync with the community. It seems though there is some uncertainty on how Safecoins can be divided, should you want to do (extreme) micropayments, or if they Safecoin (being deflationary) increases in value.
I just want to shed a bit of light on how I understand these questions, but the final resolutions will be made by the whole community through the RFC process that is gaining speed.
So a Safecoin is a StructuredData signed by its owners, and the integrity protected by the network. It is like a physical coin, an informational object that you can claim possession of, or transfer to other owner(s).
In order to put information to the network your ClientManagers will charge you safecoin in order to authorise your request. However, if for every put, small or big, the network would have to transfer or divide safecoins, it is similar to how a 1 euro coin cut in two does not make two 50 cent coins (as you would need both pieces to examine very carefully that they did fit together as an authentic 1 euro coin. More so, subsequential division of coins, would eventually leave you with grains of metal that are unverifiable (even if they were authentic).
So what do we do instead? before you can put data to the network as a client (identified by your public signing key), you need to create an account with your ClientManagers. You do this by sending the deletion of a safecoin, which is “returning that safecoin to the network for renewed farming”; you’re declaring the abandonment of ownership of that safecoin. Your ClientManagers in return will create and hold an account for your Client(public key). This recycle of a coin to the network has transformed an indivisible informational object, your safecoin, into a double precision float* account in your ClientManager group. Now that you have an account with value, a put request will be successful if the ClientManagers can deduct your account for the size of the data.
So the total value you own on the network is the sum of the account on your client(s) + the safecoins that are owned by you. Notice some interesting differences
- safecoin is an informational object; your account is a numeric value
- safecoin can also be co-owned, multi-sig, escrow, …; your account is single client owned
- your safecoin holdings are not query-able and distributed; your account balance we can either make publicly query able, or requiring a signed request - up for debate
So now we have transfer of ownership of safecoin; and we can transfer account balances (currently not considered yet); we can even allow mixed combinations: transferring a fraction of a safecoin, returning the coin to the network, and splitting the value over account balances.
Should the value of a safecoin become too high, then as mentioned several times, we, as a community, will have time to implement a second coin of fixed smaller denomination - as we want to avoid that farming becomes bitcoin like, low chance of gaining a coin, but massive payout on being rewarded. That would force farmers to join forces to spread the investment risks. We can learn from Bitcoin and not repeat those evolutions.
*note: “a double precision float” is obviously not how it will be implemented. Either an existing numeric type with a set accuracy should already exist in rust, or we will have to create one. Rest assured we will not implement your money with a dp float.