|
| 1 | +v1.0.0 |
| 2 | +======= |
| 3 | + |
| 4 | +The v1.0.0 version is finally being released, marking the |
| 5 | +libraries departure from the 'in development' v0.0.x series. |
| 6 | +It probably should have happened a long time ago. |
| 7 | + |
| 8 | +It includes a number of BC breaks in addition to the new PHP |
| 9 | +version requirement. |
| 10 | + |
| 11 | +Compatibility Notice |
| 12 | +==================== |
| 13 | + |
| 14 | +## PHP version |
| 15 | + |
| 16 | +v1.0.0 raises the minimum PHP version to 7.0. v0.0.35.x is |
| 17 | +the last series of versions to support PHP5.6 & HHVM. |
| 18 | + |
| 19 | +## ext-secp256k1 |
| 20 | + |
| 21 | +The minimum version of `ext-secp256k1` is now v0.2.x, as the |
| 22 | +parameter order of some functions was changed to be more in |
| 23 | +line with upstream. |
| 24 | + |
| 25 | +About https://github.com/Bit-Wasp/secp256k1-php: |
| 26 | + |
| 27 | +The secp256k1 PHP extension exposes the libsecp256k1 C library |
| 28 | +used by Bitcoin Core for ECC operations. If the extension is |
| 29 | +installed, bitcoin-php will automatically use it as the default |
| 30 | +`EcAdapterInterface` as it massively improves performance. |
| 31 | + |
| 32 | +## ext-bitcoinconsensus |
| 33 | + |
| 34 | +The minimum version of `ext-bitcoinconsensus` is now v3.0.x. |
| 35 | + |
| 36 | +About https://github.com/Bit-Wasp/bitcoinconsensus-php: |
| 37 | + |
| 38 | +The bitcoinconsensus PHP extension exposes the minimal C library |
| 39 | +provided by bitcoin core in signed builds, and when compiling on |
| 40 | +your own machine. It's recommended to install this if you're doing |
| 41 | +anything related to signature verification with the library. |
| 42 | + |
| 43 | +Notable Changes |
| 44 | +=============== |
| 45 | + |
| 46 | +Backwards compatibility breaks: |
| 47 | + |
| 48 | + - #545 - KeyInterface::getAddress is removed, convert via KeyToScriptHelper |
| 49 | + - #587 - Fix DASH HD bytes |
| 50 | + - #581 - extracts script parsing logic for qualifying a spk, rs, ws against |
| 51 | + eachother. |
| 52 | + - #583 - `Network` implementation details have changed. Rewrote how various |
| 53 | + network attributes are stored in the class. |
| 54 | + - [173469f] Require Buffer in XXXSerializer::parse() methods, and extract |
| 55 | + 'fromBuffer' for PrivateKeyFactory, PublicKeyFactory. 'fromHex' methods |
| 56 | + now exclusively accept hex strings. |
| 57 | + - #596 - AddressFactory extract major functions into AddressCreator instance |
| 58 | + and remove old class entirely. |
| 59 | + - #597 - MessageSigner: require NetworkInterface to be passed in order to |
| 60 | + sign and verify. |
| 61 | + - #600 - Make HierarchicalKey class immutable by removing 'toPublic', which |
| 62 | + would convert the object to the public key. 'withoutPrivateKey' returns |
| 63 | + a distinct object which is public. |
| 64 | + - #601 - OutputScriptFactory: remove payToAddress. This code was dangerous |
| 65 | + - #602 - Remove unused function ScriptCreator::pushSerializable |
| 66 | + - #619 - Use M addresses for litecoin prefixes |
| 67 | + - #604 - Remove BIP70 classes, code moved to an outside project (bip70/bip70-php) |
| 68 | + - #662 - Classes for KeyToScript conversions, and introduce one of these (mandatory) |
| 69 | + in HierarchicalKey. |
| 70 | + - #670 - Correct viacoin bech32 prefixes |
| 71 | + - #671 - PrivateKeyFactory, PublicKeyFactory, ElectrumKeyFactory, |
| 72 | + and HierarchicalKeyFactory are now class instances, as they |
| 73 | + should wrap an EcAdapterInterface. Static calls should be replaced |
| 74 | + with instance calls. |
| 75 | + - #694 - Fixes litecoin testnet prefix for P2SH addresses |
| 76 | + - #702 - Remove static bech32 classes in favor of `bitwasp/bech32` |
| 77 | + - #740 - HierarchicalKey: Don't automatically increment the index if |
| 78 | + an invalid key is produced (per the bip 1:2^128 chance of occurring) |
| 79 | + doing this can cause inconsistent derivations for multisig applications, |
| 80 | + make developers deal with it. |
| 81 | + - #743 - Bip39: ensure BIP compatibility by ensuring all mnemonics adhere to |
| 82 | + the BIP's standards. |
| 83 | + - #744 - Remove functions in HierarchicalKeySequences, and add more specific |
| 84 | + ones which perform strict validation. |
| 85 | + HierarchicalKey: removes deriveFromlist |
| 86 | + Rewrites MultisigHD to bring it in line with HierarchicalKey, so it |
| 87 | + also supports zpubs/Ypubs, etc, and generating addresses/script data. |
| 88 | + - #752 - Remove BitcoinCashChecker, and Uri::setAmountBtc now accepts a string |
| 89 | + not a float. |
| 90 | + - #755 - PrivateKeyFactory, remove old methods, add specific methods for |
| 91 | + working with compressed and uncompressed keys. |
| 92 | + - #760 - ProofOfWork bc break, don't throw exception on valid input (but invalid for bits). Rename `check` to `checkPow` in case devs miss it |
| 93 | + |
| 94 | +General features: |
| 95 | + - #593 - Allow custom Checker implementations in Signer by introducing CheckerCreator |
| 96 | + - #671 - Add `ElectrumKey::withoutPrivateKey` |
| 97 | + - #673 - Deal with networks with different SIGNED_MESSAGE_PREFIX lengths, field is varint |
| 98 | + - #684 - Allow dealing with networks where addresses have multi-byte base58 prefixes |
| 99 | + - #523 - Optional support for 'zero' values in multsignature scriptSigs and witnesses |
| 100 | + indicating signer index. (Signer::padUnsignedMultisigs($setting)) |
| 101 | + - #525 - An extremely experimental and not perfect feature: support for complicated |
| 102 | + output script types, with limited support for existing script templates within |
| 103 | + arbitrarily nested IF/NOTIF opcodes. (Signer::allowComplexScripts($setting)) |
| 104 | + - #556 - don't touch branches the signer didn't look at |
| 105 | + |
| 106 | +Testing: |
| 107 | + - #745 - Adopted phpstan for CI builds, will slowly work on this over time |
| 108 | + - #750 - Migrate to newer scrutinizer analysis tool for PHP7+ |
| 109 | + |
| 110 | +Credits |
| 111 | +======= |
| 112 | + |
| 113 | +A special thanks to everyone who contributed directly to the release: |
| 114 | + |
| 115 | + - afk11 |
| 116 | + - DaShak |
| 117 | + - evadogstar |
| 118 | + - hauptmedia |
| 119 | + - Max |
| 120 | + - murich |
| 121 | + - romanornr |
| 122 | + - rubensayshi |
| 123 | + - samnela |
| 124 | + - Vasiliy-Bondarenko |
| 125 | + |
0 commit comments