dStor operates a computer network consisting mainly of storage nodes that store files and deliver them to users, and gateway nodes that monitor the health and usage of the network for routing and accounting purposes. There is also an accounting system integrated into dStor to ensure users are correctly billed for their usage and storage node operators are correctly paid for their service.
When an end user wants to access data in the system, their computer sends a request to one of the dStor gateway nodes (assigned round-robin style) which interprets the request based on the location of the requesting IP address and seeks to reflect that request quickly to one of the servers in the same region with the highest availability at that moment based on the gateway node’s ongoing monitoring.
Once the end user’s request is reflected to a storage node in the system, it asks for the requested data asset. If the file exists in the server’s storage or cache, it is immediately served. If the storage node does not have the file, it requests it from another node in the network and once it receives the file, it also caches it for a period of time to hasten future requests.
When a user wants to add data into the system for storage, they make a request to the gateway nodes using the API key associated with their account. Once the system ingests the data, it creates a unique filehash of it that serves as a resource locator. This is how end users or their computers access this data in the future. The gateway node forwards the data to a number of storage nodes (generally 16-20, depending on how many nodes are currently in the network) where they are “pinned” to ensure they are not deleted.
The dStor accounting subsystem monitors all file access and delivery and regularly polls storage nodes to ensure they have their pinned data, which they receive pay for. If pinned files are missing from the system, dStor requests another storage node to pin them instead and the previous node loses future income from storing that data seed. The accounting system calculates invoices for users and payment for storage node operators based on usage.
Anyone can operate a dStor storage node if their infrastructure meets the minimum requirements. At present these minimums are:
- a computer with an Intel i3 or better processor and 8GB of RAM running Unix (Ubuntu 18.4 LTS) with:
- at least 4TB of hard drive space, and
- 50Mbps of up bandwidth dedicated to dStor operation.
However, systems with more hard drive space can store (and be paid for) more data and those with lower latency or higher bandwidth can deliver (and be paid for) more data service. This incentivizes higher quality infrastructure for the good of the system.
dStor vs. Amazon S3
dStor vs. Microsoft Azure
dStor vs. Google Cloud
Customers establish an account with dStor and receive a customer number and designate their method of payment. Monthly invoices will be emailed to each customer for the previous month’s usage. Customers will have 15 days to pay their invoice in full or their stored assets will be flagged for deletion. (Customers may retain a positive payment balance to prevent files from being deleted.) When very high usage occurs, an invoice may be sent more often than monthly.
During the beta period, TLOS tokens on the Telos blockchain will be the first payment gateway. Additional forms of payment will be added in various fiat and crypto currencies as available.
Storage node operators share in the previous month’s income divided based on what percentage each provided of the total seed storage and data delivery. Approximately 25% of the total storage node operator payment amount is reserved for seed storage and 75% for data delivery storage.
The storage portion of the payment is divided among all storage nodes based on what percentage of the assigned data seeds are actually stored on their system. Each data file is seeded on approximately 16-19 individual nodes fairly randomly amongst adequately performing storage nodes based on capacity. Nodes with more storage capacity can earn a greater percentage of this pool. If a data seed is expected on a storage node but is found not to exist, the node is no longer paid for that particular seed and it is assigned to another node.
The data delivery portion of the payment is divided among all storage nodes based on what percentage of the data delivery that node performed. Nodes with more available up bandwidth dedicated to dStor and good system performance can expect to receive a higher proportion of the data delivery income.
The storage and gateway operations of dStor are decentralized. Storage nodes are operated by companies and individuals around the world. Gateway nodes are operated by dStor and a small number of other trusted companies during the beta period. As dStor grows, more gateway nodes will be operated by additional independent companies, further decentralizing this component of dStor.
The only component of dStor that is not currently decentralized is the accounting system which must operate on a high-speed network in order to keep track of how users and storage node operators are using the system. This currently works faster than any decentralized blockchain can operate. (We helped launch two of the world’s fastest and highest capacity blockchains, EOS and Telos, so we have good insight into their operational speeds.) We expect that blockchains will grow fast enough handle to decentralizing this accounting function within a few years and our intention is to fully decentralize dStor as soon as it is feasible. The main beneficiaries of this decentralization will be the node operators who will no longer need to trust dStor to accurately account for their rewards. Customers already interact only with decentralized components of dStor. No storage or access element of dStor is centralized and a failure of the accounting system would only disable the ability to pay accounts for a brief time. The database structure of this is recoverable and physically decentralized but the servers are all operated by dStor, meaning that there is still an element of trust required in terms of accounting, but not in terms of data integrity.
Telos is the first blockchain used by dStor for controlling permission and collecting and distributing payments. Before long there will be multiple forms of payment available to customers including USD and other fiat currencies, as well as leading cryptocurrencies such as BTC, ETH, and EOS. dStor is likely to continue to pay storage node providers in Telos TLOS tokens but intends to add automated swap contracts to allow node operators to easily collect funds in a variety of currencies.
dStor is developed by GoodBlock Technologies, Inc., which is a company that was founded by staff from the Telos block producer and developer company known as GoodBlock. Many of the companies involved in building the initial dStor network are also affiliated with Telos as block producers and/or developers. Many of the first dapps being developed on the dStor platform are built on Telos. However, because dStor is decentralized storage, it can be used by projects that operate on any blockchain, or that don’t use a blockchain at all.