NoShore: On-the-go offline payments for Monero

source, issues

NoShore is a set of four tools which, when used together, can enable offline payments in physical settings.

Communication is taken care of by an Internet-enabled device that coordinates the several steps, from preparing the transaction as well as having it signed and published to the network.

Wherever such a coordinating device is present, users may authorize payments by presenting their personal signing device without having to communicate with the Monero network itself.

The Big Picture

Imagine you are at your local farmer, shopping for some natural produce. She sums up the cost and her register displays the amount to be charged.

You hold your device against their reader for a couple of seconds. Your device now displays the amount just payed. No surprise - it's the value you expected.

You grab your items and leave. Happy about all your good choices up to this point in life, you are simply looking forward to having a delicious meal.

That's the vision for this project. We aren't there yet. To learn what's missing, refer to "Contributions" at the end of this page.

Overview

Once each tool is set up as per the below documentation, the process looks like this:

  1. Create a full wallet on sentry
  2. Export the full wallet to ghost
  3. Export a view-only wallet to tower
  4. Have ghost+gate request tower to prepare transactions
  5. [optional] Periodically have sentry inform tower about spends

Installation

Complete each tool's installation in any order. Instructions:

Setup and Usage

Follow each tool's "Setup" section in this specific order:

  1. sentry - Create a full wallet on sentry
  2. tower - Have tower watch it
  3. ghost - Import it to ghost
  4. gate - Allow access from ghost

Usage

From the user's perspective, requesting a transaction is a simple two-step process:

  1. Tell gate which amount to charge next:

     gate cost 0.1337
    

  2. Have ghost initiate the payment process:

     ghost trigger
    

Upon successful execution, gate receives the requested amount to its wallet.

Support

Please ask your questions in monero.town's c/XMRID area.

Contributions

Be aware that, at this stage of development, there are no means for discovering the charging device automatically. Its location (an ssh-path) must be manually configured on the signing device.

Furthermore, since communication happens over ssh, the signing device will have to join a TCP-network where it can reach the charging device.

Contributions that make this frictionless, such as code to transfer via NFC, UR, Bluetooth and the like are particularly welcome.

Simpler tasks to work on aren't worth any less though. You can find some directly in the source code as comments marked "TODO" and some of the tools list ideas for improvements in the "Roadmap" of their respective README files.

Source code and issues are managed on Gitlab. That is, until sourcehut starts accepting Monero ...