Distributed Proof of Work System

### How can I see statistics on the DPoW network?

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?

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?

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?

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?

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?

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.

### Do services pay for all of this?

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?

A server run by James Coxon, a member of The Nano Center.

### Can't this be used to spam the network?

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

Great! Please contact @jayycox#5013​ in http://discord.nanocenter.org/ or by
e-mail: james@joltwallet.com. In the future, a form will be available.

### How do I know you're not using my PC maliciously?

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?

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?

We recommend that services keep a fallback method to get their PoW.

### Where can I find the source code?

* Server
* Python Client
* Web Client (under maintenance, currently not working)
* Dedicated Work Server

### Ok, count me in!

Welcome, and thank you for helping to support community projects.