More Economics (15)

Gidday all! Was keen to get some safecoin economics thoughts down on a page. Hopefully this encourages plenty of discussion.

Key Assumptions

As soon as a node reaches sufficient age it is trusted with storing data. The amount of data this node stores will be approximately the same as any other node (of sufficient age) on the network.

We don’t want storage per node to be too high.

  1. Makes churn events and node relocation more burdensome.
  2. More likely to result in some users having below the minimum storage requirements to run a node.
  3. Less nodes are needed to store the network’s data, total node count is lower, less distribution.

We don’t want storage per node to be too low.

  1. More latency due to message traversal of larger XOR address space.

The only way to earn income is to fulfil a GET request.

The only ways for a node operator to earn more income are (in order of impact):

  1. Increase the amount of data the node operator is storing for the network by bringing additional nodes online
  2. Be faster at responding to GET requests (fulfil GET request before other nodes holding the same chunks can).
  • Be close to the requester geographically.
  • Improve hardware, software and infrastructure.

The reward for fulfilling a GET request is the chance to claim ownership of a network owned safecoin (1 unit – not a fraction of).

The process for storing data on the network is:

  1. User pays safecoin (can be a fraction of) to the network. The network will likely consolidate fractional safecoin into full units making them available for nodes to farm (depending on how divisibility of safecoin is implemented).
  2. User is credited with storage space that they can then use whenever they like.

What’s the Resource?

The network needs to be aware of whether there is an abundance or scarcity of resources. There needs to be an incentive structure that adjusts towards (what the network considers to be) optimal supply of resource.

A node stores the same amount of data as any other node on the network, irrespective of whether the operator has the willingness or capacity to supply additional storage. If an operator wants to expand their offering to the network, they need to bring additional nodes online.

As additional nodes come online, the average amount of data stored per node will reduce. The opposite is true for taking nodes offline. Given this relationship, when considering abundance or scarcity of resources, would we be better served using a metric such as ‘data stored per node’ as opposed to over/under supply of storage space? Hypothetically (and I know we don’t like magic numbers) what if the network adjusted rewards to target storage of 100gb per node?

How should nodes be rewarded?

Nodes should be rewarded in a manner that most efficiently encourages resource supply to be at its optimum. Currently it is assumed that a node’s income will be comprised of fresh safecoins (formerly network owned and drip fed to nodes in a manner dictated by ratcheting the farming rate) and recycled safecoins (users have paid these to the network in order to be credited with storage allowance, these safecoins have once again become fresh safecoins).

There needs to be as little lag or disconnect as possible between value paid to the network (users paying for storage) and value paid by the network (nodes responding to GET requests). We want to minimise disconnect so that the established price per unit of storage at any given moment in time is as reflective as possible of the supply and demand of resources at that moment in time.

Does ratcheting the farming rate (based on abundance/scarcity of resources) achieve this?

Why are we also ratcheting price per put?

What’s the point of having two separate economic levers to pull to attempt to direct the network towards optimal supply of resources? I don’t have the brainpower to run the current scenario, there are too many shifting platforms.

Why does the network need to have a horde of safecoins? Why that exact amount? What makes this network owned amount optimal at launch? What’s wrong with living hand to mouth on a value in = value out basis? (warm up those fingers @neo!). Let’s stick with this one for now. Check out this thread for earlier discussion on this matter.
I guess the argument against not living hand to mouth boils down to the assumption that variability of safecoin rewards to nodes would be too high. Node response to changing user demand conditions would be too rapid and we’d just oscillate around and make everyone seasick. We need a network owned pool of safecoins that can smooth out these fluctuations. Fair call. I find myself agreeing with this.

What is the mechanism for distributing this pool of network owned safecoins? It is proposed that as the network deviates from its optimal supply of resources, the farming rate will be adjusted resulting in network owned safecoin being farmed by nodes more or less quickly. Sounds good, but I’m not convinced. Two economic levers make me wary. I believe the only economic lever the network should have influence on is the price per put. If that’s the case, how do I propose we distribute the network owned pool of safecoin in order to smooth node income fluctuations and encourage persistence and reliability of these nodes?

Good question. I’m not sure.

But what if this network owned pool was distributed in a manner similar to bitcoin issuance (logarithmically over a long period of time)? What if this pool of coins is drip fed to nodes in a manner that is completely independent of the network’s abundance or scarcity of resources. Average node minimum income would then be both reliable and quantifiable. Hand to mouth recycling of safecoin can then be layered on top of this base.

