Thanks for the update, Andreas On Sat, Apr 21, 2018 at 9:52 AM Andreas Schildbach <[email protected]> wrote:
> I will be working on signing/spending next. > > To-dos: > - test case for manual wallet migration > - nice to have: automatic wallet migration via the already existing > wallet maintenance facility > - segwit watching wallets (zpub) > - nice to have: segwit spending wallets, married wallets, etc. > > > On 04/18/2018 07:49 PM, Vadym Ustymenko wrote: > > Hi Andreas > > > > Has there been any progress on implementing ability to spend coins from > > Segwit addresses? Also, could you share any other outstanding work to be > > done before full segwit support? > > > > Thanks! > > > > On Friday, March 9, 2018 at 2:31:00 AM UTC-8, Andreas Schildbach wrote: > > > > I'm happy to announce that current master now has full support for > > sending to native Segwit addresses (BIP173). > > > > For app developers who depend on bitcoinj, not much should change. > > However, there are some API differences: > > > > The Address class now has two subclasses: SegwitAddress and > > LegacyAddress. Most of the bitcoinj API continues to use the Address > > class so it is already prepared for further coming segwit changes. > > > > If you need to parse addresses (e.g. from user input), you need to > > change the previous Address.fromBase58() to > > > > - Address.fromString() if you want your app to understand all > > address types. > > - LegacyAddress.fromBase58() if for some reason you want your app to > > stay limited to legacy addresses. > > - SegwitAddress.fromBech32() if your app should only support native > > segwit addresses. > > > > If you're still using the new Address() constructor you need to > migrate > > to any of the available static constructors, including the above. All > > address constructors are now either deprecated or have been made > > private. > > > > If you are using address.toBase58() that method only exists for > > addresses of type LegacyAddress. You should consider using > > toString() in > > future, which supports Bech32 just as it has supported Base58. > > > > Very similar: use address.getHash() rather than getHash160(). > > > > AddressFormatException now has several new subclasses to make the > kind > > of error more clear: > > > > - AddressFormatException.InvalidCharacter (the invalid char and its > > position in the string is available as fields) > > - AddressFormatException.InvalidDataLength > > - AddressFormatException.InvalidChecksum > > - AddressFormatException.InvalidPrefix (prefix means either version > > header for Base58 or human-readable part for Bech32) > > - and the already existing AddressFormatException.WrongNetwork if you > > expect a certain network but the prefix indicates another one > > > > Transaction.toString() and Wallet.toString() now also print the > > types of > > output scripts and 'to address' for each transaction output. > > > > Let me know how converting your app for Segwit addresses worked for > > you. > > Feedback welcome! > > > > > > Some words about the future: > > > > I already experimented with *receiving* coins to Segwit addresses. > It's > > already working, no further changes (e.g. to bloom filters) > necessary! > > However, be warned: you are not able to spend such coins so they > > will be > > stuck in your wallet. At least on master, there is no support for the > > new transaction format (incl. witnesses) and signing. I'll try to > > extract the necessary changes from the segwit branch, but if > > somebody is > > quicker please beat me at it! > > > > P2SH-P2WPKH: I'm not sure if we should invest much time into this. > You > > can of course send to P2SH since ages (v0.11), so sending to > > P2SH-P2WPKH > > already works in all relevant released versions of bitcoinj. When it > > comes to receiving, I'm playing with the thought of skipping > > P2SH-P2WPKH > > and directly go for native Segwit. Electrum has taken this approach > > too. > > > > -- > > You received this message because you are subscribed to the Google > > Groups "bitcoinj" group. > > To unsubscribe from this group and stop receiving emails from it, send > > an email to [email protected] > > <mailto:[email protected]>. > > For more options, visit https://groups.google.com/d/optout. > > > -- > You received this message because you are subscribed to the Google Groups > "bitcoinj" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "bitcoinj" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
