![image](https://user-images.githubusercontent.com/34389545/35821974-62e0e25c-0a70-11e8-87dd-2cfffeb6ed47.png) # v0.22.0 #### Master Build Status ![Build Status](https://github.com/turtlecoin/turtlecoin/workflows/Build/badge.svg?branch=master) ## Special Notes **Upgrade to this release is required** ### Network Upgrade at block 2,200,000 This release contains a network consensus update at block 2,200,000 that activates the following consensus rules: * A single transaction must not contain more than `90` outputs * Minimum network transaction fees are now calculated via a fee-per-byte method. * Transactions with a fee of less than the minimum fee-per-byte amount will be rejected by the network. * **Fusion** transactions remain free * See [#967](https://github.com/turtlecoin/turtlecoin/pull/967) for more details. #### **The change to fee-per byte takes effect immediately in *zedwallet*, *wallet-api*, and *turtle-service* in this release. The software will not wait for the network upgrade before setting the minimum transaction fee via fee-per-byte.** ### End of Support (EOS) Notice Legacy *zedwallet* is no longer supported. *zedwallet++* has officially replaced legacy *zedwallet* in all builds from here on out. If you're having problems with legacy *zedwallet*, you're on your own. ### End of Life (EOL) Notice Please note that v0.28.0 will be the last release to contain *turtle-service*. Releases after 0.v28.0 will not longer contain the *turtle-service* binaries and the code will be removed. In preparation for this EOL, please work to implement *wallet-api* in your application(s), perform testing, and report any [issues](https://github.com/turtlecoin/turtlecoin/issues/new?template=bug_report.md) that you encounter so that they may be resolved as quickly as possible. **Note**: The End of Support (EOS) date for *turtle-service* has not been set at this time. Please pay attention to release notes for further information regarding *turtle-service* EOS. #### Reminder Wallets created and/or managed by *zedwallet* are no longer compatiable with with *turtle-service*. To be very clear, *turtle-service* can **only** open wallets created with *turtle-service* as of this release. ## Release Notes ### General Updates * Implemented [#915](https://github.com/turtlecoin/turtlecoin/pull/915): Switch to GitHub Actions for CI/CD * Resolved [#925](https://github.com/turtlecoin/turtlecoin/pull/925): Link in SSS3 Support in Argon2 * Accepted [#934](https://github.com/turtlecoin/turtlecoin/pull/934): Remove legacy Zedwallet and promote Zedwallet++ out of beta * Implemented [#938](https://github.com/turtlecoin/turtlecoin/pull/938): Update error codes to be in line with js backend * Implemented [#945](https://github.com/turtlecoin/turtlecoin/pull/945): Enforce Excessive Output Creation Limits * Implemented [#968](https://github.com/turtlecoin/turtlecoin/pull/968): Rework output capping * Implemented [#951](https://github.com/turtlecoin/turtlecoin/pull/951): Update CuvéeCZ Seed Node * Implemented [#954](https://github.com/turtlecoin/turtlecoin/pull/953): Reorder transaction validation to be easier to follow * Implemented [#969](https://github.com/turtlecoin/turtlecoin/pull/969): Remove invalid transactions from pool when included in block * Implemented [#967](https://github.com/turtlecoin/turtlecoin/pull/967): Fee per byte * Implemented [#987](https://github.com/turtlecoin/turtlecoin/pull/987): Updated inbuilt checkpoints * Implemented [#990](https://github.com/turtlecoin/turtlecoin/pull/990): HTTP Client Retry on Socket Failure * Accepted [#995](https://github.com/turtlecoin/turtlecoin/pull/995): Updated README.md with directions for compiling on RHEL-based systems. Thanks **@sohamb03** * Accepted [#999](https://github.com/turtlecoin/turtlecoin/pull/995): Pass thru cmake used binary to rocksdb cmake build ### TurtleCoind Updates * Resolved [#603](https://github.com/turtlecoin/turtlecoin/issues/603): Error in JSON serialization in multiple RPC methods regarding large uint64_t values * Implemented [#903](https://github.com/turtlecoin/turtlecoin/pull/903): Full RPC rewrite with threading * Resolved [#942](https://github.com/turtlecoin/turtlecoin/pull/942): Fix a bug that prevents blockchain to be loaded if the blockindexes.bin corrupts. Thanks **@ngeojiajun** * Implemented [#946](https://github.com/turtlecoin/turtlecoin/pull/946): Update Transaction Pool To Account For Additional Metrics in Transaction Ordering * Resolved [#952](https://github.com/turtlecoin/turtlecoin/issues/952): wallet-api creates hundreds of connection to node daemon * Implemented [#954](https://github.com/turtlecoin/turtlecoin/pull/954): Limit the number of Fusion Transactions In The Transaction Pool * Implemented [#965](https://github.com/turtlecoin/turtlecoin/pull/965): Threaded Input Validation * Implemented [#970](https://github.com/turtlecoin/turtlecoin/pull/970): Cancel the validation if one of the inputs instead wait for all inputs to be fully validated. Thanks **@ngeojiajun** * Implemented [#975](https://github.com/turtlecoin/turtlecoin/pull/975): Add size, fee to Daemon 's command `print_pool_sh`. Thanks **@wrkzdev** * Implemented [#980](https://github.com/turtlecoin/turtlecoin/pull/980): Fix Daemon `status` command when using threaded RPC * Implemented [#982](https://github.com/turtlecoin/turtlecoin/pull/982): Fix off by one error in transaction extra parsing * Implemented [#986](https://github.com/turtlecoin/turtlecoin/pull/986): Fix Legacy RPC Responses Containing Raw TX_EXTRA * Resolved [#988](https://github.com/turtlecoin/turtlecoin/issues/988): Error in Transaction Input Serialization * Implemented [#993](https://github.com/turtlecoin/turtlecoin/pull/993): Log the IP address of the requestor when they use the daemon RPC * Implemented [#996](https://github.com/turtlecoin/turtlecoin/pull/996): TransactionValidationResult Cross Thread Safety * Implemented [#998](https://github.com/turtlecoin/turtlecoin/pull/998): /getblocktemplate invalid returned offset * Updated P2P Version from `7` to `8` and set the minimum required to `7` to help with the network upgrade at block 2,200,000 ### zedwallet++ Updates * Implemented [#831](https://github.com/turtlecoin/turtlecoin/issues/831): Generating deterministic private spend keys for subwallets * Resolved [#842](https://github.com/turtlecoin/turtlecoin/issues/842): Key images are regenerated on transaction creation [WB] * Resolved [#892](https://github.com/turtlecoin/turtlecoin/issues/892): Updated WalletBackend and friends to return daemon rejection message * Resolved [#922](https://github.com/turtlecoin/turtlecoin/issues/922): Log data fetch failures and JSON deserialization failures in Nigel * Implemented [#930](https://github.com/turtlecoin/turtlecoin/pull/930): Improved nigel logging * Implemeneted [#936](https://github.com/turtlecoin/turtlecoin/pull/936): Update zedwallet++ to allow setting trace log level via command * Resolved [#940](https://github.com/turtlecoin/turtlecoin/issues/940): Need to deduct node fee + network fee before checking send_all validity * Implemented [#948](https://github.com/turtlecoin/turtlecoin/pull/948): Allow syncing with /getrawblocks instead of /getwalletsyncdata ### turtle-service Updates * Implemented [#981](https://github.com/turtlecoin/turtlecoin/pull/981): Add User-Agent Header to HTTP requests made by NodeRpcProxy * Implemented [#983](https://github.com/turtlecoin/turtlecoin/pull/983): Fix turtle-service log levels not working as expected * Implemented [#985](https://github.com/turtlecoin/turtlecoin/pull/985): NodeRpcProxy HTTP Method fixes for Threaded RPC ### wallet-api Updates * Implemented [#831](https://github.com/turtlecoin/turtlecoin/issues/831): Generating deterministic private spend keys for subwallets * Resolved [#842](https://github.com/turtlecoin/turtlecoin/issues/842): Key images are regenerated on transaction creation [WB] * Resolved [#892](https://github.com/turtlecoin/turtlecoin/issues/892): Updated WalletBackend and friends to return daemon rejection message * Resolved [#922](https://github.com/turtlecoin/turtlecoin/issues/922): Log data fetch failures and JSON deserialization failures in Nigel * Implemented [#930](https://github.com/turtlecoin/turtlecoin/pull/930): Improved nigel logging * Implemented [#931](https://github.com/turtlecoin/turtlecoin/pull/931): Allow Arbitrary Data in Transaction Extra Nonce via Wallet-API * Resolved [#932](https://github.com/turtlecoin/turtlecoin/issues/932): GET /transactions/hash does not convert public keys to addresses * Implemented [#948](https://github.com/turtlecoin/turtlecoin/pull/948): Allow syncing with /getrawblocks instead of /getwalletsyncdata ### miner Updates * N/A ### cryptotest Updates * N/A ### wallet-upgrader * N/A ## Known Issues * [#893](https://github.com/turtlecoin/turtlecoin/issues/893): Incorrectly resetting instead of rewinding on subwallet import * [#943](https://github.com/turtlecoin/turtlecoin/issues/943): wallet-upgrader needs further scrutiny ## How To Sync Quickly Visit the [checkpoints how to use site](https://checkpoints.turtlecoin.lol/use.html) for simple to follow directions on using checkpoints. ## 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