Skip to content

Commit ad43bdb

Browse files
committed
Move 0.3.1 release notes to historical folder
1 parent 69d51ed commit ad43bdb

File tree

1 file changed

+361
-0
lines changed

1 file changed

+361
-0
lines changed
Lines changed: 361 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,361 @@
1+
Omni Core v0.3.1
2+
================
3+
4+
v0.3.1 is a minor release and not consensus critical in terms of the Omni Layer protocol rules. Besides other improvemens, this release provides two new RPCs to create funded transactions, two new RPCs to query token wallet balances, and signficant stability and performance gains of Omni Core.
5+
6+
An upgrade is highly recommended, but not required, if you are using Omni Core 0.3.0.
7+
8+
Please report bugs using the issue tracker on GitHub:
9+
10+
https://github.com/OmniLayer/omnicore/issues
11+
12+
Table of contents
13+
=================
14+
15+
- [Omni Core v0.3.1](#omni-core-v031)
16+
- [Upgrading and downgrading](#upgrading-and-downgrading)
17+
- [How to upgrade](#how-to-upgrade)
18+
- [Downgrading](#downgrading)
19+
- [Compatibility with Bitcoin Core](#compatibility-with-bitcoin-core)
20+
- [Notable changes](#notable-changes)
21+
- [Wiki for guiding new users and developers](#wiki-for-guiding-new-users-and-developers)
22+
- [Support for offline creation of raw Omni transactions](#support-for-offline-creation-of-raw-omni-transactions)
23+
- [API to fund Omni Layer transactions from other sources](#api-to-fund-omni-layer-transactions-from-other-sources)
24+
- [Two new RPCs to get and list all wallet balances](#two-new-rpcs-to-get-and-list-all-wallet-balances)
25+
- [Information about freeze transactions added to "omni_gettransaction"](#information-about-freeze-transactions-added-to-omni_gettransaction)
26+
- [Fix behavior of "omni_listtransactions"](#fix-behavior-of-omni_listtransactions)
27+
- [Add field "issuerbonustokens" to "omni_getcrowdsale"](#add-field-issuerbonustokens-to-omni_getcrowdsale)
28+
- [Show receiving destination, when sending to self](#show-receiving-destination-when-sending-to-self)
29+
- [Always show frozen balance in balance RPCs](#always-show-frozen-balance-in-balance-rpcs)
30+
- [Add "name" field to "omni_getallbalancesforaddress"](#add-name-field-to-omni_getallbalancesforaddress)
31+
- [Massive performance improvements of omnicored](#massive-performance-improvements-of-omnicored)
32+
- [Storage of state during initial scanning](#storage-of-state-during-initial-scanning)
33+
- [Properly restore state, when rolling back blocks](#properly-restore-state-when-rolling-back-blocks)
34+
- [Avoid deadlock, when parsing transactions](#avoid-deadlock-when-parsing-transactions)
35+
- [Update checkpoints up to block 520000](#update-checkpoints-up-to-block-520000)
36+
- [Internal preperations for native Segregated Witness support](#internal-preperations-for-native-segregated-witness-support)
37+
- [Improved internal database structure](#improved-internal-database-structure)
38+
- [Change log](#change-log)
39+
- [Credits](#credits)
40+
41+
Upgrading and downgrading
42+
=========================
43+
44+
How to upgrade
45+
--------------
46+
47+
If you are running Bitcoin Core or an older version of Omni Core, shut it down. Wait until it has completely shut down, then copy the new version of `omnicored`, `omnicore-cli` and `omnicore-qt`. On Microsoft Windows the setup routine can be used to automate these steps.
48+
49+
During the first startup historical Omni transactions are reprocessed and Omni Core will not be usable for approximately 15 minutes up to two hours. The progress of the initial scan is reported on the console, the GUI and written to the `debug.log`. The scan may be interrupted, but can not be resumed, and then needs to start from the beginning.
50+
51+
Downgrading
52+
-----------
53+
54+
Downgrading to an Omni Core version prior to 0.3.0 is generally not supported as older versions will not provide accurate information due to the changes in consensus rules.
55+
56+
Compatibility with Bitcoin Core
57+
-------------------------------
58+
59+
Omni Core is based on Bitcoin Core 0.13.2 and can be used as replacement for Bitcoin Core. Switching between Omni Core and Bitcoin Core may be supported.
60+
61+
Upgrading to a higher Bitcoin Core version is generally supported, but when downgrading from Bitcoin Core 0.15, Omni Core needs to be started with `-reindex-chainstate` flag, to rebuild the chainstate data structures in a compatible format.
62+
63+
Downgrading to a Bitcoin Core version prior to 0.12 may not be supported due to the obfuscation of the blockchain database. In this case the database also needs to be rebuilt by starting Omni Core with `-reindex-chainstate` flag.
64+
65+
Downgrading to a Bitcoin Core version prior to 0.10 is not supported due to the new headers-first synchronization.
66+
67+
Notable changes
68+
===============
69+
70+
Wiki for guiding new users and developers
71+
-----------------------------------------
72+
73+
To help and guide new users and developers, a wiki was created. The wiki includes pointers to other resources such as the JSON-RPC documentation, an overview of startup and configuration options or build instructions. It also includes guides and answers to frequently asked questions:
74+
75+
https://github.com/OmniLayer/omnicore/wiki
76+
77+
Support for offline creation of raw Omni transactions
78+
-----------------------------------------------------
79+
80+
The raw transaction interface can be used to manually craft Omni Layer transactions. With this release, it is no longer necessary to use a fully synchronized client and an offline client can be used.
81+
82+
An overview of the JSON-RPC commands can be found [here](https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md#raw-transactions) and a guide for the manual creation of a Simple Send transaction is [available](https://github.com/OmniLayer/omnicore/wiki/Use-the-raw-transaction-API-to-create-a-Simple-Send-transaction) in the new wiki.
83+
84+
API to fund Omni Layer transactions from other sources
85+
------------------------------------------------------
86+
87+
This release adds two new RPCs "omni_funded_send" and "omni_funded_sendall", which allow the creation of Omni Layer transactions, which are funded by a different source, other than the original sender.
88+
89+
This can be used to pay for transaction fees, when the sender only has a tiny fraction of coins available, but not enough to cover whole fee of a transaction:
90+
91+
---
92+
93+
#### omni_funded_send
94+
95+
Creates and sends a funded simple send transaction.
96+
97+
All bitcoins from the sender are consumed and if there are bitcoins missing, they are taken from the specified fee source. Change is sent to the fee source!
98+
99+
**Arguments:**
100+
101+
| Name | Type | Presence | Description |
102+
|---------------------|---------|----------|----------------------------------------------------------------------------------------------|
103+
| `fromaddress` | string | required | the address to send from |
104+
| `toaddress` | string | required | the address of the receiver |
105+
| `propertyid` | number | required | the identifier of the tokens to send |
106+
| `amount` | string | required | the amount to send |
107+
| `feeaddress` | string | required | the address that is used to pay for fees, if needed |
108+
109+
**Result:**
110+
```js
111+
"hash" // (string) the hex-encoded transaction hash
112+
```
113+
114+
**Example:**
115+
116+
```bash
117+
$ omnicore-cli "omni_funded_send" "1DFa5bT6KMEr6ta29QJouainsjaNBsJQhH" \
118+
"15cWrfuvMxyxGst2FisrQcvcpF48x6sXoH" 1 "100.0" \
119+
"15Jhzz4omEXEyFKbdcccJwuVPea5LqsKM1"
120+
```
121+
122+
---
123+
124+
#### omni_funded_sendall
125+
126+
Creates and sends a transaction that transfers all available tokens in the given ecosystem to the recipient.
127+
128+
All bitcoins from the sender are consumed and if there are bitcoins missing, they are taken from the specified fee source. Change is sent to the fee source!
129+
130+
**Arguments:**
131+
132+
| Name | Type | Presence | Description |
133+
|---------------------|---------|----------|----------------------------------------------------------------------------------------------|
134+
| `fromaddress` | string | required | the address to send from |
135+
| `toaddress` | string | required | the address of the receiver |
136+
| `ecosystem` | number | required | the ecosystem of the tokens to send (1 for main ecosystem, 2 for test ecosystem) |
137+
| `feeaddress` | string | required | the address that is used to pay for fees, if needed |
138+
139+
**Result:**
140+
```js
141+
"hash" // (string) the hex-encoded transaction hash
142+
```
143+
144+
**Example:**
145+
146+
```bash
147+
$ omnicore-cli "omni_funded_sendall" "1DFa5bT6KMEr6ta29QJouainsjaNBsJQhH" \
148+
"15cWrfuvMxyxGst2FisrQcvcpF48x6sXoH" 1 "15Jhzz4omEXEyFKbdcccJwuVPea5LqsKM1"
149+
```
150+
151+
---
152+
153+
Two new RPCs to get and list all wallet balances
154+
------------------------------------------------
155+
156+
Omni Core v0.3.1 adds two new RPCs to get all token balances of the wallet and to list all token balances associated with every address of the wallet:
157+
158+
---
159+
160+
#### omni_getwalletbalances
161+
162+
Returns a list of the total token balances of the whole wallet.
163+
164+
**Arguments:**
165+
166+
| Name | Type | Presence | Description |
167+
|---------------------|---------|----------|----------------------------------------------------------------------------------------------|
168+
| `includewatchonly` | boolean | optional | include balances of watchonly addresses (default: false) |
169+
170+
**Result:**
171+
```js
172+
[ // (array of JSON objects)
173+
{
174+
"propertyid" : n, // (number) the property identifier
175+
"name" : "name", // (string) the name of the token
176+
"balance" : "n.nnnnnnnn", // (string) the total available balance for the token
177+
"reserved" : "n.nnnnnnnn" // (string) the total amount reserved by sell offers and accepts
178+
"frozen" : "n.nnnnnnnn" // (string) the total amount frozen by the issuer
179+
},
180+
...
181+
]
182+
```
183+
184+
**Example:**
185+
186+
```bash
187+
$ omnicore-cli "omni_getwalletbalances"
188+
```
189+
190+
---
191+
192+
### omni_getwalletaddressbalances
193+
194+
Returns a list of all token balances for every wallet address.
195+
196+
**Arguments:**
197+
198+
| Name | Type | Presence | Description |
199+
|---------------------|---------|----------|----------------------------------------------------------------------------------------------|
200+
| `includewatchonly` | boolean | optional | include balances of watchonly addresses (default: false) |
201+
202+
**Result:**
203+
```js
204+
[ // (array of JSON objects)
205+
{
206+
"address" : "address", // (string) the address linked to the following balances
207+
"balances" :
208+
[
209+
{
210+
"propertyid" : n, // (number) the property identifier
211+
"name" : "name", // (string) the name of the token
212+
"balance" : "n.nnnnnnnn", // (string) the available balance for the token
213+
"reserved" : "n.nnnnnnnn" // (string) the amount reserved by sell offers and accepts
214+
"frozen" : "n.nnnnnnnn" // (string) the amount frozen by the issuer
215+
},
216+
...
217+
]
218+
},
219+
...
220+
]
221+
```
222+
223+
**Example:**
224+
225+
```bash
226+
$ omnicore-cli "omni_getwalletaddressbalances"
227+
```
228+
229+
---
230+
231+
Information about freeze transactions added to "omni_gettransaction"
232+
--------------------------------------------------------------
233+
234+
The RPC "omni_gettransaction" now has support for the new transaction types for freezing and unfreezing tokens, which were added in the last major release.
235+
236+
Fix behavior of "omni_listtransactions"
237+
---------------------------------------
238+
239+
Previously, when trying to skip transactions with "omni_listtransactions", the list of transactions wasn't cut properly.
240+
241+
This behavior was fixed and proper cutting of the result is done.
242+
243+
Add field "issuerbonustokens" to "omni_getcrowdsale"
244+
----------------------------------------------------
245+
246+
While the field "addedissuertokens" of the RPC "omni_getcrowdsale" shows the amount of issuer bonus tokens not yet emitted, the new field "issuerbonustokens" now also shows the amount of tokens already granted to the issuer as bonus of a crowdsale.
247+
248+
Show receiving destination, when sending to self
249+
------------------------------------------------
250+
251+
When no explicit recipient is given in transactions such as Simple Sends, the transactions are considered as send-to-self, and tokens are simply sent to the original sender. This is now also reflected on the RPC layer, which previously showed a blank field as recipient.
252+
253+
Always show frozen balance in balance RPCs
254+
------------------------------------------
255+
256+
When queriying balances, previously the field "frozen" was only shown, when there were actually frozen tokens. The field is now always returned, even if there are no frozen tokens, to make an integration easier and more forseeable.
257+
258+
Add "name" field to "omni_getallbalancesforaddress"
259+
---------------------------------------------------
260+
261+
This release adds the "name" field to the output of the RPC "omni_getallbalancesforaddress".
262+
263+
While token namens are by no way unique, or serve as identifier of a token, providing the name nevertheless can improve the user experience, because it may then no longer necessary to use a RPC like "omni_getproperty" to retrieve the name of a token.
264+
265+
Massive performance improvements of omnicored
266+
---------------------------------------------
267+
268+
Due to optimizations of omnicored, the daemon of Omni Core, which serves as backend for exchanges and other integrators, the time to scan and parse new blocks for Omni Layer transactions was massively improved. On a regular machine, the time to process a full block could have taken up to 1.5 seconds, which was reduced in this release to about 300 ms.
269+
270+
Storage of state during initial scanning
271+
----------------------------------------
272+
273+
Currently the state of the Omni Layer is persisted for the last 50 blocks away from the chain tip.
274+
275+
This is fine in most cases, but during a reparse, when the chain is fully synchronized, no state is stored until the chain tip is reached. This is an issue, if the client is shutdown during the reparse, because it must then start from the beginning.
276+
277+
To avoid this, the state is permanently stored every 10000 blocks. When there is also an inconsistency, in particular because one or more state files are missing, the blocks are reverted until the next previous point. In practice, this may look like this:
278+
279+
![image](https://user-images.githubusercontent.com/5836089/39111870-e8e0c2c6-46d6-11e8-9ef0-ca6184c41eed.png)
280+
281+
Additionally state is no longer persisted before the first Omni Layer transaction was mined, which speeds up the initial synchronization up to this point.
282+
283+
Properly restore state, when rolling back blocks
284+
------------------------------------------------
285+
286+
There was an issue, which caused the client to reparse all Omni Layer transactions from the very first one, when blocks where rolled back, e.g. due to corrupted persistence files. This is a very time-consuming task and not necesary. In this release, the behavior was fixed and state is properly rolled back up to 50 blocks in the past, which significantly improves robustness of the client.
287+
288+
Avoid deadlock, when parsing transactions
289+
-----------------------------------------
290+
291+
There was an edge case, which could have resulted in a deadlock, freezing the client, when a new block was processed and RPC queries were executed at the same time. This expressed itself as seemingly random halts of the program, especially in an environment with many frequent RPC queries.
292+
293+
This, and the former improvements, make synchronizing a new Omni Core node, as well as maintaining one, much more frictionless.
294+
295+
Update checkpoints up to block 520000
296+
-------------------------------------
297+
298+
Two new consensus state checkpoints were added to this release, to ensure the user has no faulty database.
299+
300+
Internal preperations for native Segregated Witness support
301+
-----------------------------------------------------------
302+
303+
Omni Core and the Omni Layer support Segregated Witness scripts wrapped as script hash since the beginning, which can provide a significant cost saving.
304+
305+
However, there is no support for native Segregated Witness scripts, which are idenifiable by their bech32 encoding, yet.
306+
307+
This release includes internal preperations for native Segregated Witness scripts to pave the way for full support.
308+
309+
Improved internal database structure
310+
------------------------------------
311+
312+
A huge improvement of the internal database file structure was done in this release.
313+
314+
In particular database, rpc and wallet files are grouped by a common filename-prefix. This provides a better handling of the project and shows which files are related and which are not.
315+
316+
Change log
317+
==========
318+
319+
The following list includes relevant pull requests merged into this release:
320+
```
321+
- #520 Move, group and rename functions and files for better architecture
322+
- #521 Update version to 0.3.99 to indicate development
323+
- #567 Fix JSON input conversions, remove checks, when creating raw payloads
324+
- #568 Add freezing transaction data to omni_gettransaction
325+
- #576 Add screenshot and wiki to README
326+
- #581 No longer print Exodus balance after startup
327+
- #592 Fix cutting of omni_listtransactions
328+
- #594 Add support for native SW to safe solver
329+
- #596 Update checkpoints up until block 510000
330+
- #593 Make parsing more robust by persisting state every 10000 blocks
331+
- #630 Update checkpoint for block 520000
332+
- #634 Fix fail safe iteration when forming ECDSA point
333+
- #649 Fix .gitignore
334+
- #650 Add field "issuerbonustokens" to "omni_getcrowdsale"
335+
- #651 Update default value for end block of omni_listtransactions
336+
- #658 Add API to create funded raw transactions
337+
- #690 Fix erasing from persistence set
338+
- #693 Make boost::multi_index comparators const
339+
- #695 Fix documentation for "omni_sendissuancefixed" RPC
340+
- #697 Move setting properties of send-to-selfs into parsing
341+
- #711 Avoid deadlock, when parsing transcations
342+
- #713 Add and update fields for RPC help
343+
- #715 Skip wallet balance caching, when not in UI mode
344+
- #722 Always show frozen balance in balance RPCs
345+
- #724 Add RPC documentation for creating funded transactions
346+
- #723 Add name field to omni_getallbalancesforaddress
347+
- #716 Add two new RPCs to retrieve wallet balance information
348+
- #725 Add table of contents to RPC documentation
349+
- #727 Fix skipping balances, when using omni_getallbalancesforaddress
350+
- #728 Sign and broadcast funded transactions in one go
351+
- #741 Remove old reference to renamed file
352+
- #744 Clarify that bitcoins are meant in funded RPCs
353+
- #631 Bump version to Omni Core 0.3.1
354+
- #632 Add release notes for Omni Core 0.3.1
355+
- #746 Fix typo in release notes
356+
```
357+
358+
Credits
359+
=======
360+
361+
Thanks to everyone who contributed to this release, and especially @lxjxiaojun, @fengprofile and @vagabondanthe for their valuable contributions!

0 commit comments

Comments
 (0)