![image](https://user-images.githubusercontent.com/34389545/35821974-62e0e25c-0a70-11e8-87dd-2cfffeb6ed47.png) # v0.18.0 [![Build Status](https://travis-ci.org/turtlecoin/turtlecoin.svg?branch=master)](https://travis-ci.org/turtlecoin/turtlecoin) [![Build status](https://ci.appveyor.com/api/projects/status/github/turtlecoin/turtlecoin?branch=master&svg=true)](https://ci.appveyor.com/project/RocksteadyTC/turtlecoin) ## Special Notes **Please note, the build [directions](https://github.com/turtlecoin/turtlecoin#how-to-compile) and project dependencies have changed** **Upgrade to this release is required** ### Network Upgrade at Block 1,800,000 The v0.18.0 release of the core TurtleCoin suite activates a network upgrade at block 1,800,000 that implements block major version `6`. Block major version `6` changes the Proof-of-Work (PoW) algorithm to [Chukwa](https://blog.turtlecoin.lol/archives/the-quest-for-decentralized-proof-of-work/). Please be sure to update your miners before the network upgrades to continue mining. We're working on the final steps to make sure the algorithm is supported in the most common mining packages and will post news in the official [TurtleCoin blog](https://blog.turtlecoin.lol) as we are made aware of additional miners supporting the algorithm. In addition to the blog, we urge users to join the [TurtleCoin Discord](http://chat.turtlecoin.lol) and type `*news` to be added to the announcements list to be notififed of the latest TurtleCoin updates. #### Known Mining Software With [Chukwa](https://blog.turtlecoin.lol/archives/the-quest-for-decentralized-proof-of-work/) Support * [trtlrig](https://github.com/turtlecoin/trtlrig) (xmrig fork) * [xmrigCC](https://github.com/Bendr0id/xmrigCC) (xmrig fork) * [xmrigcc-donation-proxy](https://github.com/Bendr0id/xmrigcc-donation-proxy) (xmrig-proxy fork) * [CryptoDredge](https://github.com/technobyl/CryptoDredge) (*closed source*) * [Crypto Webminer](https://www.crypto-webminer.com/) * [violetminer](https://github.com/turtlecoin/violetminer) (in development) * more coming soon... Please see the mining software's documentation for how to activate the proper algorithm for mining TurtleCoin after the network ugprade. ##### Mining Software Not Listed If your preferred mining software is not listed, please contact the developer/maintainer of the package and let them know you want TurtleCoin support! * xmr-stak [Issue: #2493](https://github.com/fireice-uk/xmr-stak/issues/2493) * xmrig [Issue: #1107](https://github.com/xmrig/xmrig/issues/1107) #### Known Mining Pool Software With [Chukwa](https://blog.turtlecoin.lol/archives/the-quest-for-decentralized-proof-of-work/) Support (For Pool Operators) * [Turtle-Pool](https://github.com/turtlecoin/node-turtle-pool) * more coming soon... The changes for supporting Chukwa in most pool software packages is minimal if the pool uses the [TurtleCoin-Multi-Hashing](https://github.com/turtlecoin/node8-multi-hashing) Node.js module. However, if you need assistance adding support to your pool, please feel free to ask for assistance in the [TurtleCoin Discord](http://chat.turtlecoin.lol) in the `#dev_general` channel. ### TurtleCoind Default Settings Change The default database write buffer size, read buffer size, maximum open files, and background threads have increased to help with daemon stability. The increases are as follows: * Write Buffer Size: `256MB` -> `1GB` * Read Buffer Size: `10MB` -> `1GB` * Maximum Open Files: `100` -> `500` * Background Threads: `2` -> `10` These values may need adjusted based on your system resources, configured limits, etc. Please review the TurtleCoind `--help` for changing these values at runtime. ### End of Life (EOL) Notice The final release of *zedwallet* is scheduled for v0.20.0. Any releases of the core suite after v0.20.0 will replace the legacy *zedwallet* with *zedwallet++* and all legacy *zedwallet* code will be removed. ## Release Notes ### General Updates * Added [Chukwa](https://blog.turtlecoin.lol/archives/the-quest-for-decentralized-proof-of-work/) support * Argon2id with 512KB memory, 3 iterations, 1 thread. * Scheduled block major version change to `6` at block 1,800,000. * Difficulty reset scheduled at block 1,800,000 to account for possible drops in network hashrate. * Switch to native builds instead of portable builds by default. Releases will still be default (portable) builds. Please see the build [directions](https://github.com/turtlecoin/turtlecoin#how-to-compile) if you wish to compile portable builds. * CryptoNight based cryptography has been split into platform specific files to make it easier to read through the code. * Dropped support for gcc based builds on OSX due to ongoing issues with the gcc toolchain on that platform. Clang is the recommended toolchain for OSX. * Resolves an issue with the portable CryptoNight cryptography that would result in invalid hash calculations on some platforms. * Changed default build type from *Release with Debug Info* to *Release* * Core code reorganization to help reduce dependencies for some binaries thereby speeding up compilation for some users. * Removed unused code from the project. * Renamed all directories in the `/src` folder to lowercase * Internal checkpoints updated through block 1,705,000 * Applied standard code formatting via `clang-format` to project source code. * New PRs must be formatted using `clang-format` against the changes before the PR will be accepted. For ease of use, the node script found at `/scripts/format.js` can be ran to travserse all of the necessary directories and format the code to the new standard. * Resolved a number of compiler warnings when using Clang or GCC * Simplified the Windows build instructions ### TurtleCoind Updates * Resolved [#815](https://github.com/turtlecoin/turtlecoin/issues/815): QueryBlocksDetailed does not populate transaction extra "raw" property in response * Resolved [#861](https://github.com/turtlecoin/turtlecoin/issues/861): Return better error messages via the node /sendrawtransaction method * This now returns an informative error message in the `error` property of the response on why a submitted transaction failed to be broadcast to the network * P2P version increased to version `6` to assist with the upcoming network upgrade * Minimum version now set to `5` * Increased the default DB write buffer size, read buffer size, max open files, and number of background threads to improve daemon performance. Thanks @LeoStehlik * Removed all references to testnet as that has not been supported in production code for quite some time. * Clarified the error message generated when a submitted transaction contains already spent input key images ### zedwallet Updates * Resolved [#839](https://github.com/turtlecoin/turtlecoin/issues/839): Zedwallet crashing when parsing extra) * Resolved issue in edge cases where parsing of the public key from tx_extra would fail. ### zedwallet-beta Updates * Added support for prefetching block information from nodes such that the wallet maintains a cache of blocks locally for processing versus waiting for new data before scanning for transactions. * Added support for multithreaded wallet syncing thereby allowing the wallet to sync faster than when just a single thread is used. * Added support for `skipCoinbaseTransactions` that is enabled by default that skips scanning coinbase transactions as the large majority of users do not directly receive block rewards. To enable the scanning of coinbase transactions, specify `--scan-coinbase-transactions` as a CLI argument. * Resolved issue in edge cases where parsing of the public key from tx_extra would fail. * Updated user messages to provide more information upon chain fork. * Added support for opening and thus transparently upgrading legacy wallets created by `zedwallet` and `turtle-service`. * Added `set_log_level` command * Resolved an issue in handling inputs during chain reorganization events ### turtle-service Updates * N/A ### wallet-api Updates * Added support for prefetching block information from nodes such that the wallet maintains a cache of blocks locally for processing versus waiting for new data before scanning for transactions. * Added support for multithreaded wallet syncing thereby allowing the wallet to sync faster than when just a single thread is used. * Resolved issue in edge cases where parsing of the public key from tx_extra would fail. * Updated some user messages to provide more information upon chain fork. * Added support for opening and thus transparently upgrading legacy wallets created by `zedwallet` and `turtle-service`. * Added `--no-console` option to allow for a non-interactive session thereby supporting `wallet-api` as a daemon process in the background * Resolved an issue in handling inputs during chain reorganization events * Corrected API HTTP status code responses for some endpoint calls #### Special Note * Added support for `skipCoinbaseTransactions` that is enabled by default that skips scanning coinbase transactions as the large majority of users do not directly receive block rewards. To enable the scanning of coinbase transactions, specify `--scan-coinbase-transactions` as a CLI argument. * **If you operate a pool or other service using `wallet-api` we highly recommend that you activate this option.** ### miner Updates * Reduced dependencies ### cryptotest Updates * Added Chukwa testing * Added Chukwa benchmarking (single-core) ## Known Issues * [#603](https://github.com/turtlecoin/turtlecoin/issues/603): Error in JSON serialization in multiple RPC methods regarding large uint64_t values ## How To Sync Quickly - Download the latest checkpoints.csv here https://github.com/turtlecoin/checkpoints/raw/master/checkpoints.csv - Place checkpoints.csv in the same folder as your TurtleCoind daemon - Run TurtleCoind with checkpoints added like this: Linux, Apple `./TurtleCoind --load-checkpoints checkpoints.csv` Windows `TurtleCoind.exe --load-checkpoints checkpoints.csv` ## How To Compile Please see the [How To Compile](https://github.com/turtlecoin/turtlecoin#how-to-compile) section of the project [README](https://github.com/turtlecoin/turtlecoin/blob/master/README.md) for instructions on how to compile this release on your system. ## Changelog See the [TurtleCoin Release](https://github.com/turtlecoin/turtlecoin/releases) page for the full change history. ## Thanks Cryptonote Developers, Bytecoin Developers, Forknote Project, TurtleCoin Community