---
# System prepended metadata

title: v0.22.0

---

![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