/nano-dpow

Nano's unofficial Distributed Proof of Work (DPoW) system

Primary LanguagePythonMIT LicenseMIT

Nano DPoW

DPoW

Discord

Welcome to the Distributed Proof of Work (DPoW) system. The DPoW system allows any user to support Nano community services by computing the required proof of work for transactions.

DPoW has helped reduce operating costs of community projects, such as faucets, tipping bots, and wallets. As a reward for helping, clients get occasional Nano payouts.

Why does this exist

In the Nano protocol, every block must contain a small proof of work to be confirmed by the network. While a desktop with a modern graphics card can easily and quickly compute this proof, the process can require significant resources from a server and mobile devices. Services often need to scale quickly when there is an uptick in usage, and on-demand scalable solutions based on GPUs are not available given the time-to-deploy requirements.

DPoW provides a hub between services and clients who are happy to provide their resources, in return for small payouts. Consequently, services save significantly on operating costs to operate on the Nano network.

How does it work

DPoW

The image above outlines the flow of messages within the system. Services request a proof of work for a specific block (hash) from the server. The server broadcasts a request using the low-latency MQTT protocol. The first worker (client) to return valid work is rewarded, and immediately a message is sent so other clients know they can cancel the ongoing computation. Meanwhile, the work is returned to the service.

Using DPoW

Documentation

You can read more about the DPoW message specification.

Running a work client

Read more on the client documentation page.

Requesting work for your service

Read more on the service documentation page.

Please contact us on The Nano Center discord server for further assistance.

Running your own server

Read more on the server documentation page.

We have made efforts to make it easier for anyone to run a DPoW server for themselves. If you need any assistance, please use the discord server or Github issues page.

Resources

Projects using DPoW

  • Nault - a light web wallet with Ledger support
  • NanoSpeed - a place to try out Nano in seconds
  • Natrium - a light mobile wallet
  • Nano-Faucet - a place to get some Nano, instantly
  • @nanotipbot - tip other people on Twitter with Nano
  • Nano Tipper - tip bot for Reddit
  • And more, some service information is kept private

DPoW servers deployed

Alternative approaches

  • P2PoW is a P2P protocol which allows users to trustlessly request work from others. It is more inefficient than DPoW, as it requires two blocks for each request, but removes the middleman (server) which is a central point of failure of the system.