Safecoin divisibility

No in actuality for my proposal.

There is only one balance kept in a wallet for the fractional part and only the SAFE network can update that field during a transaction.

The idea is that a fractional transaction removes the amount from the senders wallet’s “balance” field and adds it to the receivers wallet’s “balance” field.

So then there is no need for extra “coins” or handling of those things. Effectively the “balance” field of a wallet becomes a quasi coin. And to keep total value of safecoins out there the network “freezes” a safecoin when its value is put into “balance” fields of wallets and when a balance field exceeds 1 safecoin’s worth during a transaction then a frozen safecoin is released and sent to the wallet and the balance field is adjusted accordingly.

4 Likes

No need to forgive. And this would be a great idea except that as time rolls on the number of these coins in use increases and increases as transactions that need them occur. Not all people will have enough of these coins for every transaction they do so every so often more need to be produced to facilitate the transaction.

You’d then need to “freeze” safecoins otherwise the total worth of safecoin can exceed the 2^32 because of the duplication of worth because of the way the farming works.

Then the killer is that the transactions needed to pay for things keeps increasing and increasing as people have to use these “coins” when they don’t have actual safecoins anymore. The load on the network rises unnecessarily as compared to a simple balance field in each wallet.

1 Like

I wrote the proposal so I know its right. :stuck_out_tongue_closed_eyes:

I’ll need to search for it again. Give me a minute

If you want to post in that topic then respect the specific on-topic request.

1 Like

I’m no expert on the code, but this is a basic description of what I was suggesting. One would assume that anonymity is maintained based on a cryptographic ID, rather than any personal information.

=====
Current system :

SafeCoin = {
old_owner : 1;wlfkhsuhdflk3r8wyrwfhkss9dwrhrfwsfhofwefhrwe9r9hfw8oe
new_owner : 2;rfwheinsdvlfihslofygwsghliduhgildhbld8rflidubhdlib8yrsh
}

=====
System using up to 4 degrees of shared ownership in order to allow for divisibility:

SafeCoin = {
old_owners : {
1;wlfkhsuhdflk3r8wyrwfhkss9dwrhrfwsfhofwefhrwe9r9hfw8oe,
1;wlfkhsuhdflk3r8wyrwfhkss9dwrhrfwsfhofwefhrwe9r9hfw8oe,
1;wlfkhsuhdflk3r8wyrwfhkss9dwrhrfwsfhofwefhrwe9r9hfw8oe,
1;wlfkhsuhdflk3r8wyrwfhkss9dwrhrfwsfhofwefhrwe9r9hfw8oe,
}
new_owners : {
2;rfwheinsdvlfihslofygwsghliduhgildhbld8rflidubhdlib8yrsh,
1;wlfkhsuhdflk3r8wyrwfhkss9dwrhrfwsfhofwefhrwe9r9hfw8oe,
1;wlfkhsuhdflk3r8wyrwfhkss9dwrhrfwsfhofwefhrwe9r9hfw8oe,
1;wlfkhsuhdflk3r8wyrwfhkss9dwrhrfwsfhofwefhrwe9r9hfw8oe
}
}

Note how this represents the case where the original owner had all four quarters of the coin, and they transferred 25% ownership of the coin to someone else. As the network grows the length of the ownership lists would double from 1 to 2,4,8,16,32 etc. The idea is to keep splits to a minimum, so the entire system only goes from 1 to 2 or 2 to 4 owners when the network has grown the point that it is a) necessary, and b) the network computing resources have grown to the point that it is capable of handling any increased load.

But now 8 people know of each other due to the IDs held in the MD. Every person you add to the ones who are related leads to a furthering of linking accounts. Knowing the sender and receiver provides minimal needed relationship knowledge. Add one more and you get more now add 6 more (4 senders/4receivers) and that relationship could possibly span everyone who has ever spent. Remember the theory that in relationships that there is only 6 degrees. If you take all of your friends and then their friend of friends and take that to 6 levels then the whole world’s population is included. To say it another way you are only 6 friends of friends away form everyone in the world.

