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.
 
 
 
layters 07f4adb6cc
Merge pull request #280 from layters/backup
10 hours ago
assets backup 4 days ago
cmake Add JSON-RPC functions 1 year ago
external update i2pd 1 week ago
qml show warning when price field is left blank 4 days ago
src skip nullptr nodes 20 hours ago
tests add option to set quantity per order 3 months ago
.gitignore modify .gitignore 11 months ago
.gitmodules remove i2psam from submodules index 2 weeks ago
CMakeLists.txt reorder core srcs in CMakeLists.txt 1 week ago
LICENSE Update LICENSE 1 year ago
README.md edit Contributing section link 1 week ago
qml.qrc backup 4 days ago

README.md

neroshop - WORK IN PROGRESS (ON HOLD)

banner

NeroShop is a decentralized peer-to-peer marketplace for trading goods and services with Monero

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.

Table of contents

Demo

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

Project Status

https://gist.github.com/layters/83efdef0c5ea3d8ff458bfc312d11be3

Building neroshop

Dependencies

✔️ = 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.15.x graphical user interface ✔️
stduuid ? unique id generation ✔️ 🔳 📦
linenoise ? command line interface ✔️ 🔳 📦
lua 5.1.5 configuration script ✔️ 📦
cxxopts ? command line option parser ✔️ 📦
libi2pd latest network proxy ✔️ 📦
i2psam ? network proxy 📦

Compiling neroshop from source

0. Install prerequisites

Debian/Ubuntu

sudo apt install build-essential cmake git

Arch

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

Fedora

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

1. Clone neroshop (and its submodules)

git clone --recurse-submodules https://github.com/layters/testshop.git
cd testshop

2. Install dependencies

Debian/Ubuntu

# 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 libunbound-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libexpat1-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 expat 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 expat-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/update_submodules.sh
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):

wget https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.bz2
tar -xf expat-2.4.8.tar.bz2
sudo rm expat-2.4.8.tar.bz2
cd expat-2.4.8
./configure --enable-static --disable-shared
make
sudo make install
cd ../
wget https://www.nlnetlabs.nl/downloads/unbound/unbound-1.19.0.tar.gz
tar xzf unbound-1.19.0.tar.gz
sudo apt update
sudo apt install -y build-essential
sudo apt install -y libssl-dev
sudo apt install -y libexpat1-dev
sudo apt-get install -y bison
sudo apt-get install -y flex
cd unbound-1.19.0
./configure --with-libexpat=/usr --with-ssl=/usr
make
sudo make install
cd ../

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 .
make -j$(nproc)
cd ..
# Build neroshop
cd build
cmake .. #-DNEROSHOP_BUILD_CLI=1 #-DNEROSHOP_BUILD_TESTS=1
make -j$(nproc)

7. Run neroshop

# Run neroshop
./neroshop

Contributing

See Wiki

License

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

Donations

Monero (XMR):

83QbQvnnyo7515rEnW8XwF1hbP5qMab6sHXFzP6pg3EKGscgXCbVjbt1FX5SF7AV9p4Ur1tiommuQSzrQQRHkZicVYu6j8Y

Wownero (WOW):

WW2pQTQWHpyJf2CHrCmZG7Tn3zBnYRZTH8g4U3pSZf5s6xsTXrZc9odDWmrWzjRc9MMQWrKXxjHsRdzH5JpJ7kzx1jZuSVSfi

OpenAlias: donate.neroshop.org or donate@neroshop.org

Resources

Thanks

  • 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, image loader and image 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 monero.fail JSON API endpoint

  • everyone in our matrix room — for sharing many great ideas that have been useful to the project