A mobile app for testing payment systems against double-spend attacks.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Pay No Way

A mobile app for testing payment systems against double-spend attacks.


  • This project is intended to be used for testing purposes.
  • Please do not use this app to double-spend against merchants without their explicit consent.
  • A successful double-spend is not guaranteed - use at your own risk.


  • nodejs - For Linux and Mac install node via nvm.
  • make
  • electrum - Used for the following:
    • Getting unspent transaction outputs
    • Getting the current network fee rate estimate
    • Broadcasting raw transactions
  • For Android development:
    • cordova - npm install -g cordova
    • Java Development Kit (JDK) version 8 or higher. Use your system's native package manager to install the JDK (if available).
    • Android SDK - On Ubuntu 18.04 or later, it is possible to install Android Studio from Ubuntu Software Sources.
    • gradle
    • adb - Not required, but is recommended.

Getting Started

Before continuing, be sure you already have the project's requirements.

Project Files

Download the project files via git:

git clone https://github.com/samotari/pay-no-way.git

Install the project's dependencies:

cd pay-no-way
npm install

Run Electrum Proxy

The app requires the electrum RPC interface to get unspent transaction outputs, fee rate, and broadcast raw transactions. If you have not already done so, download and install electrum. Once you've got that, you will need to configure your RPC settings:

electrum setconfig rpcuser "user" \
electrum setconfig rpcport 7777 \
electrum setconfig rpcpassword "replace with something better"

Then start the electrum daemon:

electrum daemon start

Now run the electrum proxy server included with this project:

npm run electrum-proxy

Follow the prompts, entering the same RPC details as you did earlier.

Leave the electrum proxy running.

Build and Run Web App

To build and then run the app in a browser:

npm run build && npm run browser

Open your browser and navigate to localhost:3000.

Build and Run Android App

Add the Android platform to the project (via cordova):

cordova platform add android

This downloads the cordova plugins which are necessary to build the app for Android devices.

To install and run the app on an Android device, you must first:

Once developer mode and USB debugging are enabled, connect the device to your computer via USB. Run the following command to check to see if your computer is authorized:

adb devices

Once authorized, you can build then install and run the app from your computer onto the device:

npm run build && npm run android-device


This project is licensed under the GNU Affero General Public License v3 (AGPL-3.0).