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 827bb774b8
Update LICENSE
1 year ago
cmake Add JSON-RPC functions 1 year ago
external Add cxxopts and 'query' command to CLI 1 year ago
fonts Add JSON-RPC functions 1 year ago
images Improve JSON-RPC API 1 year ago
qml Add cxxopts and 'query' command to CLI 1 year ago
shaders Add sign_verify_test.cpp to tests/ 2 years ago
src Add cxxopts and 'query' command to CLI 1 year ago
test Add TabBar.qml 1 year ago
.gitignore Correct FontAwesome otf filenames 2 years ago
.gitmodules Add cxxopts and 'query' command to CLI 1 year ago
CMakeLists.txt Add cxxopts and 'query' command to CLI 1 year ago
CONTRIBUTING.md Add some functions to Backend 1 year ago
LICENSE Update LICENSE 1 year ago
README.md Add cxxopts and 'query' command to CLI 1 year ago
qml.qrc Add cxxopts and 'query' command to CLI 1 year ago

README.md

neroshop - WORK IN PROGRESS

banner

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

Table of contents

Demo

https://user-images.githubusercontent.com/58671384/219222567-f170f728-be31-43d5-b412-1f456a682bd3.mp4

Click to load images

Wallet_Keys_Generation Registration CatalogGrid_Top CatalogGrid_Bottom CatalogGrid SettingsDialog_Monero HomePage HomePage_Recent_Listings Dashboard Product_Listing_Top Product_Listing_Bottom WalletPage_Send WalletPage_Receive WalletPage_Transactions

Feature Status

  • Distributed P2P network
  • 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 and a 0.5% fee for using the optional built-in 2-of-3 escrow system)
  • Pseudonymous identities (sellers and buyers are identified by their unique ids and/or optional display names)
  • End-to-end encrypted messaging system for communications between sellers and buyers
  • 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
  • Option to choose between sending funds directly to a seller or by using a multisignature escrow.
  • Native Tor and I2P support (both tor daemon and i2pd will be bundled with each release)
  • Seller reputation system
  • Product rating system
  • Wishlists
  • Built-in SQLite-powered search engine that can find any products or sellers

Building neroshop

Dependencies

✔️ = Currently in use; = Optional; = Not currently in use or deprecated; = Not yet in use, but up for consideration; 🔳 = Exclusive to CLI

Library Minimum Ver. Purpose Status
monero-cpp latest monero wallet and payment system ✔️
libbcrypt 1.3 password hashing
sqlite3 3.38.0 database management ✔️
QR Code generator ? qr code generation ✔️
json ? json parsing ✔️
curl ? currency conversion
openssl 1.1.1 for curl, sha256 sum and message encryption ✔️
Qt 5.12.8 graphical user interface ✔️
libuv ? networking and child process
raft ? consensus mechanism ✔️
stduuid ? unique id generation
linenoise ? command line interface ✔️ 🔳
lua 5.1.5 configuration script ✔️
openpgp ? public-key encryption and digital signatures
cxxopts ? command line option parser ✔️

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/larteyoh/testshop.git
cd testshop

2. Install dependencies

Debian/Ubuntu

# neroshop
sudo apt install libcurl4-openssl-dev libssl-dev libuv1-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 libraries)

# neroshop
sudo pacman -Sy --needed curl openssl libuv
# 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 libraries)

# neroshop
sudo dnf install libcurl-devel openssl-devel libuv-devel libuv-static
# 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/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
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.16.1.tar.gz
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
make
cd ../

In some cases, you may need to add this line under the "find_package(Boost .." in "external/monero-cpp/external/monero-project/CMakeLists.txt" in case of an "undefined reference to icu_*" error: 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 -G"Unix Makefiles"
make
cd ..
# Build neroshop
cd build
cmake .. #-DNEROSHOP_BUILD_CLI=1 #-DNEROSHOP_BUILD_TESTS=1
make
# Run neroshop
./neroshop

Contributing

See CONTRIBUTING.md

License

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

Donations

You may support the neroshop project directly by donating to any of the addresses below. Received payments will be used to reward developers for their contributions to the project (mostly by completing bounties) and will also be used to fund our official website domain name.

Monero [XMR]

83QbQvnnyo7515rEnW8XwF1hbP5qMab6sHXFzP6pg3EKGscgXCbVjbt1FX5SF7AV9p4Ur1tiommuQSzrQQRHkZicVYu6j8Y

Wownero [WOW]

WW2pQTQWHpyJf2CHrCmZG7Tn3zBnYRZTH8g4U3pSZf5s6xsTXrZc9odDWmrWzjRc9MMQWrKXxjHsRdzH5JpJ7kzx1jZuSVSfi

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 (Triangle, Banner, NodeList, etc.), 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/Quick techniques
lza_menace — for his help on creating the new monero.fail JSON API endpoint