To be honest I still feel that physically dividing the coin into multiple owners is complex and a complexity that takes away from the inherent simplicity of safecoin. Each safecoin is simply a MD that has its ownership changed to “spend” it. Some extra code in the background to ensure double spending is impossible. But even that is simply getting extra consensus, nothing too complex. Simplicity makes for a more secure system since its easier to prove correct processing.

Splitting coins up involves a fair amount of complexity and tracking.

Splitting coins up destroys one of the primary processes in the system. That is the destruction of a coin and making that coin spot available for a farming reward. Splitting coins makes this process impossible since only whole coins can have the coin (MD) destroyed.

With the balance method the system can still require a whole coin be spent and destroyed when buying a “PUT” balance. OR the SAFE network can use its balance and every time it exceeds 1 safecoin’s worth then a frozen coin is destroyed and this very close to the current process that safe intends to implement. Whereas split coins require all parts of the coin to be spend in order to be able to destroy it.

4 Likes

Ok let me get this straight. It costs the network resources it actually make an altcoin because there are a set number of any given altcoins in existence but not so by using your promisary notes because you’re just making IOUs for what already exists and tallying them up as quickly as possible. Am I understanding this correctly? But if we know how many safecoins will ever exist and will ever be circulated can we not estimate the number of coins that would be needed to act as change?

Alternatively couldn’t you just write the promisary notes as higher denomination currency “coins” or write an app to do this? Instead of having a string of decimals you’d have essential so many safecoin and x number of sub currencies. Technically it’s the same amount but it’s easier to calculate and visualize. I think the only time I’ve ever worried about individual satoshis for bitcoin is when they were locked up in a wallet and wouldn’t transfer because of transaction fees or I was trying to consolidate all my “couch cousion” change if you know what I mean. Perhaps that could be another feature of the app, auto consolidate all the small change.

I’m not suggesting notes. That is not what the balance method uses.

The issue with lower denominations depends on how its implemented.

First is to just use say an exchange that takes your safecoin and gives you say 100 safecents. The problem here is that as people give the exchange their safecoins for safecents, that exchange can use the safecoins for other things. The issue here is that if half of all safecoins existing are swapped for safe cents then where there was say 1 billion safecoins and then half a bilion are swapped for safecents then there exists 1.5 billions worth of safe coin. That a dilution of the worth of safe coin.

Second way is to have the network be the exchange and freeze the coins. But then you made the network an exchange exchanging safe cents, millisafecoins microsafecoins nonosafecoins. Its trying to build in an exchange to the core code handling safecoin. Much more complex

And in both cases the number of transactions to process a payment increases because people won’t have safecoins as much and need to use their denominations more often.

A payment of 10.1468 safecoin would require 10+1+4+6+8 == 29 coin transactions individual coin sends assuming the person had all those denominations. Imagine if it was 10.9999995 == 69 coin transactions

The balance method just keeps a balance in your wallet which is updated by the safecoin core code. So the 10.1468 transaction and the 10.9999995 only needs 10 coin transactions + balance transaction in total

1 Like

Just to recap on what the maidsafe team were proposing previously - enabling coins to be split to allow ever smaller denominations.

Ignoring the merits of stored balances, practically speaking, splitting stuff makes a lot of sense and preserves the original properties of safe coin - a one to one mapping with a data item on the network.

As long as split coins can joined to make a larger denomination, it would seem a pretty flexible system. With appropriate software, splitting/joining could be automatic if desired.

I always liked the way safe coin were to be actual digital property on the SAFENetwork. It distributes nicely, keeps things separate for resilience and anonymity, and actually reflects how people see stuff in the physical world. This seems very natural and in keeping with the network following nature’s example.

Anyway, as you all were… I just wanted to refresh what the team were talking about implementing and I quite like it.

Too much information! :rofl:

2 Likes

Not the dev team. They have not suggested anything.

No it doesn’t preserve the original properties. It actually make it difficult if not impossible to implement the original properties. The most notable the destruction of the safecoin to be recreated for rewards. The next the simplicity. Only increasing the original 2^32 number by multiplying factor can do this, but that is by splitting.

