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.
- Makes churn events and node relocation more burdensome.
- More likely to result in some users having below the minimum storage requirements to run a node.
- 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.
- 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):
- Increase the amount of data the node operator is storing for the network by bringing additional nodes online
- 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:
- 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).
- 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:
- Network owned safecoin with no previous owner → unlocked (made available to farm) according to issuance schedule.
- 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?