summaryrefslogtreecommitdiff
path: root/41/30fedb9a8b6c15551ca0a5143aa12a1b8aff9a
blob: 8de40fe25f362018c9d4c2ecf6b0cd6f4b7f97f4 (plain)
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
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194]
	helo=mx.sourceforge.net)
	by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76)
	(envelope-from <mh.in.england@gmail.com>) id 1Xa2JB-0000DQ-F1
	for bitcoin-development@lists.sourceforge.net;
	Fri, 03 Oct 2014 12:50:05 +0000
Received-SPF: pass (sog-mx-4.v43.ch3.sourceforge.com: domain of gmail.com
	designates 209.85.212.177 as permitted sender)
	client-ip=209.85.212.177; envelope-from=mh.in.england@gmail.com;
	helo=mail-wi0-f177.google.com; 
Received: from mail-wi0-f177.google.com ([209.85.212.177])
	by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128)
	(Exim 4.76) id 1Xa2J9-0003NS-AL
	for bitcoin-development@lists.sourceforge.net;
	Fri, 03 Oct 2014 12:50:05 +0000
Received: by mail-wi0-f177.google.com with SMTP id fb4so1992654wid.10
	for <bitcoin-development@lists.sourceforge.net>;
	Fri, 03 Oct 2014 05:49:57 -0700 (PDT)
X-Received: by 10.194.216.74 with SMTP id oo10mr6802747wjc.126.1412340597028; 
	Fri, 03 Oct 2014 05:49:57 -0700 (PDT)
Received: from [192.168.0.18] (84-72-163-142.dclient.hispeed.ch.
	[84.72.163.142])
	by mx.google.com with ESMTPSA id wm6sm7917716wjb.5.2014.10.03.05.49.54
	for <bitcoin-development@lists.sourceforge.net>
	(version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
	Fri, 03 Oct 2014 05:49:55 -0700 (PDT)
Sender: Mike Hearn <mh.in.england@gmail.com>
From: Mike Hearn <mike@plan99.net>
Content-Type: multipart/signed;
	boundary="Apple-Mail=_24B6F826-F8D2-4DB8-B47D-2B92E61681F8";
	protocol="application/pkcs7-signature"; micalg=sha1
Message-Id: <E3D224C5-302E-494C-92CD-7DEC85284201@plan99.net>
Date: Fri, 3 Oct 2014 14:49:52 +0200
To: bitcoin-development@lists.sourceforge.net
Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\))
X-Mailer: Apple Mail (2.1878.6)
X-Spam-Score: -0.5 (/)
X-Spam-Report: Spam Filtering performed by mx.sourceforge.net.
	See http://spamassassin.org/tag/ for more details.
	-1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for
	sender-domain
	0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
	(mh.in.england[at]gmail.com)
	-0.0 SPF_PASS               SPF: sender matches SPF record
	1.0 HTML_MESSAGE           BODY: HTML included in message
	0.1 DKIM_SIGNED            Message has a DKIM or DK signature,
	not necessarily valid
	-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
X-Headers-End: 1Xa2J9-0003NS-AL
Subject: [Bitcoin-development] bitcoinj 0.12
X-BeenThere: bitcoin-development@lists.sourceforge.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: <bitcoin-development.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=unsubscribe>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development>
List-Post: <mailto:bitcoin-development@lists.sourceforge.net>
List-Help: <mailto:bitcoin-development-request@lists.sourceforge.net?subject=help>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=subscribe>
X-List-Received-Date: Fri, 03 Oct 2014 12:50:05 -0000


--Apple-Mail=_24B6F826-F8D2-4DB8-B47D-2B92E61681F8
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_4CE7191A-91B4-4D75-98D8-A4CF7F12F95C"


--Apple-Mail=_4CE7191A-91B4-4D75-98D8-A4CF7F12F95C
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=windows-1252

I=92m pleased to announce version 0.12 of bitcoinj, one of the worlds =
most popular Bitcoin libraries. It is used by at least four Android =
wallets, three desktop wallets, blockchain.info, Circle, biteasy, =
CryptoCorp, Lighthouse, BlueMatt=92s relay network, bitpos, countless =
alt coin wallets, for academic research projects and much more.

This release represents 8 months of work. The biggest new feature is HD =
wallets. Other notable enhancements include a bundled Tor client that =
can be activated with one line of code, support for multisig wallets, =
much faster and deterministic ECDSA, many API improvements and big =
upgrades to the included GUI wallet which can be seen in a new =
screencasted tutorial.

