Is it possible to upload data to the network without being forced to pay for it by the contract, if the host is willing to store it for free for you? Or is that impossible by design, and the renter always need to pay a tiny amount?
Because after paid downloads are implemented, some hosts might want to take anything for free, and remove it after a certain retention period.
I would also like the ability to "downgrade" Sia for cost-free internal use in a LAN (or among trusted friends on a WAN). I know there are other solutions for this, but I believe none offers all the advantages of Sia, especially full decentralization without any central gateway, even after blockchain and payments are no longer considered a factor.
I would also like the ability to "downgrade" Sia for cost-free internal use in a LAN (or among trusted friends on a WAN).
If I am not mistaken this is practically possible, already.
Assume you set up multiple nodes in your LAN (I guess you would need at least 20, preferably more).
You configure most of these to be hosts, and a few non-hosts.
You configure your firewall such that host nodes can connect only to local nodes. Non-hosts can connect to any Sia node (to sync the blockchain).
You explicitly add the local non-hosts as peers.
You now have a private Sia network running. Since the network is closed, all host earnings are returned to you.
To minimize the 3.9% tax (which cannot be avoided), you set the storage price in your network to be very low (is zero possible?). That way, you also need to acquire a very small amount of SC initially.
Well, this sounds like a headache :sweat: The things you cover are pretty much the things I'd like to see tweaked to allow this to happen with fewer hacks... it would basically involve adding the ability to disable some features, without any new additions.
I will cover your points:
- I don't think anywhere close to 20 nodes should be needed, two or three hosts could still provide valuable storage redundancy on a small network
- having to set firewalling for this is overkill and may have unintended consequences; Sia should just be asked not to bootstrap from any hardcoded nodes
- syncing the blockchain means having to download gigabytes for something that is not really needed or desirable on a private LAN (non-payments)
- earnings are returned to me but this still means purchasing Siacoins and then theoretically selling them back when choosing to stop using this system... for no real reason except a technicality
- the 4% "tax" should be avoidable if I'm not running on the public blockchain but just on private network, where payments either don't exist or are on a private blockchain with a private coin
There shouldnt be any forced tax, because if the price of the contract is zero, the tax will also be zero.
I think free contracts can be compared to Youtube uploads for instance. The host (Youtube) doesnt charge Siacoin to the renter, because it gambles on revenue from the downloads alone. Not many hosts will accept these contracts, and those that do will requires some sort of user-authentication to prevent abuse (just like Youtube requires an user account to upload).
But suppose Im willing to be the next Youtube, its so much trouble to give all the users Siacoin first (or to pay the minimum + taxes myself to make it free for them) just to allow them to upload their content to my servers. It also can be compared to the Bitcoin blockchain, where some miners require transaction fees and only a few accept data without fees.
So if this can be implemented with a rather simple protocol change, that would be wonderful. But it requires ALL peers (even those that don't accept free contracts themselves) to relay them to their peers.
Im not sure if the cost of the contract is also used to prevent flooding/sybil attacks, but If it cannot be free, then I wonder if its possible for the host to pay a contract for the renter?
Maybe Taek can shed some light on this.
If you are setting up on a private network, are you intending to have currency being traded between your private nodes? And do the nodes trust eachother? Because if you don't have trust, you're going to need some sort of mining mechanism and that could throw a wrench in things. I don't think Sia is really what you'd be looking for, Sia is meant to participate on a global scale.
That said, we set up mini Sia networks all the time for testing purposes, and it's pretty easy. Just change some of the constants and recompile, you'll end up with a different genesis block and therefore you'll be on a whole separate network. I don't really understand exactly what you are trying to do.
It's also entirely possible to configure the host to give a price of 'free' to a whitelisted set of renters. You'd have to write the code yourself, but it ultimately wouldn't be much of a change from the code that already exists.
No, I mean on the main/regular SIA network. If it supports paid downloads, then some hosts might choose to store any data for free, but charge for downloads.
The host acts like a seeder in a bitorrent swarm, but now he could actually get paid by anyone downloading. Ofcourse he needs to remove the data blocks that are 'impopular' after a while, but can keep the ones that generate enough to cover the costs.
Myself, I'm most interested in setting it up among trusted nodes, so with no currency exchange occurring at all. Ala Syncthing (but with much better redundancy coding), or ala Tahoe-LAFS (but without a central gateway), basically.