Monero: the secure, private, untraceable cryptocurrency

Overview

Monero

Copyright (c) 2014-2021 The Monero Project.
Portions Copyright (c) 2012-2013 The Cryptonote developers.

Table of Contents

Development resources

  • Web: getmonero.org
  • Forum: forum.getmonero.org
  • Mail: [email protected]
  • GitHub: https://github.com/monero-project/monero
  • IRC: #monero-dev on Libera
  • It is HIGHLY recommended that you join the #monero-dev IRC channel if you are developing software that uses Monero. Due to the nature of this open source software project, joining this channel and idling is the best way to stay updated on best practices and new developments in the Monero ecosystem. All you need to do is join the IRC channel and idle to stay updated with the latest in Monero development. If you do not, you risk wasting resources on developing integrations that are not compatible with the Monero network. The Monero core team and community continuously make efforts to communicate updates, developments, and documentation via other platforms – but for the best information, you need to talk to other Monero developers, and they are on IRC. #monero-dev is about Monero development, not getting help about using Monero, or help about development of other software, including yours, unless it also pertains to Monero code itself. For these cases, checkout #monero.

Vulnerability response

Research

The Monero Research Lab is an open forum where the community coordinates research into Monero cryptography, protocols, fungibility, analysis, and more. We welcome collaboration and contributions from outside researchers! Because not all Lab work and publications are distributed as traditional preprints or articles, they may be easy to miss if you are conducting literature reviews for your own Monero research. You are encouraged to get in touch with the Monero research community if you have questions, wish to collaborate, or would like guidance to help avoid unnecessarily duplicating earlier or known work.

The Monero research community is available on IRC in #monero-research-lab on Libera, which is also accessible via Matrix.

Announcements

  • You can subscribe to an announcement listserv to get critical announcements from the Monero core team. The announcement list can be very helpful for knowing when software updates are needed.

Translations

The CLI wallet is available in different languages. If you want to help translate it, see our self-hosted localization platform, Weblate, on translate.getmonero.org. Every translation must be uploaded on the platform, pull requests directly editing the code in this repository will be closed. If you need help with Weblate, you can find a guide with screenshots here.  

If you need help/support/info about translations, contact the localization workgroup. You can find the complete list of contacts on the repository of the workgroup: monero-translations.

Coverage

Type Status
Coverity Coverity Status
OSS Fuzz Fuzzing Status
Coveralls Coveralls Status
License License

Introduction

Monero is a private, secure, untraceable, decentralised digital currency. You are your bank, you control your funds, and nobody can trace your transfers unless you allow them to do so.

Privacy: Monero uses a cryptographically sound system to allow you to send and receive funds without your transactions being easily revealed on the blockchain (the ledger of transactions that everyone has). This ensures that your purchases, receipts, and all transfers remain private by default.

Security: Using the power of a distributed peer-to-peer consensus network, every transaction on the network is cryptographically secured. Individual wallets have a 25-word mnemonic seed that is only displayed once and can be written down to backup the wallet. Wallet files should be encrypted with a strong passphrase to ensure they are useless if ever stolen.

Untraceability: By taking advantage of ring signatures, a special property of a certain type of cryptography, Monero is able to ensure that transactions are not only untraceable but have an optional measure of ambiguity that ensures that transactions cannot easily be tied back to an individual user or computer.

Decentralization: The utility of Monero depends on its decentralised peer-to-peer consensus network - anyone should be able to run the monero software, validate the integrity of the blockchain, and participate in all aspects of the monero network using consumer-grade commodity hardware. Decentralization of the monero network is maintained by software development that minimizes the costs of running the monero software and inhibits the proliferation of specialized, non-commodity hardware.

About this project

This is the core implementation of Monero. It is open source and completely free to use without restrictions, except for those specified in the license agreement below. There are no restrictions on anyone creating an alternative implementation of Monero that uses the protocol and network in a compatible manner.

As with many development projects, the repository on Github is considered to be the "staging" area for the latest changes. Before changes are merged into that branch on the main repository, they are tested by individual developers in their own branches, submitted as a pull request, and then subsequently tested by contributors who focus on testing and code reviews. That having been said, the repository should be carefully considered before using it in a production environment, unless there is a patch in the repository for a particular show-stopping issue you are experiencing. It is generally a better idea to use a tagged release for stability.

Anyone is welcome to contribute to Monero's codebase! If you have a fix or code change, feel free to submit it as a pull request directly to the "master" branch. In cases where the change is relatively small or does not affect other parts of the codebase, it may be merged in immediately by any one of the collaborators. On the other hand, if the change is particularly large or complex, it is expected that it will be discussed at length either well in advance of the pull request being submitted, or even directly on the pull request.

Supporting the project

Monero is a 100% community-sponsored endeavor. If you want to join our efforts, the easiest thing you can do is support the project financially. Both Monero and Bitcoin donations can be made to donate.getmonero.org if using a client that supports the OpenAlias standard. Alternatively, you can send XMR to the Monero donation address via the donate command (type help in the command-line wallet for details).

The Monero donation address is: 888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H (viewkey: f359631075708155cc3d92a32b75a7d02a5dcf27756707b47a2b31b21c389501; base address for restoring with address and viewkey: 44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A)

The Bitcoin donation address is: 1KTexdemPdxSBcG55heUuTjDRYqbC5ZL8H

Core development funding and/or some supporting services are also graciously provided by sponsors:

There are also several mining pools that kindly donate a portion of their fees, a list of them can be found on our Bitcointalk post.

License

See LICENSE.

Contributing

If you want to help out, see CONTRIBUTING for a set of guidelines.

Scheduled software upgrades

Monero uses a fixed-schedule software upgrade (hard fork) mechanism to implement new features. This means that users of Monero (end users and service providers) should run current versions and upgrade their software on a regular schedule. Software upgrades occur during the months of April and October. The required software for these upgrades will be available prior to the scheduled date. Please check the repository prior to this date for the proper Monero software version. Below is the historical schedule and the projected schedule for the next upgrade. Dates are provided in the format YYYY-MM-DD.

Software upgrade block height Date Fork version Minimum Monero version Recommended Monero version Details
1009827 2016-03-22 v2 v0.9.4 v0.9.4 Allow only >= ringsize 3, blocktime = 120 seconds, fee-free blocksize 60 kb
1141317 2016-09-21 v3 v0.9.4 v0.10.0 Splits coinbase into denominations
1220516 2017-01-05 v4 v0.10.1 v0.10.2.1 Allow normal and RingCT transactions
1288616 2017-04-15 v5 v0.10.3.0 v0.10.3.1 Adjusted minimum blocksize and fee algorithm
1400000 2017-09-16 v6 v0.11.0.0 v0.11.0.0 Allow only RingCT transactions, allow only >= ringsize 5
1546000 2018-04-06 v7 v0.12.0.0 v0.12.3.0 Cryptonight variant 1, ringsize >= 7, sorted inputs
1685555 2018-10-18 v8 v0.13.0.0 v0.13.0.4 max transaction size at half the penalty free block size, bulletproofs enabled, cryptonight variant 2, fixed ringsize 11
1686275 2018-10-19 v9 v0.13.0.0 v0.13.0.4 bulletproofs required
1788000 2019-03-09 v10 v0.14.0.0 v0.14.1.2 New PoW based on Cryptonight-R, new block weight algorithm, slightly more efficient RingCT format
1788720 2019-03-10 v11 v0.14.0.0 v0.14.1.2 forbid old RingCT transaction format
1978433 2019-11-30 v12 v0.15.0.0 v0.16.0.0 New PoW based on RandomX, only allow >= 2 outputs, change to the block median used to calculate penalty, v1 coinbases are forbidden, rct sigs in coinbase forbidden, 10 block lock time for incoming outputs
2210000 2020-10-17 v13 v0.17.0.0 v0.17.1.1 New CLSAG transaction format
2210720 2020-10-18 v14 v0.17.1.1 v0.17.1.7 forbid old MLSAG transaction format
XXXXXXX XXX-XX-XX XXX vX.XX.X.X vX.XX.X.X XXX

X's indicate that these details have not been determined as of commit date.

* indicates estimate as of commit date

Release staging schedule and protocol

Approximately three months prior to a scheduled software upgrade, a branch from master will be created with the new release version tag. Pull requests that address bugs should then be made to both master and the new release branch. Pull requests that require extensive review and testing (generally, optimizations and new features) should not be made to the release branch.

Compiling Monero from source

Dependencies

The following table summarizes the tools and libraries required to build. A few of the libraries are also included in this repository (marked as "Vendored"). By default, the build uses the library installed on the system and ignores the vendored sources. However, if no library is found installed on the system, then the vendored source will be built and used. The vendored sources are also used for statically-linked builds because distribution packages often include only shared library binaries (.so) but not static library archives (.a).

Dep Min. version Vendored Debian/Ubuntu pkg Arch pkg Void pkg Fedora pkg Optional Purpose
GCC 5 NO build-essential base-devel base-devel gcc NO
CMake 3.5 NO cmake cmake cmake cmake NO
pkg-config any NO pkg-config base-devel base-devel pkgconf NO
Boost 1.58 NO libboost-all-dev boost boost-devel boost-devel NO C++ libraries
OpenSSL basically any NO libssl-dev openssl libressl-devel openssl-devel NO sha256 sum
libzmq 4.2.0 NO libzmq3-dev zeromq zeromq-devel zeromq-devel NO ZeroMQ library
OpenPGM ? NO libpgm-dev libpgm openpgm-devel NO For ZeroMQ
libnorm[2] ? NO libnorm-dev YES For ZeroMQ
libunbound 1.4.16 YES libunbound-dev unbound unbound-devel unbound-devel NO DNS resolver
libsodium ? NO libsodium-dev libsodium libsodium-devel libsodium-devel NO cryptography
libunwind any NO libunwind8-dev libunwind libunwind-devel libunwind-devel YES Stack traces
liblzma any NO liblzma-dev xz liblzma-devel xz-devel YES For libunwind
libreadline 6.3.0 NO libreadline6-dev readline readline-devel readline-devel YES Input editing
ldns 1.6.17 NO libldns-dev ldns libldns-devel ldns-devel YES SSL toolkit
expat 1.1 NO libexpat1-dev expat expat-devel expat-devel YES XML parsing
GTest 1.5 YES libgtest-dev[1] gtest gtest-devel gtest-devel YES Test suite
ccache any NO ccache ccache ccache ccache YES Compil. cache
Doxygen any NO doxygen doxygen doxygen doxygen YES Documentation
Graphviz any NO graphviz graphviz graphviz graphviz YES Documentation
lrelease ? NO qttools5-dev-tools qt5-tools qt5-tools qt5-linguist YES Translations
libhidapi ? NO libhidapi-dev hidapi hidapi-devel hidapi-devel YES Hardware wallet
libusb ? NO libusb-1.0-0-dev libusb libusb-devel libusbx-devel YES Hardware wallet
libprotobuf ? NO libprotobuf-dev protobuf protobuf-devel protobuf-devel YES Hardware wallet
protoc ? NO protobuf-compiler protobuf protobuf protobuf-compiler YES Hardware wallet
libudev ? No libudev-dev systemd eudev-libudev-devel systemd-devel YES Hardware wallet

[1] On Debian/Ubuntu libgtest-dev only includes sources and headers. You must build the library binary manually. This can be done with the following command sudo apt-get install libgtest-dev && cd /usr/src/gtest && sudo cmake . && sudo make then:

  • on Debian: sudo mv libg* /usr/lib/
  • on Ubuntu: sudo mv lib/libg* /usr/lib/

[2] libnorm-dev is needed if your zmq library was built with libnorm, and not needed otherwise

Install all dependencies at once on Debian/Ubuntu:

sudo apt update && sudo apt install build-essential cmake pkg-config libssl-dev libzmq3-dev libunbound-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libldns-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 ccache doxygen graphviz

Install all dependencies at once on openSUSE:

sudo zypper ref && sudo zypper in cppzmq-devel ldns-devel libboost_chrono-devel libboost_date_time-devel libboost_filesystem-devel libboost_locale-devel libboost_program_options-devel libboost_regex-devel libboost_serialization-devel libboost_system-devel libboost_thread-devel libexpat-devel libminiupnpc-devel libsodium-devel libunwind-devel unbound-devel cmake doxygen ccache fdupes gcc-c++ libevent-devel libopenssl-devel pkgconf-pkg-config readline-devel xz-devel libqt5-qttools-devel patterns-devel-C-C++-devel_C_C++

Install all dependencies at once on macOS with the provided Brewfile: brew update && brew bundle --file=contrib/brew/Brewfile

FreeBSD 12.1 one-liner required to build dependencies: pkg install git gmake cmake pkgconf boost-libs libzmq4 libsodium unbound

Cloning the repository

Clone recursively to pull-in needed submodule(s):

$ git clone --recursive https://github.com/monero-project/monero

If you already have a repo cloned, initialize and update:

$ cd monero && git submodule init && git submodule update

Note: If there are submodule differences between branches, you may need to use git submodule sync && git submodule update after changing branches to build successfully.

Build instructions

Monero uses the CMake build system and a top-level Makefile that invokes cmake commands as needed.

On Linux and macOS

  • Install the dependencies

  • Change to the root of the source code directory, change to the most recent release branch, and build:

    cd monero
    git checkout release-v0.17
    make

    Optional: If your machine has several cores and enough memory, enable parallel build by running make -j<number of threads> instead of make. For this to be worthwhile, the machine should have one core and about 2GB of RAM available per thread.

    Note: The instructions above will compile the most stable release of the Monero software. If you would like to use and test the most recent software, use git checkout master. The master branch may contain updates that are both unstable and incompatible with release software, though testing is always encouraged.

  • The resulting executables can be found in build/release/bin

  • Add PATH="$PATH:$HOME/monero/build/release/bin" to .profile

  • Run Monero with monerod --detach

  • Optional: build and run the test suite to verify the binaries:

    make release-test

    NOTE: core_tests test may take a few hours to complete.

  • Optional: to build binaries suitable for debugging:

    make debug
  • Optional: to build statically-linked binaries:

    make release-static

Dependencies need to be built with -fPIC. Static libraries usually aren't, so you may have to build them yourself with -fPIC. Refer to their documentation for how to build them.

  • Optional: build documentation in doc/html (omit HAVE_DOT=YES if graphviz is not installed):

    HAVE_DOT=YES doxygen Doxyfile
  • Optional: use ccache not to rebuild translation units, that haven't really changed. Monero's CMakeLists.txt file automatically handles it

    sudo apt install ccache

On the Raspberry Pi

Tested on a Raspberry Pi Zero with a clean install of minimal Raspbian Stretch (2017-09-07 or later) from https://www.raspberrypi.org/downloads/raspbian/. If you are using Raspian Jessie, please see note in the following section.

  • apt-get update && apt-get upgrade to install all of the latest software

  • Install the dependencies for Monero from the 'Debian' column in the table above.

  • Increase the system swap size:

    sudo /etc/init.d/dphys-swapfile stop  
    sudo nano /etc/dphys-swapfile  
    CONF_SWAPSIZE=2048
    sudo /etc/init.d/dphys-swapfile start
  • If using an external hard disk without an external power supply, ensure it gets enough power to avoid hardware issues when syncing, by adding the line "max_usb_current=1" to /boot/config.txt

  • Clone Monero and checkout the most recent release version:

    git clone https://github.com/monero-project/monero.git
    cd monero
    git checkout tags/v0.17.1.0
  • Build:

    USE_SINGLE_BUILDDIR=1 make release
  • Wait 4-6 hours

  • The resulting executables can be found in build/release/bin

  • Add export PATH="$PATH:$HOME/monero/build/release/bin" to $HOME/.profile

  • Run source $HOME/.profile

  • Run Monero with monerod --detach

  • You may wish to reduce the size of the swap file after the build has finished, and delete the boost directory from your home directory

Note for Raspbian Jessie users:

