Gaming the farming reward?

What’s stopping me from making an app that generates GET request for all chunks that are stored in my vault? Since I know their IDs, any GET request would end up being sent to my vault and it would earn some Safecoins in return. What am I missing?


Needs to be you and who’s army :slight_smile: The initial farming rate is to be decided and then the network will adjust it. I suspect if there is reasonable uptake this could be 1 in 1,000,000 Get requests. So if you managed to do a million Get’s for your chunks (need over a million chunks to get past caching) then you may get a single safecoin if the farming request you might get is successful. This assumes the request works and you have good rank (stayed on a while holding chunks) so if you keep changing chunks then you need to multiply this a lot. Also this relies on nobody else doing gets on the data you hold (as it reduces your chance)

So if you create an app that gets used by a million people you may earn a safecoin per second with this guestimate or similar which is going to be much better for you and the network. This is why folk will think 1 in a million that’s nothing, but it all comes together when you look at the bigger picture really.


I see that what I am missing is the appreciation of the scale of the whole thing. So you would only get Safecoins at a rate of about one in a million Get request? A chunk being 1Mo in size this means you will have to upload the sum of one terabyte in order to earn 1 Safecoin? There’s no granularity in the reward right, it’s 1 Safecoin or nothing correct? I need to let this sink in a little…

So how long is it expected to take for a new user to get enough Safecoins to start uploading content?

I wonder how much will be worth a Safecoin on the market, I think I need to buy some more MaidSafeCoins.


Only the network will tell us based on uptake, number of users, how much data, how often they load data etc. This is what testnet3 will allow us to test, but on beta it’s up to the network. I appreciate it’s hard to grasp, it is for me, but the scale and number of variables is huge. Very interesting mechanism really


Yes if you are trying to game it, otherwise allow your vault to behave and you will earn more. even if you upload 1Tb it will not go to your vault, it will amortise across the address range (node range really).


Indeed it is. I think seeing it in action will help a lot getting the right intuition on how it works. Thanks for the answers.


If that* were remotely possible, MaidSafe would be completely useless.

By “that” I mean:
a) Deciding where chunks go (e.g. to “your” vault)
b) Being able to make a request to identify vaults (and their owners) that contain particular data
c) Being able to create “earnings” in a Wall Street-like fashion

I agree it would, that’s why I asked. But I think I got misunderstood. It’s not about deciding where to put my chunks, or about filling the network with chunks so a few ends up in my vault. it’s about seeing what are the chunks contained in my vault, that others put there, and creating Get request to retrieve them even though they aren’t mine to increase the amount of Get request that my vault gets.

In other words:

  • Create a vault
  • Record chunk ids of all chunks that are stored in it
  • Send to the network Get requests with the chunk id recorded
  • My vault receive the Get request and have a chance to earn Safecoins

I won’t be able to decrypt the chunks that I would get but this is not the goal, the only goal was to allow my vault to respond to more Get request and earn more Safecoins.

Anyway that was the idea. I still don’t understand how come it’s not viable but I don’t quite understand the whole picture either.

1 Like

I’m not clear how this is not viable either!

Quite hard indeed. But don’t think of an App on a server at Amazon which runs all day and can request data all the time. As far as I get it, an App is run locally on someone’s computer after they installed it. So if you create an App that requests data in your own vault, this will work once. If you request the same data again it’s cached all the way to your system :wink: So you ask for the same chunks and your close nodes will provide from cache. If you keep asking for that data over and over again they will de-rank you due to weird behavior I think… So you need 1 million people running your App (locally), request the chunks and maybe farm a coin. They all have to do it at different times/dates because otherwise the caching kicks in… That’s how I understand it…

But I don’t have only one chunk of data. My vault may contains millions of them. By the time I’m done requesting all those chunks there’s a good chance the first one will be freed from cache. If it’s not I just need to wait a little bit before requesting the whole thing again.

Again, I’m not sure this would really work, I don’t understand all the layers involved. Going through this kind of thought process helps me get a better appreciation of it.


That’s right. So you could try to request each chunk every day. Getting the optimal amount of Farming… Pffff, yeah, quite hard to understand indeed :slight_smile:

1 Like

It’s not viable simply because it shouldn’t be viable. If it were it’d be a bug.

I don’t think you can establish a link between files and Chunk IDs.
As far as I can tell:

  • A vault’s chunk IDs should not be network-unique (there’s no reason for them to be).
  • A client doesn’t need to know a file’s “global” Chunk ID

Were that possible, it ought to be be deemed a bug.

I hope someone with a good knowledge of the code can explain. I couldn’t find this detail in docs.

1 Like

There are many reasons this won’t work. The chunks as stored are not the names you need to find as they are again obfuscated on store. You only get to know their names when somebody asks for them (the request name is hashed to match the name of stored chunk). So its a one way thing and if you never stored the data its hard to figure out the chunk name.

The main reason though is the network is managing safecoin farming and the number of requests you would need to make against your own vault (which will lose chunks between reboots etc.) should be immense. Its also very easy to spot behaviour as is range based searches (hack attempt).


That number is interesting. Let’s play with it.

1,000,000 users == 86400 safecoins / day

Google Ads gives me about $1.00 per 1000 views for my pay per click as a ball-park for general interest traffic. That means 1,000,000 views generates me about $1000. So if I was paid with 86400 safecoin instead, that would put the value of a safecoin at about $0.01

