-
Notifications
You must be signed in to change notification settings - Fork 2
/
Changes
232 lines (191 loc) · 9.6 KB
/
Changes
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
Revision history for Perl extension Bitcoin::Crypto.
{{$NEXT}}
3.001 Tue Sep 24, 2024
[Changes and fixes]
- fixed building ecc context on some older perls on Windows
3.000 Fri Sep 20, 2024
[Improvements]
- the module will now reject unnormalized (high S) signatures while verifying
- module now internally uses libsecp256k1
- all ECDSA operations are now faster and more secure
- no longer needs Crypt::Perl to produce deterministic signatures
- requires installation of libsecp256k1 (will try to install with Alien)
2.007 Sun Aug 25, 2024
[Improvements]
- add predefined 'pepecoin' and 'pepecoin_testnet' networks (thanks @chromatic)
2.006 Sat Jul 27, 2024
[Added interface]
- Bitcoin::Crypto::BIP85 module (deterministic entropy)
- Bitcoin::Crypto::DerivationPath::get_path_hardened
- Bitcoin::Crypto::DerivationPath::as_string
[Improvements]
- deterministic derivation of entropy as defined in BIP85 is now implemented in Bitcoin::Crypto::BIP85
- Bitcoin::Crypto::DerivationPath is now automatically stringified back to "m" notation
- Bitcoin::Crypto::Types is now documented
- Bitcoin::Crypto::Manual now has some additional examples
- test suite has been improved and now uses Test2
2.005 Wed Jul 24 2024
[Added interface]
- Bitcoin::Crypto::PSBT namespace (support for PSBT)
- Bitcoin::Crypto::Util::from_format function (the reverse of existing to_format)
- Bitcoin::Crypto::Util::pack_compactsize function
- Bitcoin::Crypto::Util::unpack_compactsize function
- Bitcoin::Crypto::DerivationPath class (internal representation of path)
- Bitcoin::Crypto::BIP44::get_derivation_path method (getting internal representation of BIP44 path)
- Bitcoin::Crypto::Network::single_network class method (single-network mode)
- Bitcoin::Crypto::Network::set_single method
- Bitcoin::Crypto::Network::unregister method
[Improvements]
- PSBT format from BIP174 can now be serialized, deserialized and validated using Bitcoin::Crypto::PSBT
- transactions can now be created without registering UTXOs beforehand (with limited functionality)
- format descriptions now also handle base64
- extended keys can now be derived by directly passing Bitcoin::Crypto::DerivationPath
- exception is no longer raised if the default network is among multiple possible networks after deserialization of WIFs and extended keys
- module can now be configured to work in single-network mode, disallowing creation of objects with different networks
[Changes and deprecations]
- codes in Bitcoin::Crypto::Script::Opcode are now integers instead of bytestrings of length 1
- Bitcoin::Crypto::Util::get_path_info now returns instances of Bitcoin::Crypto::DerivationPath (internal structure remains unchanged)
- Bitcoin::Crypto::Key::Public::key_hash is now deprecated, added new method get_hash (consistent naming with other modules)
2.004 Tue Apr 23 2024
[Improvements]
- documentation fixes and improvements
[Breaking changes]
- removed deprecated Bitcoin::Crypto::Segwit package
2.003 Thu Oct 26 2023
[Improvements]
- fixed undefined value warnings when dumping input without an address
- documentation improvements
2.002 Sun Oct 22 2023
[New features]
- added Bitcoin::Crypto::Util::get_address_type (address validation and recognition)
- added autodetection of standard scripts from address with [address => $string]
[Improvements]
- added generic parent exception classes for Bech32, Base58 and Address exceptions
- documentation and test improvements
[Changes and fixes]
- btc_extprv->from_mnemonic with $lang argument will now get rid of extra whitespace from the mnemonic
- fix not checking length of legacy address type when creating standard script
2.001 Tue Oct 17 2023
[New features]
- added P2TR scripts, which can now be created and added as outputs to transactions
[Improvements]
- minor changes to tests and non-essential traits of the code
2.000 Sun Oct 15 2023
[New features]
- added transaction system
- added script execution system
- added more examples
- added manual
- many minor additions all across the board
[Improvements]
- all functions and methods now check their input arguments
- test suite has been refactored
- better handling of bytestrings with format descriptions (see Manual)
- better exception handling and reporting
[Changes and deprecations]
- various format-specific methods like from_hex, to_bytes are now deprecated in all packages
- simple serialization methods are now called from_serialized and to_serialized in all packages
- methods generate_mnemonic and mnemonic_from_entropy have been moved to Bitcoin::Crypto::Util
- deprecate Bitcoin::Crypto::Segwit (use Bitcoin::Crypto::Util::validate_segwit)
- deprecate Bitcoin::Crypto::Script->get_script (use to_serialized)
- deprecate Bitcoin::Crypto::Script->get_script_hash (use get_hash)
- deprecate Bitcoin::Crypto::Key::Private->new (use from_serialized)
- deprecate Bitcoin::Crypto::Key::Public->new (use from_serialized)
[Breaking changes]
- removed second argument from sign_message and verify_message. Now always uses hash256 to digest
1.008 Sat Jan 7 2023
- add clear_purpose method, which disables purpose security checks on a key
- documentation fixes
1.007 Sat May 14 2022
- extended keys derived using BIP44 scheme now use specific serialization according to BIP49 and BIP84
- basic keys derived using BIP44 scheme now prevent incorrect type of address from being generated
- Segregated Witness compatibility addresses can no longer be generated when there's no segwit_hrp config in network
1.006 Fri May 13 2022
- add predefined 'dogecoin' and 'dogecoin_testnet' networks (thanks @chromatic)
- add 'get_account' option to BIP44 to get derivation path only up the account part
- BIP44 'index' is no longer required - uses 0 by default
- slightly improved documentation
- switch to Dist::Zilla
1.005 Sat Nov 6 2021
- update CryptX dependency to fix compatibility with the latest Math::BigInt
1.004 Sat Oct 30 2021
- BIP44 implementation now also supports BIP49 and BIP84 via its 'purpose' parameter
1.003 Sat Oct 9 2021
- fix return value of set_network method in key instances to match documentation
- update CryptX dependency and check the version of optional GMP dependency to fix testers
1.002 Wed Sep 22 2021
- implement bech32m encoding and use it in segwit v1+ addresses
- fix bech32 encoding by removing mandatory bit translation - old behavior can be achieved by using new translate_ functions
- change encode_bech32 and decode_bech32 input and output format
- add new Bitcoin::Crypto::Bech32 exported functions: translate_5to8 and translate_8to5
- remove Bitcoin::Crypto::Bech32::split_bech32 from exported functions
1.001 Thu Sep 9 2021
- prefer GMP to LTM backend in Math::BigInt
1.000 Sun Sep 5 2021
- end of the beta phase
- imported mnemonics must now be proper unicode strings (important for non-english mnemonics)
- module will now use Crypt::Perl when available to produce deterministic signatures
- add Bitcoin::Crypto::Util::mnemonic_to_seed function
- set_compressed method on keys now properly handles undefined values
- code refactors and documentation improvements
0.997 Fri Jun 11 2021
- implement BIP44 derivation paths
- add derive_key_bip44 helper to extended private key class
- remove previously deprecated Exception::KeySign
- refactor testing out of examples
- minor documentation improvements
- fix distribution metadata
- change how internal constants are handled
0.996 Thu Jan 7 2021
- deprecate Exception::KeySign in favor of Exception::Sign
- add Exception::Verify, trapping CryptX exceptions during signature verification
- replace Throwable dependency with custom error class
- add explicit version number to each of module's files
- improve bytestring checking - now throws exceptions for undefs and refs
- improve error trapping - now properly executes eval
- improve documentation
- improved test suite (now covers some edge cases)
0.995 Wed Sep 16 2020
- downgrade and fix dependencies
- fix minimum perl version
- improve documentation
- explicitly document beta version
0.994 Sun Sep 06 2020
- remove Math::EllipticCurve::Prime dependency - replaced with custom function
- remove Math::BigInt::GMP dependency - replaced with LTM
- replace most of Base58 module internals with CryptX, leave the module for Base58Check
- remove base58_preserve functions - standard Base58 encoding decoding now preserves null bytes
- replace type checks with Type::Tiny
- add mnemonic_from_entropy method to Bitcoin::Crypto::Key::ExtPrivate
- verify bytestrings on method inputs (exception is thrown)
- remove trash methods from classes (namespace::clean)
- performance improvements
- update dependencies
- improve documentation
- tidy up source files with perltidy
0.993 Thu Jan 30 2020
- replace some dependencies with CryptX functions
- add shortcut functions in Bitcoin::Crypto package (autoloading of important classes)
- more tests and docs
- repo cleanup
0.992 Sun Jan 12 2020
- change Bitcoin::Crypto::Network register method to accept a plain hash (instead of a hashref)
- run examples during tests
0.991 Wed Jan 08 2020
- rewrite Bitcoin::Crypto::Network to Moo (changed interface)
- add examples directory and bip44 implementation example
- 32 bit compatibility attempt
- add the missing test to distribution
0.99 Sun Jan 05 2020
- almost complete rewrite of the module
- added extended keys
- added segwit compatibility
- added script execution
- many small improvements
- beta relase - yet to be tested in a realistic environment
0.02 Fri Nov 23 2018
- enable package on ealier Perl versions
- remove pack_hex from Bitcoin::Crypto::Util
- add pad_hex to Bitoin::Crypto::Helpers
0.01 Mon Nov 15 2018
- first version