Decentralized P2P marketplace for Monero users (proof of concept)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
larteyoh 49be2fdd00
Merge pull request #205 from larteyoh/backup
2 days ago
assets correct alphabetical sorting and update monero-cpp 1 month ago
cmake Add JSON-RPC functions 7 months ago
external omitted from JSON 1 week ago
qml add expiration_date to messages 2 days ago
src add expiration_date to messages 2 days ago
tests fix tests/ build 1 month ago
.gitignore modify .gitignore 3 months ago
.gitmodules 3 months ago
CMakeLists.txt remove tor.cpp and copy escrow.cpp to src/core 4 weeks ago
LICENSE Update LICENSE 7 months ago add expiration_date to messages 2 days ago
qml.qrc add network status indicator and protocol changes 2 months ago



A decentralized P2P (peer-to-peer) marketplace for Monero users (PoC)

Disclaimer: The neroshop team is comprised of a single developer that operates independently and is not affiliated, associated, authorized, endorsed by, or in any way officially connected with the Monero project, Monero team or any other organization.

Also, this is an experimental / hobbyist project that is still in its early stages of development so use at your own risk.

Table of contents


Click to load images

Wallet_Keys_Generation Registration Login CatalogGrid CatalogList ProductPage SettingsDialog_Network SettingsDialog_General HomePage HomePage_Recent_Listings Dashboard Store_Inventory Store_Inventory_ProductDialog_Top Store_Inventory_ProductDialog_Mid Store_Inventory_ProductDialog_Bottom WalletPage_Send WalletPage_Receive WalletPage_Transactions ProfilePage_ListingsTab ProfilePage_RatingsTab ProfilePage_With_Custom_Avatar MessagesPage

Feature Status

  • Distributed P2P network (urgently seeking assistance with I2P integration/NAT traversal!!!)
  • Buy and sell products and services with Monero
  • No KYC
  • No censorship (censorship-resistant)
  • No listing fees, sales tax, or any other fees (except for miner transaction fees and shipping costs)
    • there will be 0.5% fee for using one of the three payment options (specifically the 2-of-3 escrow system). This is to incentivize arbitrators (who are chosen from sellers with the highest reputation) for disputing 2/3 escrow transactions.
  • Pseudonymous identities
    • sellers and buyers are identified by their unique id (monero primary address) and optional display name
  • End-to-end encrypted messaging system for communications between sellers and buyers
    • generated RSA-4096 private keys will be used to decrypt messages.
  • Subaddress generator for direct payments without an escrow
    • a unique subaddress will be generated from a seller's synced wallet account for each order placed by a customer
  • Built-in Monero wallet with basic functionalities (transaction history, send, and receive)
  • Option to run a local Monero node or connect to remote Monero nodes
  • Payment address QR codes containing Monero URIs
  • Option to choose between sending funds directly to a seller or by using a multisignature escrow.
  • Native I2P support
    • i2pd will be built-in (statically linked)
  • Seller reputation system
  • Product rating system (GUI Integration Pending)
  • Wishlists
  • Built-in SQLite-powered search engine that can find any listing or seller
  • Full-featured and user-friendly GUI application (WIP)

Building neroshop


✔️ = Currently in use | = Optional | = Marked for deprecation or removed | = Not in use, but may be considered

🔳 = For CLI only | 📦 = Bundled

Library Minimum Ver. Purpose Status
monero-cpp latest monero wallet and payment system ✔️ 📦
sqlite3 3.38.0 database management ✔️ 📦
QR Code generator ? qr code generation ✔️ 📦
json ? json parsing and msgpack ✔️ 📦
curl ? currency conversion ✔️ 🔳
openssl 1.1.1 for curl, sha256 sum and message encryption ✔️
Qt 5.12.8 graphical user interface ✔️
raft ? consensus mechanism 📦
stduuid ? unique id generation ✔️ 🔳 📦
linenoise ? command line interface ✔️ 🔳 📦
lua 5.1.5 configuration script ✔️ 📦
cxxopts ? command line option parser ✔️ 📦
libzmq ? networking
libi2pd latest network proxy 📦
libjuice ? NAT traversal (clearnet) 📦

