Safecoin divisibility

I don’t get why we are even debating this in such length of a 132 post thread. If safecoin really is an exchange of computer resources then isn’t it obvious that it NEEDS to be divisible because it’s being exchanged for an easily divisible resource? It’s like trading gold for water. You could argue smelting and dividing a gold bar up into coins is “hard” or “unnecessary” but if you really want to divide it then you simple trade it for an equal value amount of water and divvi it up. Simple. If I want to divide a safecoin I simply find out how much data 1 safecoin is worth and then pay people in data not safecoin. How many TB, GB, MB and KB is that product worth? But ultimately it would make things so much simpler if safecoin was directly divisible so one could just say it was worth 0.001 safecoin or whatever.

I would also like to remind everyone that safecoin does not exist in a vaccume. Aside from the whole resource balance dance the network will play between data costs and safecoin awarded to farmers, safecoin itself can be traded for other currencies. Also keep in mind that the price of safecoin will be affected by the price of buying phsyical hardware. If I can go out and buy a TB hard drive to store my data on far cheaper than storing my data on the safe network I’ll be motivated to store, or even transfer, data on local storage mediums or to go out and buy up a bunch of hard drives to use to farm. And physical hardware costs physical resources to create. If 1 safecoin costs $500 and 1TB costs $100 in hard drives then it doesn’t matter what the network charges for safecoin because I can sell that safecoin for bitcoin and then fiat and go down to the store and buy a bunch of hard drives. There seems to be this fear the price of safecoin will go up above the dollar value like bitcoin is. Currently bitcoin is selling at what? $400 ish per bitcoin? What of it? If I can farm safecoin sell that for fiat and go out and buy a bunch of stuff that’s awesome. How do you introduce inflation to the safe network? Sell safecoin for fiat. If safecoin value gets too high for people’s liking they’ll just sell it for fiat. In fact that’s probably what a lot of them will be trying to do a lot of the time. Actually selling safe for bitcoin would probably have the same effect. The more people want to own a currency the more valuable it is. The less people want to own it the less valuable it is.

I like this idea. Both the WoW style “coins” idea and infinite divisiblity models appeal to me for different reasons. I would like to point out that there shouldn’t be anything stopping people from creating “coins” via structured data and selling them for whatever value. One could even have such a system governed by an app. My point is not only could both systems exist simutaneously but one could create alternate systems as well or alternate value amounts.

2 Likes

Because the most optimal solutions have many design issues concerning security and/or performance.

2 Likes

Okay fair enough. But isn’t safecoin already a data value? Seems it already has the ability to divide, it just has that feature switched off. Wouldn’t the simplest solution just be to switch it on?

I think trying the worst performing option on the test nets will be a great way to quantify this. I think part of the problem is, we just don’t know how well the network will cope with sending 1000s of tiny coins about the place.

Ultimately, the data being moved is tiny. We are literally only changing ownership of the coin. I know there is a substantial overhead in doing the ‘simple’ thing and repeating it over and over isn’t ideal. However, if it is at all feasible, imo it should be strongly considered.

Simple designs are always easier to understand and maintain. That may prove to be more important in the long run.

Maybe this is actually pointing to a use case which could do with attention in general. That is, changing ownership of 1000s of data elements simultaneously. Perhaps the network could group some of these transactions in bundles, allowing some of the work to be done once for the whole bundle? If the calculations can take advantage of parallelism, it could scale much better.

In fact, maybe such transaction bundling would help in other areas, where many files/chunks need to be changed frequently. If they could be buffered into bundles too, then he same benefits may avail themselves (using SIMD features in CPUs/GPUs too, etc).

Just thinking aloud without understanding what is technically possible, but maybe worth considering.

3 Likes

Coin Conversions
I think the conversion system (SC <~> mSC) is complex and could be problematic.

Safecoins exist in an address range with 2 status (unowned, owned).

  • Unowned coins can be farmed/minted.
  • Owned coins must be transferred.
  • Recycled changes the status from owned to unowned.

When a user converts 1 SC to 1000 mSC, the Network must find 1000 unowned addresses for mSC. Just like farming, if an addresses is owned, it cannot be minted.

Initially, most of the mSC addresses are unowned. But when more mSC become owned, the conversion (minting) might take longer. The Network has to sift through billions of addresses to find the unowned ones for minting.

In farming, the mint attempt fails if the address is already owned. But we can’t have a failed attempt with conversions. That wouldn’t be right. So the Network has to keep trying to mint until 1000 mSC addresses are found.

Now imagine thousands of conversions happening simultaneously…


Possible Solution?

The SAFE Network needs a DAES (Decentralized Autonomous Exchange System) that initially owns all mSC.

