Monero 0.13.0 "Beryllium Bullet" Release

Posted by: Riccardo Spagni (fluffypony)

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
  • Piotr Kąkol
  • Ryan Ronnander
  • k1nghat
  • Alexandro Sanchez
  • cslashm
  • Thomas Vaughan

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)


Post tags : Monero Software Releases