So:

  1. Network owned safecoin with no previous owner -> unlocked (made available to farm) according to issuance schedule.
  2. Network owned safecoin with a previous owner (recycled coin) -> made available to farm immediately.

I don’t know if this approach is even technically possible, I’m aware that the network has no concept of time. It’s still an interesting scenario to think through.

An interesting aside. If the network simply functioned hand to mouth (with no safecoin pool issuance) then value in would equal value out (with very little time lag). The price per put that would be established in this scenario would be the true market price of supplying x amount of storage (keep in mind this scenario assumes no farming rate and hence little to no lag between expense to the user and income to the node). The point I’m getting at is that any income (from issuance of network owned safecoin pool) to the node in addition to this earned recycled safecoin would have the direct result of reducing the price per put below the true cost of supplying x amount of storage, making SAFE as a storage option for the masses more competitive.

Purchase of Storage

Another thing that needs consideration that I haven’t seen too much discussion on is how will purchase of storage work? Currently I understand a user can purchase storage space with safecoin at the current price per put. This storage is credited to their account to be used when they see fit. In this scenario, income is earned by the network but there is yet to be any expense imposed. I think we need to be really careful not to break the connect (that I’m hoping to see) between expense to the user and income to the node. Is it possible for this credited storage to be blank chunks actually stored on the network behind the scenes that the user can then overwrite with their actual data? Probably not. Worth looking into the implications of the above further.

Granularity of Rewards

Finally, granularity of safecoin rewards is an issue if we want to encourage home users to run nodes. Safecoin is currently proposed to be rewarded as single units (not fractional). The value of an individual safecoin will be significant in a successful network. Income would be very lumpy for the small-scale node operator. Will farming pools be possible to implement?

16 Likes

Thanks for putting your thoughts down so clearly. A few of them occurred to me too in a much vaguer way when we were putting together the SAFE Network Primer.

A few thoughts:

As soon as a node reaches sufficient age it is trusted with storing data. The amount of data this node stores will be approximately the same as any other node (of sufficient age) on the network.

There is talk of having archiving nodes to store less requested chunks too, so I guess this is a little more complex. I was wondering if there would be any milage in having an exponential scale of trust, whereby the most reliable nodes are allowed to store more ‘hot’ data - if this could be done without undue warping of the economics. Upsides would be lower latency, downsides a degree of centralisation and possible security vulnerabilities.

This would also solve the problem aired elsewhere of having to use sacrificial data or some other mechanism to ascertain free storage space on the network. I wonder if it would be precise enough a metric
over time to ensure stability?

I had assumed the price per put was directly connected to the farming rate somehow?

4 Likes

I’d be interested to see how large scales actually affect latency in the real world. I’d like to think messaging is very fast / low load and chunk transfer is the main load.

There are also some other reasons that make it undesirable to have too many nodes.

  • more difficulty finding a key for relocation
  • more memory consumption to store routing table
  • others?

I like this but to take the idea a bit further:

What if the network measures factors that prefer a smaller network (average time to do a GET), and measures factors that prefer a larger network (time to complete churn events etc) and automatically set a safecoin reward mechanism to balance these out? It’s never any particular number, it’s just a trade-off between the two. If one degrades faster than the other an adjustment happens. After all, the really important value to users is being able to store and fetch data on the network, right?! Why not measure and adjust those things directly? I admit there are possibly many other factors contributing to the delivery of that goal, but ‘spare space’ is only one part of it.

Churn taking too long is one indication that more vaults are needed: in response, set the optimum reward to vaults storing slightly less than the current network average, which encourages more vaults to come online.

GET taking too long is one indication that less vaults are needed: in response, set the optimum reward to vaults storing slightly more than the current network average, which encourages the slowest vaults to be culled from the network.

I think your idea of targeting storage space per vault is great, but it should be dynamic based on network measurements of ‘things end users value’, not just space consumed or space available. A tricky conceptual area to work in but that’s the vision I’d be aiming for.

The price lever is the demand lever, the farm rate is the supply lever.

Why would the network ever want to reduce demand? To me that’s not so great.

I agree the interaction is very complex. And ‘unknown variables’ (eg GET and PUT rate) seem very significant to the algorithm which is troublesome.

I’ve tired modelling safecoin distribution several times but never been satisfied with what was produced (mainly because of how old / outdated the safecoin RFCs are, eg still using sacrificial chunks as a key part of the algorithm).

There’s lots more to say but small bites at a time eh. It’s a massive topic.