If you are using the older Raspbian Jessie image, compiling Monero is a bit more complicated. The version of Boost available in the Debian Jessie repositories is too old to use with Monero, and thus you must compile a newer version yourself. The following explains the extra steps and has been tested on a Raspberry Pi 2 with a clean install of minimal Raspbian Jessie.

  • As before, apt-get update && apt-get upgrade to install all of the latest software, and increase the system swap size

    sudo /etc/init.d/dphys-swapfile stop
    sudo nano /etc/dphys-swapfile
    CONF_SWAPSIZE=2048
    sudo /etc/init.d/dphys-swapfile start
  • Then, install the dependencies for Monero except for libunwind and libboost-all-dev

  • Install the latest version of boost (this may first require invoking apt-get remove --purge libboost*-dev to remove a previous version if you're not using a clean install):

    cd
    wget https://sourceforge.net/projects/boost/files/boost/1.72.0/boost_1_72_0.tar.bz2
    tar xvfo boost_1_72_0.tar.bz2
    cd boost_1_72_0
    ./bootstrap.sh
    sudo ./b2
  • Wait ~8 hours

    sudo ./bjam cxxflags=-fPIC cflags=-fPIC -a install
  • Wait ~4 hours

  • From here, follow the general Raspberry Pi instructions from the "Clone Monero and checkout most recent release version" step.

On Windows:

Binaries for Windows are built on Windows using the MinGW toolchain within MSYS2 environment. The MSYS2 environment emulates a POSIX system. The toolchain runs within the environment and cross-compiles binaries that can run outside of the environment as a regular Windows application.

Preparing the build environment

  • Download and install the MSYS2 installer, either the 64-bit or the 32-bit package, depending on your system.

  • Open the MSYS shell via the MSYS2 Shell shortcut

  • Update packages using pacman:

    pacman -Syu
  • Exit the MSYS shell using Alt+F4

  • Edit the properties for the MSYS2 Shell shortcut changing "msys2_shell.bat" to "msys2_shell.cmd -mingw64" for 64-bit builds or "msys2_shell.cmd -mingw32" for 32-bit builds

  • Restart MSYS shell via modified shortcut and update packages again using pacman:

    pacman -Syu
  • Install dependencies:

    To build for 64-bit Windows:

    pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-unbound

    To build for 32-bit Windows:

    pacman -S mingw-w64-i686-toolchain make mingw-w64-i686-cmake mingw-w64-i686-boost mingw-w64-i686-openssl mingw-w64-i686-zeromq mingw-w64-i686-libsodium mingw-w64-i686-hidapi mingw-w64-i686-unbound
  • Open the MingW shell via MinGW-w64-Win64 Shell shortcut on 64-bit Windows or MinGW-w64-Win64 Shell shortcut on 32-bit Windows. Note that if you are running 64-bit Windows, you will have both 64-bit and 32-bit MinGW shells.

Cloning

  • To git clone, run:

    git clone --recursive https://github.com/monero-project/monero.git

Building

  • Change to the cloned directory, run:

    cd monero
  • If you would like a specific version/tag, do a git checkout for that version. eg. 'v0.17.1.0'. If you don't care about the version and just want binaries from master, skip this step:

    git checkout v0.17.1.0
  • If you are on a 64-bit system, run:

    make release-static-win64
  • If you are on a 32-bit system, run:

    make release-static-win32
  • The resulting executables can be found in build/release/bin

  • Optional: to build Windows binaries suitable for debugging on a 64-bit system, run:

    make debug-static-win64
  • Optional: to build Windows binaries suitable for debugging on a 32-bit system, run:

    make debug-static-win32
  • The resulting executables can be found in build/debug/bin

On FreeBSD:

The project can be built from scratch by following instructions for Linux above(but use gmake instead of make). If you are running Monero in a jail, you need to add sysvsem="new" to your jail configuration, otherwise lmdb will throw the error message: Failed to open lmdb environment: Function not implemented.

Monero is also available as a port or package as 'monero-cli`.

On OpenBSD:

You will need to add a few packages to your system. pkg_add cmake gmake zeromq libiconv boost.

The doxygen and graphviz packages are optional and require the xbase set. Running the test suite also requires py-requests package.

Build monero: env DEVELOPER_LOCAL_TOOLS=1 BOOST_ROOT=/usr/local gmake release-static

Note: you may encounter the following error when compiling the latest version of Monero as a normal user:

LLVM ERROR: out of memory
c++: error: unable to execute command: Abort trap (core dumped)

Then you need to increase the data ulimit size to 2GB and try again: ulimit -d 2000000

On NetBSD:

Check that the dependencies are present: pkg_info -c libexecinfo boost-headers boost-libs protobuf readline libusb1 zeromq git-base pkgconf gmake cmake | more, and install any that are reported missing, using pkg_add or from your pkgsrc tree. Readline is optional but worth having.

Third-party dependencies are usually under /usr/pkg/, but if you have a custom setup, adjust the "/usr/pkg" (below) accordingly.

Clone the monero repository recursively and checkout the most recent release as described above. Then build monero: gmake BOOST_ROOT=/usr/pkg LDFLAGS="-Wl,-R/usr/pkg/lib" release. The resulting executables can be found in build/NetBSD/[Release version]/Release/bin/.

On Solaris:

The default Solaris linker can't be used, you have to install GNU ld, then run cmake manually with the path to your copy of GNU ld:

mkdir -p build/release
cd build/release
cmake -DCMAKE_LINKER=/path/to/ld -D CMAKE_BUILD_TYPE=Release ../..
cd ../..

Then you can run make as usual.

Building portable statically linked binaries

By default, in either dynamically or statically linked builds, binaries target the specific host processor on which the build happens and are not portable to other processors. Portable binaries can be built using the following targets:

  • make release-static-linux-x86_64 builds binaries on Linux on x86_64 portable across POSIX systems on x86_64 processors
  • make release-static-linux-i686 builds binaries on Linux on x86_64 or i686 portable across POSIX systems on i686 processors
  • make release-static-linux-armv8 builds binaries on Linux portable across POSIX systems on armv8 processors
  • make release-static-linux-armv7 builds binaries on Linux portable across POSIX systems on armv7 processors
  • make release-static-linux-armv6 builds binaries on Linux portable across POSIX systems on armv6 processors
  • make release-static-win64 builds binaries on 64-bit Windows portable across 64-bit Windows systems
  • make release-static-win32 builds binaries on 64-bit or 32-bit Windows portable across 32-bit Windows systems

Cross Compiling

You can also cross-compile static binaries on Linux for Windows and macOS with the depends system.

  • make depends target=x86_64-linux-gnu for 64-bit linux binaries.
  • make depends target=x86_64-w64-mingw32 for 64-bit windows binaries.
    • Requires: python3 g++-mingw-w64-x86-64 wine1.6 bc
  • make depends target=x86_64-apple-darwin11 for macOS binaries.
    • Requires: cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev
  • make depends target=i686-linux-gnu for 32-bit linux binaries.
    • Requires: g++-multilib bc
  • make depends target=i686-w64-mingw32 for 32-bit windows binaries.
    • Requires: python3 g++-mingw-w64-i686
  • make depends target=arm-linux-gnueabihf for armv7 binaries.
    • Requires: g++-arm-linux-gnueabihf
  • make depends target=aarch64-linux-gnu for armv8 binaries.
    • Requires: g++-aarch64-linux-gnu
  • make depends target=riscv64-linux-gnu for RISC V 64 bit binaries.
    • Requires: g++-riscv64-linux-gnu
  • make depends target=x86_64-unknown-freebsd for freebsd binaries.
    • Requires: clang-8
  • make depends target=arm-linux-android for 32bit android binaries
  • make depends target=aarch64-linux-android for 64bit android binaries

The required packages are the names for each toolchain on apt. Depending on your distro, they may have different names.

Using depends might also be easier to compile Monero on Windows than using MSYS. Activate Windows Subsystem for Linux (WSL) with a distro (for example Ubuntu), install the apt build-essentials and follow the depends steps as depicted above.

The produced binaries still link libc dynamically. If the binary is compiled on a current distribution, it might not run on an older distribution with an older installation of libc. Passing -DBACKCOMPAT=ON to cmake will make sure that the binary will run on systems having at least libc version 2.17.

Installing Monero from a package

DISCLAIMER: These packages are not part of this repository or maintained by this project's contributors, and as such, do not go through the same review process to ensure their trustworthiness and security.

Packages are available for

More info and versions in the Debian package tracker.

  • Arch Linux (via Community packages): monero

  • Void Linux:

    xbps-install -S monero
  • GuixSD

    guix package -i monero
  • Gentoo Monero overlay

    emerge --noreplace eselect-repository
    eselect repository enable monero
    emaint sync -r monero
    echo '*/*::monero ~amd64' >> /etc/portage/package.accept_keywords
    emerge net-p2p/monero
  • macOS (homebrew)

    brew install monero
  • Docker

    # Build using all available cores
    docker build -t monero .
    
    # or build using a specific number of cores (reduce RAM requirement)
    docker build --build-arg NPROC=1 -t monero .
    
    # either run in foreground
    docker run -it -v /monero/chain:/root/.bitmonero -v /monero/wallet:/wallet -p 18080:18080 monero
    
    # or in background
    docker run -it -d -v /monero/chain:/root/.bitmonero -v /monero/wallet:/wallet -p 18080:18080 monero
  • The build needs 3 GB space.

  • Wait one hour or more

Packaging for your favorite distribution would be a welcome contribution!

Running monerod

The build places the binary in bin/ sub-directory within the build directory from which cmake was invoked (repository root by default). To run in the foreground:

./bin/monerod

To list all available options, run ./bin/monerod --help. Options can be specified either on the command line or in a configuration file passed by the --config-file argument. To specify an option in the configuration file, add a line with the syntax argumentname=value, where argumentname is the name of the argument without the leading dashes, for example, log-level=1.

To run in background:

./bin/monerod --log-file monerod.log --detach

To run as a systemd service, copy monerod.service to /etc/systemd/system/ and monerod.conf to /etc/. The example service assumes that the user monero exists and its home is the data directory specified in the example config.

If you're on Mac, you may need to add the --max-concurrency 1 option to monero-wallet-cli, and possibly monerod, if you get crashes refreshing.

Internationalization

See README.i18n.md.

Using Tor

There is a new, still experimental, integration with Tor. The feature allows connecting over IPv4 and Tor simultaneously - IPv4 is used for relaying blocks and relaying transactions received by peers whereas Tor is used solely for relaying transactions received over local RPC. This provides privacy and better protection against surrounding node (sybil) attacks.

While Monero isn't made to integrate with Tor, it can be used wrapped with torsocks, by setting the following configuration parameters and environment variables:

  • --p2p-bind-ip 127.0.0.1 on the command line or p2p-bind-ip=127.0.0.1 in monerod.conf to disable listening for connections on external interfaces.
  • --no-igd on the command line or no-igd=1 in monerod.conf to disable IGD (UPnP port forwarding negotiation), which is pointless with Tor.
  • DNS_PUBLIC=tcp or DNS_PUBLIC=tcp://x.x.x.x where x.x.x.x is the IP of the desired DNS server, for DNS requests to go over TCP, so that they are routed through Tor. When IP is not specified, monerod uses the default list of servers defined in src/common/dns_utils.cpp.
  • TORSOCKS_ALLOW_INBOUND=1 to tell torsocks to allow monerod to bind to interfaces to accept connections from the wallet. On some Linux systems, torsocks allows binding to localhost by default, so setting this variable is only necessary to allow binding to local LAN/VPN interfaces to allow wallets to connect from remote hosts. On other systems, it may be needed for local wallets as well.
  • Do NOT pass --detach when running through torsocks with systemd, (see utils/systemd/monerod.service for details).
  • If you use the wallet with a Tor daemon via the loopback IP (eg, 127.0.0.1:9050), then use --untrusted-daemon unless it is your own hidden service.

Example command line to start monerod through Tor:

DNS_PUBLIC=tcp torsocks monerod --p2p-bind-ip 127.0.0.1 --no-igd

A helper script is in contrib/tor/monero-over-tor.sh. It assumes Tor is installed already, and runs Tor and Monero with the right configuration.

Using Tor on Tails

TAILS ships with a very restrictive set of firewall rules. Therefore, you need to add a rule to allow this connection too, in addition to telling torsocks to allow inbound connections. Full example:

sudo iptables -I OUTPUT 2 -p tcp -d 127.0.0.1 -m tcp --dport 18081 -j ACCEPT
DNS_PUBLIC=tcp torsocks ./monerod --p2p-bind-ip 127.0.0.1 --no-igd --rpc-bind-ip 127.0.0.1 \
    --data-dir /home/amnesia/Persistent/your/directory/to/the/blockchain

Pruning

As of May 2020, the full Monero blockchain file is about 100 GB. One can store a pruned blockchain, which is about 30 GB. A pruned blockchain can only serve part of the historical chain data to other peers, but is otherwise identical in functionality to the full blockchain. To use a pruned blockchain, it is best to start the initial sync with --prune-blockchain. However, it is also possible to prune an existing blockchain using the monero-blockchain-prune tool or using the --prune-blockchain monerod option with an existing chain. If an existing chain exists, pruning will temporarily require disk space to store both the full and pruned blockchains.

For more detailed information see the 'Pruning' entry in the Moneropedia

Debugging

This section contains general instructions for debugging failed installs or problems encountered with Monero. First, ensure you are running the latest version built from the Github repo.

Obtaining stack traces and core dumps on Unix systems

We generally use the tool gdb (GNU debugger) to provide stack trace functionality, and ulimit to provide core dumps in builds which crash or segfault.

  • To use gdb in order to obtain a stack trace for a build that has stalled:

Run the build.

Once it stalls, enter the following command:

gdb /path/to/monerod `pidof monerod`

Type thread apply all bt within gdb in order to obtain the stack trace

  • If however the core dumps or segfaults:

Enter ulimit -c unlimited on the command line to enable unlimited filesizes for core dumps

Enter echo core | sudo tee /proc/sys/kernel/core_pattern to stop cores from being hijacked by other tools

Run the build.

When it terminates with an output along the lines of "Segmentation fault (core dumped)", there should be a core dump file in the same directory as monerod. It may be named just core, or core.xxxx with numbers appended.

You can now analyse this core dump with gdb as follows:

gdb /path/to/monerod /path/to/dumpfile`

Print the stack trace with bt

  • If a program crashed and cores are managed by systemd, the following can also get a stack trace for that crash:
coredumpctl -1 gdb

To run Monero within gdb:

Type gdb /path/to/monerod

Pass command-line options with --args followed by the relevant arguments

Type run to run monerod

Analysing memory corruption

There are two tools available:

ASAN

Configure Monero with the -D SANITIZE=ON cmake flag, eg:

cd build/debug && cmake -D SANITIZE=ON -D CMAKE_BUILD_TYPE=Debug ../..

You can then run the monero tools normally. Performance will typically halve.

valgrind

Install valgrind and run as valgrind /path/to/monerod. It will be very slow.

LMDB

Instructions for debugging suspected blockchain corruption as per @HYC

There is an mdb_stat command in the LMDB source that can print statistics about the database but it's not routinely built. This can be built with the following command:

cd ~/monero/external/db_drivers/liblmdb && make

The output of mdb_stat -ea <path to blockchain dir> will indicate inconsistencies in the blocks, block_heights and block_info table.

The output of mdb_dump -s blocks <path to blockchain dir> and mdb_dump -s block_info <path to blockchain dir> is useful for indicating whether blocks and block_info contain the same keys.

These records are dumped as hex data, where the first line is the key and the second line is the data.

Known Issues

Protocols

Socket-based

Because of the nature of the socket-based protocols that drive monero, certain protocol weaknesses are somewhat unavoidable at this time. While these weaknesses can theoretically be fully mitigated, the effort required (the means) may not justify the ends. As such, please consider taking the following precautions if you are a monero node operator:

  • Run monerod on a "secured" machine. If operational security is not your forte, at a very minimum, have a dedicated a computer running monerod and do not browse the web, use email clients, or use any other potentially harmful apps on your monerod machine. Do not click links or load URL/MUA content on the same machine. Doing so may potentially exploit weaknesses in commands which accept "localhost" and "127.0.0.1".
  • If you plan on hosting a public "remote" node, start monerod with --restricted-rpc. This is a must.

Blockchain-based

Certain blockchain "features" can be considered "bugs" if misused correctly. Consequently, please consider the following:

  • When receiving monero, be aware that it may be locked for an arbitrary time if the sender elected to, preventing you from spending that monero until the lock time expires. You may want to hold off acting upon such a transaction until the unlock time lapses. To get a sense of that time, you can consider the remaining blocktime until unlock as seen in the show_transfers command.
Issues
  • Cryptonight variant 2

    Cryptonight variant 2

    Contains two modifications to improve ASIC resistance: shuffle and integer math.

    Shuffle makes use of the whole 64-byte cache line instead of 16 bytes only, making Cryptonight 4 times more demanding for memory bandwidth.

    Integer math adds 64:32 bit integer division followed by 64 bit integer square root, adding large and unavoidable computational latency to the main loop.

    More or less complete description of these changes and performance numbers are here: https://github.com/SChernykh/xmr-stak-cpu/blob/master/README.md

    Discussion that preceded this pull request: https://github.com/SChernykh/xmr-stak-cpu/issues/1

    opened by SChernykh 317
  • Idea for ASIC resistance

    Idea for ASIC resistance

    If ASICs are going to be a recurring problem, can you change the POW to maybe 5 or 10 different options every block based on the hash value of the previous block? That way the software could be changed in GPUs whereas ASICs would hopefully require different hardware for each POW if they are logically and/or mathematically independent enough. Even better would be if a POW could change a single variable to require a different ASIC, then the previous hash would be used to set the variable for the next block.

    opened by zawy12 230
  • Subaddresses

    Subaddresses

    Note: This PR replaces #1753. Most importantly, the idea of disposable addresses was dropped, due to its potential danger of being misused by uneducated users which leads to on-chain tx linkability. See the relevant discussion here.

    GUI version

    1. Motivation

    Suppose you publish a Monero wallet address for donation on your Twitter/etc profile page. Furthermore, you have an anonymous identity for some secret project where you also want to receive donation in Monero. Because you don't want people to be able to associate you with that anonymous identity by Googling your address, you'd want to use separate wallet addresses for these two purposes. While you can easily do so by simply creating two wallets separately, you're going to spend twice the time for scanning the blockchain and need twice the storage for the wallet cache. And this cost grows in proportion to the number of additional wallet addresses you'd like to have.

    Another relevant scenario is when you want to buy Monero anonymously through ShapeShift. If you used the same Monero address repeatedly for multiple purchases, ShapeShift would know that the same person bought that much of Monero through those purchases (although they don't know your contact info as they don't require account registration). You can anonymize the process by creating a temporary wallet for every purchase and transferring the fund to your real wallet afterwards. This is doable, but clearly tedious.

    The scheme proposed in this PR provides an effective solution for such scenarios, where the recipient can create multiple wallet "subaddresses" that appear unrelated to each other to outside observers, and the recipient can recognize all incoming transfers to those subaddresses with almost no additional cost. Note that this scheme only introduces additional procedures for the wallet software to construct and interpret transactions, while not requiring any change in the consensus rule (thus requiring no hard fork).

    2. How it works cryptographically

    Suppose Bob's wallet address is (A, B) = (a*G, b*G) where a and b are his view and spend secret keys, respectively. Likewise, Alice's address is (X, Y) = (x*G, y*G). Bob is receiving Monero from Alice, but he wants to do so without using his real address (A, B) in order to prevent Alice from knowing that the recipient is him. In the above example with ShapeShift, Bob would be you and Alice would be ShapeShift.

    2.1. Generating a subaddress

    Bob generates his i-th subaddress (i=1,2,...) as a pair of public keys (C,D) where:

    m = Hs(a || i)
    M = m*G
    D = B + M
    C = a*D
    

    We call i the index of the subaddress. Note that (A,B) and (C,D) are unlinkable without the knowledge of the view secret key a. Bob then registers D to a hash table T stored in his wallet cache (akin to the aggregate addresses scheme):

    T[D] <- i
    

    To handle his main address in a unified way, Bob also registers B to the hash table:

    T[B] <- 0
    

    In other words, the index 0 is treated as a special case in this scheme representing the original standard address.

    2.2. Sending to a subaddress

    When Alice constructs a transaction that transfers some fund to a subaddress (C, D), she first chooses a random scalar s and generates a tx pubkey:

    R = s*D
    

    Note that the tx secret key r such that R = r*G is unknown to Alice because she doesn't know the secret key of D. She then computes an output pubkey for the destination:

    P = Hs(s*C)*G + D
    

    She finally computes an output pubkey to herself as her change:

    Q = Hs(x*R)*G + Y
    

    Importantly, without the knowledge of the tx secret key r as explained above, Alice can include her change output in the transaction only because she knows her own view secret key x. ~~In other words, only single-destination transfers are possible in this scheme, and multi-destination transfers (e.g. pool payouts) require the use of standard addresses.~~ (2017-08-01) Now this scheme supports multi-destination transfers by introducing additional tx keys.

    Also note that Alice can prove her payment to Bob by using s.

    2.3. Receiving by a subaddress

    Bob checks if an output pubkey P in a new transaction belongs to him or not by computing

    D' = P - Hs(a*R)*G
    

    and looking for D' in the hash table. If the transaction was indeed bound to Bob's subaddress (C,D), D' should equal to D because

    a*R = a*s*D
        = s*a*D
        = s*C
    

    Therefore, Bob should be able to find D' in the hash table:

    i <- T[D']
    

    and obtain the private key of P:

    p = { Hs(a*R) + b                   i == 0
        { Hs(a*R) + b + Hs(a || i)      otherwise
    

    2.4. Grouping subaddresses

    When sending funds to Bob's subaddress (C,D), Alice can choose to send the change to her i-th subaddress (X_i,Y_i) instead of her main address (X,Y) by replacing Y with Y_i when deriving the change's output pubkey:

    Q = Hs(x*R)*G + Y_i
    

    Using this scheme, it's now possible to maintain balances of subaddresses separately, making them virtually function as separate wallets. In order to maintain subaddresses in an organized manner, we propose a simple scheme of grouping subaddresses as follows: we define the index of subaddresses as a pair of indices (i,j) with i, the major index, representing a group of subaddresses (called an account) and j, the minor index, representing a particular subaddress within that account. Incoming transfers to subaddresses belonging to the same account (i,0), (i,1), ... are summed up to form a single balance, and any spending of those outputs will transfer the change to the base subaddress (i,0). The index (0,0) represents the original standard address.

    3. How it works in the CLI

    3.1. Synopsis

    Existing commands with updated syntax:

    address
    address new <label text with white spaces allowed>
    address all
    address <index_min> [<index_max>]
    address label <index> <label text with white spaces allowed>
    
    balance [detail]
    
    show_transfers [in|out|pending|failed|pool] [index=<N1>[,<N2>,...]] [<min_height> [<max_height>]]
    incoming_transfers [available|unavailable] [index=<N1>[,<N2>,...]]
    unspent_outputs [index=<N1>[,<N2>,...]] [<min_amount> [<max_amount>]]
    
    transfer [index=<N1>[,<N2>,...]] [<priority>] [<mixin_count>] <address> <amount> [<payment_id>]
    locked_transfer [index=<N1>[,<N2>,...]] [<priority>] [<mixin_count>] <addr> <amount> <lockblocks> [<payment_id>]
    donate [index=<N1>[,<N2>,...]] [<priority>] [<mixin_count>] <amount> [<payment_id>]
    
    sweep_all [index=<N1>[,<N2>,...]] [<mixin_count>] <address> [<payment_id>]
    sweep_below <amount_threshold> [index=<N1>[,<N2>,...]] [<mixin_count>] address [<payment_id>]
    

    New commands:

    account
    account new <label text with white spaces allowed>
    account switch <index>
    account label <index> <label text with white spaces allowed>
    

    3.2. Managing accounts

    Initially, the wallet has only one account corresponding to the major index 0. The account index is indicated as the number after / in the command prompt:

    [wallet/0 9uPkEU]: 
    

    You can create a new account by using the command account new:

    account new <label text with white spaces allowed>
    
    [wallet/0 9uPkEU]: account new eBay selling   
            Account               Balance      Unlocked balance                 Label
           0 9uPkEU        0.000000000000        0.000000000000               Default
           1 Bd2qqa        0.000000000000        0.000000000000          eBay selling
    ----------------------------------------------------------------------------------
              Total        0.000000000000        0.000000000000
    
    [wallet/1 Bd2qqa]: address
    0  Bd2qqam2EKc8NRzTYg9QPJZ81Ey1WRp1Bcnmjzf28K3edRyr1rcLbjiQZdR7tsuTUJBahi32RSDb1cuqsACaEDwGRMZ4Eaa  eBay selling
    

    Note the change of the address. The command account switch lets you switch between accounts:

    [wallet/1 Bd2qqa]: account switch 0
    Currently selected account: [0] Default
    Balance: 0.000000000000, unlocked balance: 0.000000000000
    
    [wallet/0 9uPkEU]: address
    0  9uPkEUFcFujaw1YCDHhcvuUqQm9cGBBuu5KkGggFR9XMjQtXtFzUDbRU9oy4XYer9SeaSGAhtoT1xDsBuVDRqfg9GG2ji9U  Default
    

    The command account with no arguments shows the list of all the accounts along with their balances:

    [wallet/0 9uPkEU]: account
            Account               Balance      Unlocked balance                 Label
           0 9uPkEU        0.000000000000        0.000000000000               Default
           1 Bd2qqa        0.000000000000        0.000000000000          eBay selling
    ----------------------------------------------------------------------------------
              Total        0.000000000000        0.000000000000
    

    At any time, the user operates on the currently selected account and specifies the minor index in various commands when necessary via the index parameter; i.e. in the following description, we use the term "index" to mean the minor index.

    3.3. Generating subaddresses

    The command address shows the "base" address at index=0 (which corresponds to the original standard address when the currently selected account is at index=0). The command address new lets you create a new address at one index beyond the currently existing highest index associated with this account. You can assign a label to the address if necessary:

    address new <label text with white spaces allowed>
    
    [wallet/0 9uPkEU]: address new ShapeShift purchase on 2017-Jul-08
    1  BZ9PfXYboScf2vs4EcnMBdT2dvzmE1hLnZixxnmAP2vs52jQiLTmDzTDhdwVyuBWMhCeiTxD4bVCJipsfmGxtBTwSq4HwAh  ShapeShift purchase on 2017-Jul-08
    

    Note that this command is intended to be used for generating "throwaway" addresses; i.e. when you just want a fresh new address to receive funds to the currently selected account (e.g. when purchasing XMR through ShapeShift). If instead you want to maintain a separate balance associated with a new address, create a new account by the command account new.

    The commands address all and address <index_min> [<index_max>] show lists of addresses that have been generated so far:

    [wallet/0 9uPkEU]: address all
    0  9uPkEUFcFujaw1YCDHhcvuUqQm9cGBBuu5KkGggFR9XMjQtXtFzUDbRU9oy4XYer9SeaSGAhtoT1xDsBuVDRqfg9GG2ji9U  Default
    1  BZ9PfXYboScf2vs4EcnMBdT2dvzmE1hLnZixxnmAP2vs52jQiLTmDzTDhdwVyuBWMhCeiTxD4bVCJipsfmGxtBTwSq4HwAh  ShapeShift purchase on 2017-Jul-08
    2  BfhF533yqmNfxfgoDXK1411DYveWMU1xRQzMPPpHVrZgeoCoVrQ9GCjY1mvDQQaoiCZYhKhGVHLkm51cgZYfDUpt5Bw4ZgB  ShapeShift purchase on 2017-Jul-09
    3  BhTfiQY1Xj6AKXPUtDbunJPmqrbkha5qvNgYoipp6L7FQ8KTDciDWjF3YQ5g2dCLNLjJoUEJKVeYt9Rpb8tgDzT36fSoS9D  
    4  BYoaHkHjFEY371Jq9fY9x9TJjaMeDXBYS9AfqCJ7SJoe5vuJLDPsyhU3RzDFNXKkEqBDqQMX1bDuUQbXKXctTGXY9ZgdGa1  ShapeShift purchase on 2017-Jul-11
    5  BcxioZpKqYaZsSDHP6pmesaV7gMrPYxvHXsnkG5ceVGkasPR83cEJyvGNpckYvs2wP76HsM1KGo1mbEmmiburnCUT4aSEv1  ShapeShift purchase on 2017-Jul-13
    6  BZzdxkqM8fJhZLATeyD3bd2cSrehGsANH4CgyJ4DBUamJAdyRTqkZ1W3kvN1UpzLz1iQU8XfEQUi15QyobFyMQVb3LDj4gZ  ShapeShift purchase on 2017-Jul-17
    7  BYNUQQfEtg2gshraM8RPGvPUNbWcHHu33Tzhxy8ZrL7r7MYDkdPUCDFYxNawBNSAdjhKUCsiWjg5tQoReRMKGQ1fJS2QuEB  ShapeShift purchase on 2017-Jul-21
    
    [wallet/0 9uPkEU]: address 3 6
    3  BhTfiQY1Xj6AKXPUtDbunJPmqrbkha5qvNgYoipp6L7FQ8KTDciDWjF3YQ5g2dCLNLjJoUEJKVeYt9Rpb8tgDzT36fSoS9D  
    4  BYoaHkHjFEY371Jq9fY9x9TJjaMeDXBYS9AfqCJ7SJoe5vuJLDPsyhU3RzDFNXKkEqBDqQMX1bDuUQbXKXctTGXY9ZgdGa1  ShapeShift purchase on 2017-Jul-11
    5  BcxioZpKqYaZsSDHP6pmesaV7gMrPYxvHXsnkG5ceVGkasPR83cEJyvGNpckYvs2wP76HsM1KGo1mbEmmiburnCUT4aSEv1  ShapeShift purchase on 2017-Jul-13
    6  BZzdxkqM8fJhZLATeyD3bd2cSrehGsANH4CgyJ4DBUamJAdyRTqkZ1W3kvN1UpzLz1iQU8XfEQUi15QyobFyMQVb3LDj4gZ  ShapeShift purchase on 2017-Jul-17
    

    ~~The command integrated_address also takes an optional argument to specify the index:~~ (2017-08-01) The integrated subaddresses format was dropped as subaddresses are expected to be replacing the role of payment IDs

    The command address label lets you set the label of an address:

    address label <index> <label text with white spaces allowed>
    
    [wallet/0 9uPkEU]: address label 3 test test
    3  BhTfiQY1Xj6AKXPUtDbunJPmqrbkha5qvNgYoipp6L7FQ8KTDciDWjF3YQ5g2dCLNLjJoUEJKVeYt9Rpb8tgDzT36fSoS9D  test test
    

    Note that the label of the base address is treated as the label of the currently selected account. You can change account labels by using either address label or account label:

    [wallet/0 9uPkEU]: address label 0 My home account  
    0  9uPkEUFcFujaw1YCDHhcvuUqQm9cGBBuu5KkGggFR9XMjQtXtFzUDbRU9oy4XYer9SeaSGAhtoT1xDsBuVDRqfg9GG2ji9U  My home account
    
    [wallet/0 9uPkEU]: account label 1 My secret business account
            Account               Balance      Unlocked balance                 Label
           0 9uPkEU        0.000000000000        0.000000000000       My home account
           1 Bd2qqa        0.000000000000        0.000000000000 My secret business account
    ----------------------------------------------------------------------------------
              Total        0.000000000000        0.000000000000
    

    3.4. Checking funds and balances

    Here the wallet finds a few incoming transfers by some of its subaddresses (indicated by the major-minor index pairs):

    Height 949115, txid <2c9d55d65f67243f771729ecd93a089ca0fcde3451f5a7740a4df70d8240b95b>, 0.130000000000 XMR, idx 0/1
    Height 949115, txid <68ee8848bbb953e3a0bc8d3175e8724c3fb04cd2e49244c76d26d5b2fa2a6da2>, 0.020000000000 XMR, idx 0/0
    Height 949115, txid <01f3865e63613413f6de4d4cd2b2638b679aa604c06299ad4b562364afc8cf5a>, 0.110000000000 XMR, idx 0/1
    Height 949115, txid <b3bd13988448ef3bb95e6f3bf007f42ebc4f0d21346b6c4d45e42d53caa3e297>, 0.120000000000 XMR, idx 0/1
    Height 949115, txid <05a97709858358ec8bb008cc8ad7f70e35ec07219cc8744138473200bb9922ec>, 0.230000000000 XMR, idx 0/2
    Height 949115, txid <9a1527acdce60bbe38c8c7e9d3bfe894108d5b30eb630904a3b3afd5059b3344>, 0.210000000000 XMR, idx 0/2
    Height 949115, txid <6716c0707b4c198777adbcda6b630b6248ef07fb86d20ba4469dcf661f5b35ee>, 0.010000000000 XMR, idx 0/0
    Height 949115, txid <04bf1d9a5b8b3fe74d26bd068844f4709b22c92f6a3b5594f217c22df88f8184>, 0.030000000000 XMR, idx 0/0
    Height 949115, txid <02b76b48467a806c6e45ce6fdf59df3c694f857f450a450537a9769f911fee46>, 0.220000000000 XMR, idx 0/2
    Height 949116, txid <92f3b54a3044eddf3fd84742852f8a81b55e92055281c945bd7dee85e589ccc2>, 1.010000000000 XMR, idx 1/0
    Height 949117, txid <d2617a1da91203247f8b904cf05906973cc9a64bff8d6ab4d956f22cb5d5271e>, 1.030000000000 XMR, idx 1/0
    Height 949117, txid <441b07d91f64adf1b4f8350ca33902ed4aab306df3f66e1673d35a151186140c>, 1.020000000000 XMR, idx 1/0
    Height 949126, txid <0f5fcd710b94e49b61fedf93de92b444021292fbffb57c281ee6952190dc0bbf>, 1.110000000000 XMR, idx 1/1
    Height 949126, txid <73a83e4de08d84d9d72c707c0406fcba92994a56feb42102e3ca7c3733613c5e>, 1.210000000000 XMR, idx 1/2
    Height 949126, txid <9bdba78cd150cf4027282cdabb5893c0c7fb4c0d8ddf0f9096598b4bea87af69>, 1.230000000000 XMR, idx 1/2
    Height 949126, txid <22e4ac8469654903da34ce06ab06840648338d9d9dfc3f59714777d7a5a5256b>, 1.120000000000 XMR, idx 1/1
    Height 949126, txid <36b14c61ad93c4a8d16f10d88525222391717d87099bb30cd8c3da6c90849818>, 1.130000000000 XMR, idx 1/1
    Height 949126, txid <99b7c48a24e44c3336dc0f4b884ad33e89668e4dd9c288c67e60ffea9506ed26>, 1.220000000000 XMR, idx 1/2
    [wallet/0 9uPkEU]: account
            Account               Balance      Unlocked balance                 Label
           0 9uPkEU        1.080000000000        1.080000000000       My home account
           1 Bd2qqa       10.080000000000       10.080000000000 My secret business account
    ----------------------------------------------------------------------------------
              Total       11.160000000000       11.160000000000
    

    The command balance shows the total balance of all the funds received by all the addresses belonging to the currently selected account. You can see the details about how much funds are received by which address by providing an optional argument detail:

    [wallet/0 9uPkEU]: balance
    Currently selected account: [0] My home account
    Balance: 1.080000000000, unlocked balance: 1.080000000000
    
    [wallet/0 9uPkEU]: balance detail
    Currently selected account: [0] My home account
    Balance: 1.080000000000, unlocked balance: 1.080000000000
    Balance per address:
            Address               Balance      Unlocked balance                 Label Outputs
           0 9uPkEU        0.060000000000        0.060000000000       My home account       3
           1 BZ9PfX        0.360000000000        0.360000000000 ShapeShift purchase on 2017-Jul-08       3
           2 BfhF53        0.660000000000        0.660000000000 ShapeShift purchase on 2017-Jul-09       3
    
    [wallet/0 9uPkEU]: account switch 1
    Currently selected account: [1] My secret business account
    Balance: 10.080000000000, unlocked balance: 10.080000000000
    
    [wallet/1 Bd2qqa]: balance detail
    Currently selected account: [1] My secret business account
    Balance: 10.080000000000, unlocked balance: 10.080000000000
    Balance per address:
            Address               Balance      Unlocked balance                 Label Outputs
           0 Bd2qqa        3.060000000000        3.060000000000 My secret business account       3
           1 BcGvNd        3.360000000000        3.360000000000                             3
           2 BgtuJh        3.660000000000        3.660000000000                             3
    

    Other commands for showing detailed information about funds have some changes of syntax:

    show_transfers [in|out|pending|failed|pool] [index=<N1>[,<N2>,...]] [<min_height> [<max_height>]]
    incoming_transfers [available|unavailable] [index=<N1>[,<N2>,...]]
    
    [wallet/1 Bd2qqa]: show_transfers index=0
      949116     in      03:34:43 AM       1.010000000000 92f3b54a3044eddf3fd84742852f8a81b55e92055281c945bd7dee85e589ccc2 0000000000000000 0 - 
      949117     in      03:35:30 AM       1.030000000000 d2617a1da91203247f8b904cf05906973cc9a64bff8d6ab4d956f22cb5d5271e 0000000000000000 0 - 
      949117     in      03:35:30 AM       1.020000000000 441b07d91f64adf1b4f8350ca33902ed4aab306df3f66e1673d35a151186140c 0000000000000000 0 - 
    
    [wallet/1 Bd2qqa]: incoming_transfers index=1,2
                   amount   spent    unlocked  ringct    global index                                                               tx id      addr index
           1.110000000000       F    unlocked  RingCT          219516  <0f5fcd710b94e49b61fedf93de92b444021292fbffb57c281ee6952190dc0bbf>               1
           1.210000000000       F    unlocked  RingCT          219518  <73a83e4de08d84d9d72c707c0406fcba92994a56feb42102e3ca7c3733613c5e>               2
           1.230000000000       F    unlocked  RingCT          219520  <9bdba78cd150cf4027282cdabb5893c0c7fb4c0d8ddf0f9096598b4bea87af69>               2
           1.120000000000       F    unlocked  RingCT          219522  <22e4ac8469654903da34ce06ab06840648338d9d9dfc3f59714777d7a5a5256b>               1
           1.130000000000       F    unlocked  RingCT          219524  <36b14c61ad93c4a8d16f10d88525222391717d87099bb30cd8c3da6c90849818>               1
           1.220000000000       F    unlocked  RingCT          219526  <99b7c48a24e44c3336dc0f4b884ad33e89668e4dd9c288c67e60ffea9506ed26>               2
    

    3.5. Transferring funds

    The apparently unrelated subaddresses might get statistically linked if funds transferred to different subaddresses are used together as inputs in new transactions. For example, suppose Bob published two subaddresses (C1,D1) and (C2,D2) in different places, and Alice repeatedly transferred funds to these addresses not knowing that they both belong to Bob. If Bob repeatedly used outputs received by these subaddresses together as inputs in new transactions, Alice would notice multiple instances of transactions where each of the input ring signatures contains the output she created for the payments to these subaddresses. The probability of such transactions occurring by chance would be fairly low, so she can confidently guess that these subaddresses belong to the same person.

    To prevent this kind of potential risk of linkability, the wallet tries its best to avoid using outputs belonging to different subaddresses together as inputs in a new transaction. If there exist any subaddresses with enough unlocked balance for the requested transfer, the wallet chooses one randomly. If there is no such subaddress, the wallet uses the minimal number of subaddresses to cover the required amount while showing a warning message. You can also explicitly tell the wallet from which subaddresses the outputs should be picked by using an optional argument index=<N1>[,<N2>,...]:

    transfer [index=<N1>[,<N2>,...]] [<priority>] [<mixin_count>] <address> <amount> [<payment_id>]
    
    [wallet/1 Bd2qqa]: balance detail
    Currently selected account: [1] My secret business account
    Balance: 10.080000000000, unlocked balance: 10.080000000000
    Balance per address:
            Address               Balance      Unlocked balance                 Label Outputs
           0 Bd2qqa        3.060000000000        3.060000000000 My secret business account       3
           1 BcGvNd        3.360000000000        3.360000000000                             3
           2 BgtuJh        3.660000000000        3.660000000000                             3
    
    [wallet/1 Bd2qqa]: transfer 9svHk1wHPo3ULf2AZykghzcye6sitaRE4MaDjPC6uanTHCynHjJHZaiAb922PojE1GexhhRt1LVf5DC43feyrRZMLXQr3mk 3  
    Spending from address index 2
    Sending 3.000000000000.  The transaction fee is 0.023390640000
    Is this okay?  (Y/Yes/N/No): n
    Error: transaction cancelled.
    
    [wallet/1 Bd2qqa]: transfer 9svHk1wHPo3ULf2AZykghzcye6sitaRE4MaDjPC6uanTHCynHjJHZaiAb922PojE1GexhhRt1LVf5DC43feyrRZMLXQr3mk 3
    Spending from address index 1
    Sending 3.000000000000.  The transaction fee is 0.023390640000
    Is this okay?  (Y/Yes/N/No): n
    Error: transaction cancelled.
    
    [wallet/1 Bd2qqa]: transfer 9svHk1wHPo3ULf2AZykghzcye6sitaRE4MaDjPC6uanTHCynHjJHZaiAb922PojE1GexhhRt1LVf5DC43feyrRZMLXQr3mk 3.2
    Spending from address index 1
    Sending 3.200000000000.  The transaction fee is 0.023390640000
    Is this okay?  (Y/Yes/N/No): n
    Error: transaction cancelled.
    
    [wallet/1 Bd2qqa]: transfer 9svHk1wHPo3ULf2AZykghzcye6sitaRE4MaDjPC6uanTHCynHjJHZaiAb922PojE1GexhhRt1LVf5DC43feyrRZMLXQr3mk 3.2
    Spending from address index 2
    Sending 3.200000000000.  The transaction fee is 0.023390640000
    Is this okay?  (Y/Yes/N/No): n
    Error: transaction cancelled.
    
    [wallet/1 Bd2qqa]: transfer 9svHk1wHPo3ULf2AZykghzcye6sitaRE4MaDjPC6uanTHCynHjJHZaiAb922PojE1GexhhRt1LVf5DC43feyrRZMLXQr3mk 3.5
    Spending from address index 2
    Sending 3.500000000000.  The transaction fee is 0.023390640000
    Is this okay?  (Y/Yes/N/No): n
    Error: transaction cancelled.
    
    [wallet/1 Bd2qqa]: transfer 9svHk1wHPo3ULf2AZykghzcye6sitaRE4MaDjPC6uanTHCynHjJHZaiAb922PojE1GexhhRt1LVf5DC43feyrRZMLXQr3mk 5
    Spending from address index 1
    Spending from address index 2
    WARNING: Outputs of multiple addresses are being used together.
    Sending 5.000000000000.  The transaction fee is 0.025061400000
    Is this okay?  (Y/Yes/N/No): n
    Error: transaction cancelled.
    
    [wallet/1 Bd2qqa]: transfer index=0,1 9svHk1wHPo3ULf2AZykghzcye6sitaRE4MaDjPC6uanTHCynHjJHZaiAb922PojE1GexhhRt1LVf5DC43feyrRZMLXQr3mk 5
    Spending from address index 0
    Spending from address index 1
    WARNING: Outputs of multiple addresses are being used together.
    Sending 5.000000000000.  The transaction fee is 0.025061400000
    Is this okay?  (Y/Yes/N/No): n
    Error: transaction cancelled.
    
    [wallet/1 Bd2qqa]: transfer 9svHk1wHPo3ULf2AZykghzcye6sitaRE4MaDjPC6uanTHCynHjJHZaiAb922PojE1GexhhRt1LVf5DC43feyrRZMLXQr3mk 9
    Spending from address index 0
    Spending from address index 1
    Spending from address index 2
    WARNING: Outputs of multiple addresses are being used together.
    Sending 9.000000000000.  The transaction fee is 0.028402920000
    Is this okay?  (Y/Yes/N/No): n
    Error: transaction cancelled.
    

    The command sweep_all has a similar syntax:

    sweep_all [index=<N1>[,<N2>,...]] [<mixin_count>] <address> [<payment_id>]
    

    If you omit the index parameter, one subaddress to be swept is chosen randomly (with index 0 being chosen last). You can use index=<N> to specify which subaddress to be swept. You can also either use index=<N1>,<N2>,... to sweep balances of multiple or all subaddresses.

    [wallet/1 Bd2qqa]: sweep_all 9svHk1wHPo3ULf2AZykghzcye6sitaRE4MaDjPC6uanTHCynHjJHZaiAb922PojE1GexhhRt1LVf5DC43feyrRZMLXQr3mk
    Spending from address index 1
    Sweeping 3.360000000000 for a total fee of 0.023390080000.  Is this okay?  (Y/Yes/N/No)n
    Error: transaction cancelled.
    
    [wallet/1 Bd2qqa]: sweep_all index=1,2 9svHk1wHPo3ULf2AZykghzcye6sitaRE4MaDjPC6uanTHCynHjJHZaiAb922PojE1GexhhRt1LVf5DC43feyrRZMLXQr3mk
    Spending from address index 1
    Spending from address index 2
    WARNING: Outputs of multiple addresses are being used together.
    Sweeping 7.020000000000 for a total fee of 0.025060800000.  Is this okay?  (Y/Yes/N/No)n
    Error: transaction cancelled.
    

    Note that the change always goes to the base subaddress at index=0:

    [wallet/1 Bd2qqa]: transfer 9svHk1wHPo3ULf2AZykghzcye6sitaRE4MaDjPC6uanTHCynHjJHZaiAb922PojE1GexhhRt1LVf5DC43feyrRZMLXQr3mk 1
    Spending from address index 1
    Sending 1.000000000000.  The transaction fee is 0.021719360000
    Is this okay?  (Y/Yes/N/No): y
    Money successfully sent, transaction <6f6678b4c6b3c60bcb7eb642bc819a1b99e9c75feb7c292b3656ea7b3b4f1a62>
    
    Height 949248, txid <6f6678b4c6b3c60bcb7eb642bc819a1b99e9c75feb7c292b3656ea7b3b4f1a62>, 0.088280640000 XMR, idx 1/0
    Height 949248, txid <6f6678b4c6b3c60bcb7eb642bc819a1b99e9c75feb7c292b3656ea7b3b4f1a62>, spent 1.110000000000, account 1
    
    [wallet/1 Bd2qqa]: balance detail
    Currently selected account: [1] My secret business account
    Balance: 9.058280640000, unlocked balance: 8.970000000000
    Balance per address:
            Address               Balance      Unlocked balance                 Label Outputs
           0 Bd2qqa        3.148280640000        3.060000000000 My secret business account       4
           1 BcGvNd        2.250000000000        2.250000000000                             2
           2 BgtuJh        3.660000000000        3.660000000000                             3
    

    3.6. Restoring wallet from seed

    One slight caveat with this scheme is that when restoring a wallet from the seed, the wallet might miss transfers to subaddresses if they aren't stored in the hashtable yet. To mitigate this issue, for each account, the wallet stores 200 (a constant SUBADDRESS_LOOKAHEAD_MINOR defined in wallet2.h) subaddresses of indices beyond the highest index created so far. The wallet also generates 50 (a constant SUBADDRESS_LOOKAHEAD_MAJOR defined in wallet2.h) accounts beyond the highest index created so far. This means that the wallet restoration process is guaranteed to find incoming transfers to subaddresses as long as the major and minor indices of the used subaddresses differ by less than those predefined numbers. Note that the wallet expands the hashtable by itself as it finds incoming transfers to subaddresses at new higher indices, so normally the user won't need to worry about the management of the hashtable. Even if the differences of indices are bigger than those predifined numbers, you can still make the wallet recognize the incoming transfers by manually expanding the hashtable and rescanning the blockchain.

    Here's an example: First, we generate 360 new addresses for the 1st account:

    [wallet/1 Bd2qqa]: address all
    0  Bd2qqam2EKc8NRzTYg9QPJZ81Ey1WRp1Bcnmjzf28K3edRyr1rcLbjiQZdR7tsuTUJBahi32RSDb1cuqsACaEDwGRMZ4Eaa  My secret business account (used)
    1  BcGvNdmZj9V9r7NKAKzEELUVVSVfXMmUUbfQrjSBuDt6MU5bdtmYAEC6TR5VuZQv5yZvynzQ3aoJTUjtM9FD5AnP9PCHVSk   (used)
    2  BgtuJhWFPi9DABnpdtQs9rWfQN33DZQZi2yzoQucEAP8EoPxNDitssoA14ZVQthSyPHWB8SLV48qAc25A1EykehQ7NzDXDb   (used)
    3  BYfn1Fc5xwECX2HbNATqfuQCG82sMZufY46ZsiP1xBbR3S6fVj2P4d4MLRrqVBZcFHUQmdiCsKa3ec5aaNVk35ZYHQnLbu1  
    ...
    150  BgjoPu6qBNVT1E9c3PDaaw9zbehhG29vBQAH8mSeC79K7z2qb12ZtTH1ijo4Tn7DYQPm2aZq68yrnLcoi18baf9JQxmn2bZ  
    ...
    360  BZ1xAbycuHyKwangpgEn7NTWk2geNbcJgJ46iCkRBu8Gc2UXTACeRcUGWneGA1mPfkKmpy7ya4ST9dZex3RN2qi5BLdQRxy  
    

    Next, we generate 70 accounts and print the base addresses of the 15th and 70th accounts:

    [wallet/70 BbXfcf]: account
            Account               Balance      Unlocked balance                 Label
           0 9uPkEU        1.080000000000        1.080000000000       My home account
           1 Bd2qqa        9.058280640000        9.058280640000 My secret business account
           2 BaTkbd        0.000000000000        0.000000000000                      
           3 BeaUVm        0.000000000000        0.000000000000                      
    ...
          70 BbXfcf        0.000000000000        0.000000000000                      
    ----------------------------------------------------------------------------------
              Total       10.138280640000       10.138280640000
    
    [wallet/0 9uPkEU]: account switch 15
    Currently selected account: [15] 
    Balance: 0.000000000000, unlocked balance: 0.000000000000
    
    [wallet/15 BhQjPZ]: address
    0  BhQjPZ8XUkojSdcB8jhB4uTeqLQVHtfsYTxTm3n32yXM37qXqN8RdTXduKSEH4rrAp4ZuUFbv8Wak3i1QudCJhvwJVUU5dx  
    
    [wallet/15 BhQjPZ]: account switch 70
    Currently selected account: [70] 
    Balance: 0.000000000000, unlocked balance: 0.000000000000
    
    [wallet/70 BbXfcf]: address
    0  BbXfcfWRiUAcG7hoXvdRY8QtVisRPj1EQEbMoWWHGPXqQKVKWoSNNgbPEuSFm6YuDHUVaWwyqu876WKZrUmVMk8DLsrSMSN  
    

    Then we send funds to these addresses (at indices of 1/150, 1/360, 15/0, 70/0) from another wallet:

    [wallet/0 9svHk1]: transfer BgjoPu6qBNVT1E9c3PDaaw9zbehhG29vBQAH8mSeC79K7z2qb12ZtTH1ijo4Tn7DYQPm2aZq68yrnLcoi18baf9JQxmn2bZ 1  
    Money successfully sent, transaction <ddb1d29f54f4de8e88fddd31379d6bf30ba4d311ae648d05c9962cfb59e494b1>
    
    [wallet/0 9svHk1]: transfer BZ1xAbycuHyKwangpgEn7NTWk2geNbcJgJ46iCkRBu8Gc2UXTACeRcUGWneGA1mPfkKmpy7ya4ST9dZex3RN2qi5BLdQRxy 2
    Money successfully sent, transaction <c4292519b328fcfa8f92300d55a33a1d9a2b1788b0988c501adea6a51452f52a>
    
    [wallet/0 9svHk1]: transfer BhQjPZ8XUkojSdcB8jhB4uTeqLQVHtfsYTxTm3n32yXM37qXqN8RdTXduKSEH4rrAp4ZuUFbv8Wak3i1QudCJhvwJVUU5dx 3
    Money successfully sent, transaction <8c473e823e6b1262a55b8456c19f1b9fba0090c089222435c3bccdbeac10fc99>
    
    [wallet/0 9svHk1]: transfer BbXfcfWRiUAcG7hoXvdRY8QtVisRPj1EQEbMoWWHGPXqQKVKWoSNNgbPEuSFm6YuDHUVaWwyqu876WKZrUmVMk8DLsrSMSN 4
    Money successfully sent, transaction <27d55c3af091cccb9e9fc6eb17f0e3e6ff700af066fb6471a3533c4f19af70c3>
    

    Now we delete the cache of the receiving wallet 9uPkEU and re-generate it by scanning the blockchain again (which gives the same effect as restoring the wallet from the seed):

    Monero 'Wolfram Warptangent' (v0.10.3.1-a261d3b)
    Logging to /Users/kenshi/dev/github/kenshi84/monero/build/release/bin/monero-wallet-cli.log
    Wallet password: *
    Opened wallet: 9uPkEUFcFujaw1YCDHhcvuUqQm9cGBBuu5KkGggFR9XMjQtXtFzUDbRU9oy4XYer9SeaSGAhtoT1xDsBuVDRqfg9GG2ji9U
    **********************************************************************
    Use "help" command to see the list of available commands.
    **********************************************************************
    Starting refresh...
    Height 949115, txid <2c9d55d65f67243f771729ecd93a089ca0fcde3451f5a7740a4df70d8240b95b>, 0.130000000000 XMR, idx 0/1
    Height 949115, txid <68ee8848bbb953e3a0bc8d3175e8724c3fb04cd2e49244c76d26d5b2fa2a6da2>, 0.020000000000 XMR, idx 0/0
    Height 949115, txid <01f3865e63613413f6de4d4cd2b2638b679aa604c06299ad4b562364afc8cf5a>, 0.110000000000 XMR, idx 0/1
    Height 949115, txid <b3bd13988448ef3bb95e6f3bf007f42ebc4f0d21346b6c4d45e42d53caa3e297>, 0.120000000000 XMR, idx 0/1
    Height 949115, txid <05a97709858358ec8bb008cc8ad7f70e35ec07219cc8744138473200bb9922ec>, 0.230000000000 XMR, idx 0/2
    Height 949115, txid <9a1527acdce60bbe38c8c7e9d3bfe894108d5b30eb630904a3b3afd5059b3344>, 0.210000000000 XMR, idx 0/2
    Height 949115, txid <6716c0707b4c198777adbcda6b630b6248ef07fb86d20ba4469dcf661f5b35ee>, 0.010000000000 XMR, idx 0/0
    Height 949115, txid <04bf1d9a5b8b3fe74d26bd068844f4709b22c92f6a3b5594f217c22df88f8184>, 0.030000000000 XMR, idx 0/0
    Height 949115, txid <02b76b48467a806c6e45ce6fdf59df3c694f857f450a450537a9769f911fee46>, 0.220000000000 XMR, idx 0/2
    Height 949116, txid <92f3b54a3044eddf3fd84742852f8a81b55e92055281c945bd7dee85e589ccc2>, 1.010000000000 XMR, idx 1/0
    Height 949117, txid <d2617a1da91203247f8b904cf05906973cc9a64bff8d6ab4d956f22cb5d5271e>, 1.030000000000 XMR, idx 1/0
    Height 949117, txid <441b07d91f64adf1b4f8350ca33902ed4aab306df3f66e1673d35a151186140c>, 1.020000000000 XMR, idx 1/0
    Height 949126, txid <0f5fcd710b94e49b61fedf93de92b444021292fbffb57c281ee6952190dc0bbf>, 1.110000000000 XMR, idx 1/1
    Height 949126, txid <73a83e4de08d84d9d72c707c0406fcba92994a56feb42102e3ca7c3733613c5e>, 1.210000000000 XMR, idx 1/2
    Height 949126, txid <9bdba78cd150cf4027282cdabb5893c0c7fb4c0d8ddf0f9096598b4bea87af69>, 1.230000000000 XMR, idx 1/2
    Height 949126, txid <22e4ac8469654903da34ce06ab06840648338d9d9dfc3f59714777d7a5a5256b>, 1.120000000000 XMR, idx 1/1
    Height 949126, txid <36b14c61ad93c4a8d16f10d88525222391717d87099bb30cd8c3da6c90849818>, 1.130000000000 XMR, idx 1/1
    Height 949126, txid <99b7c48a24e44c3336dc0f4b884ad33e89668e4dd9c288c67e60ffea9506ed26>, 1.220000000000 XMR, idx 1/2
    Height 949248, txid <6f6678b4c6b3c60bcb7eb642bc819a1b99e9c75feb7c292b3656ea7b3b4f1a62>, 0.088280640000 XMR, idx 1/0
    Height 949248, txid <6f6678b4c6b3c60bcb7eb642bc819a1b99e9c75feb7c292b3656ea7b3b4f1a62>, spent 1.110000000000, account 1
    Height 949344, txid <ddb1d29f54f4de8e88fddd31379d6bf30ba4d311ae648d05c9962cfb59e494b1>, 1.000000000000 XMR, idx 1/150
    Height 949344, txid <8c473e823e6b1262a55b8456c19f1b9fba0090c089222435c3bccdbeac10fc99>, 3.000000000000 XMR, idx 15/0
    Refresh done, blocks received: 24696                            
            Account               Balance      Unlocked balance                 Label
           0 9uPkEU        1.080000000000        1.080000000000               Default
           1 Bd2qqa       10.058280640000        9.058280640000                      
           2 BaTkbd        0.000000000000        0.000000000000                      
           3 BeaUVm        0.000000000000        0.000000000000                      
           4 BfH7tK        0.000000000000        0.000000000000                      
           5 BfDmWH        0.000000000000        0.000000000000                      
           6 BfwsE7        0.000000000000        0.000000000000                      
           7 Bam7fW        0.000000000000        0.000000000000                      
           8 BePNm3        0.000000000000        0.000000000000                      
           9 BgkPAD        0.000000000000        0.000000000000                      
          10 BYQtBx        0.000000000000        0.000000000000                      
          11 BZEjtF        0.000000000000        0.000000000000                      
          12 BbkUr7        0.000000000000        0.000000000000                      
          13 Bg34Jy        0.000000000000        0.000000000000                      
          14 BYqzux        0.000000000000        0.000000000000                      
          15 BhQjPZ        3.000000000000        0.000000000000                      
    ----------------------------------------------------------------------------------
              Total       14.138280640000       10.138280640000
    Currently selected account: [0] Default
    Balance: 1.080000000000, unlocked balance: 1.080000000000
    Background refresh thread started
    

    Note that at this point, the wallet was able to successfully recognize incoming transfers to indices of 1/150 and 15/0, but failed to recognize incoming transfers to 1/360 and 70/0 because 360 > 150 + SUBADDRESS_LOOKAHEAD_MINOR and 70 > 15 + SUBADDRESS_LOOKAHEAD_MAJOR. You can make the wallet recognize those incoming transfers by manually expanding the hashtable and rescanning the blockchain:

    [wallet/1 Bd2qqa]: address new
    151  BaTjSeUuSX4KtS6DmQXRfcN3xkTAyuG2NMg3r6JpR4JujotNw8dvGKBbVehURSoMSpSsKJQTWi4eQCJxsjXuXber9WUKQ53  
    
    ...
    
    [wallet/1 Bd2qqa]: address new
    161  BbA5zmZzn9ZPvzazMHBjQzXZHaYDjWeWfN258AZufhPK3i2uF6GCdvGMMksA7qMmXxcswEfkwucuuJPDYGvR77Ux7iczJzD  
    
    [wallet/1 Bd2qqa]: account new
            Account               Balance      Unlocked balance                 Label
           0 9uPkEU        1.080000000000        1.080000000000               Default
           1 Bd2qqa       10.058280640000        9.058280640000                      
           2 BaTkbd        0.000000000000        0.000000000000                      
           3 BeaUVm        0.000000000000        0.000000000000                      
           4 BfH7tK        0.000000000000        0.000000000000                      
           5 BfDmWH        0.000000000000        0.000000000000                      
           6 BfwsE7        0.000000000000        0.000000000000                      
           7 Bam7fW        0.000000000000        0.000000000000                      
           8 BePNm3        0.000000000000        0.000000000000                      
           9 BgkPAD        0.000000000000        0.000000000000                      
          10 BYQtBx        0.000000000000        0.000000000000                      
          11 BZEjtF        0.000000000000        0.000000000000                      
          12 BbkUr7        0.000000000000        0.000000000000                      
          13 Bg34Jy        0.000000000000        0.000000000000                      
          14 BYqzux        0.000000000000        0.000000000000                      
          15 BhQjPZ        3.000000000000        0.000000000000                      
          16 BePZ3e        0.000000000000        0.000000000000                      
    ----------------------------------------------------------------------------------
              Total       14.138280640000       10.138280640000
    
    ...
    
    [wallet/20 BgjB9f]: account new
            Account               Balance      Unlocked balance                 Label
           0 9uPkEU        1.080000000000        1.080000000000               Default
           1 Bd2qqa       12.058280640000        9.058280640000                      
           2 BaTkbd        0.000000000000        0.000000000000                      
           3 BeaUVm        0.000000000000        0.000000000000                      
           4 BfH7tK        0.000000000000        0.000000000000                      
           5 BfDmWH        0.000000000000        0.000000000000                      
           6 BfwsE7        0.000000000000        0.000000000000                      
           7 Bam7fW        0.000000000000        0.000000000000                      
           8 BePNm3        0.000000000000        0.000000000000                      
           9 BgkPAD        0.000000000000        0.000000000000                      
          10 BYQtBx        0.000000000000        0.000000000000                      
          11 BZEjtF        0.000000000000        0.000000000000                      
          12 BbkUr7        0.000000000000        0.000000000000                      
          13 Bg34Jy        0.000000000000        0.000000000000                      
          14 BYqzux        0.000000000000        0.000000000000                      
          15 BhQjPZ        3.000000000000        0.000000000000                      
          16 BePZ3e        0.000000000000        0.000000000000                      
          17 BcMMgP        0.000000000000        0.000000000000                      
          18 Bf7N2v        0.000000000000        0.000000000000                      
          19 BbNHEQ        0.000000000000        0.000000000000                      
          20 BgjB9f        0.000000000000        0.000000000000                      
          21 Bd1dhR        0.000000000000        0.000000000000                      
    ----------------------------------------------------------------------------------
              Total       16.138280640000       10.138280640000
    
    
    [wallet/21 Bd1dhR]: rescan_bc
    Starting refresh...
    Height 949115, txid <2c9d55d65f67243f771729ecd93a089ca0fcde3451f5a7740a4df70d8240b95b>, 0.130000000000 XMR, idx 0/1
    Height 949115, txid <68ee8848bbb953e3a0bc8d3175e8724c3fb04cd2e49244c76d26d5b2fa2a6da2>, 0.020000000000 XMR, idx 0/0
    Height 949115, txid <01f3865e63613413f6de4d4cd2b2638b679aa604c06299ad4b562364afc8cf5a>, 0.110000000000 XMR, idx 0/1
    Height 949115, txid <b3bd13988448ef3bb95e6f3bf007f42ebc4f0d21346b6c4d45e42d53caa3e297>, 0.120000000000 XMR, idx 0/1
    Height 949115, txid <05a97709858358ec8bb008cc8ad7f70e35ec07219cc8744138473200bb9922ec>, 0.230000000000 XMR, idx 0/2
    Height 949115, txid <9a1527acdce60bbe38c8c7e9d3bfe894108d5b30eb630904a3b3afd5059b3344>, 0.210000000000 XMR, idx 0/2
    Height 949115, txid <6716c0707b4c198777adbcda6b630b6248ef07fb86d20ba4469dcf661f5b35ee>, 0.010000000000 XMR, idx 0/0
    Height 949115, txid <04bf1d9a5b8b3fe74d26bd068844f4709b22c92f6a3b5594f217c22df88f8184>, 0.030000000000 XMR, idx 0/0
    Height 949115, txid <02b76b48467a806c6e45ce6fdf59df3c694f857f450a450537a9769f911fee46>, 0.220000000000 XMR, idx 0/2
    Height 949116, txid <92f3b54a3044eddf3fd84742852f8a81b55e92055281c945bd7dee85e589ccc2>, 1.010000000000 XMR, idx 1/0
    Height 949117, txid <d2617a1da91203247f8b904cf05906973cc9a64bff8d6ab4d956f22cb5d5271e>, 1.030000000000 XMR, idx 1/0
    Height 949117, txid <441b07d91f64adf1b4f8350ca33902ed4aab306df3f66e1673d35a151186140c>, 1.020000000000 XMR, idx 1/0
    Height 949126, txid <0f5fcd710b94e49b61fedf93de92b444021292fbffb57c281ee6952190dc0bbf>, 1.110000000000 XMR, idx 1/1
    Height 949126, txid <73a83e4de08d84d9d72c707c0406fcba92994a56feb42102e3ca7c3733613c5e>, 1.210000000000 XMR, idx 1/2
    Height 949126, txid <9bdba78cd150cf4027282cdabb5893c0c7fb4c0d8ddf0f9096598b4bea87af69>, 1.230000000000 XMR, idx 1/2
    Height 949126, txid <22e4ac8469654903da34ce06ab06840648338d9d9dfc3f59714777d7a5a5256b>, 1.120000000000 XMR, idx 1/1
    Height 949126, txid <36b14c61ad93c4a8d16f10d88525222391717d87099bb30cd8c3da6c90849818>, 1.130000000000 XMR, idx 1/1
    Height 949126, txid <99b7c48a24e44c3336dc0f4b884ad33e89668e4dd9c288c67e60ffea9506ed26>, 1.220000000000 XMR, idx 1/2
    Height 949248, txid <6f6678b4c6b3c60bcb7eb642bc819a1b99e9c75feb7c292b3656ea7b3b4f1a62>, 0.088280640000 XMR, idx 1/0
    Height 949248, txid <6f6678b4c6b3c60bcb7eb642bc819a1b99e9c75feb7c292b3656ea7b3b4f1a62>, spent 1.110000000000, account 1
    Height 949344, txid <c4292519b328fcfa8f92300d55a33a1d9a2b1788b0988c501adea6a51452f52a>, 2.000000000000 XMR, idx 1/360
    Height 949344, txid <ddb1d29f54f4de8e88fddd31379d6bf30ba4d311ae648d05c9962cfb59e494b1>, 1.000000000000 XMR, idx 1/150
    Height 949344, txid <27d55c3af091cccb9e9fc6eb17f0e3e6ff700af066fb6471a3533c4f19af70c3>, 4.000000000000 XMR, idx 70/0
    Height 949344, txid <8c473e823e6b1262a55b8456c19f1b9fba0090c089222435c3bccdbeac10fc99>, 3.000000000000 XMR, idx 15/0
    Refresh done, blocks received: 24699                            
    Currently selected account: [21] 
    Balance: 0.000000000000, unlocked balance: 0.000000000000
    

    4. ToDo

    • Review
    • Unit test & performance test
    • Update MRL-0006

    5. Related links

    • Reddit post mentioning this PR: https://www.reddit.com/r/Monero/comments/6e8f83/proposal_for_subaddresses_by_kenshi84_pull/

    • Reddit post with some questions and answers: https://www.reddit.com/r/Monero/comments/5vgjs2/subaddresses_and_disposable_addresses/

    • Question on StackExchange: https://monero.stackexchange.com/questions/3673/what-is-a-sub-address

    • Community feedback: https://www.reddit.com/r/Monero/comments/67565e/feedback_requested_do_you_want_monero_to_have/

    • Original post in MRL issue #7

    Acknowledgements

    • @JollyMort for initial discussions since the very beginning
    • @knaccc for bringing up the concept of sub-addresses with a modified DH key exchange idea, and also for pointing out the fact that the change can be sent to any subaddresses
    • @RandomRun for the second generation modified DH key exchange idea that solves the problem of discovery of the main wallet keys
    • @luigi1111 for various suggestions and guidance
    opened by kenshi84 188
  • Proposal to consider an ASIC-friendly proof of work

    Proposal to consider an ASIC-friendly proof of work

    Currently Monero is pending a hard fork to modify the PoW in order to invalidate existing rumored and reported ASIC designs, and in addition to continue making such changes repeatedly to attempt to prevent ASIC development and deployment on the network. For various reasons, there are longer-term concerns with this strategy, particularly going forward, including:

    1. Continued and repeated ad-hoc modifications to the PoW algorithm may accidentally (or even maliciously) introduce exploits.
    2. ASIC developers may build in more flexibility to their designs to be able to accommodate small algorithm tweaks (indeed this may already be the case, we don't know).
    3. Potential for favoritism/corruption if plans for tweaks are leaked or influenced far enough ahead of time that some favored ASIC developers may have enough lead time to produce ASICs, while others do not.
    4. A belief that ASICs may be desirable as a means to facilitate industrial scale mining and growing the network beyond what might be called a hobby mining phase.
    5. Potential for increased monopolization if the strategy is only partially effective (i.e. keeps all but one ASIC developer from succeeding)
    6. Dependence of the network on continued frequent hard forking independent of the need for functional upgrades. This carries with it a greater degree of centralization necessary to design, implement and coordinate these forks, without any real plan to transition beyond it.

    For these reasons I would propose that we consider (which does not necessarily mean implement) abandoning the ASIC-hostile approach and instead consider adopting an ASIC-friendly approach in a future hard fork.

    By ASIC-friendly, I mean something that not only can reasonably be implemented in an ASIC, but which minimizes barriers to creating ASICs, minimizes their costs, facilitates the development of a wide range of compatible hardware at attractive price points, and minimizes opportunities for clever proprietary advantages. By doing so we may maximize the likelihood of a competitive ASIC market developing and minimize the degree of (temporarily or sustained) monopolization. This could possibly be achieved by using a simple, well-known, and well understood algorithm such as SHA3.

    There are numerous other potential advantages and disadvantages of this approach relative to Monero's current PoW algorithm and strategy, which can be discussed in comments.

    Postscript: My personal view has always been largely ASIC-hostile (primarily based on my analysis the history of the Bitcoin ASIC market when Monero launched in 2014, but reinforced by the continued evolution of the Bitcoin and other coin ASIC markets over the past four years), however I am open to the possibility that unintended consequences of attempting to maintain this approach may cause more harm than overall benefits, in which case it should be dropped.

    opened by iamsmooth 162
  • [Discussion] Raising the mandatory ringsize in the v6 hardfork, September 2017

    [Discussion] Raising the mandatory ringsize in the v6 hardfork, September 2017

    TL;DR There is an edit at the bottom of this post highlighting what is going on because a lot has changed over many discussions, and better alternatives are being explored.

    You may want to grab a drink for this one...

    As we all know there will be a hardfork in September 2017 that will raise the mandatory ringsize to 4 based on the recommendations of MRL-4, but this paper was published before RingCT was found to have extraordinary savings in transaction size for transactions with larger ringsizes.

    We have 7 months to explore alternatives and I would like to discuss some viable options for raising the mandatory ringsize for the v5 hardfork, so that we do not need to again change it in a future hardfork unless certain circumstances arise.

    It is important to note that raising the ringsize of a transaction will increase the time it takes to verify transactions for nodes, but as far as I am aware this scales linearly(?). So this can be maintained to a reasonable degree and if we assume processor speeds continue to improve, then this problem does not greatly impact the scalability of the Monero network in comparison to the relative gains of privacy for its users. Optimizations in ring signatures and rangeproofs will certainly ease these concerns.

    There are two options I would like to explore:

    1. Simply raising the mandatory ringsize to a value greater than 4 that can take full advantage of RingCT's optimizations in transaction size without sacrificing very much performance. Ring size 8 could for example easily be used instead of 4 and still have very good performance for example.

    and the more interesting option

    1. Raising the mandatory ringsize and have it be static so no other ringsizes are accepted in the Monero network. Static ringsizes 9, 12, or 15 would be good options and I will explain a bit more about why those ringsizes specifically are special later below.

    The first option would be simple to implement and the optimizations of RingCT would be immediately realized with very little added cost. However the second option will bolster privacy on the Monero network by a much higher degree. By enforcing only one valid ringsize for transactions this removes any confusion and complexity for new users who do not understand why you would want to increase the ringsize of a transaction if transactions in Monero are all already private. Since the protocol would be enforcing a static ringsize, then all transactions would be homogenous and would circumvent analysis of transactions by adversaries who may know that for example exchange x uses ringsize y for all their outgoing transactions, or that there is a user that regularly specifies atypical ringsizes like 41 for all their transactions. This removes a human element to transactions that could save people from unintentionally reducing their privacy as well as other users' privacy.

    In the future, businesses and services could be 'assigned' very specific ringsizes that would stick out on the blockchain for passive observers to more easily identify their outputs in other ring signatures, this is only hypothetical and one of many possible scenarios where irregular ringsizes could reduce privacy in the Monero network.

    I believe that this is a very valuable and natural addition to Monero since the protocol already makes decisions to protect its users like dynamic fees and randomly choosing their ring partners according to specific parameters. A static ringsize would just further streamline the user experience while defending against many attacks via passive analysis of ring signatures.

    In addition to the arguments I made for a static ringsize I will also propose a new output selection algorithm to assist a static ringsize. Going back to why I had specifically mentioned static ringsizes 9, 12, and 15 is because if a third of ring partners are chosen randomly from the past five days and the remaining two thirds of ring partners are chosen at random then a few narrow edge cases that would threaten privacy would be completely eliminated or at the very least much less impactful than only having a default ringsize 4.

    I will demonstrate these claims with some hypothetical scenarios using a ringsize of 12 as an example.

    Scenario 1: Alice sends Bob a transaction with an output that is two days old. In Alice's ring signature are four inputs from the past five days chosen by our output selection algorithm(plus Alice's real spend) and eight additional inputs chosen at random.

    Alice has complete financial privacy as her real output is masked with the other 12 ring partners without any major inconsistencies in our output selection algorithm. Since there is a chance at least one of those eight outputs chosen at random could have been from the last five days the additional recent output in the ring signature is not entirely suspicious. This will still be taken into account by passive observers since a lot of people will be spending money soon after it has been received. Possible scenarios where this would definitely question the legitimacy of randomly chosen outputs and directly threaten privacy is discussed in more depth later.

    Scenario 2: Same as Scenario 1 but instead Alice has an output that is one month old. Our output selection algorithm will again choose four random outputs from the past five days and eight outputs at random.

    Now the problem is Alice has an output that is older than the outputs that would be specified from the last five days and if the other eight random outputs do not coincide with the last five days then only four recent outputs will exist in the ring signature. This is a direct indication that none of those outputs is the real spent output because only four recent outputs would be chosen from our algorithm anyway, hence being fake. Luckily the other eight random outputs still mask Alice's real output so this scenario does not greatly threaten her privacy as the transaction would effectively still have the strength of ringsize 8 down from 12.

    Scenario 2 is less likely to occur if a larger timespan is chosen for recent outputs in our algorithm so the randomly chosen outputs have a higher chance to be in that timespan, but since money is typically spent within a short time after being received this will directly weaken the obfuscation of our recent outputs selected for a ring signature.

    The output inconsistencies in Scenario 2 cannot be solved very well without adding additional formality to the output selection algorithm making it easier to single out specific outputs that are not consistent with our output selection rules like in Scenario 2. With a ringsize of 12 at the very least an effective strength of ringsize 8 would still exist for a transaction.

    However if an observer were able to find inconsistencies within a transaction with multiple inputs, all or at least some, containing more than four outputs younger than five days old it is incredibly unlikely the other eight random outputs for each input's ring signature would contain very recent outputs. This would question the legitimacy of the eight other outputs older than five days giving the transaction a hypothetical strength equal to the number of outputs in the ring signature younger than five days old or at the absolute bare minimum the strength of ringsize 4.

    These scenarios will need to be accepted to exist and thankfully do not completely destroy the privacy of a transaction with poorly chosen ring partners by the output selection algorithm.

    Increasing the static ringsize would decrease the likelihood of these contradictions in ring signatures, but it is a tradeoff with transaction sizes. Ideally most transactions would be able to take full advantage of ringsize 12, but the privacy of ringsizes 4 and 8 can still be obtained in worst case scenarios.

    I personally prefer ringsize 12 because at the bare minimum when the output selection is not in your favour then at the very least ringsize 4 can still be obtained, which is the original ringsize scheduled for v5 hardfork. Ultimately any ringsize greater than 9 that is a multiple of 3 can be used and if we take into account optimizations of ring signatures and rangeproofs then even larger ringsizes, factors of 3s, could be considered.

    The privacy that would be gained with a static ringsize 12 far outweighs any short term scalability issues that may arise in my opinion and would be a boon to the privacy and security of the Monero network while having good safe guards for maintaining a minimum privacy level of ringsize 4.

    I hope valuable discussions can be made from this post and further optimizations that can further the security of the network can be discovered.

    Thanks for taking the time to read my writeup. Any input is greatly appreciated.

    EDIT: If anyone is just now finding this discussion and does not want to go through the entire backlog(I don't blame you ;) ) then to catch everyone up to speed what is happening right now is I have been surveying bitcoin transactions for the age of outputs and categorizing them by the last day, week, month, year, and older than a year to get the probability of these outputs being spent to help construct an output selection algorithm for Monero's ring signatures.

    After long discussions with @iamsmooth, having only one static ringsize may be a bit extreme and does not give a user the freedom to increase their ringsize for transactions. @moneromooo-monero mentioned possibly having three static ringsizes for users to choose from. I have been favoring having only three static ringsizes because of its similarity to users being able to choose three different fee options based on urgency, we could have three ringsize options based on paranoia for users to choose from.

    So for the time being we are just trying to narrow down what an output selection algorithm would look like. I have to thank @iamsmooth for giving critical feedback and nitpicking different ideas. There is no need to be increasing the ringsize from 4 after we come to a conclusion on a suitable output selection, however I still favor giving the mandatory ringsize a slight bump(to 6?) based on ringct savings in transaction size, but if there is no consensus for doing so ringsize 4 is still a strong option.

    opened by olarks 152
  • Building under Solaris aka SunOS (OpenIndiana Hipster 2017.04)

    Building under Solaris aka SunOS (OpenIndiana Hipster 2017.04)

    Hello. I'm trying to build monero under this OS with illumos kernel. Now I'm stuck at 90% before which I had to do many dirty hacks. Maybe you will merge them to the code later after some reworking. And FYI, I'm not a C-programmer.

    1. Preparation.
    pkg install git cmake gcc-49 pkg-config system/header <don't remember all packages>
    wget https://raw.githubusercontent.com/zeromq/cppzmq/master/zmq.hpp -O /usr/include/zmq.hpp
    git clone https://github.com/monero-project/monero.git
    

    And here are my build iterations of cd monero && make

    • Iteration 1 Result:
    make[3]: Entering directory '/root/monero.build/build/release'
    [  1%] Building C object external/miniupnpc/CMakeFiles/libminiupnpc-static.dir/igd_desc_parse.c.o
    In file included from /usr/include/stdio.h:37:0,
                     from /root/monero.build/external/miniupnpc/igd_desc_parse.c:10:
    /usr/include/sys/feature_tests.h:400:2: error: #error "Compiler or options invalid; UNIX 03 and POSIX.1-2001 applications       require the use of c99"
     #error "Compiler or options invalid; UNIX 03 and POSIX.1-2001 applications \
      ^
    make[3]: *** [external/miniupnpc/CMakeFiles/libminiupnpc-static.dir/build.make:63: external/miniupnpc/CMakeFiles/libminiupnpc-static.dir/igd_desc_parse.c.o] Error 1
    make[3]: Leaving directory '/root/monero.build/build/release'
    make[2]: *** [CMakeFiles/Makefile2:150: external/miniupnpc/CMakeFiles/libminiupnpc-static.dir/all] Error 2
    make[2]: Leaving directory '/root/monero.build/build/release'
    make[1]: *** [Makefile:141: all] Error 2
    make[1]: Leaving directory '/root/monero.build/build/release'
    make: *** [Makefile:63: release-all] Error 2
    

    Solution: Add next code in file external/miniupnpc/CMakeLists.txt in block if (NOT WIN32) line 35

      if (CMAKE_SYSTEM_NAME MATCHES "(SunOS|Solaris)")
        add_definitions (-D__EXTENSIONS__ -std=c99)
      endif ()
    
    • Iterarion 2 Result:
    [  5%] Building C object external/unbound/CMakeFiles/unbound.dir/services/cache/dns.c.o
    In file included from /root/monero.build/build/release/external/unbound/config.h:1173:0,
                     from /root/monero.build/external/unbound/services/cache/dns.c:41:
    /root/monero.build/external/unbound/compat/fake-rfc2553.h:52:0: warning: "_SS_MAXSIZE" redefined
     # define _SS_MAXSIZE 128 /* Implementation specific max size */
     ^
    In file included from /usr/include/sys/socket.h:48:0,
                     from /root/monero.build/build/release/external/unbound/config.h:918,
                     from /root/monero.build/external/unbound/services/cache/dns.c:41:
    /usr/include/sys/socket_impl.h:70:0: note: this is the location of the previous definition
     #define _SS_MAXSIZE 256 /* Implementation specific max size */
     ^
    In file included from /root/monero.build/build/release/external/unbound/config.h:1173:0,
                     from /root/monero.build/external/unbound/services/cache/dns.c:41:
    /root/monero.build/external/unbound/compat/fake-rfc2553.h:54:8: error: redefinition of ‘struct sockaddr_storage’
     struct sockaddr_storage {
            ^
    In file included from /usr/include/sys/socket.h:48:0,
                     from /root/monero.build/build/release/external/unbound/config.h:918,
                     from /root/monero.build/external/unbound/services/cache/dns.c:41:
    /usr/include/sys/socket_impl.h:96:8: note: originally defined here
     struct sockaddr_storage {
            ^
    In file included from /usr/include/sys/socket.h:48:0,
                     from /root/monero.build/build/release/external/unbound/config.h:918,
                     from /root/monero.build/external/unbound/services/cache/dns.c:41:
    /usr/include/sys/socket_impl.h:96:8: note: originally defined here
     struct sockaddr_storage {
            ^
    In file included from /root/monero.build/build/release/external/unbound/config.h:1173:0,
                     from /root/monero.build/external/unbound/services/cache/dns.c:41:
    /root/monero.build/external/unbound/compat/fake-rfc2553.h:68:8: error: redefinition of ‘struct in6_addr’
     struct in6_addr {
            ^
    In file included from /usr/include/sys/socket.h:53:0,
                     from /root/monero.build/build/release/external/unbound/config.h:918,
                     from /root/monero.build/external/unbound/services/cache/dns.c:41:
    /usr/include/netinet/in.h:105:8: note: originally defined here
     struct in6_addr {
            ^
    /root/monero.build/external/unbound/compat/fake-rfc2553.h:69:10: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘.’ toke
    n
      uint8_t s6_addr[16];
              ^
    In file included from /root/monero.build/build/release/external/unbound/config.h:1173:0,
                     from /root/monero.build/external/unbound/services/cache/dns.c:41:
    /root/monero.build/external/unbound/compat/fake-rfc2553.h:74:8: error: redefinition of ‘struct sockaddr_in6’
     struct sockaddr_in6 {
            ^
    In file included from /usr/include/sys/socket.h:53:0,
                     from /root/monero.build/build/release/external/unbound/config.h:918,
                     from /root/monero.build/external/unbound/services/cache/dns.c:41:
    /usr/include/netinet/in.h:419:8: note: originally defined here
     struct sockaddr_in6 {
            ^
    In file included from /root/monero.build/build/release/external/unbound/config.h:1173:0,
                     from /root/monero.build/external/unbound/services/cache/dns.c:41:
    /root/monero.build/external/unbound/compat/fake-rfc2553.h:136:8: error: redefinition of ‘struct addrinfo’
     struct addrinfo {
            ^
    In file included from /root/monero.build/external/unbound/compat/fake-rfc2553.h:45:0,
                     from /root/monero.build/build/release/external/unbound/config.h:1173,
                     from /root/monero.build/external/unbound/services/cache/dns.c:41:
    /usr/include/netdb.h:112:8: note: originally defined here
     struct addrinfo {
            ^
    *** Error code 1
    The following command caused the error:
    cd /root/monero.build/build/release/external/unbound && /usr/bin/gcc -DAUTO_INITIALIZE_EASYLOGGINGPP -DBLOCKCHAIN_DB=DB_LMDB -DDEFAULT
    _DB_TYPE=\"lmdb\" -DPER_BLOCK_CHECKPOINT -D_GNU_SOURCE -I/root/monero.build/external/easylogging++ -I/root/monero.build/src -I/root/mo
    nero.build/contrib/epee/include -I/root/monero.build/external -I/root/monero.build/external/unbound -I/root/monero.build/build/release
    /external/unbound -DNDEBUG -Ofast -o CMakeFiles/unbound.dir/services/cache/dns.c.o   -c /root/monero.build/external/unbound/services/c
    ache/dns.c
    <EXCLUDED>
    

    Problem in redefinition of structures sockaddr_storage, in6_addr, sockaddr_in6 and addrinfo in external/unbound/compat/fake-rfc2553.h after system headers in /usr/include. I studied structures in fake-rfc2553.h and decided to exclude them at all. So I commented out next code in external/unbound/config.h.cmake.in:

    #ifndef HAVE_GETADDRINFO
    struct sockaddr_storage;
    #include "compat/fake-rfc2553.h"
    #endif
    

    and next code in external/unbound/CMakeLists.txt:

    if (NOT HAVE_GETADDRINFO)
      list(APPEND compat_src
        compat/fake-rfc2553.c)
    endif ()
    
    • Iteration 3 Result:
    [ 30%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/chacha8.c.o
    In file included from /root/monero.build/src/common/int-util.h:33:0,
                     from /root/monero.build/src/crypto/chacha8.c:12:
    /root/monero.build/src/common/int-util.h:206:1: error: static assertion failed: "BYTE_ORDER is undefined. Perhaps, GNU extensions are
    not enabled"
     static_assert(false, "BYTE_ORDER is undefined. Perhaps, GNU extensions are not enabled");
     ^
    In file included from /root/monero.build/src/crypto/chacha8.c:12:0:
    /root/monero.build/src/common/int-util.h:209:5: warning: "BYTE_ORDER" is not defined [-Wundef]
     #if BYTE_ORDER == LITTLE_ENDIAN
         ^
    <SIMILAR ERRORS EXCLUDED>
    cc1: all warnings being treated as errors
    *** Error code 1
    The following command caused the error:
    cd /root/monero.build/build/release/src/crypto && /usr/bin/gcc -DAUTO_INITIALIZE_EASYLOGGINGPP -DBLOCKCHAIN_DB=DB_LMDB -DDEFAULT_DB_TY
    PE=\"lmdb\" -DMINIUPNP_STATICLIB -DPER_BLOCK_CHECKPOINT -DSTATICLIB -DUPNP_STATIC -I/root/monero.build/external/easylogging++ -I/root/
    monero.build/src -I/root/monero.build/contrib/epee/include -I/root/monero.build/external -I/root/monero.build/external/unbound/libunbo
    und -I/root/monero.build/external/db_drivers/liblmdb -fno-strict-aliasing -maes -std=c11 -D_GNU_SOURCE   -Wall -Wextra -Wpointer-arith
     -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-err
    or=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Waggregate-re
    turn -Wnested-externs -Wold-style-definition -Wstrict-prototypes -march=x86-64   -fno-strict-aliasing -DNDEBUG -Ofast    -Werror -o CM
    akeFiles/obj_cncrypto.dir/chacha8.c.o   -c /root/monero.build/src/crypto/chacha8.c
    make: Fatal error: Command failed for target `src/crypto/CMakeFiles/obj_cncrypto.dir/chacha8.c.o'
    Current working directory /root/monero.build/build/release
    *** Error code 1
    The following command caused the error:
    make -f src/crypto/CMakeFiles/obj_cncrypto.dir/build.make src/crypto/CMakeFiles/obj_cncrypto.dir/build
    make: Fatal error: Command failed for target `src/crypto/CMakeFiles/obj_cncrypto.dir/all'
    <EXCLUDED>
    

    Solution: add next code in src/common/int-util.h before #if defined(__ANDROID__) line 39:

    #if defined(__sun) && defined(__SVR4)
    #include <endian.h>
    #endif
    
    • Iteration 4 Result:
    [ 30%] Building CXX object src/crypto/CMakeFiles/obj_cncrypto.dir/crypto.cpp.o
    In file included from /usr/include/boost/thread/detail/platform.hpp:17:0,
                     from /usr/include/boost/thread/mutex.hpp:12,
                     from /root/monero.build/src/crypto/crypto.cpp:37:
    /usr/include/boost/config/requires_threads.hpp:47:5: error: #error "Compiler threading support is not turned on. Please set the correc
    t command line options for threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
     #   error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (Linux),
    -pthreads (Solaris) or -mthreads (Mingw32)"
         ^
    <EXCLUDED>
    *** Error code 1
    The following command caused the error:
    cd /root/monero.build/build/release/src/crypto && /usr/bin/c++  -DAUTO_INITIALIZE_EASYLOGGINGPP -DBLOCKCHAIN_DB=DB_LMDB -DDEFAULT_DB_T
    YPE=\"lmdb\" -DMINIUPNP_STATICLIB -DPER_BLOCK_CHECKPOINT -DSTATICLIB -DUPNP_STATIC -I/root/monero.build/external/easylogging++ -I/root
    /monero.build/src -I/root/monero.build/contrib/epee/include -I/root/monero.build/external -I/root/monero.build/external/unbound/libunb
    ound -I/root/monero.build/external/db_drivers/liblmdb -DZMQ_STATIC -fno-strict-aliasing -maes -std=c++11 -D_GNU_SOURCE   -Wall -Wextra
     -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-v
    ariable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cp
    p -Wno-reorder -Wno-missing-field-initializers -march=x86-64   -fno-strict-aliasing -DNDEBUG -Ofast    -Werror -o CMakeFiles/obj_cncry
    pto.dir/crypto.cpp.o -c /root/monero.build/src/crypto/crypto.cpp
    make: Fatal error: Command failed for target `src/crypto/CMakeFiles/obj_cncrypto.dir/crypto.cpp.o'
    <EXCLUDED>
    

    Solution: add next code in monero/CMakeLists.txt before if (UNIX AND NOT APPLE) line 323:

    if (CMAKE_SYSTEM_NAME MATCHES "(SunOS|Solaris)")
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthreads")
    endif ()
    
    • Iteration 5 Result:
    [ 34%] Building C object src/crypto/CMakeFiles/obj_cncrypto.dir/random.c.o
    /root/monero.build/src/crypto/random.c:99:1: error: destructor priorities are not supported
     FINALIZER(deinit_random) {
     ^
    /root/monero.build/src/crypto/random.c:107:1: error: constructor priorities are not supported
     INITIALIZER(init_random) {
     ^
    *** Error code 1
    The following command caused the error:
    cd /root/monero.build/build/release/src/crypto && /usr/bin/gcc -DAUTO_INITIALIZE_EASYLOGGINGPP -DBLOCKCHAIN_DB=DB_LMDB -DDEFAULT_DB_TYPE=\"lmdb\" -DMINIUPNP_STATICLIB -DPER_BLOCK_CHECKPOINT -DSTATICLIB -DUPNP_STATIC -I/root/monero.build/external/easylogging++ -I/root/monero.build/src -I/root/monero.build/contrib/epee/include -I/root/monero.build/external -I/root/monero.build/external/unbound/libunbound -I/root/monero.build/external/db_drivers/liblmdb -fno-strict-aliasing -maes -std=c11 -D_GNU_SOURCE   -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Waggregate-return -Wnested-externs -Wold-style-definition -Wstrict-prototypes -march=x86-64   -fno-strict-aliasing -DNDEBUG -Ofast    -Werror -o CMakeFiles/obj_cncrypto.dir/random.c.o   -c /root/monero.build/src/crypto/random.c
    make: Fatal error: Command failed for target `src/crypto/CMakeFiles/obj_cncrypto.dir/random.c.o'
    

    Solution (found on https://github.com/xianyi/OpenBLAS/issues/700): remove (101) in src/crypto/initializer.h lines 35 and 36. I understand that it's a dirty hack but I don't know how to write else..if there. Need a better solution.

    • Iteration 6 Result:
    [ 39%] Building CXX object src/common/CMakeFiles/obj_common.dir/util.cpp.o
    /root/monero.build/src/common/util.cpp: In function ‘std::string tools::get_nix_version_display_string()’:
    /root/monero.build/src/common/util.cpp:404:11: error: expected ‘;’ before ‘un’
       utsname un;
               ^
    /root/monero.build/src/common/util.cpp:404:13: error: statement has no effect [-Werror=unused-value]
       utsname un;
                 ^
    /root/monero.build/src/common/util.cpp:406:13: error: ‘un’ was not declared in this scope
       if(uname(&un) < 0)
                 ^
    /root/monero.build/src/common/util.cpp:408:26: error: ‘un’ was not declared in this scope
       return std::string() + un.sysname + " " + un.version + " " + un.release;
                              ^
    /root/monero.build/src/common/util.cpp:409:1: error: control reaches end of non-void function [-Werror=return-type]
     }
     ^
    cc1plus: all warnings being treated as errors
    *** Error code 1
    The following command caused the error:
    cd /root/monero.build/build/release/src/common && /usr/bin/c++  -DAUTO_INITIALIZE_EASYLOGGINGPP -DBLOCKCHAIN_DB=DB_LMDB -DDEFAULT_DB_TYPE=\"lmdb\" -DMINIUPNP_STATICLIB -DPER_BLOCK_CHECKPOINT -DSTATICLIB -DUPNP_STATIC -I/root/monero.build/external/easylogging++ -I/root/monero.build/src -I/root/monero.build/contrib/epee/include -I/root/monero.build/external -I/root/monero.build/external/unbound/libunbound -I/root/monero.build/external/db_drivers/liblmdb -DZMQ_STATIC -pthreads -fno-strict-aliasing -maes -std=c++11 -D_GNU_SOURCE   -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Wno-reorder -Wno-missing-field-initializers -march=x86-64   -fno-strict-aliasing -DNDEBUG -Ofast    -Werror -o CMakeFiles/obj_common.dir/util.cpp.o -c /root/monero.build/src/common/util.cpp
    make: Fatal error: Command failed for target `src/common/CMakeFiles/obj_common.dir/util.cpp.o'
    

    Solution: change utsname un; in src/common/util.cpp to struct utsname un; line 404. I don't remember how I came up with this. Dirty hack. Need a better solution.

    • Iteration 7 Result:
    [ 45%] Building CXX object src/cryptonote_core/CMakeFiles/obj_cryptonote_core.dir/blockchain.cpp.o
    In file included from /usr/include/boost/asio/detail/socket_types.hpp:81:0,
                     from /usr/include/boost/asio/detail/impl/pipe_select_interrupter.ipp:31,
                     from /usr/include/boost/asio/detail/pipe_select_interrupter.hpp:82,
                     from /usr/include/boost/asio/detail/select_interrupter.hpp:27,
                     from /usr/include/boost/asio/detail/dev_poll_reactor.hpp:31,
                     from /usr/include/boost/asio/detail/reactor.hpp:25,
                     from /usr/include/boost/asio/detail/impl/task_io_service.ipp:24,
                     from /usr/include/boost/asio/detail/task_io_service.hpp:198,
                     from /usr/include/boost/asio/impl/io_service.hpp:71,
                     from /usr/include/boost/asio/io_service.hpp:767,
                     from /root/monero.build/src/cryptonote_core/blockchain.h:32,
                     from /root/monero.build/src/cryptonote_core/blockchain.cpp:39:
    /usr/include/net/if.h:97:9: error: template argument required for ‘struct map’
      struct map *if_memmap;  /* rmap for interface specific memory */
             ^
    *** Error code 1
    The following command caused the error:
    cd /root/monero.build/build/release/src/cryptonote_core && /usr/bin/c++  -DAUTO_INITIALIZE_EASYLOGGINGPP -DBLOCKCHAIN_DB=DB_LMDB -DDEFAULT_DB_TYPE=\"lmdb\" -DMINIUPNP_STATICLIB -DPER_BLOCK_CHECKPOINT -DSTATICLIB -DUPNP_STATIC -I/root/monero.build/external/easylogging++ -I/root/monero.build/src -I/root/monero.build/contrib/epee/include -I/root/monero.build/external -I/root/monero.build/external/unbound/libunbound -I/root/monero.build/external/db_drivers/liblmdb -DZMQ_STATIC -pthreads -fno-strict-aliasing -maes -std=c++11 -D_GNU_SOURCE   -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Wno-reorder -Wno-missing-field-initializers -march=x86-64   -fno-strict-aliasing -DNDEBUG -Ofast    -Werror -o CMakeFiles/obj_cryptonote_core.dir/blockchain.cpp.o -c /root/monero.build/src/cryptonote_core/blockchain.cpp
    make: Fatal error: Command failed for target `src/cryptonote_core/CMakeFiles/obj_cryptonote_core.dir/blockchain.cpp.o'
    

    Solution: move #include "blockchain.h" in src/cryptonote_core/blockchain.cpp higher in the includes (for example to the line 36).

    • Iteration 8 Result:
    [ 46%] Building CXX object src/cryptonote_core/CMakeFiles/obj_cryptonote_core.dir/tx_pool.cpp.o
    /usr/include/net/if.h:97:9: error: template argument required for ‘struct map’
      struct map *if_memmap;  /* rmap for interface specific memory */
             ^
    

    Solution (same as in previous iteration): move #include "blockchain.h" in src/cryptonote_core/tx_pool.cpp higher in the includes) for example to the line 36).

    • Iteration 9 Result:
    [ 48%] Linking CXX static library libblockchain_db.a
    [ 48%] Built target blockchain_db
    [ 48%] Generating blocks.o
    ld: fatal: file binary: open failed: No such file or directory
    *** Error code 1
    The following command caused the error:
    cd /root/monero.build/build/release/src/blocks && cd /root/monero.build/src/blocks && /usr/bin/ld -r -b binary -o /root/monero.build/build/release/src/blocks/blocks.o blocks.dat
    make: Fatal error: Command failed for target `src/blocks/blocks.o'
    

    Problem is in link editor:

    # /usr/bin/ld --version
    ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1755 (illumos)
    # /usr/gnu/bin/ld --version
    GNU ld (GNU Binutils) 2.25.1
    Copyright (C) 2014 Free Software Foundation, Inc.
    

    In Solaris version option '-b' have other purpose not the binary format as in GNU version. So I fixed this by overriding CMAKE_LINKER in src/blocks/CMakeLists.txt line 29:

    if (CMAKE_SYSTEM_NAME MATCHES "(SunOS|Solaris)")
      set(CMAKE_LINKER "/usr/gnu/bin/ld")
    endif ()
    
    • Iteration 10 Result:
    [ 55%] Building CXX object tests/core_tests/CMakeFiles/coretests.dir/block_reward.cpp.o
    In file included from /usr/include/boost/asio/detail/socket_types.hpp:81:0,
                     from /usr/include/boost/asio/detail/impl/pipe_select_interrupter.ipp:31,
                     from /usr/include/boost/asio/detail/pipe_select_interrupter.hpp:82,
                     from /usr/include/boost/asio/detail/select_interrupter.hpp:27,
                     from /usr/include/boost/asio/detail/dev_poll_reactor.hpp:31,
                     from /usr/include/boost/asio/detail/reactor.hpp:25,
                     from /usr/include/boost/asio/detail/impl/task_io_service.ipp:24,
                     from /usr/include/boost/asio/detail/task_io_service.hpp:198,
                     from /usr/include/boost/asio/impl/io_service.hpp:71,
                     from /usr/include/boost/asio/io_service.hpp:767,
                     from /root/monero.build/contrib/epee/include/net/net_utils_base.h:32,
                     from /root/monero.build/src/p2p/net_node_common.h:34,
                     from /root/monero.build/src/cryptonote_core/cryptonote_core.h:39,
                     from /root/monero.build/tests/core_tests/chaingen.h:51,
                     from /root/monero.build/tests/core_tests/block_reward.cpp:31:
    /usr/include/net/if.h:97:9: error: template argument required for ‘struct map’
      struct map *if_memmap;  /* rmap for interface specific memory */
             ^
    

    Again as in iterations 7 and 8. I could not resolve it by moving up header include in various files so I just forgot about tests, removed 'build' dir and from now building with make release-static.

    • Iteration 11 Result:
    [ 75%] Building CXX object src/rpc/CMakeFiles/obj_daemon_rpc_server.dir/daemon_handler.cpp.o
    In file included from /usr/include/boost/asio/detail/socket_types.hpp:81:0,
                     from /usr/include/boost/asio/detail/impl/pipe_select_interrupter.ipp:31,
                     from /usr/include/boost/asio/detail/pipe_select_interrupter.hpp:82,
                     from /usr/include/boost/asio/detail/select_interrupter.hpp:27,
                     from /usr/include/boost/asio/detail/dev_poll_reactor.hpp:31,
                     from /usr/include/boost/asio/detail/reactor.hpp:25,
                     from /usr/include/boost/asio/detail/impl/task_io_service.ipp:24,
                     from /usr/include/boost/asio/detail/task_io_service.hpp:198,
                     from /usr/include/boost/asio/impl/io_service.hpp:71,
                     from /usr/include/boost/asio/io_service.hpp:767,
                     from /root/monero.build/contrib/epee/include/net/net_utils_base.h:32,
                     from /root/monero.build/src/p2p/net_node_common.h:34,
                     from /root/monero.build/src/cryptonote_core/cryptonote_core.h:39,
                     from /root/monero.build/src/rpc/daemon_handler.h:34,
                     from /root/monero.build/src/rpc/daemon_handler.cpp:29:
    /usr/include/net/if.h:97:9: error: template argument required for ‘struct map’
      struct map *if_memmap;  /* rmap for interface specific memory */
             ^
    

    And again... Solution: move #include "cryptonote_core/cryptonote_core.h" higher in src/rpc/daemon_handler.h line 31.

    • Iteration 12 Result:
    [ 84%] Building CXX object src/wallet/CMakeFiles/obj_wallet.dir/wallet2.cpp.o
    In file included from /usr/include/boost/asio/detail/socket_types.hpp:81:0,
                     from /usr/include/boost/asio/detail/impl/pipe_select_interrupter.ipp:31,
                     from /usr/include/boost/asio/detail/pipe_select_interrupter.hpp:82,
                     from /usr/include/boost/asio/detail/select_interrupter.hpp:27,
                     from /usr/include/boost/asio/detail/dev_poll_reactor.hpp:31,
                     from /usr/include/boost/asio/detail/reactor.hpp:25,
                     from /usr/include/boost/asio/detail/impl/task_io_service.ipp:24,
                     from /usr/include/boost/asio/detail/task_io_service.hpp:198,
                     from /usr/include/boost/asio/impl/io_service.hpp:71,
                     from /usr/include/boost/asio/io_service.hpp:767,
                     from /usr/include/boost/asio/basic_io_object.hpp:19,
                     from /usr/include/boost/asio/basic_socket.hpp:20,
                     from /usr/include/boost/asio/basic_datagram_socket.hpp:20,
                     from /usr/include/boost/asio.hpp:21,
                     from /root/monero.build/contrib/epee/include/net/net_helper.h:39,
                     from /root/monero.build/contrib/epee/include/net/http_client.h:40,
                     from /root/monero.build/src/wallet/wallet2.h:46,
                     from /root/monero.build/src/wallet/wallet2.cpp:41:
    /usr/include/net/if.h:97:9: error: template argument required for ‘struct map’
      struct map *if_memmap;  /* rmap for interface specific memory */
             ^
    

    Same problem... Solution: this time move #include "net/http_client.h" higher in src/wallet/wallet2.h line 35.

    • Iteration 13 For now it is my last iteration in which I completely stuck. Result:
    [ 90%] Linking CXX executable ../../bin/monero-wallet-rpc
    Undefined                       first referenced
     symbol                             in file
    bind                                ../../external/unbound/libunbound.a(outside_network.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    recv                                ../../external/unbound/libunbound.a(netevent.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    send                                ../../external/unbound/libunbound.a(netevent.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    __xnet_connect                      CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    getservbyname                       ../../external/unbound/libunbound.a(str2wire.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    if_indextoname                      CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    __xnet_socket                       CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    __xnet_getsockopt                   CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    getsockname                         CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    accept                              CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    listen                              CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    if_nametoindex                      CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    sendto                              ../../external/unbound/libunbound.a(netevent.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    socket                              ../../external/unbound/libunbound.a(outside_network.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    getprotobyname                      ../../external/unbound/libunbound.a(str2wire.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    getprotobynumber                    ../../external/unbound/libunbound.a(wire2str.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    setsockopt                          CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    getsockopt                          ../../external/unbound/libunbound.a(netevent.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    connect                             ../../external/unbound/libunbound.a(outside_network.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    __xnet_getaddrinfo                  CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    getaddrinfo                         ../../external/unbound/libunbound.a(listen_dnsport.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    getpeername                         CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    recvfrom                            ../../external/unbound/libunbound.a(netevent.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    freeaddrinfo                        CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    inet_addr                           ../../contrib/epee/src/libepee.a(string_tools.cpp.o)  (symbol belongs to implicit dependency /lib/libnsl.so.1)
    inet_pton                           CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libnsl.so.1)
    inet_ntoa                           ../../contrib/epee/src/libepee.a(string_tools.cpp.o)  (symbol belongs to implicit dependency /lib/libnsl.so.1)
    inet_ntop                           CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libnsl.so.1)
    __xnet_bind                         CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    gai_strerror                        ../../external/unbound/libunbound.a(listen_dnsport.c.o)  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    __xnet_recvmsg                      CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    __xnet_sendmsg                      CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    shutdown                            CMakeFiles/wallet_rpc_server.dir/wallet_rpc_server.cpp.o  (symbol belongs to implicit dependency /lib/libsocket.so.1)
    ld: fatal: symbol referencing errors. No output written to ../../bin/monero-wallet-rpc
    collect2: error: ld returned 1 exit status
    *** Error code 1
    The following command caused the error:
    cd /root/monero.build/build/release/src/wallet && /usr/bin/cmake -E cmake_link_script CMakeFiles/wallet_rpc_server.dir/link.txt --verbose=
    make: Fatal error: Command failed for target `bin/monero-wallet-rpc'
    Current working directory /root/monero.build/build/release
    *** Error code 1
    The following command caused the error:
    make -f src/wallet/CMakeFiles/wallet_rpc_server.dir/build.make src/wallet/CMakeFiles/wallet_rpc_server.dir/build
    make: Fatal error: Command failed for target `src/wallet/CMakeFiles/wallet_rpc_server.dir/all'
    Current working directory /root/monero.build/build/release
    *** Error code 1
    The following command caused the error:
    make -f CMakeFiles/Makefile2 all
    make: Fatal error: Command failed for target `all'
    Current working directory /root/monero.build/build/release
    *** Error code 1
    make: Fatal error: Command failed for target `release-static'
    

    I suspect that problem in my excluded fake-rfc2553 in unbound module. But my brain is blowed up already and I can't invent nothing anymore.

    So can anybody help me to move forward or fix my hacks? Perhaps I'm doing wrong something.

    resolved 
    opened by acid-jack 104
  • Fail to build on PPC64

    Fail to build on PPC64

    Seems like this is the cause:

    cc1: error: unrecognized command line option '-maes'
    cc1: error: unrecognized command line option '-march=native'
    

    Full log: https://kojipkgs.fedoraproject.org//work/tasks/3387/27023387/build.log

    opened by hegjon 103
  • Integrate with I2P-Java via libsam3

    Integrate with I2P-Java via libsam3

    I2P-Java is a relatively mature project with active developers.

    A few years ago, it would have been unthinkable to have to ask people to separately install a 200 MB JVM on their machine before being able to run a Monero wallet that wanted to route connections through I2P-Java.

    Things have changed since then. Java 9 implemented modularization to allow zero dependency native apps with small footprints. This brings the footprint of an app with a bundled JVM down to as low as 22 MB (11 MB with compression). The end user will have no idea they're running a JVM, and no JVM will be installed. This means no conflicts with any other JVMs they may previously have installed. Even better, we now have the open source (GPLv2) OpenJDK. See https://steveperkins.com/using-java-9-modularization-to-ship-zero-dependency-native-apps/

    zab_, one of the I2P developers, has noted in the Monero reddit that we could interface with I2P-Java via the SAM library https://github.com/i2p/libsam3 or via the lower level I2CP protocol https://geti2p.net/en/docs/protocol/i2cp (zab_'s comment here).

    invalid 
    opened by knaccc 95
  • [v13] Ledger wallet doesn’t open sometimes (libhidapi)

    [v13] Ledger wallet doesn’t open sometimes (libhidapi)

    This issue is quite minor, simply opening the wallet again fixes the issue. It has happened a couple of times now so I’ve created an issue to document it.

    [email protected] ~/d/m/b/D/l/r/bin> ./monero-wallet-cli --wallet-file ledger
    2018-10-08 20:09:40,705 INFO  [default] Page size: 4096
    This is the command line monero wallet. It needs to connect to a monero
    daemon to work correctly.
    WARNING: Do not reuse your Monero keys on another fork, UNLESS this fork has key reuse mitigations built in. Doing so will harm your privacy.
    
    Monero 'Beryllium Bullet' (v0.13.0.1-rc-ac567452)
    Logging to ./monero-wallet-cli.log
    Wallet password: 
    Error: failed to load wallet: Wrong sequence_idx
    

    /cc @cslashm

    resolved 
    opened by selsta 83
  • cryptonote tweak v2.2

    cryptonote tweak v2.2

    This is a proposed tweak to the cryptonote algorithm for the next release. This was designed to "augment" CNv2, and reduce the chances of pre-built boards for those changes. Advantages:

    • Works with or without CNv2 changes by @SChernykh .
    • Any manufactured boards that implement one pass of the primary loop in the original, v1, or CNv2 algorithm is unlikely to work.
    • Any manufactured boards that have an implementation of the 8-byte multiply then 8-byte add routine (which could be leveraged in in v0, v1, or v2) is unlikely to work.
    • XORing was used because it is not distributive or associative over addition or multiplication. So XOR should require an order for the operations around the multiply/add sections of the original and CNv2 design.

    Negatives:

    • Any existing design for the original, v1, or CNv2 is probably easy to update.
    • Any highly custom RISC/microcoded chip is unlikely to have much additional penalty (i.e. if some chips were designed for use with CNv2 instructions, this doesn't change performance much).

    Feedback from the community is strongly encouraged. Possible additional techniques could involve mixing information from earlier stages of the pipeline or CNv2 stages.

    opened by vtnerd 82
  • [Discussion] Move to a Fixed Ringsize

    [Discussion] Move to a Fixed Ringsize

    I would like to receive feedback on moving to a fixed ringsize for the September 2018 (v8) protocol upgrade (hardfork). This will happen regardless of the selected ringsize. The current minimum ringsize is 7.

    Scope of Discussion

    This discussion includes the impact of setting a mandatory ringsize and support for a mandatory ringsize in wallet software and merchant services (eg: CLI, GUI, MyMonero, and Monero Integrations).

    Please keep all comments and discussion related to these topics only, not the broader issues of different ringsizes. However, if you support this proposal under certain situations, such as supporting only if the ringsize is greater than x, you can comment with that information.

    Major reasons for the change:

    1. Few people use the non-default ringsize. At the time of writing, >96% of transactions in the past month used a ringsize <10 [1]. This is consistent with other findings where the minimum ringsize is used for the vast majority of transactions.

    2. Non-default ringsizes reduce entropy and therefore decrease privacy. Ringsize is an important piece of metadata, and having people use different values allows users to more easily be identified.

    3. Unusual ringsizes for multiple transactions can be linked. If a user sends multiple transactions with an atypical ringsize, then it is likely that these transactions are associated with each other. If this behavior is not permitted, users will not have their transactions linked this way.

    4. Non-default ringsizes complicate research. Having exceptions to the number of decoys used complicates analysis on the effectiveness of Monero's privacy claims. Most analyses to-date assumed that all transactions use the minimum ringsize.

    Major reasons against the change

    1. A configurable ringsize provides flexibility. If a user would like to send transactions with a different ringsize for some purpose, they are able to do with a configurable ringsize.

    2. Increasing ringsize increases privacy. Some people believe that increasing the ringsize increases privacy. While this is strictly true since there are more decoys included in the ring signature, the possibility of leaked metadata typically results in the opposite effect.

    3. Support for services using non-default ringsizes. Users may be upset if they are unable to send transactions from outdated wallet software.


    Overall, I believe that the pros outweigh the cons. I recommend setting a fixed ringsize in the September protocol upgrade (hardfork) and updating the CLI and GUI to support only a single ringsize.

    opened by SamsungGalaxyPlayer 82
  • Cannot empty wallet balance (dust)

    Cannot empty wallet balance (dust)

    Hi,

    This is my first post on Monero. I am reporting a strange behavior that I recently found, which I likely find a bug. Let me detail as below:

    Assume a wallet with 6 unspent outputs (under account Index: 0, 5 sub-addresses and 1 primary address, with balances as below:

    1. 0.000000001000
    2. 0.000000001000
    3. 0.000000001000
    4. 0.000000001000
    5. 0.000000001000
    6. 0.100000000000
    

    Notice, 5 of the above addresses have negligible amount. Negligible, with respect to "network fee" i.e. (~0.000005 XMR).

    As funds sit on transactions' unspent outputs and in principle, a single transaction should be able to aggregate and spend outputs from multiple addresses (and by extension from multiple accounts). However, in the above scenario when the balance at a "sub-address" is less than the "network fee", that output is not being spent.

    I also validated this by splitting an output into multiple small chunks and sweeping it off my wallet. I realized later this was the exact problem as posted below, the reason the wallet is not being emptied (off dust) in spite of adding sufficient amount to the wallet to clear it up. A balance of 000000005000 XMR is not possible to be spent.

    https://www.reddit.com/r/Monero/comments/wcaykc/sadly_my_monero_practically_lost_forever/

    This has three potential problems going forward:

    1. People donating very small amounts to an address, would forever remain unspent at that address
    2. Reduces Monero supply with growing adoption
    3. This can become an issue when the network fee increases in future, thus blocking out greater amounts

    This is just like saying cent, nickel and dime have no value today and cannot be spent. This should not be the case for digital money.

    Looking forward to any views.

    Cheers, aFungible

    opened by afungible 4
  • GUI: multisig api support

    GUI: multisig api support

    Rebasing and updating #7357. Not too sure what else needs to fixed. I only added a check for return value for load_from_file in wallet.cpp.

    Reference: GUI

    opened by reemuru 0
  • failed to get output distribution

    failed to get output distribution

    Monero-rpc version: Monero Fluorine Fermi (v0.18.0.0-release)

    I am using method transfer to send out some funds, however it seems this cannot be processed and I am receiving this error. Also i posted logs from rpc-daemon.

    { "error": { "code": -4, "message": "failed to get output distribution" }, "id": "0", "jsonrpc": "2.0"

    Aug 02 16:29:54 vanilla monero-wallet-rpc[5935]: 2022-08-02 14:29:54.022 E reorg_depth > m_max_reorg_depth. THROW EXCEPTION: error::reorg_depth_error Aug 02 16:29:54 vanilla monero-wallet-rpc[5935]: 2022-08-02 14:29:54.023 E Error parsing blocks: reorg exceeds maximum allowed depth, use 'set max-reorg-depth N' to allow it, reorg depth: 45478 Aug 02 16:29:54 vanilla monero-wallet-rpc[5935]: 2022-08-02 14:29:54.023 E pull_blocks failed, try_count=3 Aug 02 16:29:54 vanilla monero-wallet-rpc[5935]: 2022-08-02 14:29:54.026 E Exception at while refreshing, what=proxy exception in refresh thread Aug 02 16:29:57 vanilla monero-wallet-rpc[5935]: 2022-08-02 14:29:57.986 W Requested ring size 1 too low, using 16 Aug 02 16:29:58 vanilla monero-wallet-rpc[5935]: 2022-08-02 14:29:58.055 W amount=1.000000000000, real_output=0, real_output_in_tx_index=0, indexes: 821358 2085599 2400787 3257817 3430451 3442115 3454195 3466340 3472283 3473324 3473878 3476919 3477810 3478906 3479149 3479517 Aug 02 16:29:58 vanilla monero-wallet-rpc[5935]: 2022-08-02 14:29:58.057 W amount=1.000000000000, real_output=0, real_output_in_tx_index=0, indexes: 821358 2085599 2400787 3257817 3430451 3442115 3454195 3466340 3472283 3473324 3473878 3476919 3477810 3478906 3479149 3479517 Aug 02 16:29:58 vanilla monero-wallet-rpc[5935]: 2022-08-02 14:29:58.093 E rct_offsets.back() <= max_rct_index. THROW EXCEPTION: error::get_output_distribution

    opened by bogdangainusa 20
  • Offline sign transactions requires

    Offline sign transactions requires "Try using export_outputs all" periodically.

    Periodically, on call 'sign_transfer', I get this message:

    "code": -42,
    "message": "Failed to sign unsigned tx: Imported outputs omit more outputs that we know of. Try using export_outputs all."
    

    Context: Wallet, have 2 addresses: Primary and one subaddress. Send coins to subaddress and then try to send coins from account. All transfers correct and completed. But after 1-3 transfers, I received this message.

    Offline wallet display only 'primary' address in response from call 'get_address'. I tried to call 'create_address' on view-only and offline wallet both. Got same result and same message after 1-3 transfers.

    Cannot understand reasons of that. When I'm using 'export_outputs' and 'import_outputs', I got 'num_imported': 0. But after 1-3 transactions, receive message specified above. But after 'export_outputs' with 'all': true and 'import_outputs' I got 'num_imported' with non zero value.

    I think is is not correct. Can you exlplain it?

    opened by nape-max 0
  • DNSSEC DS record out of date in dns_utils.cpp

    DNSSEC DS record out of date in dns_utils.cpp

    I believe the DS on the first line here is outdated (since 2019):

    https://github.com/monero-project/monero/blob/b6a029f222abada36c7bc6c65899a4ac969d7dee/src/common/dns_utils.cpp#L105-L106

    You can confirm this by using get_trust_anchor.py or looking at root-anchors.xml

    Originally posted by @sanderfoobar in https://github.com/monero-project/monero/issues/8452#issuecomment-1196066179

    opened by OrvilleRed 1
  • RockPro64 sync struggles

    RockPro64 sync struggles

    Hi guys

    I have a brand new RockPro64 running Arbian on eMMC and writing the data do an NVMe. I must have tried 10 times already with different degrees of progress (between about 10%-47%) before failure with different errors.

    The latest log:

    image

    popping blocks from the stack does not work:

    image

    my drive is not full yet: image

    my monerod.conf file has reasonably settings afaik: image

    Please tell me it cant be hardware related? It is brand new? Is there a way to test?

    opened by dawiepoolman 33
Releases(v0.18.0.0)
  • v0.18.0.0(Jul 20, 2022)

    Overview

    This is the v0.18.0.0 release of the Monero software. This major release is due to the August 13th network upgrade, which in turn adds support for Bulletproofs+, view tags, ring size increase to 16, and fee changes.

    Some highlights of this release are:

    • Consensus: add Bulletproofs+ to decrease transactions size and verification time (#7170)
    • Consensus: add view tags to outputs to reduce wallet scanning time (#8061)
    • Consensus: increase ring size to 16 (#8178)
    • Wallet: fee changes, adjusted dynamic block weight algorithm (#7819)
    • Wallet: multisig security fixes (#8149, #8220, #8432)
    • Wallet: disable multisig by default, enable with --enable-multisig-experimental (#8328)
    • Wallet: speed up transaction construction (#8046)
    • Wallet: avoid unnecessary DNS call, significantly speed up transaction construction in some cases (#8408)
    • Wallet: avoid hitting restricted /gettransactions RPC limit (#8388)
    • Wallet: decrease the amount of data exchanged for output export (#8179)
    • Wallet: fix spurious reorg detection with untrusted nodes (#8331)
    • Wallet: attempt to carve the fee from a partial payment early (#7342)
    • Wallet: try empty passphrase first when using Trezor (#7793)
    • Wallet: add new scan_tx command to scan for a list of transaction ids (#7312)
    • Wallet: add option to display wallet name, network mode to inactivity lock (#7153)
    • Wallet: add option for exporting tx keys (#8180)
    • Daemon: connection code rewrite, improve connectivity with SSL enabled (#8426)
    • Daemon: Tor / I2P tx-proxy connectivity fixes (#8324, #8330)
    • Daemon: fix a bug that causes transactions to not get re-relayed (#8326)
    • Daemon: improve cryptonote (block and tx) binary read performance (#7661)
    • Daemon: store RPC SSL key/cert for consistent authentication between runs (#7366)
    • Daemon: add support for storing database on a raw device/partition (#7774)
    • Daemon: add --max-connections-per-ip daemon option (#6877)
    • Daemon: full tx revalidation on fork boundaries (#7169)
    • Daemon: add proxy configuration support for bootstrap daemon (#7326)
    • RPC: fix describe_transfer for multiple transactions in a txset (#7767)
    • RPC: prevent --password-file from being used with --wallet-dir (#7823)
    • RPC: send confirmations in get_transactions result (#7662)
    • RPC: support regex for tags in `get_accounts (#8215)
    • Optimized keccak implementation (#8262)
    • Mac ARM64 release binaries (#8312)
    • Minor bug fixes and improvements

    Contributors for this Release

    This release was the direct result of 71 people who worked, largely unpaid and altruistically, to put out 420 commits containing 25749 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • lxop
    • dewyatt
    • OrvilleRed
    • ph4r05
    • erciccione
    • wirrickelliot
    • hMihaiDavid
    • hyc
    • JoeHCQ1
    • reemuru
    • drlef
    • suriyaa
    • ralphmapper
    • rating89us
    • tmoravec
    • TheCharlatan
    • timosarkar
    • rbrunner7
    • hinto.janaiyo
    • Xeonacid
    • gdmojo
    • perfect-daemon
    • benevanoff
    • xiphon
    • cabelo
    • codesoap
    • donkeydonkey
    • IceCruelStuff
    • glv2
    • gingeropolous
    • georgeleege
    • rex4539
    • fdov
    • AkritW
    • garth-xmr
    • Luxter77
    • im
    • kayabaNerve
    • normoes
    • iamamyth
    • 00-matt
    • mj-xmr
    • malbit
    • MoneroArbo
    • ndorf
    • zer-far
    • serhack
    • sethforprivacy
    • SomaticFanatic
    • LeoNero
    • SamsungGalaxyPlayer
    • malinero
    • Jkat
    • DangerOnTheRanger
    • kevinbarbour
    • kaythomas0
    • lza_menace
    • agowa338
    • luigi1111
    • woodser
    • jeffro256
    • sarangnoether
    • unseddd
    • SChernykh
    • moneromooo
    • loqs
    • tobtoht
    • UkoeHB
    • j-berman
    • selsta
    • vtnerd

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, Intel macOS, ARM Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.18.0.0.zip, 0b94088db62d0ded1d62d02a631b93978984acce337e01a802edd87e521dfcd1
    monero-win-x86-v0.18.0.0.zip, d55e86e1434a7e1cebd6931d21063e82c25a7126ddad8704f15501bb9a6e64a4
    monero-mac-x64-v0.18.0.0.tar.bz2, 6278a16ec64e2f261c2023c7be9bf904627bec58f8e4237b609eb4c842d9ff68
    monero-mac-armv8-v0.18.0.0.tar.bz2, 5f2261fe821e0fe88c193ad6251e68aeb7639e9b529952df823706d424a513d7
    monero-linux-x64-v0.18.0.0.tar.bz2, 74c440aa1e38a41ded0c4844b50f094146170ef83f1bd79d7e23d0d69b589faf
    monero-linux-x86-v0.18.0.0.tar.bz2, 14f8e658750b9301de3e4923355adf4bdfb33348d905b74a02191fa8147c247d
    monero-linux-armv8-v0.18.0.0.tar.bz2, 15cf4db8810d39104dbc230a985c7819ee96f9a7264d3f65e012b4bc36dc9f40
    monero-linux-armv7-v0.18.0.0.tar.bz2, 9af9842b6725f070e568b7bbf02277e6da2ae7a5a544b4b214c60125bab5c93b
    monero-android-armv8-v0.18.0.0.tar.bz2, 2656f968293b32cccf9daed36976e9331386950ad291f10f8061fc7bc87f8508
    monero-android-armv7-v0.18.0.0.tar.bz2, 8c6bb7df79e350275252967f08461eda6dfcd161c0d898722af467efa114f6d6
    monero-freebsd-x64-v0.18.0.0.tar.bz2, f556259345ac6e5c95421156693ec5011914355ebdc7d0d1bb97a0e6cdb29b5a
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
  • v0.17.3.2(Apr 29, 2022)

    Overview

    This is the v0.17.3.2 point release of the Monero software. This release adds support for Ledger Nano S Plus.

    Some highlights of this point release are:

    • Wallet: add support for Ledger Nano S Plus (#8239)
    • Wallet: balance includes unconfirmed payments (#8154, #8159)
    • Wallet: rename duplicate amount headers in CSV export (#8177)
    • Wallet: multisig key exchange update and code refactor (#8190)
    • Wallet: fix stagenet restore height estimation (#8196)
    • Daemon: replace outdated seed nodes (#8222, #8131)
    • Daemon: don't require --rpc-login with --rpc-access-control-origins (#8227)
    • Daemon: add a sanity check to RPC input data size (#8276) [Reported by m31007]
    • RPC: support authentication with set_daemon command (#8166)
    • Fix compilation on OpenBSD RISC-V (#8241)
    • Minor bug fixes

    Contributors for this Release

    This release was the direct result of 10 people who worked, largely unpaid and altruistically, to put out 28 commits containing 2294 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • luigi1111
    • Gingeropolous
    • woodser
    • jeffro256
    • hbs
    • moneromooo
    • reemuru
    • UkoeHB
    • erciccione
    • selsta

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.3.2.zip, 4912d97040af32c14a99e3db1357fc2516e4ed9a8bbf828fc636bcf558b03a65
    monero-win-x86-v0.17.3.2.zip, d2a2475943f75d33ec448844166a2cefe4b5fbbec63d3662682491fc32b2257b
    monero-mac-x64-v0.17.3.2.tar.bz2, 3631f84739ef73d0105d902639c75d66921da6c8dff5487e01a11bf523dd0cae
    monero-linux-x64-v0.17.3.2.tar.bz2, 1e54acd749265d9439d3733441c645d9b058316283c8f21cca2a333c1238cd16
    monero-linux-x86-v0.17.3.2.tar.bz2, 2b3365b740b5f35a42db1b032e9401b5e2ed4e6d9266eea4f5e01ea747952cb5
    monero-linux-armv8-v0.17.3.2.tar.bz2, 8e311714e97f2ac87bfd818abd5c4c605ca19ebda84a1edea93ec00a89d07e2e
    monero-linux-armv7-v0.17.3.2.tar.bz2, 76c101db6df7d923ab4cff074a0368e41dbc532b65f99ac983da2f1a199b4423
    monero-android-armv8-v0.17.3.2.tar.bz2, c9cfb2eaace60a2436f9b8db8a0fa6f2ae4318016d4e3fce1bd7ba5def2aeb97
    monero-android-armv7-v0.17.3.2.tar.bz2, 4dab5307d4635d2f18278fff09e54c24d89f5e4582fb77a2e5dea9733868c092
    monero-freebsd-x64-v0.17.3.2.tar.bz2, 097e72be2eca2944414ee0551ae9d9b560605ce208cd016cc3db24944407db91
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
  • v0.17.3.0(Dec 7, 2021)

    Overview

    This is the v0.17.3.0 point release of the Monero software. This release contains support for P2Pool.

    Some highlights of this point release are:

    • Add P2Pool support (#7964)
    • Daemon: allow socks5 proxy configuration with --proxy flag (#7326, #7616)
    • Daemon: fix race condition (#7873)
    • Daemon: fix spurious rejection of downloaded blocks (#8022)
    • Daemon: disable restricted RPC from getting output dist. for pre-rct outputs, fix DoS (#8084) [Reported by xfang/Haven]
    • Daemon: add seed nodes (#7664, #7753)
    • Wallet: fix key encryption when changing ask-password from 0/1 to 2 (#8014)
    • Wallet: fix precision when selecting decoys (#7798)
    • Wallet: decrease the "recent spend window" in decoy selection (#7993)
    • Wallet: don't truncate integrated address in CSV history export (#7961)
    • Wallet: chunk get_outs.bin RPC calls to avoid sanity limits (#7796)
    • Wallet: add human-readable error messages to Ledger (#8039)
    • RPC: fix get_transactions failing when not found (#7959)
    • RPC: add calcpow method (#8075)
    • Support wildcard CORS (#7952)
    • Fix missing logs (#7929)
    • Mac: fix compilation on ARM (#7435)
    • Mac: don't blow out stack on ARM64 in slow-hash (#8032)
    • LMDB: fix deadlock in resized detection (#7958)
    • Detect AES support dynamically to support ARMv8 binaries on Raspberry Pi (#8005)
    • Update following dependencies: OpenSSL, RandomX, unwind, hidapi, zeromq (#7933, #8002, #8037, #8049, #8056, #8072)
    • Minor bug fixes and performance improvements

    Contributors for this Release

    This release was the direct result of 18 people who worked, largely unpaid and altruistically, to put out 96 commits containing 1842 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • luigi1111
    • hyc
    • jtgrassie
    • tevador
    • woodser
    • xiphon
    • moneromooo
    • tobtoht
    • SChernykh
    • ndorf
    • anon
    • vtnerd
    • j-berman
    • UkoeHB
    • mj-xmr
    • rbrunner7
    • lalanza808
    • selsta

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.3.0.zip, a956d0c3ab77ebfc1d6229b77d68b739661b564d9a4115e5a549c3af146d6034
    monero-win-x86-v0.17.3.0.zip, 541189f5635f479605eda306a36d2beef1fbe68d6fdbfabce671d6e4c8970158
    monero-mac-x64-v0.17.3.0.tar.bz2, 53b7ed67f7077f27f470b4411478bef8b2bb9cf2cf480055dd1802a935983387
    monero-linux-x64-v0.17.3.0.tar.bz2, ac18ce3d1189410a5c175984827d5d601974733303411f6142296d647f6582ce
    monero-linux-x86-v0.17.3.0.tar.bz2, 586b9967d848eb31dd66bdb6d828bd3a640098434595a5933374d129b76958eb
    monero-linux-armv8-v0.17.3.0.tar.bz2, 8fdb5761f6f4345dc670d184144ce8c2fa56eeb1609ed169e79b202fcca20f7d
    monero-linux-armv7-v0.17.3.0.tar.bz2, da49d85ce2d52fc07846c58d0c58d6412f454f9d389bfa31eab9c1d49a1a13ed
    monero-android-armv8-v0.17.3.0.tar.bz2, 1fa1ba8a1e4c6a0e56d8f7afd788205ff0916a3670b9bf7992f1db0f9d7dec3e
    monero-android-armv7-v0.17.3.0.tar.bz2, a152c765386ee6ed670dbbfe1e90a8505040d5240a1c7c449bfa9845c4eb3e0d
    monero-freebsd-x64-v0.17.3.0.tar.bz2, d496811ee4687db0c448d30086700f485bf30512c38b50441e5cb5e76b6011a7
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
  • v0.17.2.3(Sep 1, 2021)

    Overview

    This is the v0.17.2.3 point release of the Monero software. This release contains a decoy selection bug fix that improves privacy.

    Some highlights of this point release are:

    • Apply gamma distribution from chain tip when selecting decoys (#7822)
    • Protect wallet from divide by 0 caused by integer truncation (#7846)
    • Ledger: speed up wallet generation, sync, and subaddress generation (#7744, #7745, #7788)
    • Fix optimize-coinbase for p2pool payouts (#7894)
    • Provide key images of spent outputs in wallet rpc (#7839)
    • Support freeze, thaw, and frozen in wallet rpc (#7838)
    • Remove blocked addresses/hosts from peerlist (#7810)
    • Stop adding more outputs than bulletproof allows, split transaction (#7825)
    • Set correct Ledger minimum version (#7789)
    • Fix crash with Trezor passphrase entered on computer (#7781)
    • Update randomx to v1.1.9 (#7734)
    • Fix boost 1.76.0 compatibility (#7736)
    • Fix rescan_bc keep_ki option (#7680)
    • Minor bug fixes

    Contributors for this Release

    This release was the direct result of 16 people who worked, largely unpaid and altruistically, to put out 87 commits containing 838 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • luigi1111
    • dsc
    • xiphon
    • benevanoff
    • moneromooo
    • anon
    • tobtoht
    • selsta
    • mj-xmr
    • sech1
    • hyc
    • ndorf
    • woodser
    • ph4r05
    • j-berman
    • rbrunner7

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.2.3.zip, ba3f4ec7429aacf3e712bdf21d1ceb800eb94e1e376be8b2360a01d88bb862be
    monero-win-x86-v0.17.2.3.zip, 460ac8722d713022c13970d96f9098eb04b5ca4f59cc9dc929cc2dd590045a1e
    monero-mac-x64-v0.17.2.3.tar.bz2, e479668f37a623691c75a9e4ec04f69af8fae0faaae5790760eb758f3955b1f7
    monero-linux-x64-v0.17.2.3.tar.bz2, 8069012ad5e7b35f79e35e6ca71c2424efc54b61f6f93238b182981ba83f2311
    monero-linux-x86-v0.17.2.3.tar.bz2, a93788591bd56753369a3f3171fbefb09387758c1e3a219e9265473031f0a35d
    monero-linux-armv8-v0.17.2.3.tar.bz2, bbff804dc6fe7d54895ae073f0abfc45ed8819d0585fe00e32080ed2268dc250
    monero-linux-armv7-v0.17.2.3.tar.bz2, 9100704b7d98d7bffbf7f72804c0c048f5e60f1dc9f6d4830c633dda3687c419
    monero-android-armv8-v0.17.2.3.tar.bz2, 20c32e90c7486bd1fb6948ebb8ee4802be26c902f96b12958429c8aa1c6579b5
    monero-android-armv7-v0.17.2.3.tar.bz2, 62f6172e3ebdc1266d5d882b8be4507cb3c8270b92ea6f06330077f6ef4f43e8
    monero-freebsd-x64-v0.17.2.3.tar.bz2, 6a2d7ae4303d4eca4fd6df3b230f4624ffa743629e85ad1b0c862326395ca93e
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
  • v0.17.2.0(Apr 11, 2021)

    Overview

    This is the v0.17.2.0 point release of the Monero software. This release contains bug fixes and daemon stability improvements.

    Some highlights of this point release are:

    • Only print blocked nodes once with --enable-dns-blocklist (#7295)
    • Fix Mac serialization compatibility issues (#7350)
    • Fix potential crash with Trezor (#7336)
    • Fix daemon crash with --db-sync-mode fastest (#7362)
    • Daemon stability improvements (#7309, #7390, #7459, #7615, #7621)
    • Bump OpenSSL dependency to 1.1.1k (#7637)
    • Minor bug fixes

    Contributors for this Release

    This release was the direct result of 9 people who worked, largely unpaid and altruistically, to put out 39 commits containing 1146 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • luigi1111
    • ndorf
    • moneromooo
    • anon
    • selsta
    • mj-xmr
    • sech1
    • hyc
    • ph4r05

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.2.0.zip, 71e531a0f799c80e3f6319888bd5b85a737091b9bd5d66366cae036163857caf
    monero-win-x86-v0.17.2.0.zip, c772070ebdfe9e0d6abda5073808e648e69f8c35f8010e66b80f45a6bdb01792
    monero-mac-x64-v0.17.2.0.tar.bz2, 2e95dc107ab0dab36f5544bec040180264256e45407c383cfb45cfe328fe42e0
    monero-linux-x64-v0.17.2.0.tar.bz2, 59e16c53b2aff8d9ab7a8ba3279ee826ac1f2480fbb98e79a149e6be23dd9086
    monero-linux-x86-v0.17.2.0.tar.bz2, e8a39be486549908c10524d851a006c21c30b1a49142586aff0a17e7c4d46077
    monero-linux-armv8-v0.17.2.0.tar.bz2, a004fad5348549e2f1610380775353f19db7cbca0cbe4acbfab87832c484da62
    monero-linux-armv7-v0.17.2.0.tar.bz2, b5986d6dfbddee14e32b28305dd0dc6352c18b632f569227f2c7265ef7dc5081
    monero-android-armv8-v0.17.2.0.tar.bz2, b8a353f02feaee9aae3d279c043ea33a32413a298d8b6122d00a65508f15169d
    monero-android-armv7-v0.17.2.0.tar.bz2, 815341f7d46f75a8905f8b51932e1034a7f6b1669757ff48224632d08339d1bf
    monero-freebsd-x64-v0.17.2.0.tar.bz2, 34ef5702a050298f48ccea7db992137bc98c8e6eba45ecd90b47ce0a4b7bf0f8
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.17.2.0.zip(77.95 MB)
    monero-win-x86-v0.17.2.0.zip(75.01 MB)
    monero-mac-x64-v0.17.2.0.tar.bz2(65.11 MB)
    monero-linux-x64-v0.17.2.0.tar.bz2(79.94 MB)
  • v0.17.1.9(Jan 8, 2021)

    Overview

    This is the v0.17.1.9 minor point release of the Monero software. This is a recommended release that contains mitigations against the ongoing memory exhaustion attack.

    Some highlights of this minor release are:

    • Add different limits for epee binary format for P2P and RPC
    • Add more sanity checks on data size (portable_storage)
    • Fix deadlock banning while updating peer lists
    • Add aggressive restrictions to pre-handshake p2p buffer limit
    • Add a max levin packet size by command type
    • Restrict duplicate keys and unnamend sections in epee binary format
    • More sanity checks in new chain block hashes
    • Minor bug fixes

    Contributors for this Release

    This release was the direct result of 7 people who worked, largely unpaid and altruistically, to put out 30 commits containing 362 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • luigi1111
    • Snipa
    • moneromooo
    • vtnerd
    • selsta
    • xiphon
    • binaryFate

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.1.9.zip, a3e6e2f55deb487f6b4a33cf430d82d62e986d37d7d589dcb33a4ff0a13a062b
    monero-win-x86-v0.17.1.9.zip, bb3c633a3d8ac160bc9c75ef514a9cbc77f1f45bdbd220d1963d78d66435c23a
    monero-mac-x64-v0.17.1.9.tar.bz2, d4850ae45eee67868140183cd8c00f9e1f9e1cc5e415b00bc78c14c7bab85834
    monero-linux-x64-v0.17.1.9.tar.bz2, 0fb6f53b7b9b3b205151c652b6c9ca7e735f80bfe78427d1061f042723ee6381
    monero-linux-x86-v0.17.1.9.tar.bz2, 1f51206c1996a577f976c0526b93cc495fe577db21f68b55636dce926f201206
    monero-linux-armv8-v0.17.1.9.tar.bz2, ef16c3aefc8a17f0a547ffec9e2f087923c6bf293b9538294d14cbd318f1ab98
    monero-linux-armv7-v0.17.1.9.tar.bz2, c8b226af900b018fade24742e5936b0ef6cec3fcdbc8a57a4b3f3d6d2507a2ec
    monero-android-armv8-v0.17.1.9.tar.bz2, 2c45e0fb364ff2e60aa9cdf0d3faef145b22a8632b3336cc248eeba24352d39b
    monero-android-armv7-v0.17.1.9.tar.bz2, c7192caf85f82ecdd1e7299c9ae6314fe2fb02ed9b7035a426a8644b676cc75f
    monero-freebsd-x64-v0.17.1.9.tar.bz2, 3052f691a1a7631ba50c3f4d6f1b1355bdcc9a8c0c617cf56ced400afa1ea402
    

    A GPG-signed list of the hashes is at https://www.getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.17.1.9.zip(77.90 MB)
    monero-win-x86-v0.17.1.9.zip(74.97 MB)
    monero-mac-x64-v0.17.1.9.tar.bz2(65.10 MB)
    monero-linux-x64-v0.17.1.9.tar.bz2(79.75 MB)
    monero-linux-x86-v0.17.1.9.tar.bz2(80.27 MB)
  • v0.17.1.8(Dec 30, 2020)

    Overview

    This is the v0.17.1.8 minor point release of the Monero software. This is a recommended release that contains mitigations against the ongoing memory exhaustion attack.

    Some highlights of this minor release are:

    • Protocol: drop nodes if they claim new data but only give stale data
    • Add some sanity checks on data size (portable_storage)
    • Fix some issues using connections after shutdown, add buffered SSL handshake detection
    • Optional DNS based blocklist (--enable-dns-blocklist)
    • Ban lists may now include subnets
    • The ban command can now load IPs from a file (ban @filename)
    • RPC: add busy_syncing, synchronized fields to get_info
    • RPC: limit the number of txes for get_blocks.bin
    • P2P: ignore incoming peer list entries when we have them blocked
    • P2P: remove peers from grey and anchors lists when blocked
    • Restrict public node checks a little, warn about untrusted nodes
    • Minor bug fixes

    Contributors for this Release

    This release was the direct result of 8 people who worked, largely unpaid and altruistically, to put out 45 commits containing 530 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • TheCharlatan
    • luigi1111
    • Snipa
    • moneromooo
    • vtnerd
    • selsta
    • anon

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.1.8.zip, 55bafa33142b2aa979e5f6b4a6ddb60584bc9e9434e3a8c0a7fd8c9852bbcd7e
    monero-win-x86-v0.17.1.8.zip, 4bd0c594c59de2815e91e7560be5b52370abb351f425c2ea1434a0ae4205c30a
    monero-mac-x64-v0.17.1.8.tar.bz2, b969d7c8855d59b6962227a5a68f507f183253d06acd548b41673c647317de48
    monero-linux-x64-v0.17.1.8.tar.bz2, b566652c5281970c6137c27dd15002fe6d4c9230bc37d81545b2f36c16e7d476
    monero-linux-x86-v0.17.1.8.tar.bz2, 827e6e30296135494e80fcd54b0c8e64532b0ec8bdbbbec445860ce47d6f0d87
    monero-linux-armv8-v0.17.1.8.tar.bz2, e8580f776152757bf07b0ca9dc3c1fbb4033b0956ab76599ff642fdb84427d1e
    monero-linux-armv7-v0.17.1.8.tar.bz2, 83f2d8fd32f17b1f6669736015ad25e613987e69c8b052600ac9b8942370ba19
    monero-android-armv8-v0.17.1.8.tar.bz2, 1598b73ac35e8c7f35a60cf4afc93d915954e0a3939d5d81ec040d3294eda162
    monero-android-armv7-v0.17.1.8.tar.bz2, 0ce30e0882dbdf4fd12d29c556bd805c1ff6e7012a9f028a742726a6e57374a6
    monero-freebsd-x64-v0.17.1.8.tar.bz2, 2911c3b605262edaa8e634067c2ba04069990d2bb668b990bfd1a5c35858aaf3
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.17.1.8.zip(77.88 MB)
    monero-win-x86-v0.17.1.8.zip(74.94 MB)
    monero-mac-x64-v0.17.1.8.tar.bz2(65.07 MB)
    monero-linux-x64-v0.17.1.8.tar.bz2(79.76 MB)
    monero-linux-x86-v0.17.1.8.tar.bz2(80.17 MB)
  • v0.17.1.7(Dec 14, 2020)

    Overview

    This is the v0.17.1.7 minor point release of the Monero software. This is a recommended release that contains P2P network layer improvements.

    Some highlights of this minor release are:

    • P2P: include first new block in chain entry response
    • P2P: more restrictive checks on chain entry response
    • Fix syncing with --sync-pruned-blocks flag
    • Update OpenSSL to 1.1.1i to fix its recently disclosed vulnerability
    • Minor bug fixes

    Contributors for this Release

    This release was the direct result of 5 people who worked, largely unpaid and altruistically, to put out 24 commits containing 154 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • luigi1111
    • Snipa
    • moneromooo
    • selsta
    • hyc

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.1.7.zip, 4e1352b383095e9d4393a40785e159d6a4a83bca69f304a2dba258d370074ad0
    monero-win-x86-v0.17.1.7.zip, ef47d1160f3926b9046b1ee0ac324b8d8c6196f8c93d685ef8e4b7e3274372fc
    monero-mac-x64-v0.17.1.7.tar.bz2, 0bf79a44d01a5f7970d237344bc1a5268cf307dd2d0e9b09258f1d8d4fedbb94
    monero-linux-x64-v0.17.1.7.tar.bz2, 98ce0d22db0d1112114bbad4c9773d1490d30e5c643423c2e5bffc19553207f9
    monero-linux-x86-v0.17.1.7.tar.bz2, 4d9730765cb5979234e83f1cdfdf23a9fff7946a11c7fcedea7e1effe6074d93
    monero-linux-armv8-v0.17.1.7.tar.bz2, 17a39df633eea37eba4871dcad29ddc1b56af37039e32f10c0492d9fa9ac0e48
    monero-linux-armv7-v0.17.1.7.tar.bz2, 952221a6f2b449892e9a51de1b5b63bac9faf4748789b12c12d616aab5d8389f
    monero-android-armv8-v0.17.1.7.tar.bz2, c629ab6d69d91ef61ca073c9b64479eac51ab7c3bdb0daf44cb8f971a3ba51d3
    monero-android-armv7-v0.17.1.7.tar.bz2, 814312f44f5e9be92b8d090b0b5126bd8f747ce325f185832290b98c29a00d44
    monero-freebsd-x64-v0.17.1.7.tar.bz2, 50a36a796cbe3de569c26344af311b43afb0a44693383c088685830876a0f0e1
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.17.1.7.zip(77.85 MB)
    monero-win-x86-v0.17.1.7.zip(74.92 MB)
    monero-mac-x64-v0.17.1.7.tar.bz2(65.06 MB)
    monero-linux-x64-v0.17.1.7.tar.bz2(79.77 MB)
    monero-linux-x86-v0.17.1.7.tar.bz2(80.18 MB)
  • v0.17.1.6(Dec 8, 2020)

    Overview

    This is the v0.17.1.6 minor point release of the Monero software. This is a recommended release that contains P2P network layer improvements.

    A note for public RPC node operators upgrading to v0.17.1.6: if you’re using the --rpc-restricted-bind-port option along with --rpc-bind-ip currently you will need to add the new --rpc-restricted-bind-ip arg or else the daemon will bind restricted RPC only to localhost.

    Some highlights of this minor release are:

    • P2P: add scoring system to drop peers that don't behave
    • P2P: drop peers that decrease claimed height
    • P2P: drop peers that spam peer lists
    • P2P: drop peers that don't reply to queries
    • Add --rpc-restricted-bind-ip option
    • Do not use peer_id tracking method over i2p/tor
    • Minor bug fixes

    The complete list of changes is available on GitHub, along with the source code.

    Contributors for this Release

    This release was the direct result of 6 people who worked, largely unpaid and altruistically, to put out 19 commits containing 828 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • vtnerd
    • luigi1111
    • Snipa
    • moneromooo
    • selsta
    • hyc

    Download

    The new binaries can be downloaded from the [Downloads page]({{ site.baseurl }}/downloads/#cli) or from the direct links below.

    Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.1.6.zip, 40e07fdd8af9a8f5c34bddd826e26036c609bf5eacaf337b38e7ac3644647135
    monero-win-x86-v0.17.1.6.zip, a63a1ff1766d9f02f8cd4b8260260cec9cfdf8fa1371143cc68ff1ffee18efd1
    monero-mac-x64-v0.17.1.6.tar.bz2, 1b03e2e45b9e8fce461b3f33986122c036f636d4a1019c47b24e7b81c7f1db15
    monero-linux-x64-v0.17.1.6.tar.bz2, 01bb6e18773a461a4dcfe2a6d4e4f7e1708b26634bc56696d68c539c3a66f81a
    monero-linux-x86-v0.17.1.6.tar.bz2, 300e7608927867d63765704a19baa90366b5897e3cef8a56da29ae3a6a5b97a3
    monero-linux-armv8-v0.17.1.6.tar.bz2, 874d3de908fb4301de19301b928a1c477a883c40b2491b3b3193df99561a8904
    monero-linux-armv7-v0.17.1.6.tar.bz2, 018270d8dde8e895fdc7b5b6de95c36b7e7a63d46406339f810b6fdf91e0b8bc
    monero-android-armv8-v0.17.1.6.tar.bz2, 0dc3cc265ae0365cb927c235f9ba4391f3c2be7043d183769de5b9b97736b359
    monero-android-armv7-v0.17.1.6.tar.bz2, 2ab2e4c715a3978ed36c55848313f8a252b1f7141910c0bcbd52070fcaefcff1
    monero-freebsd-x64-v0.17.1.6.tar.bz2, 1ad59103c9ea3a2256c8f4b7066cefd7ce2ebd2b52360edb539115c80a7e6ee1
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys).

    Source code(tar.gz)
    Source code(zip)
  • v0.17.1.5(Nov 26, 2020)

    Overview

    This is the v0.17.1.5 minor point release of the Monero software. This is a recommended release that improves Dandelion++ perfomance.

    Some highlights of this minor release are:

    • Change Dandelion++ fluff probability to 20%, and embargo timeout to 39s
    • Fix timeout checks for forwarded and Dandelion++ stem txes
    • Improve peer selection in Dandelion++ stem phase
    • Skip non-synced bootstrap daemons in --no-sync mode
    • Check imported multisig curve points are in main subgroup
    • Better log message for unusable anonymity networks
    • Minor bug fixes

    Contributors for this Release

    This release was the direct result of 7 people who worked, largely unpaid and altruistically, to put out 25 commits containing 203 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • luigi1111
    • Snipa
    • moneromooo
    • xiphon
    • hyc
    • vtnerd
    • selsta

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.1.5.zip, 4bb0fca53bc58c1167bc0a258f61dd69a54507fd83ad37edf4213b4f30df8c94
    monero-win-x86-v0.17.1.5.zip, 7dc0565a2880b38e73d85599153a31bbed85965963c6f74e1a5cf6dbd06f619e
    monero-mac-x64-v0.17.1.5.tar.bz2, adfc663b2b36b0cb2fdfcc35185b3d93c8c2256de06da01521e555b7b20ee292
    monero-linux-x64-v0.17.1.5.tar.bz2, 95666508e695637830b4c1700538c717ff97f02f181fbb337a109763372c8d34
    monero-linux-x86-v0.17.1.5.tar.bz2, c5b19fa1db2de6a66e475e634b07f2b5f74d5cd41e968aa0ed34ffd8f91f527f
    monero-linux-armv8-v0.17.1.5.tar.bz2, 50f113959bcc230860ff77cbac03a2713db772a72e80afe50f511418f9e9d97f
    monero-linux-armv7-v0.17.1.5.tar.bz2, 99fa5eb56616c1b7b6aef69572b8c51efa813bfaff2f2336ac982b449e8ee2a1
    monero-android-armv8-v0.17.1.5.tar.bz2, 01998179f2c39d97f4e204b1323c17ca35c5797c558a9c51ad3f8a21c23620fe
    monero-android-armv7-v0.17.1.5.tar.bz2, 972f4ed467e34ea783fb66ad6f50749c2b7b3d9f77bb2825e70a8763d84b00f2
    monero-freebsd-x64-v0.17.1.5.tar.bz2, 8fead098417cd4d3896012e485494efec8851c28abcb1883c3a1716652390321
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
  • v0.17.1.3(Nov 16, 2020)

    Overview

    This is the v0.17.1.3 minor point release of the Monero software. This is a recommended release that improves overall network perfomance.

    Some highlights of this minor release are:

    • Add support for I2P and Tor seed nodes (--tx-proxy)
    • Add --ban-list daemon option to ban a list of IP addresses
    • Switch to Dandelion++ fluff mode if no out connections for stem mode
    • Fix a bug with relay_tx
    • Fix a rare readline related crash
    • Use /16 filtering on IPv4-within-IPv6 addresses
    • Give all hosts the same chance of being picked for connecting
    • Minor bugfixes

    Contributors for this Release

    This release was the direct result of 5 people who worked, largely unpaid and altruistically, to put out 40 commits containing 367 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • luigi1111
    • selsta
    • moneromooo-monero
    • xiphon
    • vtnerd

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.1.3.zip, 3eee0d0e896fb426ef92a141a95e36cb33ca7d1e1db3c1d4cb7383994af43a59
    monero-win-x86-v0.17.1.3.zip, c9e9dde61b33adccd7e794eba8ba29d820817213b40a2571282309d25e64e88a
    monero-mac-x64-v0.17.1.3.tar.bz2, 79557c8bee30b229bda90bb9ee494097d639d60948fc2ad87a029359b56b1b48
    monero-linux-x64-v0.17.1.3.tar.bz2, cf3fb693339caed43a935c890d71ecab5b89c430e778dc5ef0c3173c94e5bf64
    monero-linux-x86-v0.17.1.3.tar.bz2, d107384ff7b1f77ee4db93940dbfda24d6045bf59c43169bc81a0118e3986bfa
    monero-linux-armv8-v0.17.1.3.tar.bz2, a0419993fbc6a5ca11bcd2e825acef13e429824f4d8c7ba4ec73ac446d2af2fb
    monero-linux-armv7-v0.17.1.3.tar.bz2, 57d6f9c25bd1dbc9d6b39fcfb13260b21c5594b4334e8ed3b8922108730ee2f0
    monero-android-armv8-v0.17.1.3.tar.bz2, 0e94f58572646992ee21f01d291211ed3608e8a46ecb6612b378a2188390dba0
    monero-android-armv7-v0.17.1.3.tar.bz2, 38a04a7bd00733e9d943edba3004e44730c0848fe5e8a4fca4cb29c12d1e6b2f
    monero-freebsd-x64-v0.17.1.3.tar.bz2, ae1a1b61d7b4a06690cb22a3389bae5122c8581d47f3a02d303473498f405a1a
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.17.1.3.zip(73.07 MB)
    monero-win-x86-v0.17.1.3.zip(68.20 MB)
    monero-mac-x64-v0.17.1.3.tar.bz2(60.39 MB)
    monero-linux-x64-v0.17.1.3.tar.bz2(74.21 MB)
    monero-linux-x86-v0.17.1.3.tar.bz2(74.50 MB)
  • v0.17.1.1(Oct 22, 2020)

    Overview

    This is the v0.17.1.1 minor point release of the Monero software. This is a highly recommended release that fixes an issue with nodes getting stuck at block 2210720.

    Some highlights of this minor release are:

    • Fix sync past block 2210720
    • Bump default number of connections from 8 to 12
    • Wait for propagation timeout before marking tx as failed
    • Allow setting start block on export with monero-blockchain-export
    • Minor bug fixes

    Contributors for this Release

    This release was the direct result of 6 people who worked, largely unpaid and altruistically, to put out 12 commits containing 112 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • Snipa
    • selsta
    • fluffypony
    • moneromooo-monero
    • hyc
    • xiphon

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.1.1.zip, e9e14bf95905d1d54fb490c384d50d7c972174d5f6febbfb55811713b8a1a470
    monero-win-x86-v0.17.1.1.zip, 4d9fbb3fa5226b4c9928a8aebee9a57e1ca409c8e0499c8901d12dd19417f2d6
    monero-mac-x64-v0.17.1.1.tar.bz2, 2b5ce3627e38598c50f90bd73d90346a290035a16fef879c6a1fd88227c44e37
    monero-linux-x64-v0.17.1.1.tar.bz2, 4113cc92314fefebe52024d67a8b5d6d499adb4c3988f5d2b838ed3f80893874
    monero-linux-x86-v0.17.1.1.tar.bz2, d6bc94a0b07814ccea175e88bd38e51029db9cab1a3483aff71d8b3e00172d3a
    monero-linux-armv8-v0.17.1.1.tar.bz2, 30714d8a76880a1a2e587cb18676999502b40af58227e23c6b55a9f2b5a40734
    monero-linux-armv7-v0.17.1.1.tar.bz2, 3febba3fce8d51f63e3fc7736cfcce4987f740499baf3e6377182012b07d71d4
    monero-android-armv8-v0.17.1.1.tar.bz2, 3eff875c97581edf2d8bc46891565bb3b671a8d04c6c8188f698ac492f713f3c
    monero-android-armv7-v0.17.1.1.tar.bz2, b88ccc2db1127e41ea55d3c771f0b1e15abad691209597d8698ebb58c17b2914
    monero-freebsd-x64-v0.17.1.1.tar.bz2, 6e1d2557eec3dd7a8e7a7f7f7610555ecbc90a7f3e72ed272e87bb7cc34e383b
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.17.1.1.zip(73.06 MB)
    monero-win-x86-v0.17.1.1.zip(68.18 MB)
    monero-mac-x64-v0.17.1.1.tar.bz2(60.36 MB)
    monero-linux-x64-v0.17.1.1.tar.bz2(74.25 MB)
    monero-linux-x86-v0.17.1.1.tar.bz2(74.48 MB)
  • v0.17.1.0(Oct 14, 2020)

    Overview

    This is the v0.17.1.0 point release of the Monero software.

    Some highlights of this release are:

    • Dandelion++: skip desynced peers in stem phase, reducing transaction timeouts
    • Fix a bug in wallet serialization that could lead to inaccurate display balance
    • Silence spammy "failed to find tx meta" warning message
    • Fix next_seed_height in get_block_template RPC
    • Fix empty RPATH token issue (Linux / FreeBSD)
    • Reduce minimum required glibc from 2.23 to 2.17 (Linux)
    • Minor bug fixes

    Contributors for this Release

    This release was the direct result of 6 people who worked, largely unpaid and altruistically, to put out 20 commits containing 135 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • luigi1111
    • selsta
    • xnbya
    • moneromooo-monero
    • hyc
    • xiphon

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.1.0.zip, b942b584601faa504ed2eb5c6d7bdf62740826cbef63d33d35b48e414dd48f5d
    monero-win-x86-v0.17.1.0.zip, d438ce08ebce2705b1de8469833ccda47c76401887751972086246cb3c59f041
    monero-mac-x64-v0.17.1.0.tar.bz2, 3e9cefcb02e0fd5f4c720165bf1621ccda48f18eda1f63f207f29a2549658620
    monero-linux-x64-v0.17.1.0.tar.bz2, b7b573ff3d2013527fce47643a6738eaf55f10894fa5b2cb364ba5cd937af92e
    monero-linux-x86-v0.17.1.0.tar.bz2, e58e1f60120cc9a3be1f6bad95d4605843608630437794c56d705547db2bfd69
    monero-linux-armv8-v0.17.1.0.tar.bz2, 487011bc1bdaa9bcc276cdbee0930c2289b317c752a99a38d98c0ad13324a612
    monero-linux-armv7-v0.17.1.0.tar.bz2, 2ad46e3834a25f78f1c070220dd1b907200abe57246a7b0cc410b998174e5ed2
    monero-android-armv8-v0.17.1.0.tar.bz2, a758c81dfe177c74567e9793e1332adc3e2ce9ae71addb81f1e7f5fcce4303f7
    monero-android-armv7-v0.17.1.0.tar.bz2, e0234000ee183656092621066658bece27a49442101755b565f190d4e0d29314
    monero-freebsd-x64-v0.17.1.0.tar.bz2, 11577db88edf29d5a09c45599cb43c1da568f63a1303322bf0aecabfaffd48a7
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.17.1.0.zip(73.05 MB)
    monero-win-x86-v0.17.1.0.zip(68.17 MB)
    monero-mac-x64-v0.17.1.0.tar.bz2(60.34 MB)
    monero-linux-x64-v0.17.1.0.tar.bz2(74.25 MB)
  • v0.17.0.1(Oct 2, 2020)

    Overview

    This is the v0.17.0.1 minor point release of the Monero software.

    Some highlights of this release are:

    • Fix unintended error message on daemon start (Windows)
    • Bug and security fixes found by OSS-Fuzz

    Contributors for this Release

    This release was the direct result of 4 people who worked, largely unpaid and altruistically, to put out 8 commits containing 23 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • luigi1111
    • selsta
    • moneromooo-monero
    • xiphon

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.0.1.zip, f59a771efdd5e6bcd74668be9fe6798e1c2effeb38fce1639b24b307a95985cb
    monero-win-x86-v0.17.0.1.zip, ac50eb3fb993fd496a1856b01655494b5fe2b0a57a01c432c0c06a996e90058e
    monero-mac-x64-v0.17.0.1.tar.bz2, af6737a6d81a2ec3f1ecfb8581e4e615e5a22ad34d808b3191ef488cb90084c1
    monero-linux-x64-v0.17.0.1.tar.bz2, 2335716555ff0428da0f206a491d9c57b7ae2221d1cfbbb3bf43960d3a2a4dfe
    monero-linux-x86-v0.17.0.1.tar.bz2, 8d2b20c36bf74e5d4d33d20a17dc0811e8ff6f0cb3ef8fb093fb0f430a2aa82c
    monero-linux-armv8-v0.17.0.1.tar.bz2, 4805b496019cb74500b68c34457a15b394accfdb33ad97fe8ba0fbb2e83eb711
    monero-linux-armv7-v0.17.0.1.tar.bz2, be98deb70f5b8cda364dc37fdd7733c548474bf6baf40e3fbc5b00bc38d56c4a
    monero-android-armv8-v0.17.0.1.tar.bz2, 78f5c2f0199533c845a1c060a1888f029df1dbd13bd28e035d02ff83ec3493ae
    monero-android-armv7-v0.17.0.1.tar.bz2, 6a41ba50f3eff23343d147a28e2e694e56f257aeffed46cb019ad0dcc71d2a4f
    monero-freebsd-x64-v0.17.0.1.tar.bz2, a2c946f4aef22d5dd2637713ebaaf14d9307ae5cb2e8cb016e34bcd997aed2d8
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.17.0.1.zip(73.04 MB)
    monero-win-x86-v0.17.0.1.zip(68.16 MB)
    monero-mac-x64-v0.17.0.1.tar.bz2(60.33 MB)
    monero-linux-x64-v0.17.0.1.tar.bz2(74.24 MB)
    monero-linux-x86-v0.17.0.1.tar.bz2(74.48 MB)
  • v0.17.0.0(Sep 29, 2020)

    Overview

    This is the v0.17.0.0 release of the Monero software. This major release is due to the October 17th network upgrade, which in turn adds support for the CLSAG transaction format which improves verification speed and reduces transaction size.

    Some highlights of this release are:

    • Support for CLSAG transaction format
    • Deterministic unlock times
    • Enforce claiming maximum coinbase amount
    • Serialization format changes
    • Remove most usage of Boost library
    • Always send raw transactions through P2P, don't use bootstrap daemon
    • Update InProofV1, OutProofV1, and ReserveProofV1 to V2
    • ASM optimizations for wallet refresh (macOS / Linux)
    • Randomized delay when forwarding txes from i2p/tor -> ipv4/6
    • New show_qr_code wallet command for CLI
    • Add ZMQ/Pub support for txpool_add and chain_main events
    • Various bug fixes and performance improvements

    Contributors for this Release

    This release was the direct result of 30 people who worked, largely unpaid and altruistically, to put out 292 commits containing 11523 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • stoffu
    • François Colas
    • TheCharlatan
    • koe
    • Lee Clagett
    • Jean Pierre Dudey
    • MaxXor
    • rbrunner7
    • luigi1111
    • xiphon
    • erciccione
    • mj-xmr
    • thomasvaughan
    • Age Bosma
    • cohcho
    • sumogr
    • moneromooo-monero
    • woodser
    • cryptographicfool
    • Jason Rhinelander
    • Norman Moeschter
    • Sarang Noether
    • Dusan Klinec
    • SomaticFanatic
    • cslashm
    • selsta
    • tevador
    • ArqTras
    • russoj88
    • Reinaldulin

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.17.0.0.zip, 8b84b4c9820a9b0f5e010079ceaf622936cbf4a5cec6de099c2dbbaf3cf47b73
    monero-win-x86-v0.17.0.0.zip, bd92b31b82d4349416f2bac6d9d76404c526f9e546f90cc9806084badccd9de8
    monero-mac-x64-v0.17.0.0.tar.bz2, b07ca7a00373c4b7f151133e5ecd47da8a2ab65bdaa00154311cee8be735fd07
    monero-linux-x64-v0.17.0.0.tar.bz2, 29a1a3d2d4a6bcbaccba0a8016be43c36c88523c358c721d9886e1f0c5ae662d
    monero-linux-x86-v0.17.0.0.tar.bz2, 390125abd93ad7640e5033a88c34cda618fa4a78eb38156d9f9a29742968f44e
    monero-linux-armv8-v0.17.0.0.tar.bz2, 47d7a24a15457ddca2bd5151805f35f000c92d8d216a0aaa31a982d1a68e31c3
    monero-linux-armv7-v0.17.0.0.tar.bz2, 95b424be406346acd0422d2a12598d5f7d7033e20dfdb0e123fd75e185bcf76c
    monero-android-armv8-v0.17.0.0.tar.bz2, ff9c51f03be4728614a6c4b9ceefe60334dee118c1cd3a96be9af3db30b80cb0
    monero-android-armv7-v0.17.0.0.tar.bz2, 620c10c940eb9480f1004b80de6cdf0db0ff402d45ebda07b0677f556d3d8535
    monero-freebsd-x64-v0.17.0.0.tar.bz2, a183c9729b4fcf53b29207c218ae39a01f59d4788620bf4227aa3a4adc4312ad
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.17.0.0.zip(73.04 MB)
    monero-win-x86-v0.17.0.0.zip(68.14 MB)
    monero-mac-x64-v0.17.0.0.tar.bz2(60.32 MB)
    monero-linux-x64-v0.17.0.0.tar.bz2(74.22 MB)
    monero-linux-x86-v0.17.0.0.tar.bz2(74.48 MB)
  • v0.16.0.3(Aug 13, 2020)

    Overview

    This is the v0.16.0.3 minor point release of the Monero software.

    Some highlights of this release are:

    • DoS fixes
    • Add option to print daily coin emission and fees in monero-blockchain-stats
    • Minor bug fixes

    Contributors for this Release

    This release was the direct result of 4 people who worked, largely unpaid and altruistically, to put out 13 commits containing 143 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • luigi1111
    • selsta
    • moneromooo-monero
    • hyc

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.16.0.3.zip, 5d52712827d29440d53d521852c6af179872c5719d05fa8551503d124dec1f48
    monero-win-x86-v0.16.0.3.zip, ff094c5191b0253a557be5d6683fd99e1146bf4bcb99dc8824bd9a64f9293104
    monero-mac-x64-v0.16.0.3.tar.bz2, 16a5b7d8dcdaff7d760c14e8563dd9220b2e0499c6d0d88b3e6493601f24660d
    monero-linux-x64-v0.16.0.3.tar.bz2, cb67ad0bec9a342b0f0be3f1fdb4a2c8d57a914be25fc62ad432494779448cc3
    monero-linux-x86-v0.16.0.3.tar.bz2, 49aa85bb59336db2de357800bc796e9b7d94224d9c3ebbcd205a8eb2f49c3f79
    monero-linux-armv8-v0.16.0.3.tar.bz2, 6849446764e2a8528d172246c6b385495ac60fffc8d73b44b05b796d5724a926
    monero-linux-armv7-v0.16.0.3.tar.bz2, 6df98716bb251257c3aab3cf1ab2a0e5b958ecf25dcf2e058498783a20a84988
    monero-android-armv8-v0.16.0.3.tar.bz2, b48918a167b0961cdca524fad5117247239d7e21a047dac4fc863253510ccea1
    monero-android-armv7-v0.16.0.3.tar.bz2, 75b198869a3a117b13b9a77b700afe5cee54fd86244e56cb59151d545adbbdfd
    monero-freebsd-x64-v0.16.0.3.tar.bz2, 727a1b23fbf517bf2f1878f582b3f5ae5c35681fcd37bb2560f2e8ea204196f3
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.16.0.3.zip(72.81 MB)
    monero-win-x86-v0.16.0.3.zip(67.78 MB)
    monero-mac-x64-v0.16.0.3.tar.bz2(59.05 MB)
    monero-linux-x64-v0.16.0.3.tar.bz2(73.27 MB)
    monero-linux-x86-v0.16.0.3.tar.bz2(74.21 MB)
  • v0.16.0.1(Jul 6, 2020)

    This is the v0.16.0.1 minor point release of the Monero software.

    Some highlights of this release are:

    • Ledger: fix transfer with multiple inputs
    • Trezor: add support for sweep_single
    • Blockchain: fix timestamp / difficulty cache getting out of sync
    • Various minor bug fixes

    Contributors for this Release

    This release was the direct result of 7 people who worked, largely unpaid and altruistically, to put out 31 commits containing 94 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • ph4r05
    • selsta
    • luigi1111
    • moneromooo-monero
    • vtnerd
    • grydz
    • Parean

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.16.0.1.zip, 851b57ec0783d191f0942232e431aedfbc2071125b1bd26af9356c7b357ab431
    monero-win-x86-v0.16.0.1.zip, e944d15b98fcf01e54badb9e2d22bae4cd8a28eda72c3504a8156ee30aac6b0f
    monero-mac-x64-v0.16.0.1.tar.bz2, d226c704042ff4892a7a96bb508b80590a40173683101db6ad3a3a9e20604334
    monero-linux-x64-v0.16.0.1.tar.bz2, 4615b9326b9f57565193f5bfe092c05f7609afdc37c76def81ee7d324cb07f35
    monero-linux-x86-v0.16.0.1.tar.bz2, 3e4524694a56404887f8d7fedc49d5e148cbf15498d3ee18e5df6338a86a4f68
    monero-linux-armv8-v0.16.0.1.tar.bz2, 83c21fe8bb5943c4a4c77af90980a9c3956eea96426b4dea89fe85792cc1f032
    monero-linux-armv7-v0.16.0.1.tar.bz2, 962f30701ef63a133a62ada24066a49a2211cd171111828e11f7028217a492ad
    monero-android-armv8-v0.16.0.1.tar.bz2, d9e885b3b896219580195fa4c9a462eeaf7e9f7a6c8fdfae209815682ab9ed8a
    monero-android-armv7-v0.16.0.1.tar.bz2, 8e3ce10997ab50eec2ec3959846d61b1eb3cb61b583c9f0f9f5cc06f63aaed14
    monero-freebsd-x64-v0.16.0.1.tar.bz2, 4f4a2c761b3255027697cd57455f5e8393d036f225f64f0e2eff73b82b393b50
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.16.0.1.zip(72.76 MB)
    monero-win-x86-v0.16.0.1.zip(67.73 MB)
    monero-mac-x64-v0.16.0.1.tar.bz2(58.99 MB)
    monero-linux-x64-v0.16.0.1.tar.bz2(73.18 MB)
    monero-linux-x86-v0.16.0.1.tar.bz2(74.20 MB)
  • v0.16.0.0(May 28, 2020)

    Overview

    This is the v0.16.0.0 major release of the Monero software. This major release adds Dandelion++ support and improves bulletproof verification speed.

    Some highlights of this release are:

    • Bulletproofs: improve verification speed
    • Daemon: add Dandelion++ support
    • Daemon: speedup startup in some cases
    • Daemon: reduce bandwidth by up to 2/3rd
    • Daemon: improve auto bootstrap algorithm
    • Daemon: faster fetching of consecutive transactions
    • Daemon: print estimates for time until fully synced
    • Ledger: improve error messages
    • Ledger: timelock verification
    • Wallet: new "address one-off" command
    • Wallet: new "sweep_account" command
    • ZMQ: improved support and bug fixes
    • Various bug fixes and performance improvements

    Contributors for this Release

    This release was the direct result of 49 people who worked, largely unpaid and altruistically, to put out 563 commits containing 81539 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • Alexander Blair
    • Lee Clagett
    • xiphon
    • Tadeas Moravec
    • moneromooo-monero
    • Howard Chu
    • rbrunner7
    • woodser
    • selsta
    • Riccardo Spagni
    • Kevin Crumb
    • Bert Peters
    • iDunk5400
    • Sarang Noether
    • Interchained
    • Dusan Klinec
    • Sumo Gr
    • Matt Smith
    • TheCharlatan
    • naughtyfox
    • Aaron Hook
    • mj-xmr
    • Jonathan Cross
    • erciccione
    • kozyilmaz
    • ArqTras
    • TheGoose
    • tevador
    • Martijn Otto
    • Jethro Grassie
    • rating89us
    • Nathan Dorfman
    • Gingeropolous
    • palomato
    • JamesWrigley
    • sumogr
    • Doyle
    • scoobybejesus
    • UkoeHB
    • Guillaume Le Vaillant
    • guy
    • stoffu
    • cohcho
    • cslashm
    • Jason Rhinelander
    • wowario
    • binaryFate
    • Bertrand Jacquin

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.16.0.0.zip, f2750efb65b70ae9cad64d977cb0bfbe4dc6d014fe0b7fd565002282d67d469d
    monero-win-x86-v0.16.0.0.zip, b1fc293dd9c12f90c7c343777298e86a22f25788561629b92ec0b23eb6cfb42c
    monero-mac-x64-v0.16.0.0.tar.bz2, 8e9382cc509751765ed9601f6ac9d37cdb9e94dd5e541312545430e6617c6850
    monero-linux-x64-v0.16.0.0.tar.bz2, e507943b46e9d7c9ccdb641dcccb9d8205dd9de660a0ab5566dac5423f8b95e2
    monero-linux-x86-v0.16.0.0.tar.bz2, 1c08139550bbbbe1844cf48b6b1d60385be70072841fcbe5e0614fa628a23604
    monero-linux-armv8-v0.16.0.0.tar.bz2, 76afab3670df104d392048f52fde92dc611342ca0780690e7e042f1371828acb
    monero-linux-armv7-v0.16.0.0.tar.bz2, 8aad622b0e562b610b69bc0ed0fab98bc7bfc77352151b9259ef5c8cab9338d0
    monero-android-armv8-v0.16.0.50.tar.bz2, 06c352fd73307f2757c003eb295152715ef2003323db6367d72b258e512f6cbc
    monero-android-armv7-v0.16.0.0.tar.bz2, c3f9f41b3fd3c8859d952ac95d9b5ab2cc9ad541a868edf6e9100afff5d4dd7f
    monero-freebsd-x64-v0.16.0.0.tar.bz2, 56e68d171d93e2bcea5a7e8eb7f410fcb8fb811c69b6a4f2fad0e15c0a48f6db
    

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys). To ensure that the files you download are those originally posted by the maintainers, you should both check that the hashes of your files match those on the signed list, and that the signature on the list is valid.

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.16.0.0.zip(72.75 MB)
    monero-win-x86-v0.16.0.0.zip(67.72 MB)
    monero-linux-x64-v0.16.0.0.tar.bz2(73.16 MB)
    monero-linux-x86-v0.16.0.0.tar.bz2(74.20 MB)
    monero-mac-x64-v0.16.0.0.tar.bz2(58.97 MB)
  • v0.15.0.5(Mar 20, 2020)

    Overview

    This is the v0.15.0.5 minor point release of the Monero software and it is part of the v0.15 network update. This major release was due to the November 30th network update, which in turn added a new PoW, RandomX.

    Some highlights of this release are:

    • Tor / I2P: plug tor to clearnet association vector
    • Various minor bug fixes

    Contributors for this Release

    This release was the direct result of 6 people who worked, largely unpaid and altruistically, to put out 23 commits containing 442 new lines of code. We'd like to thank them very much for their time and effort. In alphabetical order they are:

    • ahook
    • luigi1111
    • moneromooo-monero
    • selsta
    • TheCharlatan
    • vtnerd

    Official Download Links

    Windows, 64-bit Windows, 32-bit macOS, 64-bit Linux, 64-bit Linux, 32-bit Linux, armv7 Linux, armv8 Android, armv7 Android, armv8 FreeBSD, 64-bit

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.15.0.5.zip, 0286e21552d3fedfedbc7c7aba2f34c370ad4c21007a75fb67ac87994c5cec5a
    monero-win-x86-v0.15.0.5.zip, bdcc5af964b6271bbf05609edfc49093b690f15031b748dfb43ffe991ae9cc6e
    monero-mac-x64-v0.15.0.5.tar.bz2, 8ef04398350b8de68e21da236801f276cf662641e03dc067f6e865180f9853f6
    monero-linux-x64-v0.15.0.5.tar.bz2, 6cae57cdfc89d85c612980c6a71a0483bbfc1b0f56bbb30e87e933e7ba6fc7e7
    monero-linux-x86-v0.15.0.5.tar.bz2, fd2c32fc3efa47b2feda6526b0a2df4e1acc7325ec205a25d7947fbc843b24df
    monero-linux-armv8-v0.15.0.5.tar.bz2, 04e73cf72f37f0bbdfa757c9bb5df2117aee473632a917041077da3c05169743
    monero-linux-armv7-v0.15.0.5.tar.bz2, a23402ccf5ac432306fe263fae660646206ecb9d2aec3cfacb25afce34794067
    monero-android-armv8-v0.15.0.5.tar.bz2, ceccc11723c4dff3cef420b37bc795850b74a8e71d23d44aa26faf5cd8fcc0e6
    monero-android-armv7-v0.15.0.5.tar.bz2, 52e46ead674275ed446e261795b2cde19e65f7098ce62902bfa275e67f9f10f7
    monero-freebsd-x64-v0.15.0.5.tar.bz2, b0ea91c4d0f68d8d85ba15ed537bdd81589fa796f88d96aec451543f87b9fdb7
    ``
    
    A GPG-signed list of the hashes is at [https://getmonero.org/downloads/hashes.txt](https://getmonero.org/downloads/hashes.txt) and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)
    
    Source code(tar.gz)
    Source code(zip)
    monero-win-x86-v0.15.0.5.zip(67.14 MB)
    monero-mac-x64-v0.15.0.5.tar.bz2(58.63 MB)
    monero-linux-x64-v0.15.0.5.tar.bz2(72.79 MB)
    monero-linux-x86-v0.15.0.5.tar.bz2(73.72 MB)
    monero-win-x64-v0.15.0.5.zip(72.17 MB)
  • v0.15.0.1(Dec 5, 2019)

    Overview

    This is the v0.15.0.1 minor point release of the Monero software and it is part of the v0.15 network update. This major release was due to the November 30th network update, which in turn added a new PoW, RandomX.

    The latest CLI release notes and downloads can be found on the release page here.

    Some highlights of this release are:

    • Reproducible builds improvements
    • Add FreeBSD reproducible builds support
    • Bug fixes and performance improvements

    Contributors for this Release

    This release was the direct result of 5 people who worked, largely unpaid and altruistically, to put out 23 commits containing 442 new lines of code. We'd like to thank them very much for their time and effort. In alphabetical order they are:

    • Howard Chu
    • Jethro Grassie
    • luigi1111
    • moneromooo-monero
    • xiphon

    Official Download Links

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.15.0.1.zip, a1d2a4a0a9f2cdb17808c0b7a2a872a70c9f3e6487494b29cc1627b5490f25e9 monero-win-x86-v0.15.0.1.zip, a3dc6d57c52383fcb83337799909c2c85cc8fe88b127d9408e3ea92880beb38d monero-mac-x64-v0.15.0.1.tar.bz2, f3648a94fc9252a2e5b6e56978e756ff272403ec385f8be42338cae3f4f4e8a5 monero-linux-x64-v0.15.0.1.tar.bz2, 8d61f992a7e2dbc3d753470b4928b5bb9134ea14cf6f2973ba11d1600c0ce9ad monero-linux-x86-v0.15.0.1.tar.bz2, f157d8130978772bfe3ec4ebaca21f561dc0deffe49904af49f4a11d96c0cda6 monero-linux-armv8-v0.15.0.1.tar.bz2, 67b890a10332cd91c69472e345b9ab624532540601a1d99f6fabb9c5c1b62455 monero-linux-armv7-v0.15.0.1.tar.bz2, 19c34bf8d79b6ae809efe30a4c02695cd2d8212709a5bff43a5aec49517c41ee monero-android-armv8-v0.15.0.1.tar.bz2, f9cbf531049068f9c07b92a89371ff8aab6b69062077c3dfe4fa27a9956f8759 monero-android-armv7-v0.15.0.1.tar.bz2, ea5eac2eed4d10cb35af50182ad11edeeffc4200d2b2b8e47f0283ae06fc4185 monero-freebsd-x64-v0.15.0.1.tar.bz2, 810dbac09546a14fe6e2c276f41eebc5489bc43f91c0a85a080528ccd9ce12a8

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.15.0.1.zip(72.14 MB)
    monero-win-x86-v0.15.0.1.zip(67.10 MB)
    monero-mac-x64-v0.15.0.1.tar.bz2(58.60 MB)
    monero-linux-x64-v0.15.0.1.tar.bz2(72.78 MB)
    monero-linux-x86-v0.15.0.1.tar.bz2(73.71 MB)
    monero-linux-armv8-v0.15.0.1.tar.bz2(65.38 MB)
    monero-linux-armv7-v0.15.0.1.tar.bz2(63.76 MB)
    monero-android-armv8-v0.15.0.1.tar.bz2(67.36 MB)
    monero-android-armv7-v0.15.0.1.tar.bz2(66.70 MB)
    monero-freebsd-x64-v0.15.0.1.tar.bz2(56.28 MB)
  • v0.15.0.0(Nov 12, 2019)

    This is the v0.15.0 release of the Monero software. This major release is due to the November 30th network update, which in turn adds a new PoW, RandomX.

    Overview

    Some highlights of this major release are:

    • Android builds
    • Better readline support
    • Info leak fixes when an adversary can perform traffic analysis between a wallet and a node (reported by: Florian Tramèr, Dan Boneh, and Kenneth G. Paterson)
    • New PoW based on random instructions, adapted to CPUs
    • Pay for service system (either for nodes to offer paid RPC, or third parties to offer services paid for via monero mining)
    • Optional Tor/I2P transaction relay for privacy (block relay being done on clearnet)
    • New gen_ssl_cert tool to generate SSL certificates suitable for Monero usage
    • Difficulty can now range 128 bits
    • Windows logging colour support
    • SSL timeout fixes
    • New wallet commands: public_nodes, restore_height
    • New daemon commands: set_bootstrap_daemon
    • New daemon RPC: flush_cache, get_public_nodes, set_bootstrap_daemon
    • New wallet RPC: edit_address_book
    • New wallet command line switches: --no-zmq, --restore-from-seed, --extra-entropy, --rpc-bind-ipv6-address, --rpc-use-ipv6, --rpc-require-ipv4
    • New wallet settings: ignore-outputs-above, ignore-outputs-below, export-format
    • New dameon commands: --tx-proxy, --p2p-bind-ipv6-address, --p2p-bind-port-ipv6, --rpc-bind-ipv6-address, --p2p-use-ipv6, --rpc-use-ipv6, --p2p-require-ipv4, --rpc-require-ipv4, --keep-alt-blocks
    • Fees are now based on median block weight
    • Daemons can now optionally sync off pruned data
    • Consensus changes: forbid transaction with just one output, use effective median block weight for penalty, enforced 10 block minimum output age for use in rings, reject signatures in coinbase txes, reject v1 coinbase txes
    • Python3 compatibility in tests
    • Many more tests
    • Translations now use Weblate rather than Pootle
    • Guard against generating bad block templates in pathological case
    • Fix get_reserve_proof when some outputs are sent but not mined yet
    • New locked field in get_transfers/get_{bulk_,}_payments
    • Fixes for syncing on big endian
    • Verification speedups
    • add pruned and publicrpc flags to print_pl
    • Automatic public nodes discovery and bootstrap daemon switching
    • New release field to get_version daemon RPC
    • Ledger improvements
    • Some protection against isolation by rotating a small amount of nodes
    • New seed node
    • The wallet can now export data in ASCII (text) format
    • Inactivity lock in wallet
    • Peer list sanitization
    • riscv 64 bit support
    • Various networking fixes and improvements
    • Better Unicode support in RPC
    • IPv6 support
    • Standalone payment IDs creation code removed
    • Allow blocking whole subnets
    • export_key_images and export_outputs can now export incrementally or fully
    • Many improvements in depends build system
    • Remove dead xiala.net from default DNS resolvers
    • RPC connections are now affected by bans
    • Misc DoS and robustness fixes
    • Fix v1 transaction retrieval from the txpool
    • White noise system to frustrate traffic analysis
    • delay IGP probing on startup
    • Fix committing some data to the database on batch error
    • allow exporting blocks.dat format from a pruned blockchain
    • Fix wallet SSL cert issues
    • alt_chain_info can now display information about a particular alt chain
    • Keep alternative blocks in LMDB
    • User prompt when a tx sends more than one old output

    Contributors for this Release

    This intermediary release was the direct result of 95 people who worked, largely unpaid and altruistically, to put out 706 commits containing 283980 new lines of code. We'd like to thank them very much for their time and effort.

    • anonimal
    • binaryFate
    • cslashm
    • Doyle
    • dsc
    • Dusan Klinec
    • erciccione
    • Gingeropolous
    • Guillaume Le Vaillant
    • Harry MacFinned
    • HomDX
    • Howard Chu
    • hyperreality
    • iamamyth
    • iDunk5400
    • Jake Hemmerle
    • Jason Rhinelander
    • Jesus Ramirez
    • JesusRami
    • Jethro Grassie
    • Jonathan Cross
    • Lazaridis
    • Lee Clagett
    • Lev Sizov
    • luigi1111
    • Martijn Otto
    • Matyas Liptak
    • Michal vel [email protected]
    • moneromooo-monero
    • Mr. Me0w
    • Nathan Dorfman
    • Nejcraft
    • Noel O'Donnell
    • pkubaj
    • rbrunner7
    • redfish
    • Riccardo Spagni
    • Sarang Noether
    • selene
    • selsta
    • SomaticFanatic
    • stoffu
    • ston1th
    • Tadeas Moravec
    • tevador
    • TheCharlatan
    • TheQuantumPhysicist
    • Thomas Winget
    • thotbot
    • tobtoht
    • Tom Smeding
    • TrasherDK
    • vicsn
    • wowario
    • xiphon
    • Your Name

    Special thanks to our translators for this release: Agent LvM, TheFuzzStone, erciccione, Luca Ciavatta, Alessandro Lotta, stefanomarty, Lafudoci, Assumpta Anglada, BennyBeat, Ecron, Joan Montané, Russian Bear, Andrew Onishi, Scott Anecito, el00ruobuob, glv2, Viktor, dskch83, jindouyunz, TE Scott, razorshaman909, Jonathan Heirbaut, siesero, fullmetalScience, Christian, M5M400, Sneaky Squid, Paul Rant, Tim Hartmann

    Official Download Links

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.15.0.0.zip, 6b72b3836d179eb517154bbcb8e2119b168ae9d1054866a438aaeab9521f795f monero-win-x86-v0.15.0.0.zip, b4856d0d3389497bf103d5a4dc4e73c6a39e5be20736b3e0286e76f100c508b6 monero-mac-x64-v0.15.0.0.tar.bz2, bca6b776e7e906fcda4c829aa8666eb9d92014450b87a6723a7c6eda6d6e7de1 monero-linux-x64-v0.15.0.0.tar.bz2, 53d9da55137f83b1e7571aef090b0784d9f04a980115b5c391455374729393f3 monero-linux-x86-v0.15.0.0.tar.bz2, 2197d04f4ffad4e1344b2648273f0be152de637bafc5d940cdf215cbc50e1f79 monero-linux-armv8-v0.15.0.0.tar.bz2, f92f0acbc49076ad57337b5928981cd72c01aabe6a8eb69a1782f7fa1388fb77 monero-linux-armv7-v0.15.0.0.tar.bz2, 326f783ffde78694b2820c95aa310ead00bb5876937ed4edf9c1abd6b6aadc02 monero-freebsd-x64-v0.15.0.0.tar.bz2, hash

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
    monero-win-x64-v0.15.0.0.zip(72.13 MB)
    monero-win-x86-v0.15.0.0.zip(67.10 MB)
    monero-mac-x64-v0.15.0.0.tar.bz2(58.59 MB)
    monero-linux-x64-v0.15.0.0.tar.bz2(72.78 MB)
    monero-linux-x86-v0.15.0.0.tar.bz2(73.70 MB)
    monero-linux-armv8-v0.15.0.0.tar.bz2(65.37 MB)
    monero-linux-armv7-v0.15.0.0.tar.bz2(63.77 MB)
  • v0.14.1.0(Jul 17, 2019)

    Overview

    This is the v0.14.1.0 point release of the Monero software, and it is part of the v0.14 network update. That major release was due to the March 9th network update, which in turn added a new PoW based on Cryptonight-R, added a new block weight algorithm, and introduced a slightly more efficient RingCT format. This release represents the bulk of the effort on Monero over the past 6 months, i.e., includes all new features.

    Some highlights of this point release are:

    Some highlights of the previous minor point release (v0.14.0.2) are:

    • Added fix from Ledger for change bug with subaddresses
    • Fix crafted coinbase tx mishandling in wallet
    • Fix JIT build on mac
    • Make slow hash request a restricted RPC request
    • Fix off by one in block weight in regtest mode
    • Fix fork rules determination for old daemons
    • Fix estimated block height for GUI/API
    • Fix sync wedge when an incoming tx is already in the pool

    Some highlights of this major release are:

    • New PoW based on Cryptonight-R
    • New block weight algorithm
    • New slightly more efficient RingCT format
    • Placeholder short payment ID to increase transaction uniformity
    • Obsolete long payment IDs are now disabled unless a switch is used
    • New event notifications for large block rate changes and blockchain reorgs
    • Unmixable outputs can be spent again
    • Fix bad pruned transactions JSON in RPC
    • Some build fixes for various platforms/setups
    • Fix for crash on exit

    Contributors for this Release

    This intermediary release was the direct result of 77 people who worked, largely unpaid and altruistically, to put out 1551 commits containing 81 191 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • TheCharlatan
    • moneromooo-monero
    • Riccardo Spagni
    • Howard Chu
    • Dusan Klinec
    • xiphon
    • Jesse Jackson
    • Tadeas Moravec
    • Lee Clagett
    • stoffu
    • cslashm
    • Nathan Dorfman
    • Jethro Grassie
    • selsta
    • Martijn Otto
    • Paul Shapiro
    • Rohaq
    • K3v1n Kur14k053
    • moneromooo
    • erciccione
    • fireice-uk
    • Jason Wong
    • SChernykh
    • Doyle
    • who-biz
    • Sarang Noether
    • italocoin
    • Pol Mauri
    • ston1th
    • iDunk5400
    • Tyler Saballus
    • Gregory Lemercier
    • moneroexamples
    • Justin Gerber
    • binaryFate
    • cryptochangements34
    • AnythingTechPro
    • buricl
    • Tom Smeding
    • Lafudoci
    • doy-lee
    • Joel
    • Hasan Pekdemir
    • Tyler Baker
    • mmitkevich
    • naughtyfox
    • fuwa
    • Cactii1
    • Leon Klingele
    • Michał Sałaban
    • RaskaRuby
    • Gingeropolous
    • rbrunner7
    • David Meister
    • Jean-Michel DILLY
    • Norman Moeschter
    • spoke0
    • Guillaume LE VAILLANT
    • Guido Vranken
    • Ted Moravec
    • m2049r
    • Jane Mercer
    • sachaaaaa
    • Aniket Pradhan
    • anonimal
    • Dimitris Apostolou
    • Hom DX
    • Neofito89
    • George
    • Markus Behm
    • Ricardo de Vries
    • Florian
    • monerorus
    • Jkat
    • MoroccanMalinois
    • sanecito
    • Monero-Pootle

    Official Download Links

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.14.1.0.zip: ca4367c565026ea23bf90180cdd750a1d6adfab36ee19435e91ed740a369a6fc monero-win-x86-v0.14.1.0.zip: ed26ad4c7f3fc15893c615e438a76f91c8c5c18e29d32bf350e126beecc2877f monero-mac-x64-v0.14.1.0.tar.bz2: 96ae0af11cdf4ad66326ae128675d6476088719ed3d226a7dbc903767f3a858a monero-linux-x64-v0.14.1.0.tar.bz2: 2b95118f53d98d542a85f8732b84ba13b3cd20517ccb40332b0edd0ddf4f8c62 monero-linux-x86-v0.14.1.0.tar.bz2: a31bca6e556064d56f7a37ddbea26408902e5f387e5b67fa5b0999ca299b8eef monero-linux-armv7-v0.14.1.0.tar.bz2: b95903a0f1b0c15cefdf59814fe12e3597a3322ae6d0567c732f0ab79c877724 monero-linux-armv8-v0.14.1.0.tar.bz2: cf46a1cdea6f7983697df6dfbbb184b6dd23e816ed156899070885a78b310171 monero-freebsd-x64-v0.14.1.0.tar.bz2: 17f21d718ad0ba6d7965004ed8390a01a9ccf06ef95891ab26bd6592a7169c58

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
  • v0.14.0.2(Mar 8, 2019)

    Overview

    This is the v0.14.0.2 minor point release of the Monero software, and it is part of the v0.14 network update. That major release was due to the March 9th network update, which in turn added a new PoW based on Cryptonight-R, added a new block weight algorithm, and introduced a slightly more efficient RingCT format. This is a intermediary, stable release specifically for the network update, and does not represent the bulk of the effort on Monero over the past 6 months. That effort will be in the 0.14.1 release, which will follow in March after the network update.

    Some highlights of this minor point release are:

    • Added fix from Ledger for change bug with subaddresses
    • Fix crafted coinbase tx mishandling in wallet
    • Fix JIT build on mac
    • Make slow hash request a restricted RPC request
    • Fix off by one in block weight in regtest mode
    • Fix fork rules determination for old daemons
    • Fix estimated block height for GUI/API
    • Fix sync wedge when an incoming tx is already in the pool

    Some highlights of this major release are:

    • New PoW based on Cryptonight-R
    • New block weight algorithm
    • New slightly more efficient RingCT format
    • Placeholder short payment ID to increase transaction uniformity
    • Obsolete long payment IDs are now disabled unless a switch is used
    • New event notifications for large block rate changes and blockchain reorgs
    • Unmixable outputs can be spent again
    • Fix bad pruned transactions JSON in RPC
    • Some build fixes for various platforms/setups
    • Fix for crash on exit

    Contributors for this Release

    This intermediary release was the direct result of 14 people who worked, largely unpaid and altruistically, to put out 105 commits containing 6 122 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • stoffu
    • cslashm
    • moneromooo
    • Jethro Grassie
    • naughtyfox
    • Pol Mauri
    • xiphon
    • SChernykh
    • TheCharlatan
    • Lee Clagett
    • Dusan Klinec
    • Riccardo "fluffypony" Spagni
    • selsta
    • Tom Smeding

    Official Download Links

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.14.0.2.zip, ee68ef8d4b3309cca9e68ee272919c222021804e493c2549c910ef370dfe595a monero-win-x86-v0.14.0.2.zip, e471015b4851aef259758fc6a98805655c69db53f29b68362f63dccb496f6e55 monero-mac-x64-v0.14.0.2.tar.bz2, 255ae412daa04a0e0143325a7763e0574a27e7be86f4ef48582efde9fc07241c monero-linux-x64-v0.14.0.2.tar.bz2, 4dd5cd9976eda6b33b16821e79e671527b78a1c9bfb3d973efe84b824642dd21 monero-linux-x86-v0.14.0.2.tar.bz2, be6ad1de8f16bdeeaf5f4f36f93dcaad97eaa8ff02449b7fffed1abe21605e0e monero-linux-armv8-v0.14.0.2.tar.bz2, 6558f4cff51a1f25c9979a57fc31edd46caaaeda18c81c76e1dc6c94144525c6 monero-linux-armv7-v0.14.0.2.tar.bz2, f0e3d82354a9a25776bd2081f2bb1c081a8589ffb783e765ec974d211174236a monero-freebsd-x64-v0.14.0.2.tar.bz2, 3fc84b1ca32d99d436d304ee1401e911bbc1b0e1fc0314dc3f879df15e8428f3

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
    monero-mac-x64-v0.14.0.2.tar.bz2(34.85 MB)
    monero-win-x64-v0.14.0.2.zip(60.69 MB)
    monero-linux-x64-v0.14.0.2.tar.bz2(44.14 MB)
    monero-linux-x86-v0.14.0.2.tar.bz2(44.64 MB)
    monero-freebsd-x64-v0.14.0.2.tar.bz2(39.09 MB)
    monero-linux-armv7-v0.14.0.2.tar.bz2(39.39 MB)
    monero-linux-armv8-v0.14.0.2.tar.bz2(41.24 MB)
    monero-win-x86-v0.14.0.2.zip(62.54 MB)
  • v0.14.0.0(Feb 25, 2019)

    Overview

    This is the v0.14.0 release of the Monero software. This major release is due to the March 9th network update, which in turn adds a new PoW based on Cryptonight-R, adds a new block weight algorithm, and introduces a slightly more efficient RingCT format. This is a intermediary, stable release specifically for the network update, and does not represent the bulk of the effort on Monero over the past 6 months. That effort will be in the 0.14.1 release, which will follow in March after the network update.

    Some highlights of this major release are:

    • New PoW based on Cryptonight-R
    • New block weight algorithm
    • New slightly more efficient RingCT format
    • Placeholder short payment ID to increase transaction uniformity
    • Obsolete long payment IDs are now disabled unless a switch is used
    • New event notifications for large block rate changes and blockchain reorgs
    • Unmixable outputs can be spent again
    • Fix bad pruned transactions JSON in RPC
    • Some build fixes for various platforms/setups
    • Fix for crash on exit

    Contributors for this Release

    This intermediary release was the direct result of 11 people who worked, largely unpaid and altruistically, to put out 72 commits containing 5 981 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • stoffu
    • SChernykh
    • Lee Clagett
    • Pol Mauri
    • Tom Smeding
    • Riccardo "fluffypony" Spagni
    • cslashm
    • xiphon
    • moneromooo
    • Jethro Grassie
    • Dusan Klinec

    Official Download Links

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.14.0.0.zip, d65a98eec232219c8aee0023510ce162835cc8e567ff2d54fd23cca1e86f4c86 monero-win-x86-v0.14.0.0.zip, ca90d2e7bcc61b5983c38d32cab299e62f5e27a0daa95bf1b5b1e5eae4e60e0e monero-mac-x64-v0.14.0.0.tar.bz2, 8307432e7a22da197bc5909e8ac5bbefda6ea5f826ebcc284592d3445dd71009 monero-linux-x64-v0.14.0.0.tar.bz2, 1e67163de7a924d65f30da251932ab31fdbccf8042d5e04ef63041709eec7854 monero-linux-x86-v0.14.0.0.tar.bz2, f452f4ab594c8ae7b93bd845dac8d6c0384498736711af2e8fcc8a5b2e628de0 monero-linux-armv8-v0.14.0.0.tar.bz2, 331ca2aa42e849ba0e69d2a2c52b9bec63e3f1793ff6c7a6a137cedc1b0d1980 monero-linux-armv7-v0.14.0.0.tar.bz2, caa37b27f0cd4dbe8a932cb2fee8c7e0713ce55759a72120310da1d675e61cd0 monero-freebsd-x64-v0.14.0.0.tar.bz2, d91c3fff2d120b9ad867e49b4d4834dbeacdfba6e55c9f7cbbc74e72a48d3d66

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
    monero-freebsd-x64-v0.14.0.0.tar.bz2(39.06 MB)
    monero-linux-armv7-v0.14.0.0.tar.bz2(39.38 MB)
    monero-linux-armv8-v0.14.0.0.tar.bz2(41.24 MB)
    monero-linux-x64-v0.14.0.0.tar.bz2(44.14 MB)
    monero-linux-x86-v0.14.0.0.tar.bz2(44.28 MB)
    monero-mac-x64-v0.14.0.0.tar.bz2(34.86 MB)
    monero-win-x64-v0.14.0.0.zip(60.69 MB)
    monero-win-x86-v0.14.0.0.zip(62.53 MB)
  • v0.13.0.4(Oct 25, 2018)

    Overview

    This is the v0.13.0.4 point release of the Monero software, and it is part of the v0.13 network wide update. That major release was due to the October 18th network update, which in turn enabled Bulletproofs for reduced transaction sizes, sets the ringsize globally to 11 for uniformity of transactions, updated the PoW algorithm to CNv2, and finally sets the max transaction size at half of the penalty free block size. This release of the software presents a number of major improvements to Monero, as well as a large set of bug fixes.

    Some highlights of this point release are:

    • Fix view key parsing when creating a view wallet from the ommand line
    • Mark the default-ring-size simplewallet setting as obsolete
    • Fix loading an old Ledger wallet in the GUI
    • Exit crash fix for the daemon
    • Fix seed input not being echoed on Windows
    • Fix backspace in seed input echoing ^? on Linux
    • Fix connection issues with some Tor setups
    • Automatically pull submodules for the Docker build
    • Fix build for some ARM variants
    • Fix get_transactions RPC sending some binary data rather than hexadecimal
    • Fix new wallets generated via the GUI not being loadable again
    • Fix change_wallet_password RPC
    • Fix the daemon spawned by the GUI keeping a file descriptor to the wallet file
    • Fix performance issue due to multiple range proof verification
    • Fix Ledger communication issues
    • Rename blackball to spent_outputs, since some people seem to think it's a censorship list...
    • Fix caching issue with the output distribution RPC
    • Fix daemon log colours on (some versions of) Windows
    • Mitigate coinbase outputs being preferred by fake output selection

    Some highlights of this major release are:

    • New Docker file for 64 bit Android
    • Ledger code overhaul using HIDAPI
    • Blackballing tool allows the wallet to avoid selecting known spent outputs in its rings
    • Depends system to be used as a base for reproducible builds
    • Generic M/N multisig with M < N-1
    • Translation updates
    • Non ASCII seed input for Windows
    • The spend key is now optionally held encrypted in memory
    • More memory wiping to avoid secret data lingering in memory
    • Block and transaction notifcation system
    • New set of DNSSEC supporting default DNS servers
    • Support for DNSSEC keys rollover
    • Many minor fixes from Coverity reports
    • Memory containing secret data is now locked so it won't get swapped (Linux)
    • Preliminary support for non-Ledger hardware wallets
    • Fix for blockchain format conversion crash corner case
    • Warn about old style unencrypted payment IDs usage
    • Building now places objects/binaries in a separate directory for each branch
    • Multi output bulletproofs
    • Many bulletproof speedups
    • Fake output selection improvements (mostly using a gamma distribution)
    • monero-wallet-rpc now has a daemon mode
    • Cryptonight variant 2
    • Travis build bot
    • Fixes for --generate-from-json using the wrong wallet filename
    • Build fixes for s390x, ARM, Android, Windows, Docker, FreeBSD
    • Easier output splitting using sweep_* commands
    • The blockchain db now stores prunable and unprunable data separately
    • Keccak fix for big endian platforms
    • New wallet creation height fix for when the daemon is not running
    • New Keccak incremental update mode
    • Removal of obsolete transfer_original code
    • Transaction fees are now per byte, rather than per kilobyte
    • Transaction fees and block size/weight limit now consider notional size ("weight") to account for non-size-linear verification time
    • New update_available flag in get_info RPC
    • Some minor ringct verification speedup
    • Include cumulative difficulty in RPC block header data
    • Blocks now have a max weight for a single transaction
    • New expect and related objects
    • NetBSD support
    • Many more performance tests
    • Remove tiny bias in random EC scalar generation
    • Ring size is now fixed to 11 in the general case
    • Performance tests can now report min, median and standard deviation
    • Aligned memory allocator
    • Terse mode for performance tests
    • unbound and miniupnpc are now git submodules
    • start_mining RPC now reports whether the daemon is already mining instead of a generic error
    • Use more exploit mitigation build options where possible
    • cmake >= 3.5 is now needed
    • Network connections now bind to the correct IP
    • Error out when --wallet-file and --wallet-dir are both used at the same time
    • Daemon start time is now withheld when running with --restricted-rpc
    • New close_wallet RPC
    • Fix for the wallet giving up scanning a transaction at the first invalid public key
    • RPC password can now be set using the RPC_LOGIN environment variable
    • simplewallet can now use a monero: URI directly
    • cn_deserialize can now extract payment IDs from transactions
    • The daemon now warns about performance if it detects the blockchain is on a rotating hard disk
    • Fix seed usage on big endian platforms
    • Compare secret keys in constant time
    • New refresh wallet RPC
    • Fix wallet going out of sync when it fails to parse a transaction
    • Fix wallet failing to load after its internal cached hash chain goes out of sync
    • Translation files are now handled when cross compiling
    • Fix txpool code infinite loop if a database error occurs
    • Speed up get_output_distribution a lot by caching data in the blockchain database
    • Some HTTP parsing speedups
    • New change_wallet_password RPC
    • Block template caching for performance
    • simplewallet now understands named priority levels, in additions to numbers
    • Resize the blockchain more conservatively
    • Fix earliest fork height caching in wallet
    • Core dumps are now disabled in wallet release binaries since they would contain secret data
    • The logger will now print to the console if the logger isn't live
    • Sync blockchin based on bytes received, not blocks received, for better performance
    • New codefresh pipeline
    • New blockchain_depth and blockchain_ancestry statistics tools
    • The wallet can now use a user defined number of Cryptonight rounds for its KDF
    • simplewallet now warns about unrecoverable data when rescan_blockchain is run
    • Fix for race in network connection shutdown
    • Fix for simplewallet misreporting long times
    • Fix sanity checking of update record hashes
    • simplewallet now points out coinbase outputs in show_transfer
    • 0MQ correctness and performance improvements
    • Fix for simplewallet dividing by 0 on an invalid dameon response
    • New get_address_index wallet RPC
    • getbalance RPC now accepts a set of address indices
    • New set_tx_key simplewallet command to import tx keys from other wallets
    • --log-file now handles filenames without directories
    • RPC JSON error response now include the JSON version
    • Syncing messages now include a percentage done and blocks left to sync
    • Fix quadratic complexity in import_key_images
    • New locked_sweep_all simplewallet command
    • Make tests use temporary files in a writable directory
    • Fix wallet language detection when using --use-english-language-names
    • Integrated addresses can now be made for an arbitrary address
    • Do not sync read only databases
    • Build fix for boost 1.67
    • core tests now have a --filter option
    • miniupnpc, rapidjson and unbound upstream updates
    • Minor HTTP parsing fixes and speedups
    • New ignore-fractional-outputs wallet setting to ignore inputs below the fee level
    • New --regtest and --fixed-difficulty debug options
    • New generatblocks debug RPC
    • Prevent the wallet cache from being opened by more than one wallet at a time
    • UTF-8 vs UTF-16 filename conversion for windows
    • New suggested_confirmations field based on transfer amount and coinbase amount
    • Cache ringdb encryption key for speed
    • Threading improvements
    • Wallet refresh speedups
    • alt_chain_info can now show a particular chain
    • Fix read buffer overflow in import_key_images
    • New get_transaction_pool_hashes JSON RPC
    • Lower subaddress lookahead when using a hardware wallet
    • Report the blockchain size in getinfo
    • Report block hash and height when finding a block
    • Fix double header in unsigned transaction file when cold signing
    • Fix thoretical P2P layer wedge when getting incoming connection cancellations at just the right time
    • Fix lengthy delay when setting auto-refresh off at the wrong time
    • Fix 0MQ bind call when address and/or port are empty
    • Add disclaimer in the README that third party data is, well, third party, and thus differently trusted
    • Fix wallet RPC crashes when there is no open wallet
    • Fix wallet crash when using a newly created account
    • Batch transactions are now enabled by default in LMDB
    • Quantize starting refresh height when starting up the wallet, to help against fingerprinting
    • New --max-log-files command line option
    • simplewallet can now set to ignore unmixable outputs (run rescan_spent to undo)
    • Fix incorrect fee for split transactions
    • Report db version number when it is incompatible
    • P2P command line options now accept hostnames as well as IP addresses
    • Adaptive connection timeout system, to mitigate against DoS
    • simplewallet does not prompt for a missing payument ID when sending to subaddresses only
    • Log rotation now numbers files if getting current time fails
    • simplewallet can now take a filename with rings in th set_ring command
    • Fix cold signing with bulletproofs
    • --guard-against-pwnage is now --dangerous-unverified-import in blockchain-import, and it now warns and pauses
    • Strip copyrighted ICC profile (can't make it up) metadata from monero icon PNG file
    • The wallet does not log by default any longer, for privacy
    • Consider Tor/I2P addresses as being non-local for daemon trust purposes
    • set_daemon wallet command now acccepts an optional trusted/untrusted argument
    • Do not try to pop blocks with unexpected version from a read only database
    • Drop P2P connection if most blocks are invalid
    • New set of wallet RPC for cold signing
    • Fix 172.16..31 local IP range detection
    • Fix readline interfering with std::cerr usage
    • New Windows debug build Makefile targets
    • Disable file size sanity check for wallet caches, which can get quite large
    • Enable/disable auto safe mode on LMDB where appropriate
    • Fix build with GCC 8.1.0
    • Warn when no incoming P2P connections are seen
    • Use correct unit for fee in simplewallet
    • Fix output shuffling for multisig
    • Fix race adding the same tx twice to the txpool
    • fix configuring version.cpp without git
    • Add warnings about inaccurate balances to to watch-only wallet
    • New unit tests
    • Many more smaller fixes, speedups, improvements and other tweaks

    Contributors for this Release

    This release was the direct result of 58 people who worked, largely unpaid and altruistically, to put out 967 commits containing 37 385 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • Tyler Baker
    • Rafficer
    • rbrunner7
    • einsteinsfool
    • Sarang Noether
    • stoffu
    • el00ruobuob
    • HomDx
    • Jethro Grassie
    • xiphon
    • Maxim Shishmarev
    • phloatingman
    • redfish
    • SChernykh
    • m2049r
    • Judemir Ribeiro
    • Andrea
    • Lee Clagett
    • Jkat
    • Leon Klingele
    • naughtyfox
    • jcktm
    • philkode
    • MoroccanMalinois
    • itssteven
    • Dusan Klinec
    • Thaer Khawaja
    • cornfeedhobo
    • Italocoin
    • iDunk5400
    • Riccardo "fluffypony" Spagni
    • Guillaume Le Vaillant
    • Gene Peters
    • victorsintnicolaas
    • Gingeropolous
    • Tuan M. Hoang
    • luigi1111
    • hrumag
    • p8p
    • moneroexamples
    • Jonathan Cross
    • fireice-uk
    • Teutone
    • ordtrogen
    • S
    • moneromooo
    • Jean Pierre Dudey
    • whythat
    • Jorropo
    • Howard Chu
    • cryptochangements34
    • OPSXCQ
    • TheCharlatan
    • anonimal
    • artyomsol
    • Ryan Ronnander
    • k1nghat
    • Alexandro Sanchez
    • cslashm
    • Thomas Vaughan

    Official Download Links

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.13.0.4.zip, d809acd1ed688a4567716cf199c75b51e696a022e6953df3642a8922a48a734a monero-win-x86-v0.13.0.4.zip, f2034f3dc125097c3ae50dff5b0a46798863fab60da8e4f35e4cb8d7d2202741 monero-mac-x64-v0.13.0.4.tar.bz2, dd859659bf46a11f4bb2de5bddca7c19038758024e32eb7979bc6bf29ef72e56 monero-linux-x64-v0.13.0.4.tar.bz2, 693e1a0210201f65138ace679d1ab1928aca06bb6e679c20d8b4d2d8717e50d6 monero-linux-x86-v0.13.0.4.tar.bz2, 3f02b0de407f944e524afc9d53d7e9ce92bf17ac6e6ef92cd3c22346afc2cb6c monero-freebsd-x64-v0.13.0.4.tar.bz2, 95bbf57dcae4810077012835a8d369cf3ecac6e1be7b484d0d518c09868a0377 monero-linux-armv7-v0.13.0.4.tar.bz2, 65e2ce5d0abf80ed3b4ecef5babc37445dc4f032457811aafa8a221af78f554a

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
    monero-mac-x64-v0.13.0.4.tar.bz2(34.50 MB)
    monero-linux-armv7-v0.13.0.4.tar.bz2(39.10 MB)
    monero-freebsd-x64-v0.13.0.4.tar.bz2(38.83 MB)
    monero-linux-x64-v0.13.0.4.tar.bz2(43.60 MB)
    monero-linux-x86-v0.13.0.4.tar.bz2(44.00 MB)
    monero-win-x86-v0.13.0.4.zip(54.61 MB)
    monero-win-x64-v0.13.0.4.zip(60.32 MB)
  • v0.13.0.2(Oct 11, 2018)

    Overview

    This is the v0.13.0 release of the Monero software. This major release is due to the October 18th network update, which in turn enabled Bulletproofs for reduced transaction sizes, sets the ringsize globally to 11 for uniformity of transactions, updated the PoW algorithm to CNv2, and finally sets the max transaction size at half of the penalty free block size. This release of the software presents a number of major improvements to Monero, as well as a large set of bug fixes.

    Some highlights of this major release are:

    • New Docker file for 64 bit Android
    • Ledger code overhaul using HIDAPI
    • Blackballing tool allows the wallet to avoid selecting known spent outputs in its rings
    • Depends system to be used as a base for reproducible builds
    • Generic M/N multisig with M < N-1
    • Translation updates
    • Non ASCII seed input for Windows
    • The spend key is now optionally held encrypted in memory
    • More memory wiping to avoid secret data lingering in memory
    • Block and transaction notifcation system
    • New set of DNSSEC supporting default DNS servers
    • Support for DNSSEC keys rollover
    • Many minor fixes from Coverity reports
    • Memory containing secret data is now locked so it won't get swapped (Linux)
    • Preliminary support for non-Ledger hardware wallets
    • Fix for blockchain format conversion crash corner case
    • Warn about old style unencrypted payment IDs usage
    • Building now places objects/binaries in a separate directory for each branch
    • Multi output bulletproofs
    • Many bulletproof speedups
    • Fake output selection improvements (mostly using a gamma distribution)
    • monero-wallet-rpc now has a daemon mode
    • Cryptonight variant 2
    • Travis build bot
    • Fixes for --generate-from-json using the wrong wallet filename
    • Build fixes for s390x, ARM, Android, Windows, Docker, FreeBSD
    • Easier output splitting using sweep_* commands
    • The blockchain db now stores prunable and unprunable data separately
    • Keccak fix for big endian platforms
    • New wallet creation height fix for when the daemon is not running
    • New Keccak incremental update mode
    • Removal of obsolete transfer_original code
    • Transaction fees are now per byte, rather than per kilobyte
    • Transaction fees and block size/weight limit now consider notional size ("weight") to account for non-size-linear verification time
    • New update_available flag in get_info RPC
    • Some minor ringct verification speedup
    • Include cumulative difficulty in RPC block header data
    • Blocks now have a max weight for a single transaction
    • New expect and related objects
    • NetBSD support
    • Many more performance tests
    • Remove tiny bias in random EC scalar generation
    • Ring size is now fixed to 11 in the general case
    • Performance tests can now report min, median and standard deviation
    • Aligned memory allocator
    • Terse mode for performance tests
    • unbound and miniupnpc are now git submodules
    • start_mining RPC now reports whether the daemon is already mining instead of a generic error
    • Use more exploit mitigation build options where possible
    • cmake >= 3.5 is now needed
    • Network connections now bind to the correct IP
    • Error out when --wallet-file and --wallet-dir are both used at the same time
    • Daemon start time is now withheld when running with --restricted-rpc
    • New close_wallet RPC
    • Fix for the wallet giving up scanning a transaction at the first invalid public key
    • RPC password can now be set using the RPC_LOGIN environment variable
    • simplewallet can now use a monero: URI directly
    • cn_deserialize can now extract payment IDs from transactions
    • The daemon now warns about performance if it detects the blockchain is on a rotating hard disk
    • Fix seed usage on big endian platforms
    • Compare secret keys in constant time
    • New refresh wallet RPC
    • Fix wallet going out of sync when it fails to parse a transaction
    • Fix wallet failing to load after its internal cached hash chain goes out of sync
    • Translation files are now handled when cross compiling
    • Fix txpool code infinite loop if a database error occurs
    • Speed up get_output_distribution a lot by caching data in the blockchain database
    • Some HTTP parsing speedups
    • New change_wallet_password RPC
    • Block template caching for performance
    • simplewallet now understands named priority levels, in additions to numbers
    • Resize the blockchain more conservatively
    • Fix earliest fork height caching in wallet
    • Core dumps are now disabled in wallet release binaries since they would contain secret data
    • The logger will now print to the console if the logger isn't live
    • Sync blockchin based on bytes received, not blocks received, for better performance
    • New codefresh pipeline
    • New blockchain_depth and blockchain_ancestry statistics tools
    • The wallet can now use a user defined number of Cryptonight rounds for its KDF
    • simplewallet now warns about unrecoverable data when rescan_blockchain is run
    • Fix for race in network connection shutdown
    • Fix for simplewallet misreporting long times
    • Fix sanity checking of update record hashes
    • simplewallet now points out coinbase outputs in show_transfer
    • 0MQ correctness and performance improvements
    • Fix for simplewallet dividing by 0 on an invalid dameon response
    • New get_address_index wallet RPC
    • getbalance RPC now accepts a set of address indices
    • New set_tx_key simplewallet command to import tx keys from other wallets
    • --log-file now handles filenames without directories
    • RPC JSON error response now include the JSON version
    • Syncing messages now include a percentage done and blocks left to sync
    • Fix quadratic complexity in import_key_images
    • New locked_sweep_all simplewallet command
    • Make tests use temporary files in a writable directory
    • Fix wallet language detection when using --use-english-language-names
    • Integrated addresses can now be made for an arbitrary address
    • Do not sync read only databases
    • Build fix for boost 1.67
    • core tests now have a --filter option
    • miniupnpc, rapidjson and unbound upstream updates
    • Minor HTTP parsing fixes and speedups
    • New ignore-fractional-outputs wallet setting to ignore inputs below the fee level
    • New --regtest and --fixed-difficulty debug options
    • New generatblocks debug RPC
    • Prevent the wallet cache from being opened by more than one wallet at a time
    • UTF-8 vs UTF-16 filename conversion for windows
    • New suggested_confirmations field based on transfer amount and coinbase amount
    • Cache ringdb encryption key for speed
    • Threading improvements
    • Wallet refresh speedups
    • alt_chain_info can now show a particular chain
    • Fix read buffer overflow in import_key_images
    • New get_transaction_pool_hashes JSON RPC
    • Lower subaddress lookahead when using a hardware wallet
    • Report the blockchain size in getinfo
    • Report block hash and height when finding a block
    • Fix double header in unsigned transaction file when cold signing
    • Fix thoretical P2P layer wedge when getting incoming connection cancellations at just the right time
    • Fix lengthy delay when setting auto-refresh off at the wrong time
    • Fix 0MQ bind call when address and/or port are empty
    • Add disclaimer in the README that third party data is, well, third party, and thus differently trusted
    • Fix wallet RPC crashes when there is no open wallet
    • Fix wallet crash when using a newly created account
    • Batch transactions are now enabled by default in LMDB
    • Quantize starting refresh height when starting up the wallet, to help against fingerprinting
    • New --max-log-files command line option
    • simplewallet can now set to ignore unmixable outputs (run rescan_spent to undo)
    • Fix incorrect fee for split transactions
    • Report db version number when it is incompatible
    • P2P command line options now accept hostnames as well as IP addresses
    • Adaptive connection timeout system, to mitigate against DoS
    • simplewallet does not prompt for a missing payument ID when sending to subaddresses only
    • Log rotation now numbers files if getting current time fails
    • simplewallet can now take a filename with rings in th set_ring command
    • Fix cold signing with bulletproofs
    • --guard-against-pwnage is now --dangerous-unverified-import in blockchain-import, and it now warns and pauses
    • Strip copyrighted ICC profile (can't make it up) metadata from monero icon PNG file
    • The wallet does not log by default any longer, for privacy
    • Consider Tor/I2P addresses as being non-local for daemon trust purposes
    • set_daemon wallet command now acccepts an optional trusted/untrusted argument
    • Do not try to pop blocks with unexpected version from a read only database
    • Drop P2P connection if most blocks are invalid
    • New set of wallet RPC for cold signing
    • Fix 172.16..31 local IP range detection
    • Fix readline interfering with std::cerr usage
    • New Windows debug build Makefile targets
    • Disable file size sanity check for wallet caches, which can get quite large
    • Enable/disable auto safe mode on LMDB where appropriate
    • Fix build with GCC 8.1.0
    • Warn when no incoming P2P connections are seen
    • Use correct unit for fee in simplewallet
    • Fix output shuffling for multisig
    • Fix race adding the same tx twice to the txpool
    • fix configuring version.cpp without git
    • Add warnings about inaccurate balances to to watch-only wallet
    • New unit tests
    • Many more smaller fixes, speedups, improvements and other tweaks

    Contributors for this Release

    This release was the direct result of 58 people who worked, largely unpaid and altruistically, to put out 967 commits containing 37 385 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • Rafficer
    • rbrunner7
    • einsteinsfool
    • Sarang Noether
    • stoffu
    • el00ruobuob
    • HomDx
    • Jethro Grassie
    • xiphon
    • Maxim Shishmarev
    • phloatingman
    • redfish
    • SChernykh
    • m2049r
    • Judemir Ribeiro
    • Andrea
    • Lee Clagett
    • Jkat
    • Leon Klingele
    • naughtyfox
    • jcktm
    • philkode
    • MoroccanMalinois
    • itssteven
    • Dusan Klinec
    • Thaer Khawaja
    • cornfeedhobo
    • Italocoin
    • iDunk5400
    • Riccardo "fluffypony" Spagni
    • Guillaume Le Vaillant
    • Gene Peters
    • victorsintnicolaas
    • Gingeropolous
    • Tuan M. Hoang
    • luigi1111
    • hrumag
    • p8p
    • moneroexamples
    • Jonathan Cross
    • fireice-uk
    • Teutone
    • ordtrogen
    • S
    • moneromooo
    • Jean Pierre Dudey
    • whythat
    • Jorropo
    • Howard Chu
    • cryptochangements34
    • OPSXCQ
    • TheCharlatan
    • anonimal
    • artyomsol
    • Ryan Ronnander
    • k1nghat
    • Alexandro Sanchez
    • cslashm
    • Thomas Vaughan

    Official Download Links

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.13.0.2.zip, 82db8f99fa4b2900f78c282c2d99309b79da544824f9cdb10d0b80ceb511c5ed monero-win-x86-v0.13.0.2.zip, f9fad998af2c439dce45b8210784b228c8a99dced926e9bec3522af2a213c747 monero-mac-x64-v0.13.0.2.tar.bz2, bb0f197c9e43e183b9af48dfbc4f7b492568fe01d2c23c66ec3632c8aa85e4e9 monero-linux-x64-v0.13.0.2.tar.bz2, a59fc0fffb325b4f92a5b500438bf340ddbf78e91581eb4df95ad2d5e5fb42a8 monero-linux-x86-v0.13.0.2.tar.bz2, 87396e833859cbafff53db753443f8f94a962d9738cb0f69ea9d0b3c940960e6

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
    monero-mac-x64-v0.13.0.2.tar.bz2(34.49 MB)
    monero-linux-x64-v0.13.0.2.tar.bz2(43.60 MB)
    monero-linux-x86-v0.13.0.2.tar.bz2(43.99 MB)
    monero-win-x86-v0.13.0.2.zip(54.59 MB)
    monero-win-x64-v0.13.0.2.zip(60.32 MB)
  • v0.12.3.0(Jul 23, 2018)

    Overview

    This is the v0.12.3.0 point release of the Monero software, and it is part of the v0.12 network wide update. The major release was due to the April 6th network update, which in turn increased the minimum ring signature size, sorted inputs so as not to leak wallet choice by inference, and slightly changed the proof-of-work algorithm to prevent DoS attacks by ASICs. This release of the software presents a number of major improvements to Monero, as well as a large set of bug fixes.

    Some highlights of this point release are:

    • Fix for overly abrupt remote node timeouts
    • Fix for edge case where a wallet might incorrectly report received Monero

    Some highlights of this major release are:

    • tweaked PoW to block DoS attacks from ASICs
    • added input ordering to prevent wallet inference
    • increased minimum ring size from 5 to 7
    • subaddress support added, with addresses starting with a prefix of 8
    • added multisig support
    • added support for SunOS / Solaris
    • initial support for Ledger Nano S hardware wallet
    • added seed encryption by password
    • securely erase keys from memory, for most cases, when no longer in use
    • initial Bulletproofs implementation live on testnet
    • added accounts, tags, and labels, via subaddresses
    • added initial, quite rough support for 0MQ
    • added some mitigations for privacy-threatening key reusing forks
    • added a new network, stagenet, which mirrors mainnet's features
    • added SSL support for light wallet API
    • added CORS support to the RPC stack
    • added a --generate-from-spend-key flag to the CLI wallet
    • added a --disable-dns-checkpoints flag to the daemon
    • massive improvements to build hardening
    • added native fuzz testing for user input
    • added the ability to limit inbound connections
    • enabled "fluffy blocks" by default
    • added a --max-txpool-size mempool size limit flag
    • allow a remote node to temporarily process RPC requests during IBD
    • added a relay_tx command to the RPC wallet
    • allow for spend key retrieval via RPC wallet call
    • made libraries use position independent code
    • improvements made to Docker image
    • added a sweep_single command to the CLI wallet
    • made RPC error codes more specific
    • improved stack trace printing, and noted stack trace lib in output
    • split and refactored wallet_api from wallet code
    • added priority arguments to sweep_all and donate CLI wallet commands
    • added a --do-not-relay option to the CLI wallet
    • made the hashchain unit tests work again
    • added tests for subaddress expansion
    • added RingCT performance tests
    • added package installation instructions for Void Linux
    • made changes to ensure no sensitive data is logged accidentally
    • added a Croatian mnemonic word list
    • added a Lojban mnemonic word list
    • added a Swedish CLI translation
    • added stoffu's GPG key to the source code
    • added an timeoue for connections which don't complete a handshake
    • moved test building to the end of the CMake build process
    • as always, loads of bug fixes and performance improvements

    Contributors for this Release

    This release was the direct result of 87 people who worked, largely unpaid and altruistically, to put out 1 649 commits containing 56 735 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • Onur Altun
    • Leon Klingele
    • Jean Pierre Dudey
    • vasi
    • Howard Chu
    • Thaer Khawaja
    • flozilla
    • Bertrand Jacquin
    • 0xB44EFD8751077F97
    • Gene Peters
    • erciccione
    • ston1th
    • luigi1111
    • cryptochangements34
    • Ordtrogen Översättning
    • kenshi84
    • Calvin Liang
    • Dimitris Apostolou
    • MaxXor
    • Jan Beich
    • Pavel Maryanov
    • Orestis Konstantinidis
    • Alexander Azarov
    • stoffu
    • landergate
    • Gingeropolous
    • AnythingTechPro
    • MoroccanMalinois
    • Thomas Winget
    • Timothy D. Prime
    • Michał Sałaban
    • anonimal
    • guzzijones
    • Jethro Grassie
    • rbrunner7
    • Jaquee
    • Guillaume Le Vaillant
    • xmr-eric
    • moneroexamples
    • AJIekceu4
    • whythat
    • Riccardo "fluffypony" Spagni
    • selsta
    • Neozaru
    • Mike C
    • damir
    • iDunk5400
    • Mikhail Mitkevichl
    • Edward Betts
    • Helmut Pozimski
    • Nano Akron
    • h908714124
    • m2049r
    • Jonny Heggheim
    • Maxithi
    • lancillotto
    • Maxime Thiebaut
    • vdo
    • dEBRUYNE-1
    • Bruno Clermont
    • Tobias Hoffmann
    • Lee Clagett
    • Nick Johnson
    • aivve
    • cslashm
    • Tim L
    • Erik de Castro Lopo
    • sneurlax
    • Tadeas Moravec
    • binaryFate
    • Emilien Devos
    • Gareth Hayes
    • moneromooo
    • Dmitriy Plekhanov
    • Matt Smith
    • Dusan Klinec
    • Maximilian Lupke
    • SChernykh
    • Matthew Campassi
    • Vasil Dimov
    • redfish
    • Serhack
    • Matt Little
    • Cifrado
    • Cole Lightfighter
    • Dyrcona
    • Wei Tang

    Official Download Links

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.12.3.0.zip, 5c06097acebf643857672e673258d16d66a71de504377399b7407318f9887ee3 monero-mac-x64-v0.12.3.0.tar.bz2, 39d40e2001ca9948f434637c28b3933c0d79c66e2db07ffc4274711ab2d2ae66 monero-linux-x64-v0.12.3.0.tar.bz2, 72fe937aa2832a0079767914c27671436768ff3c486597c3353a8567d9547487 monero-linux-x86-v0.12.3.0.tar.bz2, 41d68f66a43098754de0d2ead0eaeb125fc7eb05ecf3eb6a48c96ce6874052f3 monero-linux-armv7-v0.12.3.0.tar.bz2, 839bddb01214acb8f7bc12181b206e1e8d99314337addef7ba850b15c32dc685 monero-linux-armv8-v0.12.3.0.tar.bz2, a6e994dc9fcec7259b656752a6fc0f9686bad47da9deec0f50398718cd9b9be8

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
    monero-linux-armv7-v0.12.3.0.tar.bz2(31.19 MB)
    monero-linux-armv8-v0.12.3.0.tar.bz2(29.02 MB)
    monero-linux-x64-v0.12.3.0.tar.bz2(35.01 MB)
    monero-linux-x86-v0.12.3.0.tar.bz2(34.84 MB)
    monero-mac-x64-v0.12.3.0.tar.bz2(27.39 MB)
    monero-win-x64-v0.12.3.0.zip(49.42 MB)
  • v0.12.2.0(Jun 4, 2018)

    Overview

    This is the v0.12.2.0 point release of the Monero software, and it is part of the v0.12 network wide update. The major release was due to the April 6th network update, which in turn increased the minimum ring signature size, sorted inputs so as not to leak wallet choice by inference, and slightly changed the proof-of-work algorithm to prevent DoS attacks by ASICs. This release of the software presents a number of major improvements to Monero, as well as a large set of bug fixes.

    Some highlights of this point release are:

    • mention announcement mailing list in README.md (lists.getmonero.org)
    • fix PCSC on windows (for Ledger support)
    • various build fixes
    • fix fee display unit when the unit is not the default
    • fixes for lengthy waits (and timeouts) when sending transactions and parsing ring history
    • automatically pop old version blocks if the user failed to update in time
    • fix sweep_unmixable output selection after the recent min ring size bump
    • sync fixes
    • document the need for building dependencies with -fPIC
    • fix bandwidth limit commands scaling
    • fix disabling logs (--log-level "")
    • reuse connections in the wallet API
    • fix reading some arguments from the config file
    • log stack trace on crash (wonky on windows)
    • fix loading the txpool with colliding key images
    • fix errors when the shared ringdb fails to initialize
    • fix destination ordering
    • fix endianness dependence in subaddress generation
    • fast scan mode for Ledger (exposes view key to the host computer)

    Some highlights of this major release are:

    • tweaked PoW to block DoS attacks from ASICs
    • added input ordering to prevent wallet inference
    • increased minimum ring size from 5 to 7
    • subaddress support added, with addresses starting with a prefix of 8
    • added multisig support
    • added support for SunOS / Solaris
    • initial support for Ledger Nano S hardware wallet
    • added seed encryption by password
    • securely erase keys from memory, for most cases, when no longer in use
    • initial Bulletproofs implementation live on testnet
    • added accounts, tags, and labels, via subaddresses
    • added initial, quite rough support for 0MQ
    • added some mitigations for privacy-threatening key reusing forks
    • added a new network, stagenet, which mirrors mainnet's features
    • added SSL support for light wallet API
    • added CORS support to the RPC stack
    • added a --generate-from-spend-key flag to the CLI wallet
    • added a --disable-dns-checkpoints flag to the daemon
    • massive improvements to build hardening
    • added native fuzz testing for user input
    • added the ability to limit inbound connections
    • enabled "fluffy blocks" by default
    • added a --max-txpool-size mempool size limit flag
    • allow a remote node to temporarily process RPC requests during IBD
    • added a relay_tx command to the RPC wallet
    • allow for spend key retrieval via RPC wallet call
    • made libraries use position independent code
    • improvements made to Docker image
    • added a sweep_single command to the CLI wallet
    • made RPC error codes more specific
    • improved stack trace printing, and noted stack trace lib in output
    • split and refactored wallet_api from wallet code
    • added priority arguments to sweep_all and donate CLI wallet commands
    • added a --do-not-relay option to the CLI wallet
    • made the hashchain unit tests work again
    • added tests for subaddress expansion
    • added RingCT performance tests
    • added package installation instructions for Void Linux
    • made changes to ensure no sensitive data is logged accidentally
    • added a Croatian mnemonic word list
    • added a Lojban mnemonic word list
    • added a Swedish CLI translation
    • added stoffu's GPG key to the source code
    • added an timeoue for connections which don't complete a handshake
    • moved test building to the end of the CMake build process
    • as always, loads of bug fixes and performance improvements

    Contributors for this Release

    This release was the direct result of 87 people who worked, largely unpaid and altruistically, to put out 1 649 commits containing 56 735 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • Onur Altun
    • Leon Klingele
    • Jean Pierre Dudey
    • vasi
    • Howard Chu
    • Thaer Khawaja
    • flozilla
    • Bertrand Jacquin
    • 0xB44EFD8751077F97
    • Gene Peters
    • erciccione
    • ston1th
    • luigi1111
    • cryptochangements34
    • Ordtrogen Översättning
    • kenshi84
    • Calvin Liang
    • Dimitris Apostolou
    • MaxXor
    • Jan Beich
    • Pavel Maryanov
    • Orestis Konstantinidis
    • Alexander Azarov
    • stoffu
    • landergate
    • Gingeropolous
    • AnythingTechPro
    • MoroccanMalinois
    • Thomas Winget
    • Timothy D. Prime
    • Michał Sałaban
    • anonimal
    • guzzijones
    • Jethro Grassie
    • rbrunner7
    • Jaquee
    • Guillaume Le Vaillant
    • xmr-eric
    • moneroexamples
    • AJIekceu4
    • whythat
    • Riccardo "fluffypony" Spagni
    • selsta
    • Neozaru
    • Mike C
    • damir
    • iDunk5400
    • Mikhail Mitkevichl
    • Edward Betts
    • Helmut Pozimski
    • Nano Akron
    • h908714124
    • m2049r
    • Jonny Heggheim
    • Maxithi
    • lancillotto
    • Maxime Thiebaut
    • vdo
    • dEBRUYNE-1
    • Bruno Clermont
    • Tobias Hoffmann
    • Lee Clagett
    • Nick Johnson
    • aivve
    • cslashm
    • Tim L
    • Erik de Castro Lopo
    • sneurlax
    • Tadeas Moravec
    • binaryFate
    • Emilien Devos
    • Gareth Hayes
    • moneromooo
    • Dmitriy Plekhanov
    • Matt Smith
    • Dusan Klinec
    • Maximilian Lupke
    • SChernykh
    • Matthew Campassi
    • Vasil Dimov
    • redfish
    • Serhack
    • Matt Little
    • Cifrado
    • Cole Lightfighter
    • Dyrcona
    • Wei Tang

    Official Download Links

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.12.2.0.zip, 188e122e4ec84994cfb8f8f1582514359c0e9e7b121a288362016565ba9d58da monero-win-x86-v0.12.2.0.zip, 4a1718e75e2467f9a4b02b5c342b702999c97b1c0f8a1cdd5a63d7c2b21f849a monero-mac-x64-v0.12.2.0.tar.bz2, 31568fdedf9557e5d8398013137266afe0e7ed46011691fef1b40ea7cd94e090 monero-linux-x64-v0.12.2.0.tar.bz2, cb97e3f8b700a81e1b0f1a77509eefbfb415aa6013f23685f8933b559309c580 monero-linux-x86-v0.12.2.0.tar.bz2, 99de2b8b5c60ce3d0fceda8607e5b1fcac22c2971f2b8f9016c5acb207587513 monero-linux-armv7-v0.12.2.0.tar.bz2, f4b7f3fe46d95f8499253c515401c01efb707a7362fec49ca4527ee5839331b3 monero-linux-armv8-v0.12.2.0.tar.bz2, 5ff435057d87952e70a5be4e7edf62440eeeb532734e739e208a9eca67c569c6

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
    monero-mac-x64-v0.12.2.0.tar.bz2(27.37 MB)
    monero-linux-x64-v0.12.2.0.tar.bz2(34.83 MB)
    monero-linux-armv8-v0.12.2.0.tar.bz2(28.99 MB)
    monero-linux-armv7-v0.12.2.0.tar.bz2(31.17 MB)
    monero-linux-x86-v0.12.2.0.tar.bz2(34.80 MB)
    monero-win-x64-v0.12.2.0.zip(49.36 MB)
    monero-win-x86-v0.12.2.0.zip(47.07 MB)
  • v0.12.1.0(May 23, 2018)

    Overview

    This is the v0.12.1.0 point release of the Monero software, and it is part of the v0.12 network wide update. The major release was due to the April 6th network update, which in turn increased the minimum ring signature size, sorted inputs so as not to leak wallet choice by inference, and slightly changed the proof-of-work algorithm to prevent DoS attacks by ASICs. This release of the software presents a number of major improvements to Monero, as well as a large set of bug fixes.

    Some highlights of this point release are:

    • mention announcement mailing list in README.md (lists.getmonero.org)
    • fix PCSC on windows (for Ledger support)
    • various build fixes
    • fix fee display unit when the unit is not the default
    • fixes for lengthy waits (and timeouts) when sending transactions and parsing ring history
    • automatically pop old version blocks if the user failed to update in time
    • fix sweep_unmixable output selection after the recent min ring size bump
    • sync fixes
    • document the need for building dependencies with -fPIC
    • fix bandwidth limit commands scaling
    • fix disabling logs (--log-level "")
    • reuse connections in the wallet API
    • fix reading some arguments from the config file
    • log stack trace on crash (wonky on windows)
    • fix loading the txpool with colliding key images
    • fix errors when the shared ringdb fails to initialize
    • fix destination ordering
    • fix endianness dependence in subaddress generation
    • fast scan mode for Ledger (exposes view key to the host computer)

    Some highlights of this major release are:

    • tweaked PoW to block DoS attacks from ASICs
    • added input ordering to prevent wallet inference
    • increased minimum ring size from 5 to 7
    • subaddress support added, with addresses starting with a prefix of 8
    • added multisig support
    • added support for SunOS / Solaris
    • initial support for Ledger Nano S hardware wallet
    • added seed encryption by password
    • securely erase keys from memory, for most cases, when no longer in use
    • initial Bulletproofs implementation live on testnet
    • added accounts, tags, and labels, via subaddresses
    • added initial, quite rough support for 0MQ
    • added some mitigations for privacy-threatening key reusing forks
    • added a new network, stagenet, which mirrors mainnet's features
    • added SSL support for light wallet API
    • added CORS support to the RPC stack
    • added a --generate-from-spend-key flag to the CLI wallet
    • added a --disable-dns-checkpoints flag to the daemon
    • massive improvements to build hardening
    • added native fuzz testing for user input
    • added the ability to limit inbound connections
    • enabled "fluffy blocks" by default
    • added a --max-txpool-size mempool size limit flag
    • allow a remote node to temporarily process RPC requests during IBD
    • added a relay_tx command to the RPC wallet
    • allow for spend key retrieval via RPC wallet call
    • made libraries use position independent code
    • improvements made to Docker image
    • added a sweep_single command to the CLI wallet
    • made RPC error codes more specific
    • improved stack trace printing, and noted stack trace lib in output
    • split and refactored wallet_api from wallet code
    • added priority arguments to sweep_all and donate CLI wallet commands
    • added a --do-not-relay option to the CLI wallet
    • made the hashchain unit tests work again
    • added tests for subaddress expansion
    • added RingCT performance tests
    • added package installation instructions for Void Linux
    • made changes to ensure no sensitive data is logged accidentally
    • added a Croatian mnemonic word list
    • added a Lojban mnemonic word list
    • added a Swedish CLI translation
    • added stoffu's GPG key to the source code
    • added an timeoue for connections which don't complete a handshake
    • moved test building to the end of the CMake build process
    • as always, loads of bug fixes and performance improvements

    Contributors for this Release

    This release was the direct result of 87 people who worked, largely unpaid and altruistically, to put out 1 619 commits containing 56 588 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • Onur Altun
    • Leon Klingele
    • Jean Pierre Dudey
    • vasi
    • Howard Chu
    • Thaer Khawaja
    • flozilla
    • Bertrand Jacquin
    • 0xB44EFD8751077F97
    • Gene Peters
    • erciccione
    • ston1th
    • luigi1111
    • cryptochangements34
    • Ordtrogen Översättning
    • kenshi84
    • Calvin Liang
    • Dimitris Apostolou
    • MaxXor
    • Jan Beich
    • Pavel Maryanov
    • Orestis Konstantinidis
    • Alexander Azarov
    • stoffu
    • landergate
    • Gingeropolous
    • AnythingTechPro
    • MoroccanMalinois
    • Thomas Winget
    • Timothy D. Prime
    • Michał Sałaban
    • anonimal
    • guzzijones
    • Jethro Grassie
    • rbrunner7
    • Jaquee
    • Guillaume Le Vaillant
    • xmr-eric
    • moneroexamples
    • AJIekceu4
    • whythat
    • Riccardo "fluffypony" Spagni
    • selsta
    • Neozaru
    • Mike C
    • damir
    • iDunk5400
    • Mikhail Mitkevichl
    • Edward Betts
    • Helmut Pozimski
    • Nano Akron
    • h908714124
    • m2049r
    • Jonny Heggheim
    • Maxithi
    • lancillotto
    • Maxime Thiebaut
    • vdo
    • dEBRUYNE-1
    • Bruno Clermont
    • Tobias Hoffmann
    • Lee Clagett
    • Nick Johnson
    • aivve
    • cslashm
    • Tim L
    • Erik de Castro Lopo
    • sneurlax
    • Tadeas Moravec
    • binaryFate
    • Emilien Devos
    • Gareth Hayes
    • moneromooo
    • Dmitriy Plekhanov
    • Matt Smith
    • Dusan Klinec
    • Maximilian Lupke
    • SChernykh
    • Matthew Campassi
    • Vasil Dimov
    • redfish
    • Serhack
    • Matt Little
    • Cifrado
    • Cole Lightfighter
    • Dyrcona
    • Wei Tang

    Official Download Links

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.12.1.0.zip, 42b7541d99d599beb67be3c44c698c9435180afa6eb34a5f9fd71d6e24161d16 monero-mac-x64-v0.12.1.0.tar.bz2, 7b7dd314e0556bfc4d1208f0ee92607e6876504af34b1fb902cc1249943f6329 monero-linux-x64-v0.12.1.0.tar.bz2, 635a3724eeb647d231a345af07145aab07423d8160c7e94a8456d3def00c75c8 monero-linux-x86-v0.12.1.0.tar.bz2, 0add858567a7817279e3e8c3729e33353dcbbc07aa4acd613c3256a166acac71 monero-linux-armv8-v0.12.1.0.tar.bz2, dce08c1afd09adaa59f466c08784b3d4451761964f9e862be2b8ccb8e44e1859

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
  • v0.12.0.0(Mar 24, 2018)

    Overview

    This is the v0.12.0.0 point release of the Monero software, and it is part of the v0.12 network wide update. This major release is due to the April 6th network update, which in turn increases the minimum ring signature size, sorts inputs so as not to leak wallet choice by inference, and slightly changes the proof-of-work algorithm to prevent DoS attacks by ASICs. This release of the software presents a number of major improvements to Monero, as well as a large set of bug fixes.

    Some highlights of this major release are:

    • tweaked PoW to block DoS attacks from ASICs
    • added input ordering to prevent wallet inference
    • increased minimum ring size from 5 to 7
    • subaddress support added, with addresses starting with a prefix of 8
    • added multisig support
    • added support for SunOS / Solaris
    • initial support for Ledger Nano S hardware wallet
    • added seed encryption by password
    • securely erase keys from memory, for most cases, when no longer in use
    • initial Bulletproofs implementation live on testnet
    • added accounts, tags, and labels, via subaddresses
    • added initial, quite rough support for 0MQ
    • added some mitigations for privacy-threatening key reusing forks
    • added a new network, stagenet, which mirrors mainnet's features
    • added SSL support for light wallet API
    • added CORS support to the RPC stack
    • added a --generate-from-spend-key flag to the CLI wallet
    • added a --disable-dns-checkpoints flag to the daemon
    • massive improvements to build hardening
    • added native fuzz testing for user input
    • added the ability to limit inbound connections
    • enabled "fluffy blocks" by default
    • added a --max-txpool-size mempool size limit flag
    • allow a remote node to temporarily process RPC requests during IBD
    • added a relay_tx command to the RPC wallet
    • allow for spend key retrieval via RPC wallet call
    • made libraries use position independent code
    • improvements made to Docker image
    • added a sweep_single command to the CLI wallet
    • made RPC error codes more specific
    • improved stack trace printing, and noted stack trace lib in output
    • split and refactored wallet_api from wallet code
    • added priority arguments to sweep_all and donate CLI wallet commands
    • added a --do-not-relay option to the CLI wallet
    • made the hashchain unit tests work again
    • added tests for subaddress expansion
    • added RingCT performance tests
    • added package installation instructions for Void Linux
    • made changes to ensure no sensitive data is logged accidentally
    • added a Croatian mnemonic word list
    • added a Lojban mnemonic word list
    • added a Swedish CLI translation
    • added stoffu's GPG key to the source code
    • added an timeoue for connections which don't complete a handshake
    • moved test building to the end of the CMake build process
    • as always, loads of bug fixes and performance improvements

    Contributors for this Release

    This release was the direct result of 82 people who worked, largely unpaid and altruistically, to put out 1 405 commits containing 56 598 new lines of code. We'd like to thank them very much for their time and effort. In no particular order they are:

    • Cifrado
    • Jon Roelofs
    • Bertrand Jacquin
    • Maximilian Lupke
    • Tadeas Moravec
    • lancillotto
    • landergate
    • Dmitriy Plekhanov
    • iDunk5400
    • ston1th
    • guzzijones
    • Emilien Devos
    • moneromooo
    • Pavel Maryanov
    • Lee Clagett
    • AJIekceu4
    • stoffu
    • Jethro Grassie
    • Gingeropolous
    • Erik de Castro Lopo
    • erciccione
    • Mike C "bigreddmachine"
    • Jonny Heggheim
    • Nick Johnson
    • Tobias Hoffmann
    • Ordtrogen Översättning
    • Tim L
    • whythat
    • Timothy D. Prime
    • dEBRUYNE
    • Matt "zone117x" Little
    • SChernykh
    • Helmut Pozimski
    • Wei Tang
    • Vasil Dimov
    • damir
    • Bruno Clermont
    • Cédric "cslashm"
    • Edward Betts
    • Jaquee
    • Nano Akron
    • MaxXor
    • Howard "hyc" Chu
    • Neozaru
    • AnythingTechPro
    • kenshi84
    • Calvin Liang
    • flozilla
    • Cole Lightfighter
    • xmr-eric
    • vasi
    • Dyrcona
    • selsta
    • 0xB44EFD8751077F97
    • Guillaume Le Vaillant
    • Maxime Thiebaut
    • vdo
    • Howard Chu
    • Matt Smith
    • Jérémie "binaryFate" Dubois-Lacoste
    • Alexander Azarov
    • Serhack
    • Michał Sałaban
    • Leon Klingele
    • Dusan Klinec
    • Jean Pierre Dudey
    • Dimitris Apostolou
    • Maxithi
    • MoroccanMalinois
    • Riccardo "fluffypony" Spagni
    • Matthew Campassi
    • luigi1111
    • m2049r
    • Thomas Winget
    • rbrunner7
    • cryptochangements34
    • h908714124
    • anonimal
    • Orestis Konstantinidis
    • Gareth Hayes
    • redfish
    • Onur Altun

    Official Download Links

    Download Hashes

    If you would like to verify that you have downloaded the correct file, please use the following SHA256 hashes:

    monero-win-x64-v0.12.0.0.zip, e74fb7abac3a34163e38ae1712282af3bbfb5bec00d2e0c88ca7d35f2fa95d28 monero-mac-x64-v0.12.0.0.tar.bz2, 61df6eec88df19d4d93c0542d6afb94887309ac20afc02cc45cdbada4b21d2ef monero-linux-x64-v0.12.0.0.tar.bz2, 928ad08ff0dea2790c7777a70e610b2d33c35a5df5900fbb050cc8c659237636

    A GPG-signed list of the hashes is at https://getmonero.org/downloads/hashes.txt and should be treated as canonical, with the signature checked against the appropriate GPG key in the source code (in /utils/gpg_keys)

    Source code(tar.gz)
    Source code(zip)
    monero-linux-x64-v0.12.0.0.tar.bz2(34.51 MB)
    monero-mac-x64-v0.12.0.0.tar.bz2(27.65 MB)
    monero-win-x64-v0.12.0.0.zip(49.37 MB)
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Cossack Labs 1.6k Jul 31, 2022
Trader is a framework that automated cryptocurrency exchange with strategy

A framework that automated cryptocurrency exchange with strategy

long2ice 60 Jul 8, 2022
Community-run technology powering the cryptocurrency, and decentralized applications on TrustFi Network

Go TrustFi-Ethereum Official Golang implementation of the TrustFi-Ethereum protocol. Automated builds are available for stable releases and the unstab

TrustFi Network 786 May 26, 2021
SwissWallet is a deterministic cryptocurrency wallet generator heavily based on MindWallet and MemWallet

SwissWallet SwissWallet is a deterministic cryptocurrency wallet generator heavily based on MindWallet and MemWallet but using argon2 and scrypt by de

vortex.live 7 Jul 28, 2022
A Golang cryptocurrency trading API & Library. Support Binance, BitMEX, Deribit, Bybit, Huobi DM, OKEX Futures and more.

CREX 中文 | English CREX 是一个用Golang语言开发的量化交易库。支持tick级别数字币期货平台的回测和实盘。实盘与回测无缝切换,无需更改代码。 回测 示例 @backtest 交易结果 开源策略 https://github.com/coinrust/trading-stra

Paranoid 2 May 31, 2022
A decentralized, cryptocurrency platform that can change this world!

Go Detonus Official Golang implementation of the Detonus protocol. Building the source For prerequisites and detailed build instructions please read t

Detonus (DT) 3 Oct 19, 2021
🍕 PizzaCoin - cryptocurrency for buying and selling pizza or another stuff

?? PizzaCoin Cryptocurrency for buying and selling pizza or another stuff Installation Compilation Windows go build -o pizzacoin.exe ./cmd/PizzaCoin/m

PizzaNode 1 Nov 21, 2021
Example of a cryptocurrency portfolio balancer with Ninjabot

Ninjabot Portfolio Balancer Example of strategy that balances a given portfolio with weights. Related Discussion: https://github.com/rodrigo-brito/nin

Rodrigo Brito 4 Jan 8, 2022
A cryptocurrency implementation in less than 1500 lines of code

Naivecoin - a cryptocurrency implementation in less than 1500 lines of code Motivation Cryptocurrencies and smart-contracts on top of a blockchain are

Conrado Quilles Gomes 1.1k Jul 29, 2022
This project was builded to improve my knowledge about blockchain and cryptocurrency

Blockchain Hello World in GoLang This project was builded to improve my knowledge about blockchain and cryptocurrency. To build this project, I've fol

Rafael A. C 3 Feb 20, 2022
Quoter - Get real-time Cryptocurrency quotes via CoinMarketCap

quoter Get real-time Cryptocurrency quotes via CoinMarketCap. Get it go get -u g

null 3 May 12, 2022
Split and distribute your private keys securely amongst untrusted network

cocert An experimental tool for splitting and distributing your private keys safely* cocert, generates ECDSA - P521 key and uses a technique known as

Furkan Türkal 187 Apr 16, 2022
Proving possession of private data using KZG-Polynomial Commitments.

data proof Copyright (c) 2021 George Carder [email protected] GENERAL PUBLIC LICENSE Version 3 // proof of concept // not efficient, optimized,

George Carder 1 Nov 26, 2021
Public key derivator for ECDSA (without knowledge of the private key)

A proof of concept of a public key derivation for ECDSA (without knowledge of the private key) It is a demonstration of how to implement a simple key

null 1 Dec 16, 2021
Private Terraform Provider Registry For Golang

private-reggie Private Terraform Provider Registry Test With curl $ curl http://localhost:8080/terraform/providers/v1/hashicorp/hashicups/versions ht

Adam as a Service 0 Dec 13, 2021
Kiteco-public - Primary Kite repo — private bits replaced with XXXXXXX

This is a public version of the main Kite repo The main Kite repo (originally kiteco/kiteco) was intended for private use. It has been lightly adapted

Kite 38 Jul 31, 2022
Go implementation of a vanity attempt to generate Bitcoin private keys and subsequently checking whether the corresponding Bitcoin address has a non-zero balance.

vanity-BTC-miner Go implementation of a vanity attempt to generate Bitcoin private keys and subsequently checking whether the corresponding Bitcoin ad

Lih Ingabo 1 Jun 3, 2022
EtherGuess - Crack Ethereum account private key

EtherGuess This program generates random Ethereum private keys and check for acc

lhxsimon 1 Jun 6, 2022