From 61522ae205dd4c0a69a2ee1014e8f0d13c415ffc Mon Sep 17 00:00:00 2001 From: erciccione Date: Thu, 17 Sep 2020 19:00:59 +0200 Subject: [PATCH] Blog: add post for release 0.17 Co-authored-by: selsta --- _posts/2020-09-17-monero-0.17-released.md | 104 ++++++++++++++++++ .../oxygen-orion.png | Bin 0 -> 19795 bytes 2 files changed, 104 insertions(+) create mode 100644 _posts/2020-09-17-monero-0.17-released.md create mode 100644 blog/assets/2020-09-17-monero-0.17-released/oxygen-orion.png diff --git a/_posts/2020-09-17-monero-0.17-released.md b/_posts/2020-09-17-monero-0.17-released.md new file mode 100644 index 00000000..5573e55e --- /dev/null +++ b/_posts/2020-09-17-monero-0.17-released.md @@ -0,0 +1,104 @@ +--- +layout: post +title: Monero 0.17.0.0 "Oxygen Orion" released +summary: Major release in preparation for the October 17th network upgrade +tags: [releases] +author: selsta, ErCiccione +image: /blog/assets/2020-09-17-monero-0.17-released/oxygen-orion.png +--- + +
+ +
+ +# Overview + +This is the v0.17.0.0 release of the Monero software. This major release is due to the [October 17th network upgrade]({{ site.baseurl_root }}/2020/08/18/network-upgrade-october-2020.html), which in turn adds support for the [CLSAG transaction format]({{ site.baseurl_root }}/2020/07/31/clsag-audit.html) 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 + +The complete list of changes is [available on GitHub](https://github.com/monero-project/monero/compare/v0.16.0.3...v0.17.0.0), along with [the source code](https://github.com/monero-project/monero/tree/v0.17.0.0). + +# 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](https://downloads.getmonero.org/cli/monero-win-x64-v0.17.0.0.zip) +- [Windows, 32-bit](https://downloads.getmonero.org/cli/monero-win-x86-v0.17.0.0.zip) +- [macOS, 64-bit](https://downloads.getmonero.org/cli/monero-mac-x64-v0.17.0.0.tar.bz2) +- [Linux, 64-bit](https://downloads.getmonero.org/cli/monero-linux-x64-v0.17.0.0.tar.bz2) +- [Linux, 32-bit](https://downloads.getmonero.org/cli/monero-linux-x86-v0.17.0.0.tar.bz2) +- [Linux, armv7](https://downloads.getmonero.org/cli/monero-linux-armv7-v0.17.0.0.tar.bz2) +- [Linux, armv8](https://downloads.getmonero.org/cli/monero-linux-armv8-v0.17.0.0.tar.bz2) +- [Android, armv7](https://downloads.getmonero.org/cli/monero-android-armv7-v0.17.0.0.tar.bz2) +- [Android, armv8](https://downloads.getmonero.org/cli/monero-android-armv8-v0.17.0.0.tar.bz2) +- [FreeBSD, 64-bit](https://downloads.getmonero.org/cli/monero-freebsd-x64-v0.17.0.0.tar.bz2) + +# 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](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. + +Two guides are available to guide you through the verification process: [Verify binaries on Windows (beginner)]({{ site.baseurl }}/resources/user-guides/verification-windows-beginner.html) and [Verify binaries on Linux, Mac, or Windows command line (advanced)]({{ site.baseurl }}/resources/user-guides/verification-allos-advanced.html). + +*'Oxygen Orion' logo made [by Monero Outreach](https://www.reddit.com/r/Monero/comments/isnmoo/all_the_world_knows_brave_orion_and_relies_on_the/)* diff --git a/blog/assets/2020-09-17-monero-0.17-released/oxygen-orion.png b/blog/assets/2020-09-17-monero-0.17-released/oxygen-orion.png new file mode 100644 index 0000000000000000000000000000000000000000..81ab1d3b1188d798bd6948957100342143037885 GIT binary patch literal 19795 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