The MultiBit version of Sha256Hash only exists now because of that problem from ages ago about there being two different serialVersionUIDs in the wild.

I think at some point I will stop supporting serialised wallets and for any serialised wallets remaining just ask people to download an older version of MultiBit from multibit.org/releases and migrate their wallet using that. There cannot be very many in the wild now anyhow.

I thought I would mention a useful bitcoinj utility that Mike Hearn has written and included in bitcoinj.It is called WalletTool and it gives you a command line to the bitcoinj wallets. (These are the same wallets used in MultiBit).

It has been around a while and Mike keeps adding to it. Probably the easiest way to describe its capabilities is to include the help:

Code:

WalletTool: print and manipulate wallets

Usage:>>> GENERAL OPTIONS --debuglog Enables logging from the core library. --net=PROD/TEST Which network to connect to, defaults to PROD. --mode=FULL/SPV Whether to do full verification of the chain or just light mode. --wallet=<file> Specifies what wallet file to load and save. --chain=<file> Specifies the name of the file that stores the block chain. --force Overrides any safety checks on the requested action. --date Provide a date in form YYYY/MM/DD to any action that requires one. --peers=1.2.3.4 Comma separaterd IP addresses/domain names for connections instead of peer discovery. --condition=... Allows you to specify a numeric condition for other commands. The format is one of the following operators = < > <= >= immediately followed by a number. For example --condition=">5.10" or --condition="<=1"

>>> ACTIONS --action=DUMP Loads and prints the given wallet in textual form to stdout. --action=RAW_DUMP Prints the wallet as a raw protobuf with no parsing or sanity checking applied. --action=CREATE Makes a new wallet in the file specified by --wallet. Will complain and require --force if the wallet already exists. --action=ADD_KEY Adds a new key to the wallet, either specified or freshly generated. If --date is specified, that's the creation date. If --privkey is specified, use as a hex/base58 encoded private key. Don't specify --pubkey in that case, it will be derived automatically. If --pubkey is specified, use as a hex/base58 encoded non-compressed public key. --action=DELETE_KEY Removes the key specified by --pubkey or --addr from the wallet. --action=SYNC Sync the wallet with the latest block chain (download new transactions). If the chain file does not exist this will RESET the wallet. --action=RESET Deletes all transactions from the wallet, for if you want to replay the chain. --action=SEND Creates a transaction with the given --output from this wallet and broadcasts, eg: --output=1GthXFQMktFLWdh5EPNGqbq3H6WdG8zsWj:1.245 You can repeat --output=address:value multiple times. If the output destination starts with 04 and is 65 or 33 bytes long it will be treated as a public key instead of an address and the send will use <key> CHECKSIG as the script. Other options include: --fee=0.01 sets the tx fee

>>> WAITINGYou can wait for the condition specified by the --waitfor flag to become true. Transactions and newblocks will be processed during this time. When the waited for condition is met, the tx/block hashwill be printed. Waiting occurs after the --action is performed, if any is specified.

--waitfor=EVER Never quit. --waitfor=WALLET_TX Any transaction that sends coins to or from the wallet. --waitfor=BLOCK A new block that builds on the best chain. --waitfor=BALANCE Waits until the wallets balance meets the --condition.

A useful complement to the MultiBit graphical user interface. Bitcoinj is here.

Please note: this version does not include a full fix for the zero-confirmation vulnerabilityannounced by Retep on 10 Jan 2013. (This is still being worked on).

Improvements+ Improved status notifications for transactions+ Update to bitcoinj 0.6.1+ Coinbase transactions now have a pickaxe icon and the status icon fills more slowly+ Now only hits currency server if ticker is shown or currency conversions are on+ Fiat currency fields only shown on Send and Request if fiat currency successfully found from remote server+ Small increase in table row height for visual clarity.

Good catch - I think the 'additional' in the second line indicates the option is not available in the Izpack installer (that I use) but I will have a look. I use the IzPack installer without any customisation for simplicity.

