Compare commits
1 commit
Author | SHA1 | Date | |
---|---|---|---|
08d7b9b9ee |
8 changed files with 148 additions and 13 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -39,4 +39,3 @@ deploy
|
|||
*/.factorypath
|
||||
.flatpak-builder
|
||||
exchange.haveno.Haveno.yaml
|
||||
hs_ed25519_secret_key
|
138
README.md
138
README.md
|
@ -1 +1,137 @@
|
|||
The original Haveno core fork from haveno-dex/haveno adapted for the multiplatform app.
|
||||
# Haveno Exchange, Marketplace & Chat Messaging Protocol Core
|
||||
|
||||
<p align="center">
|
||||
<a href="https://haveno.com"><img src="https://github.com/KewbitXMR/haveno-app/blob/main/assets/android-chrome-512x512.png?raw=true" width="150" /></a>
|
||||
<br/>
|
||||
<a href="https://haveno.com"><img src="https://raw.githubusercontent.com/KewbitXMR/haveno-app/refs/heads/main/assets/icon/side1.webp" width="100" /></a>
|
||||
<a href="https://haveno.com"><img src="https://raw.githubusercontent.com/KewbitXMR/haveno-app/refs/heads/main/assets/icon/270a7bad400e6824b8ea9f238f66b61a.webp" width="275" /></a>
|
||||
<a href="https://haveno.com"><img src="https://raw.githubusercontent.com/KewbitXMR/haveno-app/refs/heads/main/assets/icon/side2.webp" width="100" /></a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
## ⚡ What Is Haveno?
|
||||
|
||||
**Haveno** is a free, open-source peer-to-peer exchange platform for Monero (XMR) and other privacy-focused assets. Built on top of Tor for anonymity, it allows users to trade securely without exposing their identity, IP address, or relying on central servers.
|
||||
|
||||
We are now entering a **new phase of development** — expanding Haveno’s decentralized trading engine to support a full **decentralized marketplace**, enabling the secure trading of physical and digital items via onion-routed infrastructure.
|
||||
|
||||
> Think Monero + eBay, but with no centralized control, and fully private.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Project Highlights
|
||||
|
||||
- ✅ Full Haveno App for Desktop & Android (macOS, Linux, Windows)
|
||||
- ✅ gRPC over Tor SOCKS5 tunnel support
|
||||
- ✅ Encrypted database & AES SharedPreferences
|
||||
- ✅ Cross-platform Dart SDK
|
||||
- ✅ Docker deployment support
|
||||
- ✅ Fluent UI and secure chat
|
||||
- ✅ **Upcoming: decentralized item trading with multisig escrow**
|
||||
- ✅ **Upcoming: decentralized chat messaging system, no central servers. Secure, private and simple to use.**
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Try Haveno Now
|
||||
|
||||
**Download the latest pre-release builds:**
|
||||
📦 [Releases](https://github.com/KewbitXMR/haveno-app/releases)
|
||||
|
||||
Be aware: Current builds are connected to **Stagenet**, a Monero test network.
|
||||
Do not send real funds!
|
||||
|
||||
📱 [Android Universal APK](https://haveno.com/downloads/)
|
||||
💻 [macOS Intel & Silicon](https://haveno.wiki/en/install-guide)
|
||||
🐧 [Linux AppImage (Beta)](https://haveno.com/downloads/)
|
||||
🐳 [Docker Hub (server-related deployments)](https://hub.docker.com/u/havenodex)
|
||||
|
||||
> iOS and Windows Desktop versions are in progress.
|
||||
|
||||
---
|
||||
|
||||
## 📦 Marketplace Extension (WIP)
|
||||
|
||||
We are now actively building:
|
||||
- 🛒 Item-based listings with escrow logic
|
||||
- ✅ Full arbitration protocol extensions
|
||||
- 📤 Decentralized shipment commitment proofs
|
||||
- 🔐 Encrypted item metadata
|
||||
- 💬 Integrated chat messaging for item trades
|
||||
- ⚙️ Fully p2p over Tor with zero server trust
|
||||
|
||||
📖 [Marketplace Protocol Spec (Coming Soon)](#)
|
||||
📖 [How to list physical goods securely (Coming Soon)](#)
|
||||
📖 [Integrating payments with XMR or eGift codes (Coming Soon)](#)
|
||||
|
||||
---
|
||||
|
||||
## 📚 Helpful Guides
|
||||
|
||||
- [Install Haveno on Desktop](https://haveno.com/documentation/installing-haveno-on-desktop/)
|
||||
- [Install Haveno on Android](https://haveno.com/documentation/install-haveno-on-a-mobile-device/)
|
||||
- [Setup a Secure Tor Relay with Haveno](https://haveno.com/documentation/tor-setup/)
|
||||
- [Running Haveno with Docker](https://haveno.com/documentation/installing-the-haveno-daemon-with-docker-securely/)
|
||||
- [Operating a Custom Haveno Network](https://haveno.com/documentation/setup-a-custom-haveno-network-seednode-with-docker/)
|
||||
- [Telegram Integration for Notifications](https://haveno.com/documentation/using-telegram-to-manage-your-haveno-account/)
|
||||
|
||||
---
|
||||
|
||||
## 📡 Network & Federation
|
||||
|
||||
The Haveno network is fully decentralized but supports **federated networks** (similar to Matrix or Mastodon). You can either join existing Haveno networks or host your own.
|
||||
|
||||
Anyone can contribute from developers, advocates, and sysadmins to:
|
||||
- Deploy their own network
|
||||
- Become arbitrators
|
||||
- Operate price feeds
|
||||
- Collect trade fees **legally** (we do not condone or support in any way the use of our software fo illict activity in any any juridication where it is not legally permitted.)
|
||||
|
||||
📖 [How to Configure a Custom Network (Coming Soon)](#)
|
||||
📖 [How Arbitration Works in Haveno (Coming Soon)](#)
|
||||
|
||||
---
|
||||
|
||||
## 🧩 Roadmap
|
||||
|
||||
| Feature | Status |
|
||||
|--------|--------|
|
||||
| Protocol Core (v1) | ✅ Complete |
|
||||
| Dart SDK + Documentation | ✅ Complete |
|
||||
| Desktop UI (Linux/macOS) | ✅ Stable |
|
||||
| Android UI | ✅ Stable |
|
||||
| Marketplace Extension | 🛠 In Progress |
|
||||
| Rust + Python SDKs | 🛠 In Progress |
|
||||
| Arbitrator UX + Tools | 🔜 Pending |
|
||||
| Client Authentication (Onion) | 🔜 Pending |
|
||||
| Biometric Unlock (Mobile) | 🔜 Planned |
|
||||
| iOS Support | 🔜 Planned |
|
||||
| Multi-Currency Atomic Swaps | 🔜 Planned |
|
||||
| FIDO2 Auth for TX | 🔜 Planned |
|
||||
|
||||
---
|
||||
|
||||
## 🛠 Contributing
|
||||
|
||||
Testing old phones, laptops, and edge devices helps us the most right now.
|
||||
|
||||
Want to contribute code, translations, docs, or host a network?
|
||||
|
||||
- [Open an Issue](https://github.com/KewbitXMR/haveno-app/issues)
|
||||
- [Join Our Discussions](https://xmr.social/c/Haveno)
|
||||
- [Submit Pull Requests](https://github.com/KewbitXMR/haveno-app/pulls)
|
||||
- [Follow Kewbit on X](https://x.com/kewbit)
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Disclaimer
|
||||
|
||||
> This software is in testing. The Haveno Protocol Core connects to a Haveno Daemon but does not itself process or hold any financial assets or act as a financial intermediary. You are responsible for complying with local laws regarding privacy-preserving technologies and trade.
|
||||
|
||||
---
|
||||
|
||||
## ❤️ Thanks
|
||||
|
||||
Huge thanks to the Monero community, Haveno contributors, and anyone running seed nodes, [operating haveno networks](https://haveno.com/networks/) or Tor relays to power freedom of trade.
|
||||
|
||||
Support and transparency logs can be found on [Kewbit's Privacy Blog](https://kewbit.org).
|
|
@ -85,13 +85,13 @@ import org.bitcoinj.core.Coin;
|
|||
public class HavenoUtils {
|
||||
|
||||
// configure release date
|
||||
private static final String RELEASE_DATE = "18-06-2025 00:00:00"; // optionally set to release date of the network in format dd-mm-yyyy to impose temporary limits, etc. e.g. "25-05-2024 00:00:00"
|
||||
private static final String RELEASE_DATE = "25-05-2024 00:00:00"; // optionally set to release date of the network in format dd-mm-yyyy to impose temporary limits, etc. e.g. "25-05-2024 00:00:00"
|
||||
public static final int RELEASE_LIMIT_DAYS = 60; // number of days to limit sell offers to max buy limit for new accounts
|
||||
public static final int WARN_ON_OFFER_EXCEEDS_UNSIGNED_BUY_LIMIT_DAYS = 182; // number of days to warn if sell offer exceeds unsigned buy limit
|
||||
public static final int ARBITRATOR_ACK_TIMEOUT_SECONDS = 60;
|
||||
|
||||
// configure fees
|
||||
public static final boolean ARBITRATOR_ASSIGNS_TRADE_FEE_ADDRESS = false;
|
||||
public static final boolean ARBITRATOR_ASSIGNS_TRADE_FEE_ADDRESS = true;
|
||||
public static final double PENALTY_FEE_PCT = 0.02; // 2%
|
||||
public static final double MAKER_FEE_PCT = 0.0015; // 0.15%
|
||||
public static final double TAKER_FEE_PCT = 0.0075; // 0.75%
|
||||
|
@ -476,9 +476,9 @@ public class HavenoUtils {
|
|||
case XMR_STAGENET:
|
||||
return "5B11hTJdG2XDNwjdKGLRxwSLwDhkbGg7C7UEAZBxjE6FbCeRMjudrpNACmDNtWPiSnNfjDQf39QRjdtdgoL69txv81qc2Mc";
|
||||
case XMR_MAINNET:
|
||||
return "8BTqDom6yukimzKTaLX7d4EgxznKUqTLjebpvUySkWGcg9irMqUwiHKccCTZ8dMu7CG3Ac89H7kqifpCwjCeWd2GUhhxy1F";
|
||||
throw new RuntimeException("Mainnet fee address not implemented");
|
||||
default:
|
||||
return "8BTqDom6yukimzKTaLX7d4EgxznKUqTLjebpvUySkWGcg9irMqUwiHKccCTZ8dMu7CG3Ac89H7kqifpCwjCeWd2GUhhxy1F";
|
||||
throw new RuntimeException("Unhandled base currency network: " + Config.baseCurrencyNetwork());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -111,7 +111,7 @@ public class XmrWalletService extends XmrWalletBase {
|
|||
public static final String MONERO_WALLET_RPC_NAME = Utilities.isWindows() ? "monero-wallet-rpc.exe" : "monero-wallet-rpc";
|
||||
public static final String MONERO_WALLET_RPC_PATH = MONERO_BINS_DIR + File.separator + MONERO_WALLET_RPC_NAME;
|
||||
public static final MoneroTxPriority PROTOCOL_FEE_PRIORITY = MoneroTxPriority.DEFAULT;
|
||||
public static final int MONERO_LOG_LEVEL = 1; // monero library log level, -1 to disable
|
||||
public static final int MONERO_LOG_LEVEL = -1; // monero library log level, -1 to disable
|
||||
private static final MoneroNetworkType MONERO_NETWORK_TYPE = getMoneroNetworkType();
|
||||
private static final MoneroWalletRpcManager MONERO_WALLET_RPC_MANAGER = new MoneroWalletRpcManager();
|
||||
private static final String MONERO_WALLET_RPC_USERNAME = "haveno_user";
|
||||
|
@ -120,8 +120,8 @@ public class XmrWalletService extends XmrWalletBase {
|
|||
private static final String KEYS_FILE_POSTFIX = ".keys";
|
||||
private static final String ADDRESS_FILE_POSTFIX = ".address.txt";
|
||||
private static final int NUM_MAX_WALLET_BACKUPS = 2;
|
||||
private static final int MAX_SYNC_ATTEMPTS = 5;
|
||||
private static final boolean PRINT_RPC_STACK_TRACE = true;
|
||||
private static final int MAX_SYNC_ATTEMPTS = 3;
|
||||
private static final boolean PRINT_RPC_STACK_TRACE = false;
|
||||
private static final String THREAD_ID = XmrWalletService.class.getSimpleName();
|
||||
private static final long SHUTDOWN_TIMEOUT_MS = 60000;
|
||||
private static final long NUM_BLOCKS_BEHIND_TOLERANCE = 5;
|
||||
|
|
|
@ -93,7 +93,7 @@ grant {
|
|||
|
||||
/* user data dir for Mac, Linux, Windows */
|
||||
permission "java.io.FilePermission" "${user.home}${/}Library${/}Application Support${/}-", "read,write,delete";
|
||||
permission "java.io.FilePermission" "${user.home}${/}.local${/}share${/}-", "read,write,delete";
|
||||
permission "java.io.FilePermission" "${user.home}${/}.local${/}share${/}haveno-", "read,write,delete";
|
||||
permission "java.io.FilePermission" "${appdata}${/}haveno-", "read,write,delete";
|
||||
|
||||
/* temp dir Mac, Linux, Windows TODO */
|
||||
|
|
|
@ -17,14 +17,15 @@ WORKDIR /home/haveno
|
|||
|
||||
RUN set -ex && git clone https://foss.haveno.com/haveno-network/haveno-core.git
|
||||
|
||||
WORKDIR /home/haveno/haveno-core
|
||||
WORKDIR /home/haveno/haveno
|
||||
|
||||
RUN git checkout master && \
|
||||
git reset --hard
|
||||
|
||||
|
||||
RUN make clean && make skip-tests
|
||||
|
||||
WORKDIR /home/haveno/haveno-core
|
||||
WORKDIR /home/haveno/haveno
|
||||
|
||||
ENTRYPOINT [ "./haveno-seednode" ]
|
||||
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
ajbqx4clnjlr7lmzoftuvpvmqafdiilidsgocvokx6bqj3okk56ccfqd.onion
|
Binary file not shown.
Loading…
Reference in a new issue