Then we are taught by birth to divide the dollar (etc) by 100. NOT halving, quartering etc. That is actually very difficult to work with.

1 Like

Why is it more complex? How is it more complex than an automated vending machine?

I’m sorry your analysis of transactions of cents makes no sense. First why would you break that all down? I’m assuming your customer wants small change. 10 safecoin, and a breakdown of the smaller coins? First don’t assume the coin requested equals 1 unit. A quarter is worth 25 cents, a dime is ten, a nickle is worth 5, a penny (retired) was worth a single cent. So different coins can be worth different values. There’s no reason one couldn’t do the same thing digitally. This is why I’m wondering why you’re adding instead of rounding? Also why would the system have any more difficulty producing safecents than it would glorified IOUs for frozen safecoins? Like yes it’s a whole sum but why are you assuming each coin requested is worth 1 unit? Shouldn’t the algorithm round to the nearest coin unit OR to be more precise have an if else statement saying IFamount is bigger than the smaller denomination then move up to the larger demonination and else stay with the smaller one. And if the value is smaller than the current denomination move down to the next size. Or something like that. Similar to the algorithms one would use in their heads to count out coins.

Think about it this way. You have a dollar but your friend has small change. So you go and buy the small change from your friend in exchange for your dollar. Where is the extra complexity or money coming from is my question? If you have 1 safecoin why can’t you go to the network and have it split it into how many ever fractions you want? No new money is actually being created, it’s just being divided by the network. And if you have 1 safecoin’s worth of fractions why can’t you go to the network and have the network make it whole again?

Code and more importantly security and reliability and attack vector. What is easy to say is not so easy in the code. It would be about 10 times the code for safecoin and balance combined.

3 Likes

This proposal sounds pretty well thought through and has a lot upsides I think :hushed: :slightly_smiling_face:

First I need a coffee and then I will think about it a little bit more

2 Likes

Fair enough tho now I suddenly feel like this is an engineering problem needing to be solved. I mean for crying out loud a vending machine should not have to create that level of complexity.

So lets break it down a bit.

In the physical world before computers we had notes and coins. The concept was to make it easy to carry and use. So different breakups were created LSD, Decimal, USA mix of decimal and quarters/halves.

The issue here is that when there are not enough coins the governments would just stamp out more. When there were not enough dollars they would print more dollars. The point is that while they work for us they don’t work if you try to keep the total worth of the “currency” at a set number of base unit of the currency.

You have to then setup points where people can exchange their denominations for other denominations and this has a real cost that we all have to pay. Bank fees, dilution of the worth of the base currency unit. Look around and see the number of conversion points we have for this. Your coke machine has a 1000$ unit inside of it to do this. And guess what you pay for the costs of the unit and its running cost.

The point is that denomination conversion units are a cost to the system and the system has to pay for it. And that cost in the real world is not small and in fact it will not be small in the network either. The cost in extra data objects which all have a real cost to store, transmit and transact.

So if we have 1 billion worth of safecoin then there is 1 billion data objects being stored on the network and a %age are being transferred in any one day.

Now compare that with 1 billion’s worth of safecoins and denominations (assuming we solved the dilution problem by freezing safecoins that are split). Lets say this is a few years down the track and 1/4 of the safecoin are frozen and various denominations are out there (0.1 & 0.01 & 0.001 & 0.0001 & 0.00001 & 0.000001 for micro transactions) It would be reasonable to see that with micro-transactions being a hit that there might now be

Now I mention denomination coins but the same logic and effects occur for splitting the coins arbitrarily. Except arbitrary splits creates a nightmare for recombination but thats another story.

  • 1 bilion safecoin objects
    • 250 million frozen and there exists denomination coins to the worth of the 250 million
    • 750 million safecoins actively available for transactions
  • 1000 million 0.100000 == 100 million safecoin’s worth
  • 9000 million 0.010000 == 90 million safecoin’s worth
  • 10000 million 0.001000 == 10 million safecoin’s worth
  • 200000 million 0.000100 == 20 million safecoin’s worth
  • 1000000 million 0.000010 == 10 million safecoin’s worth
  • 20000000 million 0.000001 == 20 million safecoin’s worth (very popular for micro transactions)