7 Likes

Because the network needs to match demand with available supply, it would need to reduce demand by increasing prices whenever demand is at a level that outpaces supply to avoid running out of resources. This isn’t bad - it’s just a necessary part of the mechanism that balances supply & demand.

Absolutely. I’m very glad these concepts are getting some airing - it’s been a concern of mine for a while that this critical area of the network has had relatively little attention.

4 Likes

1 whole Safecoin?

That is detail that I’ve read a couple of times, but have not encountered the reasoning behind it.

Seems very generous (in light of what’s happened with bitcoin) and would be interested in the first principles behind it. I’m guessing David is the only one that knows the actual reasoning…my guess would be the divisibility aspect.

I reckon I’ve heard both David and Nick mention that users would be pleasantly surprised to see a balance in their wallet for running a vault, but not by units of 1 Safecoin…surely?

1 Like

As far as I know the reason is because there’s not yet any plan for divisibility. So safecoin must be earned and spent in whole units under the current design. There may be other layers that provide divisibility, but because of the current fundamentals of safecoin design it must be in discrete units. That may change in the future.

The reason is because safecoin is not a ledger, it’s a digital object. On a ledger (such as bitcoin) the unspent balances are kept track of, so it doesn’t matter the specific amounts, just that they all total up to the correct final total. But in safecoin each coin is a specific individual data item, so it the item itself must be updated to contain the new owner. This means it’s not easy to update half the coin to one owner and half to another.

And this ties in with one of the original questions of this topic:

To which I say yes most definitely but only if farmers are not paid frequently enough under the ‘whole safecoin for payment’ mechanism.

I envisage that vaults would run a ‘pooled farming communications layer’ that allows other vaults in their section to share rewards with each other, no matter which vault actually farms the coin. This encourages the growth of farming since the reward will be more predictable (ie less amount each time but also more frequent). Farmers will probably prefer to be paid regularly and predictably via pooled farming rather than the lottery style ‘native’ farming method (especially when rewards become scarce).

5 Likes

I don’t see why it’s desirable to have anything other than true market prices for resources.

If the network subsidises farmers early in its life by distributing Safecoin that didn’t come from network users, people will use the network for purposes that later become unsustainable. It would make early farmers richer and may annoy users when prices increase over time to reflect the true supply and demand.

Why encourage unsustainable use of the network? If it’s a tiny subsidy, it shouldn’t be a big problem, but with 85% of Safecoin available to the network, can we guarantee any subsidy would be small? If it’s small enough to not be a problem, it won’t have a big impact, so why have it at all?

The only logic I can see for the concept of 85% of coins being network owned and distributed over time is an egalitarian desire to make sure early investors don’t have a huge portion of the future value of the network that can’t be unseated. If that’s the case, that’s fine I guess, though I’m an early investor, so wouldn’t mind it to be different :wink:

Another possible reason may be that the concept was copied over from Bitcoin, thinking that such a distribution is needed for incentivisation. But unlike Bitcoin mining, which is an activity made valuable only by the block reward (and transaction fees), Farmers offer valuable resources to a market that’s willing to pay for them.

Perhaps there’s a role for a resource pool to stabilise any crazy price fluctuations, but I think intelligent SAFE backup / uploading software will make sure any crazy fluctuations are smoothed out soon enough. If prices fluctuate around a point, backup software will wait for a dip before uploading, and on aggregate this kind of opportunistic software should make significant oscillations unlikely once the ecosystem matures.

2 Likes

Maidsafe themselves said that early farmers have an increased chance of winning a Safecoin…is that relevant?

No info on why they decided on a lottery system and 1 whole Safecoin as a reward. I would have thought rewarding every piece of data served would be fair (divisibility) but maybe that cripples network performance.

1 Like

Subsidy??? where can you get that from? Its an algorithm that calculates the current value for farming or the current rate value for storing. NOTE value is in terms of safecoin and not exchange fiat price

It more like the storing of grain. Do you think all the grain farmed is distributed immediately? No the grain is issued depending on demand and the rest is kept for the lean times.

So SAFE will pay farmers for the farming at the current rate the network determines. This rate does not change from first month to the 20th year. Coin scarcity, which is independent of current rate, will affect the actual coin issuance. But that has nothing to do with subsidies but sustainability.

And according to the current trend for good coins to become higher price as scarcity increases then farmers will actually earn more fiat as the scarcity increases. So in fact farmers earn more fiat later on than in the beginning when there is little scarcity.

