diff --git a/src/omnicore/doc/release-notes.md b/src/omnicore/doc/release-notes.md index a1f4a3f42c0df..8c12043b12901 100644 --- a/src/omnicore/doc/release-notes.md +++ b/src/omnicore/doc/release-notes.md @@ -1,9 +1,11 @@ -Omni Core v0.8.2 +Omni Core v0.9.0 ================ -v0.8.2 is a minor release and adds new RPCs to interact with the distributed exchange, which can be used to trade any tokens for bitcoins. It also incorporates significant performance improvements for the initial synchronization and upgrading from older versions of Omni Core. +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. -Upgrading from 0.8.1 does not require a rescan and can be done very fast without interruption. +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. Please report bugs using the issue tracker on GitHub: @@ -13,15 +15,16 @@ Please report bugs using the issue tracker on GitHub: Table of contents ================= -- [Omni Core v0.8.2](#omni-core-v082) +- [Omni Core v0.9.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) - - [New RPCs for the distributed exchange](#new-rpcs-for-the-distributed-exchange) - - [Other RPC improvements](#other-rpc-improvements) - - [Reporting vulnerabilities](#reporting-vulnerabilities) + - [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) - [Change log](#change-log) - [Credits](#credits) @@ -36,7 +39,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 does not require a rescan and can be done very fast without interruption. +Upgrading from 0.8.1 or 0.8.0 does not require a rescan and can be done very fast without interruption. Downgrading ----------- @@ -54,135 +57,86 @@ However, it is not advised to upgrade or downgrade to versions other than Bitcoi Improvements ============ -New RPCs for the distributed exchange -------------------------------------- +Use wrapped Segrated Witness scripts for new addresses +------------------------------------------------------ -Three new RPCs were added to create, update and cancel orders on the distributed exchange: +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. -### omni_sendnewdexorder +In case you need to fall back to the legacy address generation, please start Omni Core with `addresstype=legacy` configuration option. -Creates a new sell offer on the distributed token/BTC exchange. -**Arguments:** +New transactions to anchor arbitrary data +----------------------------------------- -| Name | Type | Presence | Description | -|---------------------|---------|----------|----------------------------------------------------------------------------------------------| -| `fromaddress` | string | required | the address to send from | -| `propertyidforsale` | number | required | the identifier of the tokens to list for sale | -| `amountforsale` | string | required | the amount of tokens to list for sale | -| `amountdesired` | string | required | the amount of bitcoins desired | -| `paymentwindow` | number | required | a time limit in blocks a buyer has to pay following a successful accepting order | -| `minacceptfee` | string | required | a minimum mining fee a buyer has to pay to accept the offer | +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. -**Result:** -```js -"hash" // (string) the hex-encoded transaction hash -``` +**Example of sending and pulling data** -**Example:** +Sending the hex-encoded data `497420776f726b7321`: ```bash -$ omnicore-cli "omni_sendnewdexorder" "37FaKponF7zqoMLUjEiko25pDiuVH5YLEa" 1 "1.5" "0.75" 50 "0.0001" +$ omnicore-cli "omni_sendanydata" "2N5bnBsaVdPBuK5xKCQ5ZTXnofBfwSxU2Th" "497420776f726b7321" ``` - ---- - -### omni_sendupdatedexorder - -Updates an existing sell offer on the distributed token/BTC exchange. - -**Arguments:** - -| Name | Type | Presence | Description | -|---------------------|---------|----------|----------------------------------------------------------------------------------------------| -| `fromaddress` | string | required | the address to send from | -| `propertyidforsale` | number | required | the identifier of the tokens to update | -| `amountforsale` | string | required | the new amount of tokens to list for sale | -| `amountdesired` | string | required | the new amount of bitcoins desired | -| `paymentwindow` | number | required | a new time limit in blocks a buyer has to pay following a successful accepting order | -| `minacceptfee` | string | required | a new minimum mining fee a buyer has to pay to accept the offer | - -**Result:** -```js -"hash" // (string) the hex-encoded transaction hash +``` +4c9776f28e7015e840a05cb0955c22fd6917cf264032ad694e5d1ee0d8ebf745 ``` -**Example:** +After a confirmation: ```bash -$ omnicore-cli "omni_sendupdatedexorder" "37FaKponF7zqoMLUjEiko25pDiuVH5YLEa" 1 "1.0" "1.75" 50 "0.0001" +$ omnicore-cli "omni_gettransaction" "4c9776f28e7015e840a05cb0955c22fd6917cf264032ad694e5d1ee0d8ebf745" ``` - ---- - -### omni_sendcanceldexorder - -Cancels existing sell offer on the distributed token/BTC exchange. - -**Arguments:** - -| Name | Type | Presence | Description | -|---------------------|---------|----------|----------------------------------------------------------------------------------------------| -| `fromaddress` | string | required | the address to send from | -| `propertyidforsale` | number | required | the identifier of the tokens to cancel | - -**Result:** ```js -"hash" // (string) the hex-encoded transaction hash -``` - -**Example:** - -```bash -$ omnicore-cli "omni_sendcanceldexorder" "37FaKponF7zqoMLUjEiko25pDiuVH5YLEa" 1 +{ + "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 +} ``` ---- +For more details, please see the descriptions of the new RPCs: -### omni_senddexpay +- [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) -Create and broadcast payment for an accept offer. -Please note: -Partial purchases are not possible and the whole accepted amount must be paid. +Experimental querying of any Bitcoin balance +-------------------------------------------- -**Arguments:** +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. -| Name | Type | Presence | Description | -|---------------------|---------|----------|----------------------------------------------------------------------------------------------| -| `fromaddress` | string | required | the address to send from | -| `toaddress` | string | required | the address of the seller | -| `propertyid` | number | required | the identifier of the token to purchase | -| `amount` | string | required | the Bitcoin amount to send | +**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!** -**Result:** -```js -"hash" // (string) the hex-encoded transaction hash -``` - -**Example:** - -```bash -$ omnicore-cli "omni_senddexpay" \ - "35URq1NN3xL6GeRKUP6vzaQVcxoJiiJKd8" "37FaKponF7zqoMLUjEiko25pDiuVH5YLEa" 1 "15.0" -``` +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) -Other RPC improvements ----------------------- +**Please also note, this feature is experimental and may provide inaccurate results.** -- Active orders on the distributed exchange are now properly listed with the `omni_getactivedexsells` RPC. -- Parsing of the `ecosystem` parameter of the `omni_sendissuancecrowdsale`, `omni_sendissuancefixed`, `omni_sendissuancemanaged`, `omni_createpayload_issuancefixed`, `omni_createpayload_issuancecrowdsale`, `omni_createpayload_issuancemanaged` RPCs was fixed. -- Parsing of the `redeemkey` parameter of the `omni_createrawtx_multisig` RPC was fixed. -- When the node is not synchronized, `omni_decodetransaction` needs to be provided with all inputs. If they are missing, a proper error message is now shown. -- The fields `issuer`, `creationtxid`, `fixedissuance` and `managedissuance` are now included, when using `omni_listproperties`. -- Spelling and language improvements. +Several test and under the hood improvements +-------------------------------------------- -Reporting vulnerabilities -------------------------- +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. -A security policy was created. To see instructions on how to report a vulnerability for Omni Core the Omni Layer protocol, please see [SECURITY.md](https://github.com/OmniLayer/omnicore/blob/master/SECURITY.MD). +These changes improve the robustness and reliability of Omni Core. Change log @@ -191,18 +145,22 @@ Change log The following list includes relevant pull requests merged into this release: ``` -- #1100 doc: set ecosystem as numeric -- #1102 Fix parsing of redeemkey of omni_createrawtx_multisig -- #1103 Fix typo: depreciated -> deprecated -- #1114 Split string to maintain property ID -- #1115 Add seperate RPCs for each DEx 1 action -- #1116 Bump version to Omni Core 0.8.2 -- #1118 Add error text for omni_decodetransaction, when inputs are missing -- #1119 Add more information when listing tokens -- #1120 Add security policy -- #1121 Corrections to display of DEx info -- #1125 Pay exact amount for indivisible tokens -- #1117 Update release notes for Omni Core 0.8.2 +- #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 ```