Compiling neroshop from source

0. Install prerequisites


sudo apt install build-essential cmake git


sudo pacman -Sy --needed base-devel cmake git


sudo dnf install gcc gcc-c++ make cmake git

1. Clone neroshop (and its submodules)

git clone --recurse-submodules
cd testshop

2. Install dependencies


# neroshop
sudo apt install libcurl4-openssl-dev libssl-dev qtdeclarative5-dev qml-module-qt-labs-platform qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-shapes qml-module-qtquick-dialogs
# monero-cpp (monero)
sudo apt update && sudo apt install pkg-config libssl-dev libzmq3-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libpgm-dev qttools5-dev-tools libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler libudev-dev libboost-chrono-dev libboost-date-time-dev libboost-filesystem-dev libboost-locale-dev libboost-program-options-dev libboost-regex-dev libboost-serialization-dev libboost-system-dev libboost-thread-dev python3 ccache

Arch (missing Qt/QML libraries)

# neroshop
sudo pacman -Sy --needed curl openssl qt5-declarative
# monero-cpp (monero)
sudo pacman -Syu --needed boost openssl zeromq libpgm unbound libsodium libunwind xz readline gtest python3 ccache qt5-tools hidapi libusb protobuf systemd

Fedora (missing Qt/QML libraries)

# neroshop
sudo dnf install libcurl-devel openssl-devel
# monero-cpp (monero)
sudo dnf install boost-static libstdc++-static pkgconf boost-devel openssl-devel zeromq-devel openpgm-devel unbound-devel libsodium-devel libunwind-devel xz-devel readline-devel gtest-devel ccache qt5-linguist hidapi-devel libusbx-devel protobuf-devel protobuf-compiler systemd-devel

3. Update monero-cpp submodules

cd external/monero-cpp && ./bin/
cd external/monero-project

4. Install expat and unbound (May be required to build monero-project on Debian/Ubuntu otherwise, this step can be skipped):

tar -xf expat-2.4.8.tar.bz2
rm expat-2.4.8.tar.bz2
cd expat-2.4.8
./configure --enable-static --disable-shared
sudo make install
cd ../
tar -xzf unbound-1.16.1.tar.gz
rm unbound-1.16.1.tar.gz
cd unbound-1.16.1
./configure --disable-shared --enable-static --without-pyunbound --with-libevent=no --without-pythonmodule --disable-flto --with-pthreads --with-libunbound-only --with-pic
cd ../

If you happen to run into an undefined reference to icu_* error, you may need to add this line under the find_package(Boost ... in "external/monero-cpp/external/monero-project/CMakeLists.txt": set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -licuio -licui18n -licuuc -licudata")

5. Build monero-project to create .a libraries

make release-static -j$(nproc)
cd ../../../../

6. Build neroshop

To build with CMake:

# Build external libraries
cd external/
cmake . && cmake --build . --target juice-static
make -j$(nproc)
cd ..
# Build neroshop
cd build
make -j$(nproc)
# Run neroshop


See Wiki


This project is licensed under the GNU General Public License v3.0 (GPLv3)


Donate if you like, to any of the addresses below. Received payments will be used to reward developers for completing bounties and will also be used to keep the domain up and running.

Monero (XMR):


Wownero (WOW):


OpenAlias: or



u/EchoingCat — for the revision of the official neroshop logo
woodser — for his guidance and for his work on the monero-cpp library which has made the development of this app possible
yuriio147 — for his work on various QML components, the currency converter, wallet address qr provider, fixing a major bug in the RSA encryption code, the RSA signing and verifying functions, and for teaching me some Qt/QML techniques
lza_menace — for creating the new JSON API endpoint
everyone in our matrix room — for sharing many great ideas that have been useful to the project