When you convert your SC to mSC, you’re transferring your ownership to that DAES. It transfers 1000 mSC back to you. Vice versa, when you transfer 1000 mSC to the DAES, it transfers 1 SC from its ownership back to you.

Conversions both ways are instant, and hassle free.

But the DAES is centralized, in that all mSC and (converted SC) addresses belong to 1 account. If the DAES gets compromised, it would be very VERY bad! This is why it takes a group of 32 nodes for just 1 SC address.

I think it’s too risky to do it this way. But it’s worth brainstorming.


Possible Solution 2?

Convert SC into a ledger account. This means it works the same way as the PUT balance. It may cause confusion having 2 types of Safecoin.

SC (Savings) = Individual Coin Units, not divisible, very secure.
SC (Checking) = Ledger Account, decimal, less secure.

With SC (Checking), the amount of transaction workload is reduced significantly. It also enables micro payments. But there is less security using a ledger. It is a trade off, but the solution is viable and has been discussed on older threads.

Converting SC (Savings) to SC (Checking) is easy, but going back is more difficult.


[edit: this post moved from Is the Safecoin Economy Deflationary and would it be better with Inflation built in?]

5 Likes

@dyamanaka Thanks for thinking through the details David, option 2/ledger seems to work. I also wonder if there could be other ways, but that seems good enough to me. I think users could be protected from holding to much mSC by the conversion app prompting them to cover large holdings back to SC.

[edit: this post moved from Is the Safecoin Economy Deflationary and would it be better with Inflation built in?]

3 Likes

I think you will find that a simple solution to this is that the mSC address for the SC starts with the SC address and the next 10 bits are the 1000 coins in that range. This way the search is quick and the system knows which SC was frozen to activate these 1000 mSC

This would likely mean that in most cases this ends up a one way process since the chances of getting the 1000 mSC coins in one “wallet” which belong to the SC that has the root address is unlikely after a time, but is it necessary? when the network is large it can handle the extra processing of mSC and the “wallet” functions would mean that unlike real heavy coins one can transact with mSC+SC as easily as with SC (when network large the processing is spread far enough)

It looks like the devil really is in the details for these simulating division methods, complexity for implementation is not so bad the real risk is if the final product is also complex for the people who will be trying to use Safecoin everyday. Most will not understand and even be highly suspicious of SC <~> mSC <~> nSC, DAES complexity just to divide their Safecoin in half to pay for a movie ticket.

Solving the chatty transactions problem as @Traktion was brainstorming above could turn out to be of similar complexity (or more straightforward) but either way it would certainly give us a simple easy to use Safecoin with guaranteed no concerns for adoption failure due to complex usability concerns because the model is in production use by every crypto and fiat currency out there.

2 Likes

Agreed,

As a consumer, it would annoy me to “manually” convert Safecoin into smaller divisions each time I pay for something. I just want to pay whatever the amount is, big or small, including micro payments.

As a tech analysis, every element (routing, caching, Safecoin transactions, messaging, group consensus, node managers, client managers, NAE managers) adds to the Networks burden. Individual grains don’t seem like much. But they are able to collapse structures if enough pile on.

The only way I know how to satisfy both (consumer and engineer) is by using a ledger system on the front end, and unit system on the back end. However, it’s hard to implement a conversion system that doesn’t add complexity. We’ll as far as I know, I haven’t seen a solution to it yet…

With Solution #2, I could push X Safecoin (Checking) that I plan to spend each day, month, year, and still have the comfort knowing my Safecoin (Savings) is secure. If we create an automated system, removing the need to manually convert (Savings <~> Checking), that would be even better!


Here’s a brainstorm idea for an automated conversion “integrated” into the transaction process. It uses a ledger front end, and non-divisible data unit back end. I think it adds a little more complexity but may reduce transaction workload while providing divisibility.

[Transaction Process Under the Hood]

Buyer’s balance = 10 Safecoins.
Buyer sends 3.50 Safecoins to the seller. (3 Coins + 0.50 Ledger)
Buyer signs 4 Safecoins because the Network can only transfer whole units of Safecoin. (3 Coins + 1 Ledger)

  • 3 coins transfer to the seller like normal.
  • The 4th coin converts to a ledger balance and obtains a new status called F (Frozen).
  • This means the coin cannot be farmed, only converted/claimed via ledger balance.
  • 0.50 ledger goes to the Buyer, and 0.50 ledger goes to the Seller.

Seller’s balance = 5.75 Safecoins (5 Coins + 0.75 Ledger)
Seller received 3.50 Safecoins (3 Coins + 0.50 Ledger)
Seller’s new balance = 9.25 Safecoins (8 Coins + 1.25 Ledger)

If the ledger balance becomes a whole number, the Network will automatically convert/claim ownership of a coin from the F (Frozen) pool. This happens in the background.