The commit hash of bitcoinj 0.12 is =
83a9a71f3fff3f223d0737ad758b519a39dbbd62.=20

New in this release

Privacy enhancements:
Wallets are now hierarchical and deterministic (HD) by default, using =
the BIP32 specification. Support for mnemonic codes (BIP 39) is also =
included. Change and receive addresses are no longer being reused. Old =
wallets are upgraded in place using the private key of the oldest =
non-rotating key as the seed bytes, so old backups remain valid.
Thanks to devrandom, we have an integrated Tor mode using the Orchid =
library. The user does not have to install the Tor client as it=92s all =
pure Java. WalletAppKit users can enable usage of Tor with a single line =
of code. This support should be considered experimental for now.
Thanks to Kosta Korenkov, we have an experimental multisig wallets =
implementation. Multisig (also =93married=94) wallets are HD wallets =
that are connected to a third party risk analysis service or device. =
When married, the wallet tracks multiple BIP32 key trees, keeps them in =
sync and starts vending P2SH addresses.
As part of this work, transaction signing is now pluggable. =
TransactionSigner implementations can be added to the wallet and will be =
serialized into and out of the users saved wallet file. Signers are =
given a transaction to sign in sequence. This is intended for risk =
analysis providers to provide a class that talks to their server to get =
a signature of the right form, so that all bitcoinj based wallets can be =
easily upgraded to support the new provider.
Reject messages are now deserialized and logged, though not yet exposed =
in the API.
Upgraded to Guava 16 and Bouncy Castle 1.51. Thanks to Peter Dettman and =
the rest of the Bouncy Castle team, bitcoinj now uses deterministic =
ECDSA for signing and we=92re now using an accelerated secp256k1 =
implementation that exploits the special properties of this curve, for =
dramatically faster calculations.
Payment protocol code improvements: Some X.509 utility code was =
refactored out of PaymentSession for general usage. StartCom was added =
to the default trust store which was promoted to override the system =
trust store on non-Android platforms. A command line tool to dump =
requests to stdout was added.
Thanks to Andreas Schildbach:
We are now BIP62 (canonical push encodings) compliant.
A new Coin class replaces usage of BigInteger for marking values that =
are quantities of bitcoin. Formatting has moved into the new =
MonetaryFormat class.
The wallet now saves the fee paid on transactions we calculated =
ourselves. This is useful for putting it into a wallet user interface.
Transactions can have user memos and exchange rates attached, that will =
be saved by the wallet.
Support for decrypting BIP 38 protected private keys has been added.
Checkpoints can now be stored textually as well as in the old binary =
format.
There is also a new BtcFormat API that provides an alternative to =
MonetaryFormat that plugs in to the java.text framework.
Added new DNS seed from Addy Yeow.
Wallets can now have string->byte[] mappings attached to them, for =
lighter weight extensions.
Thanks to Richard Green, there is now a Python version of the =
ForwardingService program from the getting started tutorial. This shows =
how to use bitcoinj from Python using the Jython interpreter.
bitcoinj now probes localhost for a Bitcoin node and automatically uses =
that instead of the P2P network, when present. This means any bitcoinj =
based app can be easily upgraded from SPV to full security just by =
running Core at the same time: no setup needed.
Thanks to Michael Bumann, there are now more example apps showing how to =
use parts of the API.
WalletTemplate/WalletAppKit improvements. WalletTemplate is a demo app =
that shows how to create a cross-platform GUI wallet with a modern style =
and 60fps animations. WalletAppKit is a very high level API for creating =
apps that have a Bitcoin wallet:
Now supports mnemonic code and restore from seed words. A date picker is =
provided to cut down on the amount of chain that needs to be rescanned.
Support for encrypting wallets. Password is requested when needed. The =
difficulty of the scrypt function is selected to always take a fixed =
number of seconds even if hardware gets more powerful.
Some new animation and utility code backported from Lighthouse.
Tor support
Thanks to Martin Zachrison, the micropayment channels implementation has =
received various improvements.
Thanks to Eric Tierney (Circle), the Postgres store can now take a =
custom schema.
The Bloom filtering API has been extended so FilteredBlock objects can =
now be produced from Block objects given a BloomFilter. Previously there =
was support for client-side Bloom usage but no implementation of the =
generation part.
Many other bugfixes, cleanups, minor tweaks and small new APIs.
Documentation and tutorials

A JavaScript tutorial has been added, showing how to use bitcoinj from =
this language. More tutorials in other languages will come in future.
The =93Working with the wallet=94 document has been significantly =
extended to cover encryption, watching wallets, HD wallets and =
multisig/married wallets.
A new document and accompanying screencast shows how to extend the =
WalletTemplate app to have a transactions list, and then make a =
native/bundled packages that don=92t need the user to install Java. By =
following this tutorial you will learn how to make a basic cross =
platform desktop wallet of your own.
All other docs were refreshed to the latest APIs.
API changes

The package name has changed to org.bitcoinj and the core Maven artifact =
name is now =93bitcoinj-core=94. You can auto-port most of your code by =
running find . -name '*.java' \| xargs sed -i .bak =
's/com.google.bitcoin./import org.bitcoinj./g
Wallet.completeTx now throws more precise unchecked exceptions in edge =
cases, instead of IllegalArgumentException.
The use of BigInteger to represent quantities of Bitcoin has been =
replaced with the more efficient, type safe and useful class Coin. Coin =
is mostly source compatible with BigInteger so you can probably just do =
a search and replace to update your codebase. =
Utils.bitcoinValueToFriendlyString and friends moved to CoinFormat.
NetworkParameters.getProofOfWorkLimit was renamed to getMaxTarget for =
consistency with other Bitcoin codebases.
The library no longer uses the misleading term =93nanocoins=94 to mean =
satoshis (the old term predated the use of the word satoshi to describe =
the smallest possible amount of bitcoin).
TransactionConfidence no longer tracks total work done.
Because outputs are now shuffled any code during that assumes the =
ordering is preserved will break. You can set the shuffleOutputs field =
of SendRequest to false to disable this behaviour if you need to.
The ECKey and HD API=92s have changed quite a bit: several constructors =
were replaced with clearer static factory methods that make it more =
obvious how their parameters are interpreted. The new methods don=92t =
change their behaviour depending on the pattern of nulls passed into =
them.
Some unit testing utilities have been moved to the new testing =
subpackage and cleaned up/rearranged. It should be easier to write unit =
tests for your app that need a simulated network now. DeterministicKey =
now derives from ECKey.
We now use Utils.HEX.encode() and Utils.HEX.decode() to do translation =
to and from base 16.
Transaction.hashTransactionForSignature was renamed to just =
hashForSignature.
The subVer string sent by bitcoinj now has a lower cased first =
component.


