Block Producer Requirements
This post is designed to discuss the responsibilities of block producers, the software required and who's responsibility it is to write that software. This is expected to be a work in progress so if there are things I have missed, please reply
All of this should be covered by eosd running with the producer plugin. This software is the responsibility of block.one
Based on reading the storage white paper, these are the requirements for storage
All block producers will have a full copy of all of the files in storage, when a file is uploaded to a block producer all must synchronise the file within a reasonable time.
Files are synchronised over IPFS
Synchronisation is a one time event, as soon as a transaction is detected then all block producers should start download, if they later decide to delete it then and will refuse to serve this file, even if it is still available via IPFS.
Files in storage can optionally be served from a https server listening on a common domain, or the domain name of the customer.
How would this work? We could either have 1 machine operating as a proxy for ipfs or each block producer can serve https directly. If each block producer hosts their own https server then files that they have removed will be unavailable.
Each custom domain name should have a SSL certificate automatically generated from letsencrypt.
Accounting for bandwidth should also be done, bandwidth costs could be receiver pays or uploader pays.
The https proxy will need to be connected to the blockchain to verify permissions and accounting.
Voting on issues such as freezing accounts, replacing contract code, deciding on new storage limits etc. I guess most of this would happen via a contract on the blockchain, who would be responsible for maintaining this contract?
We should not underestimate the administrative and psychological demands of policing uploads. Maybe some of this could be outsourced?