From e02826b334775834aa055a782bd831abdd787349 Mon Sep 17 00:00:00 2001 From: cevap Date: Sun, 2 Dec 2018 11:02:28 +0100 Subject: [PATCH] Add release notes --- doc/release-notes/release-notes-3.0.2.md | 394 ++++++++++++++++++++ doc/release-notes/release-notes-3.0.4.md | 257 +++++++++++++ doc/release-notes/release-notes-3.1.0.md | 435 +++++++++++++++++++++++ 3 files changed, 1086 insertions(+) create mode 100644 doc/release-notes/release-notes-3.0.2.md create mode 100644 doc/release-notes/release-notes-3.0.4.md create mode 100644 doc/release-notes/release-notes-3.1.0.md diff --git a/doc/release-notes/release-notes-3.0.2.md b/doc/release-notes/release-notes-3.0.2.md new file mode 100644 index 0000000000000..36dfe9e6d3ad7 --- /dev/null +++ b/doc/release-notes/release-notes-3.0.2.md @@ -0,0 +1,394 @@ +🗺️Ion Core 👛 3.0.2 CE ©️ - 👒 RELEASE 👒 is now available from: + + + +This is a new minor-revision version release, including various bug fixes and +performance improvements, as well as updated translations. + +Please report bugs using the issue tracker at github: + + + +Recommended Update +============== + +🗺️Ion Core 👛 3.0.2 CE ©️ - 👒 RELEASE 👒 is a recommended, semi-mandatory update for all users. This release contains transaction creation bug fixes for xION spends, automint calculation adjustments, and other various updates/fixes. + +xION spending requires this update. + +How to Upgrade +============== + +If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer (on Windows) or just copy over /Applications/Ion-Qt (on Mac) or iond/ion-qt (on Linux). + +Compatibility +============== + +🗺️Ion Core 👛 is extensively tested on multiple operating systems using +the Linux kernel, macOS 10.8+, and Windows Vista and later. + +Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support), +No attempt is made to prevent installing or running the software on Windows XP, you +can still do so at your own risk but be aware that there are known instabilities and issues. +Please do not report issues about Windows XP to the issue tracker. + +🗺️Ion Core 👛 should also work on most other Unix-like systems but is not +frequently tested on them. + +### :exclamation::exclamation::exclamation: MacOS 10.13 High Sierra :exclamation::exclamation::exclamation: + +**Currently there are issues with the 3.0.x gitian releases on MacOS version 10.13 (High Sierra), no reports of issues on older versions of MacOS.** + + +Notable Changes +=============== + +xION (_zerocoin for ion_) +------------------------- +We have now zerocoin into ion. More info about what it is and how to use it will follow in announcements and further release infos. + +Snap/Snapcraft builds +---------------------------- +Snapcraft is enabled and it can be simply installed by + +`sudo snap install --edge ion` + +([Don’t have snapd installed?](https://docs.snapcraft.io/core/install)) + +Supported architectures: `i386, armhf, amd64` + +Snap supported OS and installation instructions: + + - [Arch Linux](https://docs.snapcraft.io/core/install-arch-linux) + - [Debian](https://docs.snapcraft.io/core/install-debian) + - [Fedora](https://docs.snapcraft.io/core/install-fedora) + - [Gentoo](https://docs.snapcraft.io/core/install-gentoo) + - [Linux Mint](https://docs.snapcraft.io/core/install-linux-mint) + - [Manjaro](https://docs.snapcraft.io/core/install-manjaro) + - [OpenEmbedded/Yocto](https://docs.snapcraft.io/core/install-oe-yocto) + - [openSUSE](https://docs.snapcraft.io/core/install-opensuse) + - [OpenWrt](https://docs.snapcraft.io/core/install-openwrt) + - [Solus](https://docs.snapcraft.io/core/install-solus) + - [Ubuntu](https://docs.snapcraft.io/core/install-ubuntu) + + +Functions renamed +----------------- +Stashedsend is now Swift-X + +New algorithm +------------- +We dropped MIDAS and will use DGW. More info will follow. + +Automint +-------- +Autominiting with zerocoin. More info will follow. + +New look and design +------------------- +We have new look and desing, currently it is a dirty version. It includes new GUI layout, new colors. + +Performance +----------- +Current source base is much faster and cleaner than ion's previous one. It uses all cpu's and there are +no performance issues which we could observe, it is just much faster then previous source base. + +BIP38 +----- +We have BIP38 including a tool with password encryption and decrpytion features + +Blockexplorer +------------- +We finaly have built in blockexplorer which works on all ion's networks. + +User friendly +------------- +There are some new features which improve usability as well as user experience in general. More info to follow. + +Auto Wallet Backup +--------------------- +In addition to the automatic wallet backup that is done at each start of the client, a new automatic backup function has been added that will, by default, create a backup of the wallet file during each xION mint operation (xION spends which re-mint their change are also included in this). This functionality is controlled by the `-backupxion` command-line option, which defaults to `1` (enabled, auto-backup). + +Users that wish to prevent this behavior (not recommended) can pass `-backupxion=0` at the command-line when starting the client, or add `backupxion=0` to their `ioncoin.conf` file. + +xION Automint Calculations +--------------------- +A bug in the automint calculations was made apparent on mainnet when block times exceeded expectations, resulting in xION mint transactions that were in an unconfirmed state to still be treated as if they had never been minted. This caused automint to effectively mint more than what was intended. + +xION Spending Fix +--------------------- +The size of xION spend transactions is knowingly larger than normal transactions, and while this was expected, a much stricter check against the scriptsig size is used for mainnet, causing the transactions to be rejected by the mempool, and thus not being packaged into any blocks. + +xION Transaction Recovery +--------------------- +Due to the aforementioned issue with xION spending, users may find that their attempted spends are now conflicted and xION balances are not represented as expected. "Recovery" of these transactions can be done using the following methods: + +1. GUI: + + The Privacy tab has the `Reset` and `Rescan` buttons that can be used to restore these mints/spends from a state of being marked as unavailable. + +2. RPC: + + The RPC commands `resetspentzerocoin` and `resetmintzerocoin` are the command-line counterparts to the above, and can be used by users that do not use the GUI wallet. + +RPC Changes +--------------------- +The `bip38decrypt` command has had it's parameter order changed to be more consistent with it's counterpart. The command now expects the Ion address as it's first parameter and the passphrase as it's second parameter. + +Bip38 Compatibility With 3rd Party Tools +--------------------- +The in-wallet bip38 encryption method was leaving the final 4 bytes of the encrypted key blank. This caused an incompatibility issue with 3rd party tools like the paper wallet generators that could decrypt bip38 encrypted keys. Cross-tool compatibility has now been restored. + +3.0.2 Change log +================= + +This release is a fork to the old chain. Detailed release notes follow. +We dropped MIDAS and use DGW as well as some other changes. Previous old version +was based on old projects which were not updated. One of our main goals for v3 release +was to get closer to bitcoin's source and update in general sources to some newer +and cleaner codebase then it was previously. We forked from PIVX which is better +maintenanced then previous releases of 🗺️Ion Core 👛 which are based on obsolete code. +In this version everything is new, one big feature iz xION which iz zerocoin for +ion. Port and other settings remain same. Please foolow our wiki for more information +about how to backup your wallet/keys and upgrade to new wallet as well as recovery paths +and detailed explanations of how to use new code. One big difference is finally restricting +in better was single mode masternode, as multi mode is not usefull within larger networks. + + +Notable changes of source for the fork +====================================== +### RPC and other APIs +- #275 `059aaa9` [RPC] Change Parameter Order of bip38decrypt (presstab) + +### P2P Protocol and Network Code +- #286 `85c0f53` [Main] Change sporkDB from smart ptr to ptr. (presstab) +- #292 `feadab4` Additional checks for double spending of zPiv serials. (presstab) + +### Wallet +- #271 `5e9a086` [Wallet] Remove unused member wallet in UnlockContext inner class (Jon Spock) +- #279 `e734010` Add -backupzpiv startup flag. (presstab) +- #280 `fdc182d` [Wallet] Fix zPiv spending errors. (presstab) +- #282 `310f216` [Wallet] Count pending zPiv balance for automint. (presstab) +- #290 `004d7b6` Include both pending and mature zerocoins for automint calculations (presstab) + +### GUI +- #268 `bc63f24` [GUI/RPC] Changed bubblehelp text + RPC startmasternode help text fixed (Mrs-X) +- #269 `5466a9b` Check if model is valid before using in transactionView (Jon Spock) +- #270 `bd2328e` [Qt] Make lock icon clickable to toggle wallet lock state (Fuzzbawls) +- #273 `f31136e` [Qt] Fix UI tab order and shortcuts (Mrs-X) +- #287 `74a1c3c` [Qt] Don't allow the Esc key to close the privacy tab (Fuzzbawls) +- #291 `cb314e6` [Qt] zPiv control quantity/amount fixes (rejectedpromise) + +### Miscellaneous +- #266 `2d97b54` [Scripts] Fix location for aarch64 outputs in gitian-build.sh (Fuzzbawls) +- #272 `958f51e` [Minting] Replace deprecated auto_ptr. (presstab) +- #276 `03f14ba` Append BIP38 encrypted key with an 4 byte Base58 Checksum (presstab) +- #288 `2522aa1` Bad CBlockHeader copy. (furszy) + +Credits +======= + +Thanks to everyone who directly contributed to this release: +- Formax +- CEVAP + +And to source contributors which provided base for this release with their project: +- Fuzzbawls +- Jon Spock +- Mrs-X +- furszy +- presstab +- rejectedpromise +- Warrows + +As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/ion/). + +Setting up the Gitian image +====================== + +Credentials +-------------- +user: `gitianuser` +pass: `cevap` + +user: `root` +pass: `cevap` + +On your machine edit or create `~/.ssh/config` and add: + +``` +Host gitian + HostName localhost + Port 22222 + User gitianuser +``` + +Open a new terminal tab and enter (_check your .ssh folder for file name, id_rsa.pub and id_ecdsa.pub are defaults_): + +``` +scp ~/.ssh/id_rsa.pub gitian:.ssh/authorized_keys +``` + +Now connect to your gitian with: `ssh gitian`, no password will be required for ssh connection. + +Now build base vm: + +``` +cd gitian-builder +bin/make-base-vm --lxc --arch amd64 --suite trusty +``` +There will be a lot of warnings printed during the build of the image. These can be ignored. + +**Note**: When sudo asks for a password, enter the password for the user gitianuser not for root. + +Getting and building the inputs +-------------------------------------- +At this point you have two options, you can either use the automated script (found in https://github.com/cevap/ion/blob/master/contrib/gitian-build.sh, only works in Debian/Ubuntu) or you could manually do everything by following this guide. If you are using the automated script, then run it with the --setup command. Afterwards, run it with the --build command (example: contrib/gitian-build.sh -b signer 3.0.2). Otherwise ignore this. + +Follow the instructions in https://github.com/cevap/ion/blob/master/doc/release-process.md in the bitcoin repository under 'Fetch and create inputs' to install sources which require manual intervention. Also optionally follow the next step: 'Seed the Gitian sources cache and offline git repositories' which will fetch the remaining files required for building offline. + +_**Note**: please use our links here, I left cevap as I do not want to remove it later_ + +That's it, follow release notes and how to build on our repo + +Build with gitian +============ + +Signer is key, please use your github public key _(or [create new gpg key](https://help.github.com/articles/generating-a-new-gpg-key/) for gitian only and [add it to your account](https://help.github.com/articles/adding-a-new-gpg-key-to-your-github-account/), the same goes for SSH key ([create](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/) | [add](https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/)_). To show your key, run in terminal: `gpg --list-secret-keys --keyid-format LONG` + +The output will show you key/keys, like this: +``` +tor@tor ~ $ gpg --list-secret-keys --keyid-format LONG +/home/tor/.gnupg/secring.gpg +---------------------------- +sec 3072R/49464B32BA6683BA 2017-03-13 +uid developer (dev@i2pmail.org) +ssb 3072R/78E10152BEC6C3C6 2017-03-13 +``` + + +Take the key from sec line, + + sec 3072R/**49464B32BA6683BA** 2017-03-13 + +which would be in this case `49464B32BA6683BA`. This is your SIGNER. + +GPG does not have enough entropy +---------------------------------------------- +If you use high encryption and set your key to 4096bits, you might get some message similar to this `GPG does not have enough entropy`. + +One of workarounds would be package for generating entropy called haveged. Install `haveged` and `rng-tools` by running: +`sudo apt-get install -y haveged rng-tools` + +then create entropy with: +``` +# run it with sudo if it requires root access +cat /dev/random | rngtest -c 1000 +``` + +Now you can create your key with `gpg --gen-key` + +Gist gitian build scripts +---------------------------- +**Note**: Please change SIGNER to your key and version to desired version, in current release it is version 3.0.2, in future releases gist will be updated. + +If you use scripts, after wget has downloaded the script, run `sed -i 's/49464B32BA6683BA/YOURGPGKEY/g'' and replace `YOURGPGKEY` with your LONG Key ID. The same can be done with version. + - Linux only: [build offline](https://gist.github.com/cevap/9d7ef39be185cc07c3d0a9b33da2fba5) + - Windows only: [build offline](https://gist.github.com/cevap/5d6ac38f6e8530d45ab31499bc3a62ff) + - MacOS only (without HighSierra)[build offline](https://gist.github.com/cevap/a5a90607da3a9b058b8c0aea20fdd75a) + +Setup **signer** and **version**/branch +------------------------------------------------- + +``` +cd ./ion +export SIGNER="49464B32BA6683BA" # Replace with your Key +export VERSION=3.0.2 # github branch +git fetch +git checkout v${VERSION} +cd .. + +# update signature +cd ./gitian.sigs +git pull +cd .. + +# update gitian builder +cd ./gitian-builder +git pull +cd .. + +# Fetch and create inputs: (first time, or when dependency versions change) +cd ./gitian-builder +mkdir -p inputs +wget -P inputs https://github.com/cevap/osslsigncode/releases/download/v1.7.1/osslsigncode-Backports-to-1.7.1.patch +wget -P inputs -O inputs/v1.7.1.tar.gz https://github.com/cevap/osslsigncode/archive/v1.7.1.tar.gz +wget -P inputs https://github.com/cevap/MacOSX-SDKs/releases/download/MacOSX10.11.sdk-trusty/MacOSX10.11.sdk.tar.gz +cd .. + +# prebuild ion dependencies +cd ./gitian-builder +make -C ../ion/depends download SOURCES_PATH=`pwd`/cache/common +cd .. +``` + +Building offline +------------------ + +``` +cd ./gitian-builder + +# Build offline for linux +./bin/gbuild --url ion=/home/gitianuser/ion,signature=/home/gitianuser/gitian.sigs --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-linux.yml + +# Sign for linux +./bin/gsign --signer "$SIGNER" --release ${VERSION}-linux --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-linux.yml +mv build/out/ion-*.tar.gz build/out/src/ion-*.tar.gz ../ + +# Build offline for windows +./bin/gbuild --url ion=/home/gitianuser/ion,signature=/home/gitianuser/gitian.sigs --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-win.yml + +# Sign for windows +./bin/gsign --signer "$SIGNER" --release ${VERSION}-win-unsigned --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-win.yml +mv build/out/ion-*-win-unsigned.tar.gz inputs/ion-win-unsigned.tar.gz +mv build/out/ion-*.zip build/out/ion-*.exe ../ + +# Build offline for mac os +./bin/gbuild --url ion=/home/gitianuser/ion,signature=/home/gitianuser/gitian.sigs --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-osx.yml + +# Sign for macos +./bin/gsign --signer "$SIGNER" --release ${VERSION}-osx-unsigned --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-osx.yml +mv build/out/ion-*-osx-unsigned.tar.gz inputs/ion-osx-unsigned.tar.gz +mv build/out/ion-*.tar.gz build/out/ion-*.dmg ../ +cd .. +``` + + +Building online +--------------- + +``` +# Build online for linux +./bin/gbuild --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-linux.yml + +# Sign for linux +./bin/gsign --signer "$SIGNER" --release ${VERSION}-linux --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-linux.yml +mv build/out/ion-*.tar.gz build/out/src/ion-*.tar.gz ../ + +# Build online for windows +./bin/gbuild --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-win.yml + +# Sign for windows +./bin/gsign --signer "$SIGNER" --release ${VERSION}-win-unsigned --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-win.yml +mv build/out/ion-*-win-unsigned.tar.gz inputs/ion-win-unsigned.tar.gz +mv build/out/ion-*.zip build/out/ion-*.exe ../ + +# Build online for mac os +./bin/gbuild --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-osx.yml + +# Sign for macos +./bin/gsign --signer "$SIGNER" --release ${VERSION}-osx-unsigned --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-osx.yml +mv build/out/ion-*-osx-unsigned.tar.gz inputs/ion-osx-unsigned.tar.gz +mv build/out/ion-*.tar.gz build/out/ion-*.dmg ../ +cd .. +``` diff --git a/doc/release-notes/release-notes-3.0.4.md b/doc/release-notes/release-notes-3.0.4.md new file mode 100644 index 0000000000000..7a95a4eafe652 --- /dev/null +++ b/doc/release-notes/release-notes-3.0.4.md @@ -0,0 +1,257 @@ +🗺️Ion Core 👛 3.0.4 CE ©️ - 👒 RELEASE 👒 is now available from: + + + +This is a new minor-revision version release, including various bug fixes and updated documentation. + +Please report bugs using the issue tracker at github: + + + +Recommended Update +============== + +🗺️Ion Core 👛 3.0.4 CE ©️ - 👒 RELEASE 👒 is a recommended update for all users. This release contains This release contains a coin supply calculation fix, + version numbering correction and updated documentation. + +How to Upgrade +============== + +If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer (on Windows) or just copy over /Applications/Ion-Qt (on Mac) or iond/ion-qt (on Linux). + +Compatibility +============== + +🗺️Ion Core 👛 is extensively tested on multiple operating systems using +the Linux kernel, macOS 10.8+, and Windows Vista and later. + +Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support), +No attempt is made to prevent installing or running the software on Windows XP, you +can still do so at your own risk but be aware that there are known instabilities and issues. +Please do not report issues about Windows XP to the issue tracker. + +🗺️Ion Core 👛 should also work on most other Unix-like systems but is not +frequently tested on them. + +### :exclamation::exclamation::exclamation: MacOS 10.13 High Sierra :exclamation::exclamation::exclamation: + +**Currently there are issues with the 3.0.x gitian releases on MacOS version 10.13 (High Sierra), no reports of issues on older versions of MacOS.** + + +3.0.4 Change log +================= + +Coin supply calculation correction +------------------------- +The coin supply was calculated at the fork point, and the base line number for the recalculation was off. + +3.0.3 Change log +================= + +Windows masternode.conf port parsing fix +------------------------- +Fixed an issue on Windows wallet with opening masternode ports based on Dash commit 56971f8 + +Updated DGW start time +------------------------- +Adjusted the DGW start time + +Credits +======= + +Thanks to everyone who directly contributed to this release: +- Formax +- CEVAP +- Ceforce +- Atomsmasher +- Coinkiller + +Setting up the Gitian image +====================== + +Credentials +-------------- +user: `gitianuser` +pass: `cevap` + +user: `root` +pass: `cevap` + +On your machine edit or create `~/.ssh/config` and add: + +``` +Host gitian + HostName localhost + Port 22222 + User gitianuser +``` + +Open a new terminal tab and enter (_check your .ssh folder for file name, id_rsa.pub and id_ecdsa.pub are defaults_): + +``` +scp ~/.ssh/id_rsa.pub gitian:.ssh/authorized_keys +``` + +Now connect to your gitian with: `ssh gitian`, no password will be required for ssh connection. + +Now build base vm: + +``` +cd gitian-builder +bin/make-base-vm --lxc --arch amd64 --suite trusty +``` +There will be a lot of warnings printed during the build of the image. These can be ignored. + +**Note**: When sudo asks for a password, enter the password for the user gitianuser not for root. + +Getting and building the inputs +-------------------------------------- +At this point you have two options, you can either use the automated script (found in https://github.com/cevap/ion/blob/master/contrib/gitian-build.sh, only works in Debian/Ubuntu) or you could manually do everything by following this guide. If you are using the automated script, then run it with the --setup command. Afterwards, run it with the --build command (example: contrib/gitian-build.sh -b signer 3.0.2). Otherwise ignore this. + +Follow the instructions in https://github.com/cevap/ion/blob/master/doc/release-process.md in the bitcoin repository under 'Fetch and create inputs' to install sources which require manual intervention. Also optionally follow the next step: 'Seed the Gitian sources cache and offline git repositories' which will fetch the remaining files required for building offline. + +_**Note**: please use our links here, I left cevap as I do not want to remove it later_ + +That's it, follow release notes and how to build on our repo + +Build with gitian +============ + +Signer is key, please use your github public key _(or [create new gpg key](https://help.github.com/articles/generating-a-new-gpg-key/) for gitian only and [add it to your account](https://help.github.com/articles/adding-a-new-gpg-key-to-your-github-account/), the same goes for SSH key ([create](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/) | [add](https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/)_). To show your key, run in terminal: `gpg --list-secret-keys --keyid-format LONG` + +The output will show you key/keys, like this: +``` +tor@tor ~ $ gpg --list-secret-keys --keyid-format LONG +/home/tor/.gnupg/secring.gpg +---------------------------- +sec 3072R/49464B32BA6683BA 2017-03-13 +uid developer (dev@i2pmail.org) +ssb 3072R/78E10152BEC6C3C6 2017-03-13 +``` + + +Take the key from sec line, + + sec 3072R/**49464B32BA6683BA** 2017-03-13 + +which would be in this case `49464B32BA6683BA`. This is your SIGNER. + +GPG does not have enough entropy +---------------------------------------------- +If you use high encryption and set your key to 4096bits, you might get some message similar to this `GPG does not have enough entropy`. + +One of workarounds would be package for generating entropy called haveged. Install `haveged` and `rng-tools` by running: +`sudo apt-get install -y haveged rng-tools` + +then create entropy with: +``` +# run it with sudo if it requires root access +cat /dev/random | rngtest -c 1000 +``` + +Now you can create your key with `gpg --gen-key` + +Gist gitian build scripts +---------------------------- +**Note**: Please change SIGNER to your key and version to desired version, in current release it is version 3.0.2, in future releases gist will be updated. + +If you use scripts, after wget has downloaded the script, run `sed -i 's/49464B32BA6683BA/YOURGPGKEY/g'' and replace `YOURGPGKEY` with your LONG Key ID. The same can be done with version. + - Linux only: [build offline](https://gist.github.com/cevap/9d7ef39be185cc07c3d0a9b33da2fba5) + - Windows only: [build offline](https://gist.github.com/cevap/5d6ac38f6e8530d45ab31499bc3a62ff) + - MacOS only (without HighSierra)[build offline](https://gist.github.com/cevap/a5a90607da3a9b058b8c0aea20fdd75a) + +Setup **signer** and **version**/branch +------------------------------------------------- + +``` +cd ./ion +export SIGNER="49464B32BA6683BA" # Replace with your Key +export VERSION=3.0.2 # github branch +git fetch +git checkout v${VERSION} +cd .. + +# update signature +cd ./gitian.sigs +git pull +cd .. + +# update gitian builder +cd ./gitian-builder +git pull +cd .. + +# Fetch and create inputs: (first time, or when dependency versions change) +cd ./gitian-builder +mkdir -p inputs +wget -P inputs https://github.com/cevap/osslsigncode/releases/download/v1.7.1/osslsigncode-Backports-to-1.7.1.patch +wget -P inputs -O inputs/v1.7.1.tar.gz https://github.com/cevap/osslsigncode/archive/v1.7.1.tar.gz +wget -P inputs https://github.com/cevap/MacOSX-SDKs/releases/download/MacOSX10.11.sdk-trusty/MacOSX10.11.sdk.tar.gz +cd .. + +# prebuild ion dependencies +cd ./gitian-builder +make -C ../ion/depends download SOURCES_PATH=`pwd`/cache/common +cd .. +``` + +Building offline +------------------ + +``` +cd ./gitian-builder + +# Build offline for linux +./bin/gbuild --url ion=/home/gitianuser/ion,signature=/home/gitianuser/gitian.sigs --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-linux.yml + +# Sign for linux +./bin/gsign --signer "$SIGNER" --release ${VERSION}-linux --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-linux.yml +mv build/out/ion-*.tar.gz build/out/src/ion-*.tar.gz ../ + +# Build offline for windows +./bin/gbuild --url ion=/home/gitianuser/ion,signature=/home/gitianuser/gitian.sigs --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-win.yml + +# Sign for windows +./bin/gsign --signer "$SIGNER" --release ${VERSION}-win-unsigned --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-win.yml +mv build/out/ion-*-win-unsigned.tar.gz inputs/ion-win-unsigned.tar.gz +mv build/out/ion-*.zip build/out/ion-*.exe ../ + +# Build offline for mac os +./bin/gbuild --url ion=/home/gitianuser/ion,signature=/home/gitianuser/gitian.sigs --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-osx.yml + +# Sign for macos +./bin/gsign --signer "$SIGNER" --release ${VERSION}-osx-unsigned --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-osx.yml +mv build/out/ion-*-osx-unsigned.tar.gz inputs/ion-osx-unsigned.tar.gz +mv build/out/ion-*.tar.gz build/out/ion-*.dmg ../ +cd .. +``` + + +Building online +--------------- + +``` +# Build online for linux +./bin/gbuild --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-linux.yml + +# Sign for linux +./bin/gsign --signer "$SIGNER" --release ${VERSION}-linux --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-linux.yml +mv build/out/ion-*.tar.gz build/out/src/ion-*.tar.gz ../ + +# Build online for windows +./bin/gbuild --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-win.yml + +# Sign for windows +./bin/gsign --signer "$SIGNER" --release ${VERSION}-win-unsigned --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-win.yml +mv build/out/ion-*-win-unsigned.tar.gz inputs/ion-win-unsigned.tar.gz +mv build/out/ion-*.zip build/out/ion-*.exe ../ + +# Build online for mac os +./bin/gbuild --num-make 2 --memory 3000 --commit ion=v${VERSION} ../ion/contrib/gitian-descriptors/gitian-osx.yml + +# Sign for macos +./bin/gsign --signer "$SIGNER" --release ${VERSION}-osx-unsigned --destination ../gitian.sigs/ ../ion/contrib/gitian-descriptors/gitian-osx.yml +mv build/out/ion-*-osx-unsigned.tar.gz inputs/ion-osx-unsigned.tar.gz +mv build/out/ion-*.tar.gz build/out/ion-*.dmg ../ +cd .. +``` diff --git a/doc/release-notes/release-notes-3.1.0.md b/doc/release-notes/release-notes-3.1.0.md new file mode 100644 index 0000000000000..0067ddb113117 --- /dev/null +++ b/doc/release-notes/release-notes-3.1.0.md @@ -0,0 +1,435 @@ +ION Core version *3.1.0* is now available from: + +This is a new major version release, including various bug fixes and performance improvements, as well as updated translations. + +Please report bugs using the issue tracker at github: + + +Mandatory Update +============== + +ION Core v3.1.0 is a mandatory update for all users. This release contains new consensus rules and improvements that are not backwards compatible with older versions. Users will have a grace period of one week to update their clients before enforcement of this update is enabled. + +Users updating from a previous version after Tuesday, May 8, 2018 12:00:00 AM GMT will require a full resync of their local blockchain from either the P2P network or by way of the bootstrap. + +How to Upgrade +============== + +If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer (on Windows) or just copy over /Applications/ION-Qt (on Mac) or iond/ion-qt (on Linux). + + +Compatibility +============== + +ION Core is extensively tested on multiple operating systems using +the Linux kernel, macOS 10.8+, and Windows Vista and later. + +Microsoft ended support for Windows XP on [April 8th, 2014](https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support), +No attempt is made to prevent installing or running the software on Windows XP, you +can still do so at your own risk but be aware that there are known instabilities and issues. +Please do not report issues about Windows XP to the issue tracker. + +ION Core should also work on most other Unix-like systems but is not +frequently tested on them. + +### :exclamation::exclamation::exclamation: MacOS 10.13 High Sierra :exclamation::exclamation::exclamation: + +**Currently there are issues with the 3.x gitian release on MacOS version 10.13 (High Sierra), no reports of issues on older versions of MacOS.** + + +Notable Changes +============== + +Old ion implementation refactored +-------------- + +Previous implementation of ion based code has been refactored. Our sources are now inline with [latest PIVX](https://github.com/PIVX-Project/PIVX/tree/4b1be14505ded427378f267d9c31a3a0f72bda75) at current time. + +Windows masternode.conf bug +-------------- + +Windows Masternode Controller wallets were experiencing an issue with reading the `masternode.conf` file during startup that prevented the wallet from opening properly. + +Windows file icons +------------- + +The Windows program icons and installer images were of less than ideal quality, often appearing grainy or distorted. These icons/images have now been recreated to meet higher standards. + +Updated artworks +------------- + +CSS, artworks and their sources have been updated/renewed + +Transifex Translations +------------- + +Updated translations, you can follow the status [on Transifex](https://www.transifex.com/cevap/ioncoin/) + +xION Updates +-------------- + +### xION Staking + +xION Staking is here! xION staking will be activated on the morning of the 8th of May 2018. With the release of xION staking, there are effectively 2 versions of xION, xION minted on the 3.0.6 ION wallet or lower, and xION minted on ION wallet version or higher. New features in this release will require the use of xION v2, xION minted on this wallet release 3.1.0 or later. If you currently hold xION v1 and wish to take advantage of xION staking and deterministic xION, you will need to spend the xION v1 to yourself and remint xION v2. +Note: To find your xION version, click the privacy tab, then the xION Control button then expand the arrows next to the desired denomination. + + +### Deterministic xION Seed Keys + +xION is now associated with a deterministic seed key. With this seed key, users are able to securely backup their xION outside of the wallet that the xION had been minted on. xION can also be transferred from wallet to wallet without the need of transferring the wallet data file. + + +### Updated xION minting + +xION minting now only requires 1 further mint (down from 2) to mature. xION mints still require 20 confirmations. Mints also require that the 'second' mint is at least two checkpoints deep in the chain (this was already the case, but the logic was not as precise). + + +### xION Search + +Users will now have the ability to search the blockchain for a specific serial # to see if a xION denomination has been spent or not. + + + +ION/xION Staking and Masternode Rewards +-------------- + +### ION, xION and Masternode Payment Schedule + +To encourage the use of xION and increase the ION zerocoin anonymity set, the ION payment schedule has been changed to the following: + +If a user staking xION wins the reward for their block, the following xION reward will be: +- 3 xION (3 x 1 denominations) rewarded to the staker, 2 ION rewarded to the masternode owner and 1 ION available for the budget. This is a total block reward of 6 ION, up from 5. + +If a user staking ION wins the reward, the following amounts will be rewarded: +- 2 ION to the ION staker, 3 ION to the Masternode owner and 1 ION available for the budget. This is a total block reward of 6 ION, up from 5. + + +### Return change to sender when minting xION + +Previously, xION minting would send any change to a newly generated "change address". This has caused confusion among some users, and in some cases insufficient backups of the wallet. The wallet will now find the contributing address which contained the most ION and return the change from a xION mint to that address. + + +User Experience +-------------- + +### Graphical User Interface + +The visual layout of the ION Qt wallet has undergone a near-complete overhaul. +A new 'vertical tab' layout is now being used instead of the prior 'horizontal tab' layout, as well as a completely new icon set. +The overview tab has been simplified greatly to display only balances that are active or relevant, zero-balance line items are hidden by default to avoid clutter. + + +### Wallet Options + +There have been a number of changes to the tasks that you are able to perform from the wallet options. Users will now have the ability to do the following: +- Enable and disable the auto xION minting feature. This is enabled by default and the enablezeromint=0 setting in the ion.conf file will overwrite the GUI option. +- The percentage of autominted xION can now be set from 1 to 100, changed from 10 – 100. +- The stake split threshold can now be set VIA the wallet options. This setting is an advanced feature for those wishing to remain staking regular ION. +- “Unlock for staking and anonymization only” is now selected by default when unlocking the wallet from the User Interface + + +### In-wallet Ban Management + +Peer bans are now manageable through the Peers tab of the tools window. Peers can be banned/unbanned at will without the need to restart the wallet client. No changes have been made to the conditions resulting in automatic peer bans. + + +Backup to external devices / locations +-------------- + +### Summary + + The ION wallet can now have user selected directories for automatic backups of the wallet data file (wallet.dat). This can be set by adding the following lines to the ion.conf file, found in the ION data directory. +- backuppath = +- xionbackuppath = +- custombackupthreshold = +Note: System write permissions must be appropriate for the location the wallet is being saved to. + +* Configured variables display in the _Wallet Repair_ tab inside the _Tools Window / Dropdown Menu_ +* Allows for backing up wallet.dat to the user set path, simultaneous to other backups +* Allows backing up to directories and files, with a limit (_threshold_) on how many files can be saved in the directory before it begins overwriting the oldest wallet file copy. + + +### Details: + +* If path is set to directory, the backup will be named `wallet.dat------` +* If xION backup, auto generated name is `wallet-autoxionbackup.dat------` +* If path set to file, backup will be named `.dat` +* walletbackupthreshold enables the user to select the maximum count of backup files to be written before overwriting existing backups. + + +### Example: + +* -backuppath=/\/ +* -walletbackupthreshold=2 + +Backing up 4 times will result as shown below + + + date/time + backup #1 - 2018-04-20-00-04-00 + backup #2 - 2018-04-21-04-20-00 + backup #3 - 2018-04-22-00-20-04 + backup #4 - 2018-04-23-20-04-00 + + 1. + // + wallet.dat-2018-04-20-00-04-00 + 2. + // + wallet.dat-2018-04-20-00-04-00 + wallet.dat-2018-04-21-04-20-00 + 3. + // + wallet.dat-2018-04-22-00-20-04 + wallet.dat-2018-04-21-04-20-00 + 4. + // + wallet.dat-2018-04-22-00-20-04 + wallet.dat-2018-04-23-20-04-00 + + + +ION Daemon & Client (RPC Changes) +-------------- + +### RPC Ban Management + +The ION client peer bans now have additional RPC commands to manage peers. Peers can be banned and unbanned at will without the need to restart the wallet client. No changes have been made to the conditions resulting in automatic peer bans. New RPC commands: `setban`, `listbanned`, `clearbanned`, and `disconnectnode` + + +### Random-cookie RPC authentication + +When no `-rpcpassword` is specified, the daemon now uses a special 'cookie' file for authentication. This file is generated with random content when the daemon starts, and deleted when it exits. Its contents are used as authentication token. Read access to this file controls who can access through RPC. By default it is stored in the data directory but its location can be overridden with the option `-rpccookiefile`. +This is similar to Tor's CookieAuthentication: see https://www.torproject.org/docs/tor-manual.html.en +This allows running iond without having to do any manual configuration. + + +### New RPC command +`getfeeinfo` + +This allows for a user (such as a third party integration) to query the blockchain for the current fee rate per kb, and also get a suggested rate per kb for high priority tx's that need to get added to the blockchain asap. + + +### New RPC command +`findserial` + +Search the zerocoin database for a zerocoinspend transaction that contains the given serial. This will be a helpful tool for the ION support group, which often times sees users say "I didn't spend that xION". This RPC call allows for support to grab the serial, and then find the spend tx on the chain. + + +### New RPC commands +`createmasternodebroadcast` + +`decodemasternodebroadcast` + +`relaymasternodebroadcast` + +A new set of rpc commands masternodebroadcast to create masternode broadcast messages offline and relay them from online node later (messages expire in ~1 hour). + + +Network Layer 2 Changes (Proposals / Budgets / SwiftX) +-------------- + +### Monthly Budget Increase + +As voted on by the ION masternodes, the monthly budget available to be utilised has been increased to 42,000 ION / month. This ION only has the opportunity to be raised once per month (paid to winning proposals) with any unused ION not created by the blockchain. + +### Budget Finalization Fee + +The ION finalization fee for successful proposals has now been reduced, this fee is now 5 ION down from 50 ION. The total fee outlay for a successful proposal is now a total of 55 ION. + + +### SwiftX Raw Transactions + + When creating a raw transaction, it is now possible to create the transaction as a SwiftX transaction. See the updated help documentation for the `createrawtransaction` RPC command. + +Technical Changes +-------------- + +### Migration to libevent based http server + +The RPC and REST interfaces are now initialized and controlled using standard libevent instead of the ad-hoc pseudo httpd interface that was used previously. This change introduces a more resource friendly and effective interface. + + +### New Notification Path +`blocksizenotify` + +A new notification path has been added to allow a script to be executed when receiving blocks larger than the 1MB legacy size. This functions similar to the other notification listeners (`blocknotify`, `walletnotify`, etc). + + +### Removed Growl Support + +Growl hasn't been free nor needed for many years. MacOS versions since 10.8 have the OS notification center, which is still supported after this. + + +### Autocombine changes + +The autocombine feature was carrying a bug leading to a significant CPU overhead when being used. The function is now called only once initial blockchain download is finished. It's also now avoiding to combine several times while under the threshold in order to avoid additional transaction fees. Last but not least, the fee computation has been changed and the dust from fee provisioning is returned in the main output. + + +### SOCKS5 Proxy bug + +When inputting wrong data into the GUI for a SOCKS5 proxy, the wallet would crash and be unable to restart without accessing hidden configuration. This crash has been fixed. + +Minor Enhancements +-------------- + +- Enforced v1 xION spends to require a security level of 100 +- Updates to xION spends to avoid segfaults +- Updates to configuration will now reflect on the privacy tab +- Fixed a bug that would not start masternodes from the ION-Qt masternodes tab +- Updated ION-Qt tooltips +- Icon added to the wallet GUI to reflect the status of autominting (active / inactive) +- Updated errors causing the blockchain to corrupt when experiencing unexpected wallet shutdowns +- Updated RPC help outputs & removed the deprecated obfuscation. +- Refactored code +- Various bug fixes +- Updated documentation + +Further Reading: Version 2 Zerocoins +============== + +Several critical security flaws in the zerocoin protocol and ION 's zerocoin implementation have been patched. Enough has changed that new zerocoins are distinct from old zerocoins, and have been labelled as *version 2*. When using the xION Control dialog in the QT wallet, a user is able to see xION marked as version 1 or 2. + +xPoS (xION staking) +-------------- + +Once a xION has over 200 confirmations it becomes available to stake. Staking xION will consume the exact zerocoin that is staked and replace it with a freshly minted zerocoin of the same denomination as well as a reward of three 1 denomination xION. So for example if a 1,000 xION denomination is staked, the protocol replaces that with a fresh 1,000 denomination and three1 denomination xIONs. + +Secure Spending +-------------- + +Version 1 zerocoins, as implemented by [Miers et. al](http://zerocoin.org/media/pdf/ZerocoinOakland.pdf), allow for something we describe as *serial trolling*. Spending zerocoins requires that the spender reveal their serial number associated with the zerocoin, and in turn that serial number is used to check for double spending. There is a fringe situation (which is very unlikely to happen within ION 's zerocoin implementation due to delayed coin accumulation) where the spender sends the spending transaction, but the transaction does not immediately make it into the blockchain and remains in the mempool for a long enough duration that a *troll* has enough time to see the spender's serial number, mint a new zerocoin with the same serial number, and spend the new zerocoin before the original spender's transaction becomes confirmed. If the timing of this fringe situation worked, then the original spender's coin would be seen as invalid because the troll was able to have the serial recorded into the blockchain first, thus making the original spender's serial appear as a double spend. + +The serial troll situation is mitigated in version 2 by requiring that the serial number be a hash of a public key. The spend requires an additional signature signed by the private key associated with the public key hash matching the serial number. This work around was conceived by Tim Ruffing, a cryptographer that has studied the zerocoin protocol and done consulting work for the ZCoin project. + +Deterministic Zerocoin Generation +-------------- + +Zerocoins, or xION, are now deterministically generated using a unique 256 bit seed. Each wallet will generate a new seed on its first run. The deterministic seed is used to generate a string of xION that can be recalculated at any time using the seed. Deterministic xION allows for users to backup all of their future xION by simply recording their seed and keeping it in a safe place (similar to backing up a private key for ION). The xION seed needs to remain in the wallet in order to spend the xION after it is generated, if the seed is changed then the coins will not be spendable because the wallet will not have the ability to regenerate all of the private xION data from the seed. It is important that users record & backup their seed after their first run of the wallet. If the wallet is locked during the first run, then the seed will be generated the first time the wallet is unlocked. + +Zerocoin Modulus +-------------- + +ION 's zerocoin implementation used the same code from the ZCoin project to import the modulus use for the zerocoin protocol. The chosen modulus is the 2048 bit RSA number created for the RSA factoring challenge. The ZCoin project's implementation (which ION used) improperly imported the modulus into the code. This flaw was discovered by user GOAT from the [Civitas Project](https://github.com/eastcoastcrypto/Civitas/), and reported to ION using the bug bounty program. The modulus is now correctly imported and ION 's accumulators have been changed to use the new proper modulus. + +*3.1.0* Change log +-------------- + +Detailed release notes follow. This overview includes changes that affect behavior, not code moves, refactors and string updates. For convenience in locating the code changes and accompanying discussion, both the pull request and git merge commit are mentioned. + +### Core Features + - #582 `cb1632520` [Core] xION v2: xPoS dxION exION external backup and budget fixes (too many to list) + - #558 `c7e6f0f7f` [Core] Remove Gitan-OSX warning for High Sierra builds (Mrs-X) + - #523 `926c073ea` [Core] Give high priority to zerocoinspends to make it into the next block. (presstab) + - #535 `5e8875feb` [Core] Minor refacturing + unused variable removed (Mrs-X) + - #526 `0e034d62f` [Core] Refactor ConnectBlock() to segregate state tracking items (presstab) + - #513 `27cdf61f2` [Core] Fix masternode broadcast for networks != MAINNET (Mrs-X) + - #261 `29611a5fd` [Core] Switch from local to main signals for the validation interface (Nitya Sattva) + - #460 `ae4b6a135` [Core] (testnet-) blockchain stuck at block 325000 (Mrs-X) + - #428 `3de6b6f3e` [Core] Wipe zerocoin DB on reindex. (presstab) + - #447 `8d3407ae4` [Consensus] Fix compilation with OpenSSL 1.1 (warrows) + - #551 `94b9bc937` [Consensus] Require standard transactions for testnet (Fuzzbawls) + +### Build System + - #532 `9071bfe2f` [Depends] Update depends package versions. (Fuzzbawls) + - #402 `a471f7020` [Build] Revert #402 "Change git info in genbuild.sh" (Fuzzbawls) + - #541 `2f6b58cf1` [Build] Fix typo in Qt test makefile (Fuzzbawls) + - #536 `5c44f40e9` [Build] Update build system from upstream (Fuzzbawls) + - #480 `72d8c7d67` [Build] compile/link winshutdownmonitor.cpp on Windows only (Fuzzbawls) + - #461 `55ec19af0` [Build] libevent-dev dependency added to build-documentation (Mrs-X) + +### P2P Protocol and Network Code + - #542 `61156def7` [Network] Remove vfReachable and modify IsReachable to only use vfLimited. (Patrick Strateman) + +### GUI + - #572 `d9b23fe60` [Qt] Refresh xION balance after resetting mints or spends (warrows) + - #571 `1c8e7cb7b` [Qt] Update privacy tab info about zeromint on config change (warrows) + - #568 `f226de09e` [Qt] Connect automint icon to the UI automint setting change (warrows) + - #566 `84f43857c` [Qt] Add automint status bar icon (Fuzzbawls) + - #567 `e12914d85` [Qt] Optimize PNGs (Fuzzbawls) + - #537 `653115e9b` [Qt] Standardize and clean up new UI elements (Fuzzbawls) + - #538 `24f581842` [Qt] Fix warning dialog popup for the Blockchain Explorer (Fuzzbawls) + - #529 `c649ba7e2` [Qt] Remove Growl support (Fuzzbawls) + - #521 `fbb105a00` [Qt] Make "For anonymization and staking only" checked by default (Mrs-X) + - #508 `2cf3be6bb` [Qt] Fix crash when inputting wrong port for network proxy (warrows) + - #500 `4c01ba65d` [Qt] Remove duplicate code for updating address book labels. (blondfrogs) + - #506 `ae72bf4e2` [Qt] Autoscroll to end of xION status output (Mrs-X) + - #499 `6305264f2` [Qt] Send popup simplified + SwiftTX -> SwiftX (Mrs-X) + - #490 `ba777e4ef` [Qt] Update MultiSend GUI to allow address labels (blondfrogs) + - #483 `5b1070365` [Qt] Fixed Dynamic Screen Elements Issue for Multisig (blondfrogs) + - #479 `818c0c79e` [Qt] Rework of overview page (warrows) + - #478 `98ca7bc90` [Qt] Implement Ban Management in GUI Wallet (Fuzzbawls) + - #473 `9e2ed8f0f` [Qt] Make toolbar icons bigger (Mrs-X) + - #462 `c62eabe7b` [Qt] Consistent trx colors for Overview + Transaction tabs (Mrs-X) + - #472 `b7929bdcf` [Qt] Minor changes and fixes (Mrs-X) + - #467 `7099831bd` [Qt] Clear PrivacyDialog "xIon Selected" labels after sending. (presstab) + - #465 `d8e21774d` [Qt] Added controls to the options dialog for enable or disable auto-minting and set required level (lex-dev3) + - #464 `59fd7d378` [Qt] setstakesplitthreshold value set in Qt GUI (lex-dev3) + - #452 `219b68dc9` [Qt] Complete re-design of Qt-wallet (Mrs-X) + - #440 `011408474` [Qt] Fix empty system tray menu (PeterL73) + - #442 `248316647` [Qt] Improve checkbox visibility (PeterL73) + +### RPC/REST + - #562 `772160b1b` [Wallet/RPC] Add argument to mint zerocoin from specific UTXO (warrows) + - #539 `b6a02e9d6` [RPC] Allow watchonly coins to be shown for listunspent (blondfrogs) + - #543 `e4522ff07` [RPC] Segfault ion-cli getinfo while loading block index (Mrs-X) + - #524 `2541b5001` [RPC] Add blocksizenotify command (Mrs-X) + - #495 `4946224c1` [RPC] Show script verification errors in signrawtransaction result (Fuzzbawls) + - #468 `00b8b8e72` [RPC/REST] Migrate to libevent based httpd server (Fuzzbawls) + - #381 `6f91fb734` [RPC] Allow in-wallet management of peer bans (Fuzzbawls) + - #441 `6ae17c52d` [RPC] Implement random-cookie based authentication (Fuzzbawls) + - #443 `0a991d8ba` [RPC] Findserial (presstab) + - #438 `f701337e7` [RPC] Fix `importzercoins` for use with UniValue (Fuzzbawls) + - #429 `17fdde1d1` [RPC] Add getfeeinfo RPC. (presstab) + - #423 `5dfb48ee6` [RPC] Add SwiftX to rpcrawtransaction. (presstab) + - #170 `027f16c64` [RPC] Convert source tree from json_spirit to UniValue (Fuzzbawls) + +### Wallet + - #570 `8c8350b59` [Wallet] Add a check on xION spend to avoid a segfault (warrows) + - #565 `80b803201` [Wallet] Increase valid range for automint percentage (Fuzzbawls) + - #518 `9f6449a70` [Wallet] Combine fees when possible and fix autocombine insufficient funds (warrows) + - #497 `f21e4456b` [Wallet] Call AutocombineDust less often (warrows) + - #498 `bfad2a1df` [Wallet] Change the way transaction list is handled (warrows) + - #477 `93c5f9ff5` [Wallet] Remove potential memory leak (blondfrogs) + - #488 `d09cf916a` [Wallet] Fixes an autocombinerewards bug with above max size TXs (warrows) + - #448 `222ef6e6b` [Wallet] Return change to sender when minting xION. (presstab) + - #445 `fc570fc1e` [Wallet] Only require 1 mint to be added before spending xION. (presstab) + +### Miscellaneous +### Miscellaneous + - #587 `69498104f` [Bug] Fix Windows icon files (Fuzzbawls) + - #586 `fc211bfdf` [Bug] Fix CMasternodeConfig::read (Fuzzbawls) + - #559 `d2b017217` [Bug] Segfault with -enableswifttx=0 / -enableswifttx=false (Mrs-X) + - #494 `8180b7884` [Bug] remove use of variable length buffer (rejectedpromise) + - #469 `6bd265c5e` [Tests] Fix util_tests compiler warnings with clang (Fuzzbawls) + - #463 `22f2bb623` [Tests] Fixed compilation errors (lex-dev3) + - #569 `aedf80b07` [Docs] OSX Build - Instructions on how to make the Homebrew OpenSSL headers visible (gpdionisio) + - #554 `8cecb3435` [Docs] Added release notes for autocombine and proxy GUI. (warrows) + - #533 `ad3edb9fa` [Docs] Update OSX build notes: zmq, libevent, and notes to handle possible glibtoolize error (Tim Uy) + - #530 `fd8aa8991` [Docs] Update README.md (Warrows) + - #528 `1c1412246` [Docs] Readme changes (Sieres) + - #471 `18e5accb6` [Docs] Readme SeeSaw reward mechanism reference. (Dexaran) + - #426 `3418a64d2` [Docs] Use mainnet port for example in masternode.conf file (Fuzzbawls) + + +## Credits + +Thanks to everyone who directly contributed to this release: +- gpdionisio +- warrows +- Fuzzbawls +- Mrs-X +- presstab +- blondfrogs +- Patrick Strateman +- Tim Uy +- Sieres +- Nitya Sattva +- turtleflax +- rejectedpromise +- Dexaran +- lex-dev3 +- PeterL73 +- Anthony Posselli + +As well as everyone that helped translating on [Transifex](https://www.transifex.com/cevap/ioncoin/), the QA team during Testing and the Node hosts supporting our Testnet.