But let’s do better than that. A good average revenue per user is on the order of $2.00 per fiscal quarter, according to some random article [1] I just googled. That means that site would get $8.00 per user per year. So 1,000,000 users would generate $8,000,000 per year, which is $21,918 per day. If I was paid that with 86400 safecoin instead, that would put the value of a safecoin at about $0.25

Obviously all of these numbers can be argued about, but this gives us an order of magnitude type of estimate, it seems to me.


Ah, I feel this is the part that I was missing. So the chunk ID I’ll find in my vault isn’t the global ID that I need to get the chunk from the network. Not sure how the process of obfuscating it is done but I think I would need to dive deep in the code to really get it. Your explanation reassures me. Thanks again and sorry for bugging you with ideas on how to break to system :slight_smile:

1 Like

Actually, allow me one last question. What is responsible to map the global ID of a chunks with the local ID store on a vault, the data manager of the vault?

EDIT: Never mind that, I think I get it. Hashing the name means the data manager doesn’t need to remember anything, he just hash it when he needs to retrieve the chunks from the vault. There’s so many layer, it’s quite an impressive system.

A lot has changed since last year. I don’t know if my understanding still applies, but I’ll post it for consideration. I think farming GET exploit has been answered, so this is slightly off-topic.

Safecoin Generation Rate

Bitcoin has a predetermined generation rate, regardless of transaction activity. Basically, it’s time based, reducing down to zero until 21 million is created.

Currently, Safecoins are generated “based” on GET requests. The Sigmoid curve affects the vaults farming rate. Even if no one is gaming the system, we still need to ensure Safecoin generation is carefully managed to avoid excessive inflation. This is the part where I’m stuck.

Here’s my old answer: A vault cannot earn beyond a certain amount of Safecoins per day.

  • Fastest Farm Rate = 1 Safecoin per hour.
  • Slowest Farm Rate = 1 Safecoin per 24hours.

Even if the Vault receives legitimate GET requests that exceed their fastest farm rate, they are still capped. Caching should alleviate this from happening. But in a small network… what if the GET requester is closest to the vault owner?

The obvious reaction would be to create more vaults, which means providing more resources and bandwith. That should be okay since the farmers are expanding the Network. However, it breaks the generation speed cap, even with the slowest farm rate.

1 million vaults farming at (1 Safecoin per 24hrs) = 1 Million Safecoins per day.
10 million vaults farming at (1 Safecoin per 24hrs) = 10 Million Safecoins per day.

New Answer?

If there is an enormous amount of real/fake activity (many GETS from many users) there maybe be a spike in Safecoin generation, even with caching. If I were to write how this is managed… I would do the following.

PUTS increase the “available” address space of farmable Safecoins.

As more data is PUT on the Network, it increases the (GET pool). Doing it this way, uses the Network storage as a restraint. Regardless of GET activity, or massive number of vaults. The total amount of Safecoins in circulations is dependent on the total amount of storage bought.

I’m sure there is a better solution on how Safecoin generation is managed. So this is just my solution for what it’s worth.

My concern was based on a “death from success” situation. If the SAFE Network approaches 100% capacity, this increases the amount of Safecoins rewarded to farmers. Add on a massive amount of GET activity, which is FREE. You have a situation where a lot of Safecoins enter the economy.


The initial question of the thread as been answered so I don’t mind going off topic but I think this new discussion about understanding how Safecoins are generated will become quite big. I know I have a lot of catching up to do. So I think it should be moved into a separate thread so people interested in the topic can easily find it.

I thought it was already like this and the term “recycling” was use to describe this process.

Also, this thread is my new rabbit hole.

1 Like

According to my understanding, 70% of Safecoin address space already available for Farming rewards. This is the farming pool. Recycling “refills” the pool, which is a good thing. It creates a sustainable ecosystem.

I’m concerned about farmers being able to drain the 70% pool in a very short amount of time.

Here’s how it may be possible.

As we approach 100% storage capacity, farmers get paid more, which means the cost for storage goes up. If farmers hoard their Safecoins for whatever reason, there will be less Safecoin liquidity… which also causes less recycling. Hoarding & lack of recycling contribute to draining the 70% pool.

Because GET requests are free, consumers would likely keep using the Network and avoid spending on PUTS because it’s expensive. This will attract more farmers, rebalancing the supply/demand equation.

But during that time, the 70% GET pool will continue to drain, without being refilled, or drain at a faster rate than being refilled.

If Safecoin is distributed too quickly, we will get inflation. My solution was to restrain distribution by directly limiting the availability from the 70% pool.

Theoretical Example

70% of 4.3 billion Safecoins = 3,010,000,000 Safecoin addresses
Assume 1 Safecoin = 1Gb of PUT storage paid to the Network.
Therefore 1 million Gb stored makes 1 million Safecoins available to farm.
This means consumers have to PUT 3,010,000,000Gb in order to distribute 3,010,000,000 Safecoins.

This may not be necessary. I just want to avoid a situation where there is more Safecoins being generated than the amount of storage available. It is better for Safecoin’s Network purchasing power to go up instead of down.

EDIT: Because the total amount of Safecoins is limited to 4.3 billion, and storage capacity will exponentially increase, my concern may be moot long term. So I’m not too worried. :smile: