Skip to content

Commit

Permalink
Prepare release notes for Omni Core 0.10
Browse files Browse the repository at this point in the history
  • Loading branch information
dexX7 committed Apr 3, 2021
1 parent c380347 commit 1e17e8f
Showing 1 changed file with 44 additions and 92 deletions.
136 changes: 44 additions & 92 deletions src/omnicore/doc/release-notes.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
Omni Core v0.9.0
Omni Core v0.10.0
================

v0.9.0 is a major release and uses Segregated Witness wrapped in P2SH for newly generated addresses per default. It also adds two new transaction types to anchor arbitrary data in the blockchain. As an experimental feature, several new commands were added to support querying any Bitcoin balance.
v0.10.0 is a major release and updates the underlying version of Bitcoin Core from 0.18.1 to 0.20.1. This comes with a significant number of changes. In this version recovering from a hard shutdown or crash was also greatly improved.

While this release is not mandatory and doesn't change the consensus rules of the Omni Layer protocol, an upgrade is nevertheless recommended.

Upgrading from 0.8.2, 0.8.1 or 0.8.0 does not require a rescan and can be done very fast without interruption.
**Due to the upgrade from Bitcoin Core 0.18.1 to 0.20.1, this version incooperates many changes, so please take your time to read through all release notes carefully.**

Upgrading from 0.9.0, 0.8.2, 0.8.1 or 0.8.0 does not require a rescan and can be done very fast without interruption.

Please report bugs using the issue tracker on GitHub:

Expand All @@ -15,16 +17,16 @@ Please report bugs using the issue tracker on GitHub:
Table of contents
=================

- [Omni Core v0.9.0](#omni-core-v082)
- [Omni Core v0.10.0](#omni-core-v082)
- [Upgrading and downgrading](#upgrading-and-downgrading)
- [How to upgrade](#how-to-upgrade)
- [Downgrading](#downgrading)
- [Compatibility with Bitcoin Core](#compatibility-with-bitcoin-core)
- [Improvements](#improvements)
- [Use wrapped Segrated Witness scripts for new addresses](#use-wrapped-segrated-witness-scripts-for-new-addresses)
- [New transactions to anchor arbitrary data](#new-transactions-to-anchor-arbitrary-data)
- [Experimental querying of any Bitcoin balance](#experimental-querying-of-any-bitcoin-balance)
- [Several test and under the hood improvements](#several-test-and-under-the-hood-improvements)
- [Built on top of Bitcoin Core 0.20.1](#built-on-top-of-bitcoin-core-0201)
- [Improved coin selection, when sending Omni Layer transactions](#improved-coin-selection-when-sending-omni-layer-transactions)
- [Better recovery from hard shutdowns or crashes](#better-recovery-from-hard-shutdowns-or-crashes)
- [Additional testing](#additional-testing)
- [Change log](#change-log)
- [Credits](#credits)

Expand All @@ -39,7 +41,7 @@ If you are running Bitcoin Core or an older version of Omni Core, shut it down.

When upgrading from an older version than 0.8.0, the database of Omni Core is reconstructed, which can easily consume several hours. During the first startup historical Omni Layer transactions are reprocessed and Omni Core will not be usable for several hours up to more than a day. The progress of the initial scan is reported on the console, the GUI and written to the `debug.log`. The scan may be interrupted and can be resumed.

Upgrading from 0.8.1 or 0.8.0 does not require a rescan and can be done very fast without interruption.
Upgrading from 0.9.0, 0.8.2, 0.8.1 or 0.8.0 does not require a rescan and can be done very fast without interruption.

Downgrading
-----------
Expand All @@ -49,94 +51,47 @@ Downgrading to an Omni Core version prior to 0.8.0 is not supported.
Compatibility with Bitcoin Core
-------------------------------

Omni Core is based on Bitcoin Core 0.18.1 and can be used as replacement for Bitcoin Core. Switching between Omni Core and Bitcoin Core may be supported.
Omni Core is based on Bitcoin Core 0.20.1 and can be used as replacement for Bitcoin Core. Switching between Omni Core and Bitcoin Core may be supported.

However, it is not advised to upgrade or downgrade to versions other than Bitcoin Core 0.18. When switching to Omni Core, it may be necessary to reprocess Omni Layer transactions.


Improvements
============

Use wrapped Segrated Witness scripts for new addresses
------------------------------------------------------

When using `getnewaddress` new addresses are generated with Segrated Witness scripts wrapped in P2SH. On mainnet, those addresses start with a `3` instead of `1`. This upgrade lowers transaction fees significantly and should not break integrations.

In case you need to fall back to the legacy address generation, please start Omni Core with `addresstype=legacy` configuration option.


New transactions to anchor arbitrary data
-----------------------------------------

Two new transaction types were added to anchor arbitrary data on-chain. This allows the creation of overlay protocols on top of the Omni protocol, or can simply be used to store any form of data in the blockchain.

**Example of sending and pulling data**

Sending the hex-encoded data `497420776f726b7321`:
Built on top of Bitcoin Core 0.20.1
-----------------------------------

```bash
$ omnicore-cli "omni_sendanydata" "2N5bnBsaVdPBuK5xKCQ5ZTXnofBfwSxU2Th" "497420776f726b7321"
```
```
4c9776f28e7015e840a05cb0955c22fd6917cf264032ad694e5d1ee0d8ebf745
```

After a confirmation:

```bash
$ omnicore-cli "omni_gettransaction" "4c9776f28e7015e840a05cb0955c22fd6917cf264032ad694e5d1ee0d8ebf745"
```
```js
{
"txid": "4c9776f28e7015e840a05cb0955c22fd6917cf264032ad694e5d1ee0d8ebf745",
"fee": "0.00003240",
"sendingaddress": "2N5bnBsaVdPBuK5xKCQ5ZTXnofBfwSxU2Th",
"ismine": true,
"version": 0,
"type_int": 200,
"type": "Embed any data",
"data": "497420776f726b7321",
"valid": true,
"blockhash": "7c1e8be2c48fa6062b2b8ff6de7b2e1bc14b7d281d961979ed195a86399abd75",
"blocktime": 1599469254,
"positioninblock": 1,
"block": 367,
"confirmations": 1
}
```
The underlying base of Omni Core was upgraded from Bitcoin Core 0.18.1 to Bitcoin Core 0.20.1.

For more details, please see the descriptions of the new RPCs:
Please read the following release notes for further details very carefully:

- [omni_sendanydata](https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#omni_sendanydata)
- [omni_createpayload_anydata](https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#omni_createpayload_anydata)
- [Release notes for Bitcoin Core 0.19.0](https://github.com/bitcoin/bitcoin/blob/v0.20.1/doc/release-notes/release-notes-0.19.0.1.md)
- [Release notes for Bitcoin Core 0.19.1](https://github.com/bitcoin/bitcoin/blob/v0.20.1/doc/release-notes/release-notes-0.19.1.md)
- [Release notes for Bitcoin Core 0.20.0](https://github.com/bitcoin/bitcoin/blob/v0.20.0/doc/release-notes.md)
- [Release notes for Bitcoin Core 0.20.1](https://github.com/bitcoin/bitcoin/blob/v0.20.1/doc/release-notes.md)


Experimental querying of any Bitcoin balance
--------------------------------------------
Improved coin selection, when sending Omni Layer transactions
------------------------------------------------------------

A new optional database was added, which allows the user to query any Bitcoin balance or list transactions of any addresses. Please note, this feature is experimental and not enabled per default. To enable the new database, restart Omni Core with `experimental-btc-balances=1` configuration option.
When creating and sending Omni Layer transactions, a certain transaction fee must be paid in Bitcoin.

**When enabling both of these options, Omni Core creates a new database for Bitcoin balances. This step can take a very long time of up to multiple days on mainnet. More than 300 GB of additional disk space are required!**
During transaction creation, the amount of fee needed is estimated. In the past, this estimation was rather genereous, resulting in a failure during transaction creation, even when enough Bitcoin were available to create a transaction. In this release, the fee estimation was optimized.

Please see the descriptions of the new RPCs for more details:

- [getaddresstxids](https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#getaddresstxids)
- [getaddressdeltas](https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#getaddressdeltas)
- [getaddressbalance](https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#getaddressbalance)
- [getaddressutxos](https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#getaddressutxos)
- [getaddressmempool](https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#xxxxx)
- [getblockhashes](https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#getblockhashes)
- [getspentinfo](https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#getspentinfo)
Better recovery from hard shutdowns or crashes
----------------------------------------------

**Please also note, this feature is experimental and may provide inaccurate results.**
After a hard shutdown, kill or crash, Omni Core sometimes lost it's database, because it was not properly saved and became corrupted. Restoring from an old state was not possible, which resulted in a very time consuming process of reparsing old transactions.

With this release, Omni Core is able to properly recover from an older state, without the need of a very time consuming reprocessing of old transactions.

Several test and under the hood improvements
--------------------------------------------

To prepare Omni Core for Bitcoin Core 0.20+, OpenSSL was removed and replaced. OmniJ related tests were upgraded to use JDK 11. New tests for funded transactions were added and old bash tests were converted to the newer functional test framework. Additional checks and safe guards were implemented.
Additional testing
----------------

These changes improve the robustness and reliability of Omni Core.
More tests were added to Omni Core.


Change log
Expand All @@ -145,22 +100,19 @@ Change log
The following list includes relevant pull requests merged into this release:

```
- #1142 Remove OpenSSL usage from Omni source
- #1146 Travis OmniJ tests: upgrade to JDK 11 (from JDK 8)
- #1153 Check Omni token balance is consistent after reorg
- #1155 Add tests for CreateFundedTransaction
- #1159 Convert bash test scripts to functional test framework
- #1163 Set default address type to P2SH_SEGWIT
- #1166 Add new transaction type to embed any data
- #1168 Support adding a receiver address for "any data" transactions
- #1169 Avoid overflow on reindex with debug enabled
- #1165 Add bitcore indexing
- #1173 Bump version to 0.9.0
- #1175 Add description for -experimental-btc-balances
- #1179 Move lock to blockOnchainActive
- #1177 Add documentation for address index RPCs
- #1181 Return error, when using bitcore RPCs without addrindex
- #1176 Add release notes for Omni Core 0.9.0
- #1186 Bitcoin 0.20.1
- #1191 [tests] check free DEx behaviour against DEx spec
- #1193 Omni overview updates
- #1194 Add Free DEx and fee cache tests
- #1197 Integrate Bitcoin Core 0.20 patches
- #1198 Additional changes missing from 0.20 merge
- #1199 Qt disable wallet change in main window
- #1200 Update version to 0.9.99 to indicate development
- #1201 Reduce amount selected for use in transactions
- #1210 cli tool: add Content-Type application/json
- #1213 If watermark not in block index load from state files
- #1214 Bump version and tests to 0.10
- #1215 Add release notes for Omni Core 0.10
```


Expand Down

0 comments on commit 1e17e8f

Please sign in to comment.