What is the Distributed Proof of Work (DPoW) System? Edit
The DPoW system is the The Nano Center solution to helping the Nano community-supported services, such as faucets, tipping bots, and wallets. It allows any user to support the nano network by computing the required work for transactions.
How can I see statistics on the DPoW network? Edit
The DPoW Network has a dashboard that is located here. You can see how many clients are connected, a list of services utilizing the network, and detailed statistics on PoW generation.
How can I use it? Edit
The work is distributed by a centralized server, and you should use one of the available clients (links at the bottom):
Python client - more performance and configurable, harder to setup, intended for continuous use
Web-based client - easy to setup, intended for intermittent use
Why is this needed? Edit
Every Nano transaction requires a small PoW to be calculated. It can take around 15 seconds on a modern computer (less than 3 if using a graphics card). This is not a problem for users running a node and only sending occasional transactions. However, for services that manage hundreds of accounts, which may want to transact at the same time, their server might not be able to keep up with the demand. This problem is usually handled by having a work server. The issue is that can be expensive, and is sometimes doing nothing, when transactions are not happening. For non-profit community services, this has become a problem.
How does DPoW solve the problem? Edit
With DPoW any user can help run the aforementioned services, simply by leaving their computer on and calculating the occasional PoW. Much easier and often more helpful than running your own node.
But I thought running your node helps the Nano network? Edit
Not necessarily, especially if you have a slow node. A representative, however, helps decentralize the network, making it more secure. DPoW was created because many users wanted to help the network in some other way.
Why would someone want to offer his computer for DPoW? Edit
It runs on the same principle of running a node - we believe users will want to help the Nano network and services simply because they want them to exist. Moreover, there are plans of doing small payouts to users in the future, proportionally to the amount of work done.
Is this why I need to give my address as a work peer? Edit
Do services pay for all of this? Edit
We are currently implementing a subscription model where services pre-purchases a bundle of credits, such that each work requested costs them one credit. These funds will be then distributed to the workers regularly. This is still in testing and in the future we plan to explore a free community model. The cost to use the dPoW system is significantly cheaper then a service running its own work server.
We have already paid, collectively, more than 30 Nano to our clients, for tens of thousands of work requests.
Who distributes the work requests? Edit
A server run by James Coxon, a member of The Nano Center.
Can't this be used to spam the network? Edit
If anyone could request work for free, in theory it could be work that will be used to spam the network, which would go against the purpose of this system. However, all services have their own API Key and they will be banned if this happens.
I'm a service and I would like to use this Edit
Great! Please contact @jayycox#5013 in http://discord.nanocenter.org/ or by e-mail: email@example.com. In the future, a form will be available.
How do I know you're not using my PC maliciously? Edit
You can use the open-source client and verify the source code (or ask someone you trust in the community). We will never do such a thing.
I've heard that Nano nodes precache the work for the next transaction, is this true? Edit
Yes. It is perfect for sending occasional transactions since they will be sent immediately without waiting for work. The DPoW system does the same for its services. After a work is requested, the corresponding source account is kept in a database, and we check for changes in its ledger. Once they send a transaction, we request work to a work peer in the background and keep it in cache. Once the service requests work for that same account, it will already be available! Neat, right?
What if the server goes down or there are no work peers available? Edit
We recommend that services keep a fallback method to get their PoW.
Where can I find the source code? Edit
Ok, count me in! Edit
Welcome, and thank you for helping to support community projects.