Buyers final balace = 6.50 Safecoins (6 Coins + 0.50 Ledger)
Seller final balance = 9.25 Safecoins (9 Coins + 0.25 Ledger)

… … …

Instead of making Safecoin subdivisions or different Safecoin tiers (mSC, nSC, etc). Both end users only see their Safecoin account balance in decimal form. But under the hood, the “decimal” portion of the balance will be a ledger, while the “whole numbers” are kept in actual Safecoin units. I think this allows infinite divisibility without the added workload transacting thousands of micro coins units.

The end-users don’t have to manually convert anything.
If possible, we can have our cake and eat it too!

6 Likes

the cake is a lie ._.

4 Likes

How would this handle attaching context to coins, e.g. coloured coins?

Being able to treat every coin as literal digital property is a very powerful concept. If we are converting from one format to another, we are going to lose these 1-1 mappings, which will limit what can be done with them.

If the network can cope with micro payments from the outset, with every micro penny being treated as immutable, identifiable, property, then it will only get easier as the network grows. With each new vault added, the load will be spread.

Moreover, is the burden of updating ownership on 100,000 chunks worse than serving a 1 MB file? How about 10 MB? If it is less onerous than even the latter, it would seem a perfectly reasonable trade of. Even if it meant a transaction fee was needed (to pay farmers for processing the transactions), it would still seem reasonable, IMO (as long as it isn’t excessive - this is why we need a to test though, imo).

2 Likes

Just a general point too - many people are interested in safe net, primarily because of Safecoin. It is what encouraged many to invest. It is what many people are waiting for.

For those who didn’t come from the Bitcoin community, this may seem strange. When safe net promises so much, why would people be so obsessed with just the lubricating tokens?

While the network itself has potential to change the internet, the desire to nurture a better crypto currency should not be dismissed. This is a very important feature of safe net.

3 Likes

Unfortunately, it would break the colored coin.

Yes it is powerful. But I think we should create alternative SD for that purpose and keep our Safecoin currency clean.

I hope this holds true in the long run.

Yes, we need to test and find out the Networks limitations.

100% …(character limit)

4 Likes

I would think everyone would like to have Safecoin with a high value. But even if Safecoin becomes just $1.00 (which I think would be fantastic), wouldn’t it make using the services of the network too expensive? The utility of Safecoin is better if the price is low… So are there plans to make Safecoin divisible? I don’t see how Safecoin can have a high value and also be usable on the network otherwise.

1 Like

The ID of a safecoin is 64Bytes long, with the most meaningful 32 bits being sequenced index starts from 0 to 4294967295, and the left over part to be fullfiled with all zeros or other pre-defined pattern (to allow coin division).

I think it will be designed that we can always use SAFE even if the price goes to that magic number you named ;-). If the price goes up, a lot of new farmers will join the network to Farm coins. That causes the Farming Rate to go down. So you would get paid less when you deliver chunks. Should all balance out nice.

1 Like

Does a ledger imply a blockchain? Meaning that there is a record of transactions that can potentially be traced by ‘bad actors’?

re: worth brainstorming …
Instead of one centralized account, create three that must verify against each other (2/3) before moving anything in/out of these accounts [the network would have special rules for these accounts]. It’s unlikely that more than one account could be hacked simultaneously and the network can regen new keys for these special account regularly to prevent more than one from ultimately being hacked.

1 Like

No the ledger is basically a single data unit managed by the close group of its address. Just like there are 32 nodes managing 1 SC data unit… There will be 32 nodes managing the ledger belonging to Joe XXX. Just like the SC data unit, where the old and new owners are updated. The Ledger will update from the old balance to the new balance.

Keep in mind, a group changes after a churn event, so the 32 members are not always the same 32 members after churn.

That is an interesting idea. That could also apply to the ledger accounts for individuals. If it does work, it would reduce Network load and possibly make transactions faster?

But I don’t think we are going down this road. Some of my ideas have not been very popular lately.

1 Like

I’ve missed the bus then … what road are we going down? Is there a link for that conversation?

cheers

I believe the devs (MaidSafe) want to implement “basic” SC, without divisibility in the beginning… this means 1 SC is the smallest denomination. This thread has brainstormed various ways to make SC divisible.

It seems the development process has evolved into 2 stages…

Stage 1. Post an idea on this forum to let other members hash it out.
Stage 2. If the idea survives opposition, then an RFC is created for the devs to look at it.


Look at the Safecoin GitHub link and Scroll down to a section called “Alternatives.” That is the closest to a divisible SC so far.

https://github.com/maidsafe/rfcs/blob/master/proposed/0012-safecoin-implementation/0012-safecoin-implementation.md#establishing-farming-rate

Here is the link to the alternative solution proposed on this forum.

Basically this means… 1 SC is represented by a “group” of 100 or 1000 data units.