subSTRATA < for bugs and issues that don't really need much debate it would be easier for me if you added them into the github issues section directly. It is then easier for me to track and there is a comment thread per bug so it is easier to see what is going on.

For those of you (like me) that have slow net connections, I thought I'd mention:

Once you have a copy of MultiBit on your machine, to upgrade to the latest version you only need to update the multibit-exe.jar in your MultiBit installation directory. This is only a third the size of the full installer so I have started to upload it into the multibit.org releases directory:

On Windows I wrap the executable jar file into an exe as people are more familiar with those but you can still use the multibit-exe.jar on Windows too.

To run it you can normally just double click it. Or if your operating system is not set up to run jars, just open a command line, 'cd' to the directory and type:

> java -jar multibit-exe.jar

(Or write a shell script/ batch file to do the same).

As this involves knowing a little about what is going on 'under the hood' I will leave it off the regular installation notes on the multibit.org site.

If you are wondering, the other two thirds of the installer is the (headers only) blockchain. If you have already installed MultiBit you've already got this so it's not strictly necessary to have it again. (It is used as a fallback should the user copy of the blockchain get damaged for any reason so the re-download is not wasted).

I just gave .4.19 a try on windowscould see the 'issue' during install the additional shortcuts can be selected or deselected independently form start-menu shortcutsjust play with the checkboxes like in a pc game and you'll find a way how to choose any combo you need (level 1 riddle)

Could there be an issue with string "Your wallet description" ?it's the default wallet description and it shows up not translated (despite translation exists (since September 2012))

The wallet description is set when you create a wallet in the language you have set at the time. It then does not change unless you click on the text and customise it. I expect you have it in English and then have changed your UI language. The wallet description can be any unicode characters you like.

The 'undo last font or language change' button is localised but in the language you are changing from. This is so that if you accidentally change from, say, English, to a language you cannot read, say, Chinese you can still read the label on the button to undo it all.

Similarly (on Linux especially) some fonts don't render the characters at all and you just see little squares everywhere. The 'undo' button keeps the previous font so that you can click it and go back to what you had before.

To use your riddle analogy: you can always read the label on the door you used to come into a room, so that you know that's the one that takes you back to where you were before.

thanks for feedback. you're right (I started the client with english language, this is where my wallet came from) and only afterwards changed itas I maintain one lang I was sure the string was translated and could not figure out why it's still english.will do some more tests just to see if the translations make sense also in context of the appI had to giggle few times when I saw it. at least I know whom to blame for it ))

Maybe you could have "" be the default wallet description stored in the file, and have that swapped for a localized string at render time?

Good idea - except that the user could then never blank the description. I don't want to put in a magic text as I want to add the description into the protobuf so that other bitcoinj libraries can use it.

Edit: they could put in just spaces to blank it but that does not seem very intuitive.

what about prompting user after switching (a) language and (b) at least one wallet has the default descriptionQ: it seems you changed the language version of the client, do you want also to change the description of the wallet (to match selected language)?

//really not an issue, just maybe how to solve it without magic and for all//if confirmed, wallet description changes according to user preferences and is saved there

I think I will have it so that at startup there is NO default wallet created and have a proper create wallet wizard so that they can choose:

+ type of wallet+ wallet description+ password

This means that MultiBit won't have to set the default description at all. It also means (for encrypted wallets) that the wallet is never written to disk unencrypted which has some security advantages.

The encrypted wallet code's natural home is in bitcoinj rather than the MultiBit code base as it will then be useful for everybody. I created a pull request for Mike Hearn to review just before Xmas. I am going through his feedback now (about half way through). Once that is done and Mike is happy with it he can merge it into bitcoinj and release a version of bitcoinj with it in. Then I should be able to pick it up pretty quickly (as I am keeping the MultiBit code in step).

After that I will do a release candidate with it in for people to try out for, say, a week and then release it on the website (assuming people's test feedback is positive).

I cannot say exactly when it will be out but I don't think it will be too long now.