To issue all the 4 billion safecoins to the current holders of MAID is the only subsidy in all of this.

1 Like

In Bitcoin, the block reward is often referred to as ‘subsidy’, which this distribution is analogous to. In economics a subsidy is when the price paid to a producer is higher than the price paid for the goods by the consumer, with the subsidy coming from a third party, which in this case is the Safe network.

The level of available resources is determined by the network balancing the market to ensure available supply is sufficient given demand (setting a price level where farmers offer sufficient storage & users demand an optimal amount of resources), not by having a stash of coins available to it.

The ‘grain store’ is farmers’ hard drives, not the network’s stash of Safecoin. The store only dwindles when demand outstrips supply, and that’s when the PUT price is increased to incentivise farmers to match demand.

The SAFE network will pay farmers what it needs to in order to ensure a healthy available supply, so it will change according to demand. It’s not like Bitcoin with a set, inflexible supply schedule, it’s a market, and hence doesn’t need a ‘block reward’ or subsidy, which is why I’m questioning why it’s needed at all.

Yes, I think that’s due to having a better chance of a farming attempt striking an unclaimed coin while more coins are unclaimed, with the chance reducing as more & more are found.

Though as long as an equal number of coins are issued through farming as are received & recycled from those paying to for resources, the chances of farmers striking an unclaimed coin would remain constant… I hope this will be forever & think it should be designed to do so.

That was meant to be rate algorithm.

So no subsidy built into it al all

True market prices are being used because the network defines what the true market price actually is based on its objectives and constraints. There is no subsidy. Why do you not consider the network as both a producer and consumer that is also a market player? Until you do that the network economics will not make sense to you.

Maybe if you consider either limit case separately regardless of the improbability it might help you see a way through it. Take for instance a world where everyone PUTs data but rarely or never GETs data, the network ends up with 100% of the safecoin but fails to add data due to lack of resources. This is not ideal. Now consider the opposite limit case where people rarely or never PUT data after the initial launch, but all the data that is there initially is very popular and so the people continuously view it. The network needs to continuously pay GET rewards to the farmers until it ends up with zero safecoin and thereby fails. This is not ideal either. All other forms of operation between these two extremes has the network with a sizeable or moderate purse that is time varying, with steady PUT income and GET expense streams. Here the reality of human behavior keeps the network economics alive and stable somewhere between the two extreme scenarios. This is ideal. Furthermore, PUT and GET prices are only loosely coupled because if someone tries to PUT and get’s a “network full” response, that is ok and acceptable for a reasonable duration. However if someone tries to GET and get’s a “network lost your data” response, then that is not ok since it means the network has failed. The capability to manage various unknown future scenarios along with the unpredictability of human behaviour in a stable manner is why the current economic model proposed by dirvine/MaidSafe is a good one.

1 Like

Your on board with ‘Pay the producer’ ?

My comment was referring specifically to the PUT and GET cost dynamics and the size of the network’s purse with regard to network/human interactivity. For the case of PTP I haven’t spent enough time reading into all the details and haven’t thought about it long enough to consider any potential repercussions so that I could come to any kind of conclusive opinion on it. I know there are a few decent arguments both for and against depending on one’s perspective.

1 Like

I see the network as a machine that matches supply with demand, with certain aims (e.g. keep the network 70% full, while paying devs, possibly paying uploaders based on demand (ptp)). So it’s a player, but a mechanical player that cares only about network health, not price, which is set by the level of supply & demand from farmers & users/uploaders.

If the flow of Safecoin to farmers (plus devs plus producers) from the network is greater than the flow of Safecoin from the users to the network as a matter of course, there is a subsidy.

If the 85% of Safecoin are diststributed over time to farmers, there is certainly a subsidy - farmers are being paid more for their service than users are paying for them.

What productive purpose is there for the network to set any price other than that which leads to the correct level of spare resources being maintained given the level of supply from farmers, and demand from users?

These scenarios seem impossible if there’s a functioning market for resources, and the network is useful.

Why would anyone put data on the network if nobody wants data from the network, and how could there be zero demand for putting data on a network that is popular with users accessing data?

The market means you can’t get anywhere near those limits as long as signals to producers and consumers are efficient.

This is correct, except the network doesn’t require a significant purse - it only needs the income stream from uploaders, and payment stream to farmers, and can match these to ensure the target level of spare resource is achieved. A tiny buffer to ease any rapid swings could be useful, but the price signials neet to get through rapidly to producers & consumers to be effective.