--Apple-Mail=_4CE7191A-91B4-4D75-98D8-A4CF7F12F95C
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=windows-1252

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dwindows-1252"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">I=92m =
pleased to announce version 0.12 of bitcoinj, one of the worlds most =
popular Bitcoin libraries. It is used by at least four Android wallets, =
three desktop wallets, blockchain.info, Circle, biteasy, CryptoCorp, =
Lighthouse, BlueMatt=92s relay network, bitpos, countless alt coin =
wallets, for academic research projects and much more.<div class=3D""><br =
class=3D""></div><div class=3D"">This release represents 8 months of =
work. The biggest new feature is&nbsp;HD wallets. Other notable =
enhancements include a bundled Tor client that can be activated with one =
line of code, support for multisig wallets, much faster and =
deterministic ECDSA, many API improvements and big upgrades to the =
included GUI wallet which can be seen in&nbsp;<a =
href=3D"https://bitcoinj.github.io/simple-gui-wallet" class=3D"">a new =
screencasted tutorial</a>.</div><div class=3D""><br class=3D""></div><div =
class=3D"">The commit hash of bitcoinj 0.12 =
is&nbsp;83a9a71f3fff3f223d0737ad758b519a39dbbd62.&nbsp;</div><div =
class=3D""><br></div><div class=3D""><h2 id=3D"version-012" class=3D"" =
style=3D"color: rgb(56, 56, 56); font-family: NanLight, =
sans-serif;"><span class=3D"" style=3D"font-weight: normal;">New in this =
release</span></h2><ul class=3D"" style=3D"padding-left: 20px; =
margin-left: 0px; color: rgb(100, 100, 100); font-family: NanLight, =
sans-serif;"><li style=3D"padding: 5px 0px; line-height: 1.5em;">Privacy =
enhancements:<ul class=3D"" style=3D"padding-left: 20px; margin-left: =
0px; list-style-type: disc;"><li style=3D"padding: 5px 0px; line-height: =
1.5em;">Wallets are now hierarchical and deterministic (HD) by default, =
using the BIP32 specification. Support for mnemonic codes (BIP 39) is =
also included. Change and receive addresses are no longer being reused. =
Old wallets are upgraded in place using the private key of the oldest =
non-rotating key as the seed bytes, so old backups remain valid.</li><li =
style=3D"padding: 5px 0px; line-height: 1.5em;">Thanks to devrandom, we =
have an integrated Tor mode using the Orchid library. The user does not =
have to install the Tor client as it=92s all pure Java. WalletAppKit =
users can enable usage of Tor with a single line of code. This support =
should be considered experimental for now.</li></ul></li><li =
style=3D"padding: 5px 0px; line-height: 1.5em;">Thanks to Kosta =
Korenkov, we have an experimental multisig wallets implementation. =
Multisig (also =93married=94) wallets are HD wallets that are connected =
to a third party risk analysis service or device. When married, the =
wallet tracks multiple BIP32 key trees, keeps them in sync and starts =
vending P2SH addresses.<ul class=3D"" style=3D"padding-left: 20px; =
margin-left: 0px; list-style-type: disc;"><li style=3D"padding: 5px 0px; =
line-height: 1.5em;">As part of this work, transaction signing is now =
pluggable. TransactionSigner implementations can be added to the wallet =
and will be serialized into and out of the users saved wallet file. =
Signers are given a transaction to sign in sequence. This is intended =
for risk analysis providers to provide a class that talks to their =
server to get a signature of the right form, so that all bitcoinj based =
wallets can be easily upgraded to support the new =
provider.</li></ul></li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">Reject messages are now deserialized and logged, though not yet =
exposed in the API.</li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">Upgraded to Guava 16 and Bouncy Castle 1.51. Thanks to Peter =
Dettman and the rest of the Bouncy Castle team, bitcoinj now uses =
deterministic ECDSA for signing and we=92re now using an accelerated =
secp256k1 implementation that exploits the special properties of this =
curve, for dramatically faster calculations.</li><li style=3D"padding: =
5px 0px; line-height: 1.5em;">Payment protocol code improvements: Some =
X.509 utility code was refactored out of PaymentSession for general =
usage. StartCom was added to the default trust store which was promoted =
to override the system trust store on non-Android platforms. A command =
line tool to dump requests to stdout was added.</li><li style=3D"padding: =
5px 0px; line-height: 1.5em;">Thanks to Andreas Schildbach:<ul class=3D"" =
style=3D"padding-left: 20px; margin-left: 0px; list-style-type: =
disc;"><li style=3D"padding: 5px 0px; line-height: 1.5em;">We are now =
BIP62 (canonical push encodings) compliant.</li><li style=3D"padding: =
5px 0px; line-height: 1.5em;">A new Coin class replaces usage of =
BigInteger for marking values that are quantities of bitcoin. Formatting =
has moved into the new MonetaryFormat class.</li><li style=3D"padding: =
5px 0px; line-height: 1.5em;">The wallet now saves the fee paid on =
transactions we calculated ourselves. This is useful for putting it into =
a wallet user interface.</li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">Transactions can have user memos and exchange rates attached, =
that will be saved by the wallet.</li><li style=3D"padding: 5px 0px; =
line-height: 1.5em;">Support for decrypting BIP 38 protected private =
keys has been added.</li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">Checkpoints can now be stored textually as well as in the old =
binary format.</li></ul></li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">There is also a new BtcFormat API that provides an alternative =
to MonetaryFormat that plugs in to the java.text framework.</li><li =
style=3D"padding: 5px 0px; line-height: 1.5em;">Added new DNS seed from =
Addy Yeow.</li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">Wallets can now have string-&gt;byte[] mappings attached to =
them, for lighter weight extensions.</li><li style=3D"padding: 5px 0px; =
line-height: 1.5em;">Thanks to Richard Green, there is now a Python =
version of the ForwardingService program from the getting started =
tutorial. This shows how to use bitcoinj from Python using the Jython =
interpreter.</li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">bitcoinj now probes localhost for a Bitcoin node and =
automatically uses that instead of the P2P network, when present. This =
means any bitcoinj based app can be easily upgraded from SPV to full =
security just by running Core at the same time: no setup needed.</li><li =
style=3D"padding: 5px 0px; line-height: 1.5em;">Thanks to Michael =
Bumann, there are now more example apps showing how to use parts of the =
API.</li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">WalletTemplate/WalletAppKit improvements. WalletTemplate is a =
demo app that shows how to create a cross-platform GUI wallet with a =
modern style and 60fps animations. WalletAppKit is a very high level API =
for creating apps that have a Bitcoin wallet:<ul class=3D"" =
style=3D"padding-left: 20px; margin-left: 0px; list-style-type: =
disc;"><li style=3D"padding: 5px 0px; line-height: 1.5em;">Now supports =
mnemonic code and restore from seed words. A date picker is provided to =
cut down on the amount of chain that needs to be rescanned.</li><li =
style=3D"padding: 5px 0px; line-height: 1.5em;">Support for encrypting =
wallets. Password is requested when needed. The difficulty of the scrypt =
function is selected to always take a fixed number of seconds even if =
hardware gets more powerful.</li><li style=3D"padding: 5px 0px; =
line-height: 1.5em;">Some new animation and utility code backported from =
Lighthouse.</li><li style=3D"padding: 5px 0px; line-height: 1.5em;">Tor =
support</li></ul></li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">Thanks to Martin Zachrison, the micropayment channels =
implementation has received various improvements.</li><li =
style=3D"padding: 5px 0px; line-height: 1.5em;">Thanks to Eric Tierney =
(Circle), the Postgres store can now take a custom schema.</li><li =
style=3D"padding: 5px 0px; line-height: 1.5em;">The Bloom filtering API =
has been extended so FilteredBlock objects can now be produced from =
Block objects given a BloomFilter. Previously there was support for =
client-side Bloom usage but no implementation of the generation =
part.</li><li style=3D"padding: 5px 0px; line-height: 1.5em;">Many other =
bugfixes, cleanups, minor tweaks and small new APIs.</li></ul><p =
class=3D"" style=3D"line-height: 1.5em; color: rgb(100, 100, 100); =
font-family: NanLight, sans-serif;"><b class=3D"">Documentation and =
tutorials</b></p><ul class=3D"" style=3D"padding-left: 20px; =
margin-left: 0px; color: rgb(100, 100, 100); font-family: NanLight, =
sans-serif;"><li style=3D"padding: 5px 0px; line-height: =
1.5em;">A&nbsp;<a href=3D"https://bitcoinj.github.io/getting-started-js" =
class=3D"">JavaScript tutorial</a>&nbsp;has been added, showing how to =
use bitcoinj from this language. More tutorials in other languages will =
come in future.</li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">The =93<a =
href=3D"https://bitcoinj.github.io/working-with-the-wallet" =
class=3D"">Working with the wallet</a>=94 document has been =
significantly extended to cover encryption, watching wallets, HD wallets =
and multisig/married wallets.</li><li style=3D"padding: 5px 0px; =
line-height: 1.5em;">A&nbsp;<a =
href=3D"https://bitcoinj.github.io/simple-gui-wallet" class=3D"">new =
document and accompanying screencast</a>&nbsp;shows how to extend the =
WalletTemplate app to have a transactions list, and then make a =
native/bundled packages that don=92t need the user to install Java. By =
following this tutorial you will learn how to make a basic cross =
platform desktop wallet of your own.</li><li style=3D"padding: 5px 0px; =
line-height: 1.5em;">All other docs were refreshed to the latest =
APIs.</li></ul><p class=3D"" style=3D"line-height: 1.5em; color: =
rgb(100, 100, 100); font-family: NanLight, sans-serif;"><b class=3D"">API =
changes</b></p><ul class=3D"" style=3D"padding-left: 20px; margin-left: =
0px; color: rgb(100, 100, 100); font-family: NanLight, sans-serif;"><li =
style=3D"padding: 5px 0px; line-height: 1.5em;">The package name has =
changed to org.bitcoinj and the core Maven artifact name is now =
=93bitcoinj-core=94. You can auto-port most of your code by =
running&nbsp;<code class=3D"" style=3D"font-family: monospace, =
monospace; padding: 2px 4px; border: 1px solid rgb(204, 204, 204); =
background-color: rgb(245, 245, 245);">find . -name '*.java' \| xargs =
sed -i .bak 's/com.google.bitcoin./import org.bitcoinj./g</code></li><li =
style=3D"padding: 5px 0px; line-height: 1.5em;">Wallet.completeTx now =
throws more precise unchecked exceptions in edge cases, instead of =
IllegalArgumentException.</li><li style=3D"padding: 5px 0px; =
line-height: 1.5em;">The use of BigInteger to represent quantities of =
Bitcoin has been replaced with the more efficient, type safe and useful =
class Coin. Coin is mostly source compatible with BigInteger so you can =
probably just do a search and replace to update your codebase. =
Utils.bitcoinValueToFriendlyString and friends moved to =
CoinFormat.</li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">NetworkParameters.getProofOfWorkLimit was renamed to =
getMaxTarget for consistency with other Bitcoin codebases.</li><li =
style=3D"padding: 5px 0px; line-height: 1.5em;">The library no longer =
uses the misleading term =93nanocoins=94 to mean satoshis (the old term =
predated the use of the word satoshi to describe the smallest possible =
amount of bitcoin).</li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">TransactionConfidence no longer tracks total work done.</li><li =
style=3D"padding: 5px 0px; line-height: 1.5em;">Because outputs are now =
shuffled any code during that assumes the ordering is preserved will =
break. You can set the shuffleOutputs field of SendRequest to false to =
disable this behaviour if you need to.</li><li style=3D"padding: 5px =
0px; line-height: 1.5em;">The ECKey and HD API=92s have changed quite a =
bit: several constructors were replaced with clearer static factory =
methods that make it more obvious how their parameters are interpreted. =
The new methods don=92t change their behaviour depending on the pattern =
of nulls passed into them.</li><li style=3D"padding: 5px 0px; =
line-height: 1.5em;">Some unit testing utilities have been moved to the =
new testing subpackage and cleaned up/rearranged. It should be easier to =
write unit tests for your app that need a simulated network now. =
DeterministicKey now derives from ECKey.</li><li style=3D"padding: 5px =
0px; line-height: 1.5em;">We now use Utils.HEX.encode() and =
Utils.HEX.decode() to do translation to and from base 16.</li><li =
style=3D"padding: 5px 0px; line-height: =
1.5em;">Transaction.hashTransactionForSignature was renamed to just =
hashForSignature.</li><li style=3D"padding: 5px 0px; line-height: =
1.5em;">The subVer string sent by bitcoinj now has a lower cased first =
component.</li></ul></div><div><br></div></body></html>=

