-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Storage markets #10
Comments
Bandwidth can be priced using the similar exponential function for allocated storage; let's say 500mbps of a 1gbps uplink is allocated for use; it's up to the node to price to contention. This helps distribute load, prevent DDoS, and balance out supply and demand in the market. Pricing for both storage and bandwidth should be updated on a periodic basis, both per hour or as a header on every response. Bandwidth costs could be settled on a daily basis, included with the daily payment. Failure to pay for bandwidth results in the storage provider entering a sort of write-only dropbox mode for that peer after a grace period of 1 hour. In addition to the dropbox penalty, failure to pay for storage results in entering a grace period of 7 days. Beyond the 7 days, the data can be deleted by the node. For DDoS prevention, the first gigabyte of bandwidth could be paid for in advance. If a storage client requests more than a gigabyte of data within a day, another payment will need to be received. These parameters are configurable, but only by the individual storage market. There can be alternatives to the Pay as you Go model when a Reputation system is added, where a storage market provides reputation tokens to storage providers. This way, storage clients can be comfortable with pre-paying for storage If a storage provider is unable to satisfy its storage contract, it can transfer their data to another peer at no cost to the storage client (though, the fee will need to be paid by the storage provider). This is because, across a single market node, if latency isn't factored in, storage is largely fungible. There's no penalty provided by the storage market to providers who go offline and delete data; this is because a storage miner has nothing at stake, only the incentive to earn. Instead, this is compensated for by maintaining a replication factor for all data across the network. Cooperative transfers require storage clients to update their catalogs. Storage markets can also proxy bandwidth, do load balancing, and ensure replication on the behalf of users willing to pay for this sort of "managed" approach. Alerting mechanisms can also be provided for users who wish to receive alerts and notices via email or a Telegram bot. Differences in latency could be compensated for proxied requests if this becomes a concern, but that also adds latency. Perhaps a network of relay nodes, especially clientside relays could be considered in the future as an alternative to a CDN. Storage proxies can distribute uploads from storage clients to multiple storage providers, and also balance traffic across providers accounting for both cost and latency. |
Market node, used for routing, LN channels are made to the market node route by both storage clients and storage providers. Storage prices rise on a per-node basis; this encourages a more even distribution of load, and incentivizes adding storage to a network in a competitive market as prices rise with demand. For instance, price should be a function of supply, and increase exponentially as a storage allocation approaches 100%.
Storage allocation can be verified by the storage provider node. Speed tests can be used between the storage provider and the storage market. Storage markets can relay data between multiple storage providers, improving replication, with replication factor managed by the storage market node itself, or replication can be performed peer to peer between storage clients and individual storage clients. The primary function of a market node is to set a market price. Otherwise, fully P2P operation can occur at a fixed price.
The text was updated successfully, but these errors were encountered: