forked from goatpig/BitcoinArmory
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangelog.txt
232 lines (177 loc) · 13.7 KB
/
changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
v0.96
== Added ==
- 2 new script types have been introduced on top of legacy P2PKH:
- P2SH-P2PK: nested P2PK script. Uses compressed public keys.
- P2SH-P2WPKH: nested P2WPKH SegWit single sig output script.
- Added new signer code to handle the new script types. The code is only used when redeeming outputs using
the new scripts. All legacy outputs (P2PKH) are still handled by the original code and can be signed for
by previous versions dating back to 0.92.x. New address selection GUI let's the user pick the output script
of their choice.
- The modified offline signing serialization format is backwards compatible. Older version can sign for legacy outputs.
Older versions can also fund the new types (as they are P2SH scripts). You will need Armory 0.96+ to spend from these
new scripts
- Introducing brand new wallet code in C++, using LMDB for system I/O. The new code is compatible with Armory's
own chain derivation and can reproduce any existing Armory wallet. Starting 0.96, all existing wallets
are mirrored to this new format.
- Wallet mirrors are exclusively watching only (they only contain public data). The new wallet code interfaces with
the new address types and signer code. It is used to bridge the wallet data from client to database and distinguish
between output scripts.
- Single address use patterns are preserved. While any wallet can return any of the new output scripts, the new
wallet code guarantees requested new addresses originate from fresh public keys and locks public keys to their
chosen address type.
- Coin selection logic has been reproduced on the C++ side, with some improvements. It allows for proper interaction
with satoshi/byte fee options and provides predictive tx size thanks to the new wallet framework.
- New options have been introduced for fee management:
- Manual fee/byte.
- Auto fee/byte.
Auto fee/byte queries fee/byte from your local node over the RPC. It defaults to the default manual fee/byte on
failure. UI has been added to the Settings dialog to change the defaults. UI has been added to the Send dialog
to select fee options on the fly.
- Added optional auto adjust fee/byte feature. This feature ties back to the new coin selection logic. When using
fee/byte options, it attempts to increase your fee in order to lign up the precision of your change output with
the precision of your spend values. The goal is to obfuscate your change output in conjunction with the existing
output order randomization, by bluring the difference in value between change and payement outputs. This feature
improves privacy when applicable.
The fee bump is never more than 10% the original fee value and the coin selection code will prioritize outputs
that fit this strategy if enabled. This behavior can be turned on and off in the new fee dialogs.
- Added new change address options, configurable in a new settings tab. The options allow the user to pick the
script type of the change address, or automate it.
When automated, the change output will attempt to match the output script type of the payement address. This
feature improves privacy by unifying output script types, which obfuscates the change output.
If the recipient address types do not match, auto change will create a P2SH-P2PK output (as it uses compressed
public keys). Keep in mind that all versions prior to 0.96 cannot redeem these type of P2SH outputs.
If the transaction is SegWit and the change output is automated, the output script type will be P2SH-P2WPKH.
- The coin selection code will attempt to consolidate unspent outputs in order to redeem more outputs than it creates.
This behavior only takes place if there are available outputs sharing the same address as the already selected ones.
This behavior will not inflate the transaction fee by more than 20%.
- When choosing fee/byte options, the coin selection code will not create a change output if the change is considered
dust. Dust change refers to a change output with a value lower than the fee it will cost to redeem it.
In such case, the change value will be added to the transaction fee instead. This will increase tx priority and
improve privacy (as there will be no change output).
- Reworked the coin control dialog. It now distinguishes between address types. It also allows the selection of CPFP
outputs when applicable.
- Added RBF support. You can create RBF transactions from the Send dialogue. Checking the RBF box will set all input
sequences to (UINT32_MAX - 2).
- Modified zero confirmation coloring in legders. Own RBFs are displayed in a teal line. Incoming RBFs are red, child
ZC (a zero confirmation transaction spending at least one zero confirmation output) are displayed as orange.
- Your own RBFs have an extra right click menu option, to bump the fee. This will spawn the send dialogue with
prefilled fields.
- A coin control like RBF dialog has been added. It can be accessed from the send dialogue, under the Coin Control
button. It allows you to pick any eligible RBF output to double spend. RBF coin control and regular coin control
are mutually exclusive. The UX is still experimental, and subject to improvements/redesign.
- Transactions are now time locked to the current top block. This means miners cannot mine this transaction in a
block with a lower height than specified in the nLockTime field. This limits selfish mining attack scenarios, and
is in line with Bitcoin Core's own wallet practices.
Due to a mismanagement of the nLockTime field in previous versions, older signers cannot sign transactions
with a nLockTime other than 0. This means that when signing for a legacy P2PKH output with an a pre 0.96 signer,
the transaction will default back to a 0 nLockTime.
- Added the option to force the full redemption of coin control selection. Previously, the coin selection code would
pick outputs from within a custom coin control set. This option instructs the code to use the set as is, regardless
of total spent amount.
- Added a Tx preview button to the send dialog, to review transactions before clicking "Send".
- Reworked address ledger in wallet properties dialog. Now distinguishes between address categories (Used, Change and
Unused) and address types (P2PKH, P2SH-P2PK, P2SH-P2WPKH)
- The SegWit address type (P2SH-P2WPKH) can only be used if your local node operates on a chain that has activated SegWit.
SegWit is disabled on the Bitcoin mainnet through the use of a hardcoded flag.
- Moved node RPC socketing to ArmoryDB. ArmoryDB now waits on node initiliazation and synchronization processes if it can
establish a RPC connection.
- Migrated build system from raw Makefiles to autotools. This will eventually lead to deterministic builds through Gitian.
- Added config files for ArmoryQt (armoryqt.conf) and ArmoryDB (armorydb.conf). The config files can take any valid command
line arguments for their respective binaries (one arg per line). Config file arguments do not override command line
arguments
== Fixed ==
- Fixed transaction count display in wallet properties dialog
- Fixed wallet group selector in online lobby
- Fixed lockbox spending
- Will now properly display updated comments in global ledger
- Fixed wallet restore features
- Fixed P2P socketing with refactor Bitcoin Core networking layer (0.14+)
- Fixed clear mempool feature
- The bottom right block count indicator in the client now reports node connectivity properly, with tray notifications and
color coding
- Fixed interfacing between DB running on a Linux server and clients running on Windows.
v0.95.1
== Added ==
- Pass client datadir to auto spawned DB
== Fixed ==
- Fixed coin control GUI
- Fixed base58 decode edge case
- Fixed db version detection
- Fixed db error message reporting in GUI
- Fixed explicit db port overwrite in testnet
v0.95.0, released October 23rd 2016
== Added ==
- Introducing litenode
- Client and database are now split in 2 binaries: ArmoryQt (client) and ArmoryDB (server)
- Clients interface with servers over the FCGI protocol. Server is hardcoded to listen on localhost, default port is 9001
- ArmoryDB can serve remote clients through the use of a HTTP daemon. Example config file for nginx can be found here:
./nginx_example.conf
- As a result, bitcoin P2P connectivity has been moved from ArmoryQt to ArmoryDB. This means in turn that clients do not
require the presence of a local bitcoin node to operate anymore.
- By default ArmoryQt spawns and controls ArmoryDB. This will not happen in 2 cases:
_ There is already an instance of ArmoryDB listening on localhost:9001
_ ArmoryQt has been pointed to specific ArmoryDB through a combination of the new --armorydb-ip and --armorydb-port
command line arguments
- ArmoryDB requires the presence of a bitcoin node on localhost:8333 and access to raw blockchain data like before.
The change to interface with bitcoin nodes remotely (blocks over p2p) is not in the scope of this release
- ArmoryDB comes with its own set of command line arguments. They are described here:
./cppForSwig/BlockUtils.cpp:778
- DB modes are selected with the new --db-type cli arg. It defaults to --db-type=DB_FULL. Also available are DB_BARE and
DB_SUPER. DB_SUPER has no effect currently, it will be implemented in a future release.
- Introducing an extra dataset to resolve random transaction hashes. This database is ~550MB with the current
blockchain size. This comes in addition to the previous db features of 0.94. This is the default mode, i.e. DB_FULL.
To disable this feature (revert to the bare 0.94 db), use --db-type=DB_BARE.
- You cannot swap db modes on top of an existing db, you will need to build one from scratch instead.
- ArmoryDB now uses its own log file (dbLog.txt), running in the --datadir folder
- 0.95 db format changed from 0.94, you will have to build it in another --dbdir
- Added DB version detection. Mismatch in DB version will result in an error message and termination on the client side,
a stdout warning on the server terminal side as well as in the db log file.
- new cli args have been introduced to control db resource consumption:
_ --ram_usage: int >= 1. Defaults to 4. Each point is worth ~128MB RAM on top of the baseline needs. There is no upper
bound, be careful when using high values. <= 0 values result in use of default.
_ --thread-count: int >= 1. Defaults to CPU max thread count. As with ram-usage, use large upper values with care.
- Improved coin control granularity. You now select UTXOs directly.
- Added fee per byte options in Send Bitcoins dialog.
- Failure to broadcast zero confirmation transactions to the network are now reported with the specific reject message
from your node.
- Added Segregated Witness read support. This means the database can successfully parse SW transactions.
- No SW spending feature yet. This will be the subject of another release.
- Makes use of bitcoind's new cookie authentication in order to access bitcoind's JSON-RPC interface
- Can now make use of the JSON-RPC calls for estimatefee and estimatepriority regardless of whether Armory is managing
bitcoind.
- Those RPC calls will only work if client is local, i.e. ArmoryDB and bitcoind are being run on the same computer as
ArmoryQt.
== Fixed ==
- Fixed the missing transaction issue in the Tx Details dialog through the addition of the new resolver dataset
== Removed ==
- ArmoryQt does not interface nor require the presence of a local bitcoin node to operate online anymore. This
functionality has been migrated to ArmoryDB
- There will be no changes to wallet crypto related operations in this version. Older offline versions of Armory
(down to 0.92.x) are still compatible with 0.95
v0.94.1, released April 2nd 2016:
== Fixed ==
- Fixed parsing new blocks with no wallet loaded
- Fixed wallet/address import
- Fixed address sweeping
- .deb installer: will not register shortcuts if /usr/share/desktop-directories is missing
== Removed ==
- Removed Bitcoin P2P alert parsing, as it was removed from Bitcoin Core.
v0.94.0, released March 27th 2016:
== Added ==
- New database format: DB shrinked from 60GB to sub 200MB, >10x initial setup and startup speed.
- New DB corruption detection and auto repair code. Bad block issues should be mostly gone.
- Detection and GUI flagging of RBF enabled zero confirmation transactions.
- Fixed ZC chain handling and replacement. All ZC spending ZC outputs are now flagged as replaceable,
regardless of TxIn sequence or parent Tx state.
- Added new GUI option to add additional entropy at wallet creation using a deck of cards.
- After the change in lead, all new code is now developed under the MIT license (was AGPL3).
== Removed ==
- No more phone home code. There are no plans to reintroduce any code of that nature.
- As a result, the announce tab code is gone.
- No more torrent code. Seedboxes were hosted by ATI and are now down. Also, IBD improvements in
Core 0.10-12 make this code obsolete.
- As a result of the new light weight DB, the TxHint set has been shrinked to the bare minimum. This means
Armory cannot resolve arbitrary TxHash to data in block anymore. The main symptom is the inability to
resolve TxIn data in the "Transcation Details" dialog. This feature will be reintroduced as part of an
intermediarry DB format inbetween fullnode and supernode.
- No more supernode. Will be reintroduced in a later version.