--Apple-Mail=_4CE7191A-91B4-4D75-98D8-A4CF7F12F95C--

--Apple-Mail=_24B6F826-F8D2-4DB8-B47D-2B92E61681F8
Content-Disposition: attachment;
	filename=smime.p7s
Content-Type: application/pkcs7-signature;
	name=smime.p7s
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIINKTCCBm8w
ggRXoAMCAQICEADVy4nCkwCb7b0BS9wQlgIwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCQ0gx
FTATBgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWduIFBsYXRpbnVtIENBIC0g
RzIwHhcNMTAwMzA4MTQwNTA0WhcNMjUwMzA0MTQwNTA0WjBXMQswCQYDVQQGEwJDSDEVMBMGA1UE
ChMMU3dpc3NTaWduIEFHMTEwLwYDVQQDEyhTd2lzc1NpZ24gU3Vpc3NlSUQgUGxhdGludW0gQ0Eg
MjAxMCAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4cSEEXIyNDHcWYj3QrVO
/5OBfrIUaK4au+FEcSFe4MvQ9/wV3p9DGSTf8vljcgHNPIYo4iHYh8xJVn7HK7PG6yS+JnoQsl5c
8DI7UE5ZW/kjfHj45W+rDmyhntQqG7FjPZQoPWdlC2lGkV2NEtenU+U0jXf2NpQw3LiPtF3CjliX
r8BdusJkvUm0ItfaJabF4+ygFa9qAm9YLGYaMNck17CoKsCVtDdaFKjBm3ColZeB5GAEZTwdBwFn
HNp9fXvn+QuNwhE5wMZT46pVXNbJlCrnEdblmiWEhei9jB5381hSsKai/zLaldVQ/aSu10WYg5KK
kUfSWVVScT+j6PtM2QIDAQABo4ICQzCCAj8wDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYB
Af8CAQAwHQYDVR0OBBYEFOlEhoCS6k5Qd8nnkghC11/AwiVCMB8GA1UdIwQYMBaAFFCvzAeHFUdv
OMW0ZdHelarp35zMMIH/BgNVHR8EgfcwgfQwR6BFoEOGQWh0dHA6Ly9jcmwuc3dpc3NzaWduLm5l
dC81MEFGQ0MwNzg3MTU0NzZGMzhDNUI0NjVEMURFOTVBQUU5REY5Q0NDMIGooIGloIGihoGfbGRh
cDovL2RpcmVjdG9yeS5zd2lzc3NpZ24ubmV0L0NOPTUwQUZDQzA3ODcxNTQ3NkYzOEM1QjQ2NUQx
REU5NUFBRTlERjlDQ0MlMkNPPVN3aXNzU2lnbiUyQ0M9Q0g/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
TGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50MGEGA1UdIARaMFgwVgYE
VR0gADBOMEwGCCsGAQUFBwIBFkBodHRwOi8vcmVwb3NpdG9yeS5zd2lzc3NpZ24uY29tL1N3aXNz
U2lnbi1QbGF0aW51bS1DUC1DUFMtUjMucGRmMHQGCCsGAQUFBwEBBGgwZjBkBggrBgEFBQcwAoZY
aHR0cDovL3N3aXNzc2lnbi5uZXQvY2dpLWJpbi9hdXRob3JpdHkvZG93bmxvYWQvNTBBRkNDMDc4
NzE1NDc2RjM4QzVCNDY1RDFERTk1QUFFOURGOUNDQzANBgkqhkiG9w0BAQUFAAOCAgEAOoY+H9An
n9SpqVsHBe34r3tt2coVn5386F0UiH1IhaWNMVZoq0/sKjXuWp+kZrkNAqWwhvk4qghllxtngI7D
SG4+1/9SGnpe8DTvngRHesAzVkbHfCoNqlKGBnjCp6i+cdmzOb3opj0MCd5kQkPksw3YTkBXJDiN
aU43YRRXb1uEAgQbizKkBgxZGpjDa4FSs5ry+Yq2rXeaUlPWmCR9wZS5kZ1anyfwyRSmFQK/bPMi
kCw9ySe28Dtz9nMNwZmHNGvhGYUF+F0QHMb+sdbGx6TD465fqdYe5M7/YpElRvS6jKOPScqUZoq0
xxrBakc4XPQgNOCrCRu0PKgROWeUGv3zZw8uY5Xy5DJoe7F7anxEJgTw9A41S0WDh75Iwjr9l91S
9IzeiGR3g6S6hrek98PWjdHmAfIo9FHGCSXbJFfa958h82QKnydUy79enXwRcPbvlw1FoTkBWgc0
uceIx3jVMlU7NyE+0PCiMIWM/YBbn0B0KmTYb2hdde8YDGp2M+qbW2wQv1gjC9vtm0Ens1bemN3G
geWQxQXMAYXDJWb+dFy1sOIwvhzp31ei06x4C3EuiQXINzkQdgOL/7b5e5r23M4xWdISv9IEHwPc
4IuXJ2NBrB8zk9RmZRcQOjeHdwDM7n+i3FlPjL2/StV28qIuPiwzYjQhzQOBQM+7xd4wggayMIIF
mqADAgECAg8A3Hz8Etjr03yOomWvEiEwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQ0gxFTAT
BgNVBAoTDFN3aXNzU2lnbiBBRzExMC8GA1UEAxMoU3dpc3NTaWduIFN1aXNzZUlEIFBsYXRpbnVt
IENBIDIwMTAgLSBHMjAeFw0xMzExMjExNDI5NDhaFw0xNDExMjExNDI5NDhaMGcxJzAlBgNVBAMT
Hk1pY2hhZWwgSGVhcm4gKEF1dGhlbnRpY2F0aW9uKTEeMBwGCSqGSIb3DQEJARYPbWlrZUBwbGFu
OTkubmV0MRwwGgYDVQQFExMxMzAwLTgwMTUtMTU4Ni05MTE4MIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAhgAkK5PH/nRIcQcBZamR4P7jkS96g+ud/Tqi32bElgSzuuW6aWzOE0n/XR5H
Wf40mDx1dRj0WM3dt/7Cl1KomoShfIsNxHxcG420vpeoQNQd8r8TokojCX6Y5l+TlAvSPdGhIyEO
XG3puryO4XBZNYHVkZ9fwhC7bau1sbn7mcU2qba/TwkRDGIFSiCml6z8rBMiJ/cSII2QcNgS+ziv
82Uhz4i4GVNPOmegboHkE8qT+gouEeVWMLivXDbAwQF1fBaE75z/Wr+w0K6YJtS7oAbgwIEJpe8/
1/OS8HI846+02eMxThD+vqwnxcQo+EpicvoqmOsjnLErQG1cTA556QIDAQABo4IDaTCCA2UwTwYD
VR0RBEgwRoEPbWlrZUBwbGFuOTkubmV0oDMGCisGAQQBgjcUAgOgJQwjMTMwMC04MDE1LTE1ODYt
OTExOEB1cG4uc3Vpc3NlaWQuY2gwDgYDVR0PAQH/BAQDAgeAMCkGA1UdJQQiMCAGCCsGAQUFBwMC
BggrBgEFBQcDBAYKKwYBBAGCNxQCAjAdBgNVHQ4EFgQUp8JGBqJ9qpKjNlth17DhQ+pIAG8wHwYD
VR0jBBgwFoAU6USGgJLqTlB3yeeSCELXX8DCJUIwgf8GA1UdHwSB9zCB9DBHoEWgQ4ZBaHR0cDov
L2NybC5zd2lzc3NpZ24ubmV0L0U5NDQ4NjgwOTJFQTRFNTA3N0M5RTc5MjA4NDJENzVGQzBDMjI1
NDIwgaiggaWggaKGgZ9sZGFwOi8vZGlyZWN0b3J5LnN3aXNzc2lnbi5uZXQvQ049RTk0NDg2ODA5
MkVBNEU1MDc3QzlFNzkyMDg0MkQ3NUZDMEMyMjU0MiUyQ089U3dpc3NTaWduJTJDQz1DSD9jZXJ0
aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9p
bnQwgbYGA1UdIASBrjCBqzCBmwYIYIV0BRoBAQIwgY4wTAYIKwYBBQUHAgEWQGh0dHA6Ly9yZXBv
c2l0b3J5LnN3aXNzc2lnbi5jb20vU3dpc3NTaWduLVBsYXRpbnVtLUNQLUNQUy1SMy5wZGYwPgYI
KwYBBQUHAgIwMhowU3Vpc3NlSUQgaWRlbnRpdHkgYW5kIGF1dGhlbnRpY2F0aW9uIGNlcnRpZmlj
YXRlMAsGCWCFdAFZAQEBATCB2wYIKwYBBQUHAQEEgc4wgcswZAYIKwYBBQUHMAKGWGh0dHA6Ly9z
d2lzc3NpZ24ubmV0L2NnaS1iaW4vYXV0aG9yaXR5L2Rvd25sb2FkL0U5NDQ4NjgwOTJFQTRFNTA3
N0M5RTc5MjA4NDJENzVGQzBDMjI1NDIwYwYIKwYBBQUHMAGGV2h0dHA6Ly9wbGF0aW51bS1zdWlz
c2VpZC1nMi5vY3NwLnN3aXNzc2lnbi5uZXQvRTk0NDg2ODA5MkVBNEU1MDc3QzlFNzkyMDg0MkQ3
NUZDMEMyMjU0MjANBgkqhkiG9w0BAQUFAAOCAQEAQENx9hsahnGo3u/8ksy53OxZkaSISe6e4XT1
i/o0qZ6DKd9noZ2LvbclyyNo3Q9W4TU1pP41yf4JcL25sx1z7U/e9Ze7vTZN/GZ+gv20gaCqm/cQ
WF19PjzTPqYXvJjGK6euiQzACN/IEjxeuzaiml02jpFnH1VrNvgfib/WQCL9y1dK6aLx9noP3CXC
nd0ZWhYIdh1e4NZXetRFKII1z/iAlevHmEdLAv0XgKFA6RnBdxCFdw6E7cz2TUS3m59IkrE3z/3s
wGV+lg7Q60ZNMAeskg1+zhNpaY9FyBdRDXk2K43ItgE5Mr8+LCdGwoIofXubME12En6DuOnQ38mq
GzGCAfAwggHsAgEBMGowVzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzExMC8G
A1UEAxMoU3dpc3NTaWduIFN1aXNzZUlEIFBsYXRpbnVtIENBIDIwMTAgLSBHMgIPANx8/BLY69N8
jqJlrxIhMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJ
BTEPFw0xNDEwMDMxMjQ5NTNaMCMGCSqGSIb3DQEJBDEWBBQV5WPyzghEm13qvTzHh9k5hYoyzDAN
BgkqhkiG9w0BAQEFAASCAQB6cbHAIzIs2iNOrpt7bF7muQ3SNoN9POwKSCre/A7ye27tjqC9YPer
ha9Dr5f8z7YkuW7QfMxtqqTAUp1YHZKqquMtDD6hzjxokbQ27SRrLy8nKILHc6UpwEFw8j9cmRbp
n1tJIOItGl40YCFg9Y4+N0mN1wT7QC9zxb7d1v5ZEIZz3hfMtKVFDRkS3KSHYmT98YDDd9AnInlz
W7t6coLcwExC5byqMSkrEyzA21V8A5a/9gXVwRKcpSXbDGe83LO2qCOpjH42+Bvz+ib1spOMR7hA
TDj3M8srJU9cWo53sAbAKfSnTFHNPNC5wd01fSiXKMgF5D/6LdJq3sHIOzntAAAAAAAA

--Apple-Mail=_24B6F826-F8D2-4DB8-B47D-2B92E61681F8--