So you can see by splitting the coin to allow all the way down to micro-transactions we get a lot of data objects. On the order of 22000 billion data objects. And that is really a conservative figure if safecoin became the “currency” of choice for payments.

Then this is without mentioning the transaction load for paying odd amounts where there is not a convenient way to split the coins further.

I think I will mention the problem with arbitrary spliting of coins, that is eventually the coins will be split further and further till you reach the maximum split and then we end up with a coin system that has a small portion of large values and a lot more very small values being transferred around in million/billion lots for any decent sized spend.

The reason splits cannot be joined together is that you need to get all the parts of the one coin together and owned by one person before they can be recombined. And as you can imagine with millions of people this is a rare occurrence. So we end up with coins being split when needed and rarley recombined thus the lowest denominator (split) will the the norm.

A balance field in each wallet only means there is a field in each wallet data structure (MD) which means no extra data objects in the network and only one “coin” transaction to do a sub-coin transaction. And recombination is just when the balance is over one coin’s worth.

4 Likes

I am pretty sure David Irvine suggested splitting. I will see if I can find the link.

Edit: link here - Increasing the total supply of SafeCoin - #32 by dirvine

Well, they could be split into 10. I would say it depends on implementation.

For rewards, I think safe coin will quickly become too large in value and will need splitting too.

The rewards already has that designed in. Not every GET is rewarded now. It is based on averages and scarcity of the coin.

So splitting affects all this

See my post above about inherent issues in splitting.

About the only thing that would be acceptable to most is effectively multiply the supply of the coin.

So if increase by 8 times then every one who has a coin gets 8 coins for every coin they have. So then people are not losing any value. Just that the new coin is 1/8th of its initial value.

Maybe that could be done by a new coin and the network automatically gives 8 safe8coin coins whenever you use a safecoin and destroys the old safecoin.

Yes a very old idea of denominations and not splitting like 1/2 13/14ths or anything which is usually is meant by some people here for splitting.

The lack of suggesting that since then by David I think is telling in and of itself. I think if you read the context it ws a more off the cuff remark rather than a direction they want to follow. Anyhow once needed the dev team will examine many ideas and choose a suitable one at that time.

1 Like

I am more concerned about the value of farming rewards. Bitcoin works in a similar way by increasing difficulty. My concern is more about part time farmers, those with small devices, etc. Small, frequent rewards is preferable to large infrequent rewards.

I will read your link about splitting, but I suspect both the rewards and the fees both need to split to keep everything decentralised and accessible.

Tbh, I haven’t heard the maidsafe team comment on any alternatives proposed either. I do recall them saying they would worry about it when it became a concern though.

1 Like

I don’t do splitting. It is straight out division to 18 places.

I also suggest in that proposal that it would allow rewards to be paid for every single “GET” and include the non-rewards when scarcity of coin increases.

So in fact my proposal allows paying rewards down to 10^-18 of a safecoin if that what the algo determines the farming rate to be.

Yes when asking them questions while doing my proposal it was clear they are not thinking of division until needed or they have time after completing the network

2 Likes

Surely this depends on how the coin is frozen and thawed? If a frozen coin becomes disowned and pooled, thawing it when smaller denominations need destroying and replacing would seem reasonable.

Your point about small coin quantity seems valid, but is it a huge issue? As long as any frozen coin can be thawed, they could be recombined when necessary. Having a load of small change foe micro transactions isn’t a major bind for the user otherwise - it isn’t like a wallet full of coppers to lug around! :slight_smile:

Base 10 is definitely preferable too, but computers are good at doing conversions. I am sure something could be implemented to make the splits more human friendly.

IMO, if any depth of safecoin derivative could have the same properties and could be recombined arbitrarily, it would seem like a decent option. Especially so if the numbers are human friendly.

Edit: Btw, not trying to crap of your solution. Just thinking around divisible coins really.