I don’t think that would be in any way acceptable for any length of time - it would indicate an absolute failure in the SAFE network resource market, and therefore probably the SAFE network (unless it happens in the first few hours & people go bonkers).

The price per PUT should rise & farming rewards increases in line with this to reduce demand and increase supply well before the network gets full.

What do you call it when farmers are earning less than what clients are paying? Both scenarios are possible, and up to the network to decide given all extraneous factors. Its not a subsidy in one case nor a penalty in the other. It’s just the network doing business given its prime directives, which include minimized cost to the users, and maximized income to farmers. Users pay the network, and the network pays the farmer. There might exist unique situations where network performance cannot be maximized if those two payments are directly coupled 1:1 in real time. One would hope that they will likely be coupled on average over the long term given SAFE objectives, but not necessarily so in real time instant by instant if SAFE is having too much of a hard time doing its actual job of keeping all data safe and secure.

Just one other example is that transient spikes is supply and demand can be also be further smoothed out and network performance can be maximized by having the network access its purse. It’s another tool in the toolkit. Hypothetically, safecoin prices could also be tailored to protect a particular section from some kind of targeted attack not going on in other sections. You are assuming that there will be a linear relationship between GET rates and new storage coming online. If GET’s spike and jump rapidly, those costs don’t necessarily need to translate to the clients at the same rate. Same goes for PUTs. Think of its purse like the suspension in your car, you have shock absorbers to smooth out a bumpy ride and improve comfort and user experience. You don’t want signals to be under-damped nor over-damped, but optimally or “critically” damped.

Yes, I said they were extreme improbable limit cases used for thought experiment, but one still wants stable behavior at the limit. You have advocated for a scenario analogous to the case where the network purse is near zero for all time. (ie. no shock absorbers in your car’s suspension) This is not ideal.

How do you define significant? What size is ideal for you? Prove that the particular size you advocate is ideal. You won’t be able to since currently no one will have enough information to predict the future and do so. What we do know is that the network purse size can vary within its set limits between 0 and 2^32 based on human behavior, the network algorithms (which aren’t finalized) will create a market that decides what the size actually will be; based on real conditions in the wild. Divisibility of 2^64 or 2^96 will allow the network to function essentially the same even if all but 1/(2^32) initial safecoin is lost. The initial conditions have been set to a ~ 90:10 split between network and human purse sizes and this will evolve with time as needed to keep SAFE alive and healthy. We’ve gone over this at length both here and in other threads and I still don’t understand the issue you are seeing.

I think you are envisioning PUT/GET price fluctuations similar to a stock ticker from the perspective of a trader. I don’t. I see the network purse/buffer as a way to smooth out those fluctuations so that prices are stable and look more like a 30 or 200 day moving average on the NYSE. In time, as the network matures perhaps this split will eventually be reversed with 90% in human hands and 10% still owned by the network. Maybe it eventually goes to just 1 coin owned by the network where divisibility is playing a huge role. Regardless those are horrible initial conditions to give to a baby network that one would like to see grow to maturity. Chaotic volatility might be great fun for traders, but not for engineers, or parents, or those that are both in giving birth to the SAFE Network. I can see scenarios where PUT/GET pricing algorithms might gradually decrease the relative size of the network purse as volatility is minimized and network performance increases. Perhaps under ideal situations the algorithms could be tailored to allow for nearly all of the safecoin to come under human control in about 250 years… etc. Perhaps humans can’t be trusted to control more than 50% of total safecoin, or perhaps something else, or not.

Since the algorithms aren’t finalized, and no simulations for these dynamics can been written without them, all of this is just pure speculation with regard to the network purse. Again, it’s argumentum ignorantiam.

I think we would all be far more productive brainstorming what objectives should be important to the network in order to maximize human satisfaction with its performance or operation. In this direction, the brainstorm may help lead to better pricing algorithm designs, rather than going in circles. For example, don’t clients want steadily increasing levels of performance combined with consistent price reductions and minimal volatility? Aren’t farmers looking for stable GET prices so that they can plan expansions while being able to count on the fact that chances are pretty good they get an ROI? Note that in both cases a minimized level of volatility given all other internal or external factors is of prime importance. One begins to achieve that by providing the network with the largest possible initial purse size.

Some guiding questions:

  1. What kind of experience should the client have when buying and/or using PUTs on SAFE?
  2. What kind of experience should farmers have when earning and/or serving GETS from SAFE?
  3. Dev perspective?
  4. Other?
3 Likes