diff --git a/README.md b/README.md index 46fb3528..d673a723 100644 --- a/README.md +++ b/README.md @@ -1,90 +1,7 @@ -
- Haveno logo +Patched Branch for App +Any changes must be made to the patched_changes (this) branch only if something is less of a patch, and more of a core functionality you can request this from the haveno core team. - ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/haveno-dex/haveno/build.yml?branch=master) - [![GitHub issues with bounty](https://img.shields.io/github/issues-search/haveno-dex/haveno?color=%23fef2c0&label=Issues%20with%20bounties&query=is%3Aopen+is%3Aissue+label%3A%F0%9F%92%B0bounty)](https://github.com/haveno-dex/haveno/issues?q=is%3Aopen+is%3Aissue+label%3A%F0%9F%92%B0bounty) - [![Twitter Follow](https://img.shields.io/twitter/follow/HavenoDEX?style=social)](https://twitter.com/havenodex) - [![Matrix rooms](https://img.shields.io/badge/Matrix%20room-%23haveno-blue)](https://matrix.to/#/#haveno:monero.social) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/haveno-dex/.github/blob/master/CODE_OF_CONDUCT.md) -
+Explaination of changes -## What is Haveno? - -Haveno (pronounced ha‧ve‧no) is an open source platform to exchange [Monero](https://getmonero.org) for fiat currencies like USD, EUR, and GBP or other cryptocurrencies like BTC, ETH, and BCH. - -Main features: - -- Communications are routed through **Tor**, to preserve your privacy. - -- Trades are **peer-to-peer**: trades on Haveno happen between people only, there is no central authority. - -- Trades are **non-custodial**: Haveno supports arbitration in case something goes wrong during the trade, but arbitrators never have access to your funds. - -- There is **No token**, because it's not needed. Transactions between traders are secured by non-custodial multisignature transactions on the Monero network. - -See the [FAQ on our website](https://haveno.exchange/faq/) for more information. - -## Installing Haveno - -Haveno can be installed on Linux, macOS, and Windows by using a third party installer and network. - -> [!note] -> The official Haveno repository does not support making real trades directly. -> -> To make real trades with Haveno, first find a third party network, and then use their installer or build their repository. We do not endorse any networks at this time. - -A test network is also available for users to make test trades using Monero's stagenet. See the [instructions](https://github.com/haveno-dex/haveno/blob/master/docs/installing.md) to build Haveno and connect to the test network. - -Alternatively, you can [create your own mainnet network](create-mainnet.md). - -Note that Haveno is being actively developed. If you find issues or bugs, please let us know. - -## Main repositories - -- **[haveno](https://github.com/haveno-dex/haveno)** - This repository. The core of Haveno. -- **[haveno-ts](https://github.com/haveno-dex/haveno-ts)** - TypeScript library for using Haveno. -- **[haveno-ui](https://github.com/haveno-dex/haveno-ui)** - A new user interface (WIP). -- **[haveno-meta](https://github.com/haveno-dex/haveno-meta)** - For project-wide discussions and proposals. - -If you wish to help, take a look at the repositories above and look for open issues. We run a bounty program to incentivize development. See [Bounties](#bounties). - -## Keep in touch and help out! - -Haveno is a community-driven project. For it to be successful it's fundamental to have the support and help of the community. Join the community rooms on our Matrix server: - -- General discussions: **Haveno** ([#haveno:monero.social](https://matrix.to/#/#haveno:monero.social)) relayed on IRC/Libera (`#haveno`) -- Development discussions: **Haveno Development** ([#haveno-development:monero.social](https://matrix.to/#/#haveno-development:monero.social)) relayed on IRC/Libera (`#haveno-development`) - -Email: contact@haveno.exchange -Website: [haveno.exchange](https://haveno.exchange) - -## Contributing to Haveno - -See the [developer guide](docs/developer-guide.md) to get started developing for Haveno. - -See [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) for our styling guides. - -If you are not able to contribute code and want to contribute development resources, [donations](#support) fund development bounties. - -## Bounties - -To incentivize development and reward contributors, we adopt a simple bounty system. Contributors may be awarded bounties after completing a task (resolving an issue). Take a look at the [issues labeled '💰bounty'](https://github.com/haveno-dex/haveno/issues?q=is%3Aopen+is%3Aissue+label%3A%F0%9F%92%B0bounty) in the main `haveno` repository. [Details and conditions for receiving a bounty](docs/bounties.md). - -## Support and sponsorships - -To bring Haveno to life, we need resources. If you have the possibility, please consider [becoming a sponsor](https://haveno.exchange/sponsors/) or donating to the project: - -### Monero - -

- Donate Monero
- 42sjokkT9FmiWPqVzrWPFE5NCJXwt96bkBozHf4vgLR9hXyJDqKHEHKVscAARuD7in5wV1meEcSTJTanCTDzidTe2cFXS1F -

- -If you are using a wallet that supports OpenAlias (like the 'official' CLI and GUI wallets), you can simply put `fund@haveno.exchange` as the "receiver" address. - -### Bitcoin - -

- Donate Bitcoin
- 1AKq3CE1yBAnxGmHXbNFfNYStcByNDc5gQ -

+Changed protocol serialization from 'A' to 'X' to indicate a clear significant change in structure +Changes the daemon to be a shadowJar instead \ No newline at end of file diff --git a/build.gradle b/build.gradle index d35c6bd0..53ef3b50 100644 --- a/build.gradle +++ b/build.gradle @@ -453,122 +453,6 @@ configure(project(':core')) { classpath = sourceSets.main.runtimeClasspath } - task havenoDeps { - doLast { - // get monero binaries download url - Map moneroBinaries = [ - 'linux-x86_64' : 'https://github.com/haveno-dex/monero/releases/download/release4/monero-bins-haveno-linux-x86_64.tar.gz', - 'linux-x86_64-sha256' : '0810808292fd5ad595a46a7fcc8ecb28d251d80f8d75c0e7a7d51afbeb413b68', - 'linux-aarch64' : 'https://github.com/haveno-dex/monero/releases/download/release4/monero-bins-haveno-linux-aarch64.tar.gz', - 'linux-aarch64-sha256' : '61222ee8e2021aaf59ab8813543afc5548f484190ee9360bc9cfa8fdf21cc1de', - 'mac' : 'https://github.com/haveno-dex/monero/releases/download/release4/monero-bins-haveno-mac.tar.gz', - 'mac-sha256' : '5debb8d8d8dd63809e8351368a11aa85c47987f1a8a8f2dcca343e60bcff3287', - 'windows' : 'https://github.com/haveno-dex/monero/releases/download/release4/monero-bins-haveno-windows.zip', - 'windows-sha256' : 'd7c14f029db37ae2a8bc6b74c35f572283257df5fbcc8cc97b704d1a97be9888' - ] - - String osKey - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - osKey = 'windows' - } else if (Os.isFamily(Os.FAMILY_MAC)) { - osKey = 'mac' - } else { - String architecture = System.getProperty("os.arch").toLowerCase() - if (architecture.contains('aarch64') || architecture.contains('arm')) { - osKey = 'linux-aarch64' - } else { - osKey = 'linux-x86_64' - } - } - - String moneroDownloadUrl = moneroBinaries[osKey] - String moneroSHA256Hash = moneroBinaries[osKey + '-sha256'] - String moneroArchiveFileName = moneroDownloadUrl.tokenize('/').last() - String localnetDirName = '.localnet' - File localnetDir = new File(project.rootDir, localnetDirName) - localnetDir.mkdirs() - File moneroArchiveFile = new File(localnetDir, moneroArchiveFileName) - ext.downloadAndVerifyDependencies(moneroDownloadUrl, moneroSHA256Hash, moneroArchiveFile) - - // extract if dependencies are missing or if archive was updated - File monerodFile - File moneroRpcFile - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - monerodFile = new File(localnetDir, 'monerod.exe') - moneroRpcFile = new File(localnetDir, 'monero-wallet-rpc.exe') - } else { - monerodFile = new File(localnetDir, 'monerod') - moneroRpcFile = new File(localnetDir, 'monero-wallet-rpc') - } - if (ext.dependencyDownloadedAndVerified || !monerodFile.exists() || !moneroRpcFile.exists()) { - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - ext.extractArchiveZip(moneroArchiveFile, localnetDir) - } else { - ext.extractArchiveTarGz(moneroArchiveFile, localnetDir) - } - - // add the current platform's monero dependencies into the resources folder for installation - copy { - from "${monerodFile}" - into "${project(':core').projectDir}/src/main/resources/bin" - } - copy { - from "${moneroRpcFile}" - into "${project(':core').projectDir}/src/main/resources/bin" - } - } - } - - ext.extractArchiveTarGz = { File tarGzFile, File destinationDir -> - println "Extracting tar.gz ${tarGzFile}" - // Gradle's tar extraction preserves permissions (crucial for jpackage to function correctly) - copy { - from tarTree(resources.gzip(tarGzFile)) - into destinationDir - } - println "Extracted to ${destinationDir}" - } - - ext.extractArchiveZip = { File zipFile, File destinationDir -> - println "Extracting zip ${zipFile}..." - ant.unzip(src: zipFile, dest: destinationDir) - println "Extracted to ${destinationDir}" - } - - ext.downloadAndVerifyDependencies = { String archiveURL, String archiveSHA256, File destinationArchiveFile -> - ext.dependencyDownloadedAndVerified = false - - // if archive exists, check to see if its already up to date - if (destinationArchiveFile.exists()) { - println "Verifying existing archive ${destinationArchiveFile}" - ant.archiveHash = archiveSHA256 - ant.checksum(file: destinationArchiveFile, algorithm: 'SHA-256', property: '${archiveHash}', verifyProperty: 'existingHashMatches') - if (ant.properties['existingHashMatches'] != 'true') { - println "Existing archive does not match hash ${archiveSHA256}" - } else { - println "Existing archive matches hash" - return - } - } - - // download archives - println "Downloading ${archiveURL}" - ant.get(src: archiveURL, dest: destinationArchiveFile) - println 'Download saved to ' + destinationArchiveFile - - // verify checksum - println 'Verifying checksum for downloaded binary ...' - ant.archiveHash = archiveSHA256 - ant.checksum(file: destinationArchiveFile, algorithm: 'SHA-256', property: '${archiveHash}', verifyProperty: 'downloadedHashMatches') // use a different verifyProperty name from existing verification or it will always fail - if (ant.properties['downloadedHashMatches'] != 'true') { - ant.fail('Checksum mismatch: Downloaded archive has a different checksum than expected') - } - println 'Checksum verified' - ext.dependencyDownloadedAndVerified = true - } - } - - processResources.dependsOn havenoDeps // before both test and build } configure(project(':cli')) { @@ -787,7 +671,12 @@ configure(project(':statsnode')) { } configure(project(':daemon')) { - mainClassName = 'haveno.daemon.app.HavenoDaemonMain' + apply plugin: 'com.github.johnrengelman.shadow' + apply plugin: 'application' + + application { + mainClass = 'haveno.daemon.app.HavenoDaemonMain' + } dependencies { implementation project(':proto') @@ -847,6 +736,7 @@ configure(project(':daemon')) { } } + configure(project(':inventory')) { apply plugin: 'com.github.johnrengelman.shadow' diff --git a/common/src/main/java/haveno/common/app/Version.java b/common/src/main/java/haveno/common/app/Version.java index 2b4b01b0..80572a11 100644 --- a/common/src/main/java/haveno/common/app/Version.java +++ b/common/src/main/java/haveno/common/app/Version.java @@ -80,7 +80,7 @@ public class Version { // The version no. for the objects sent over the network. A change will break the serialization of old objects. // If objects are used for both network and database the network version is applied. - public static final String P2P_NETWORK_VERSION = "A"; + public static final String P2P_NETWORK_VERSION = "X"; // The version no. of the serialized data stored to disc. A change will break the serialization of old objects. // VERSION = 0.5.0 -> LOCAL_DB_VERSION = 1