Releases: chaintope/bitcoinrb
v1.7.0 release
This release includes the followings:
New feature
- Add
Bitcoin::Block#create_genesis
method to construct genesis block(433c238). - Add
rawtr()
descriptor(6f72a45). - Add
Bitcoin::SilentPayment::Addr
class to parase/acreate silent payment address.
Bug fix
- Fix an issue where passing an empty string to
Bitcoin::ScriptWitness#parse_from_payload
would cause an exception(6375c41). - Fix a bug in `Bitcoin::MessageSign#verify_messageI where the BIP322 check was always true(0223415).
Full Changelog: v1.6.0...v1.7.0
v1.6.0 release
This release includes the followings:
New feature
A feature to create/parse Output Script Descriptor has been added. Please refer to the wiki for usage instructions.
The Bitcoin::Descriptor
class has existed until now, but breaking changes have been made to the interface to comply with the BIP specifications for each descriptor. If you have been using it in an older version, please check the changes.
Other changes
- P2TR script are now the standard script (#67)
- Testing with the secp256k1 library is now available on non-x86 Linux environment (#70)
- Add 10000 bytes check when creating P2WSH script (85c77ee)
- Add 520 byte check when creating P2SH script (a8f5e4c)
Full Changelog: v1.5.0...v1.6.0
v1.5.0 release
This release includes the followings:
New features
- Add implementation of the cryptographic parts of BIP-324 Version 2 P2P Encrypted Transport Protocol. Both ruby and libsepc256k1 implementation.
Other changes
libsecp256k1.dylib
for macOS used in unit tests has been removed. you want to test using libsecp256k1 in an environment other than Linux, please set the path of the libsecp256k1 library to the environment variableTEST_LIBSECP256K1_PATH
.- Now compatible with libsecp256k1 v0.4.0.
- Refactor test case to use shared_example.
- Update bip-schnorr gem from 0.5.0 to 0.7.0.
- Update ecdsa_ext gem from 0.5.0 to 0.5.1. Accordingly, the monkey patch for
ECDSA::Point#to_hex
has been removed.
Bug fix
- Fix a bug where valid signatures would fail to be verified in
Bitcoin::MessageSign#verify_message
. This bug only affects you if you use the Ruby implementation of this library instead of libsecp256k1.
Full Changelog: v1.4.0...v1.5.0
v1.4.0 release
This release includes the following changes:
New Feature
- Add
Bitcoin::Script#p2pk?
method to check whether script is P2PK or not.
Bug Fix
- Fixed a bug where a Key object with a compressed public key was returned even if
TYPES[:uncompressed]
was specified forkey_type
in theBitcoin::Key#generate
method. - Fixed a bug where an error occurred in the
Bitcoin::Script#multisig?
method when the number of signatures was an invalid value.
Removed feature
We have deprecated support for the BIP-70 Payment Protocol, as it has also been removed from Bitcoin Core. Along with this, the dependency on activesupport
is removed.
Full Changelog: v1.3.0...v1.4.0
v1.3.0 release
This release includes the following changes:
- Add
Bitcoin::PSBT::Tx#to_h
method to output each PSBT data in Hash format. - Add
decodepsbt
option inbitcoinrb-cli
to decode Base64-format PSBT into JSON format. - Return address of
Bitcoin::Script#to_h
changed to return a single address. - Add BIP-322 message signing.
- Elliptic curve operations changed to be performed in Jacobian coordinates using ecdsa_ext gem and bip-schnorr gem v 0.5.0.
- Add private key length check in
Bitcoin::Key#new
.
An incorrect public key was derived if a private key was specified with dropped digits that were not exactly 32 bytes and libsecp256k1 was used. This check ensures that an exception is thrown in such cases. The following code, which could also cause such cases, has been corrected:Bitcion::ExtPubkey#derive
Bitcion::Taproot#tweak_private_key
Full Changelog: v1.2.1...v1.3.0
v1.2.0 release
This release contains following changes:
- Add support for
Taproot Fields for PSBT
(BIP-371) - Add
Bitcoin::Script#to_p2tr
which creates P2TR script pubkey using xonly public key - Add
Bitcoin::Key#to_addr
which returns address correspond to key_type value and #to_p2tr which generates P2TR address - Some refactorings
See below for a complete list of changes:
Full Changelog: v1.1.1...v1.2.0
v1.1.1 release
This release fixes the following issues that occur in Ruby 3.1
psych 4.0.0 is now bundled with Ruby 3.1. Psych.load
has been incompatible since psych 4.0.0. Accordingly, YAML.load
has also become incompatible.
In bitcoinrb, YAML.load
is used to load network settings in Bitcoin::ChainParams
. This results in an error in Bitcoin::ChainParams
when using bitcoinrb with Ruby 3.1.
This release resolves the error by using YAML.unsafe_load
instead of YAML.load
in Ruby 3.1+.
Full Changelog: v1.1.0...v1.1.1
v1.1.0 release
The following change are included in this release:
- Compliant with the BIP-174 specification for PSBT:
We have been providing PSBT feature for some time now, but several keys have since been added to BIP-174. This release supports the following keys that have been added:PSBT_GLOBAL_PROPRIETARY
PSBT_IN_PROPRIETARY
PSBT_OUT_PROPRIETARY
PSBT_IN_RIPEMD160
PSBT_IN_SHA256
PSBT_IN_HASH160
PSBT_IN_HASH256
- Replace extension of
Object#build_json
andto_h
by open class with refinement(e4d4968).
Full Changelog: v1.0.0...v1.1.0
v1.0.0 release
The following change are included in this release:
Taproot-related flags are now standard
The following flags when processing scripts are now standard flags:
- SCRIPT_VERIFY_TAPROOT
- SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_TAPROOT_VERSION
- SCRIPT_VERIFY_DISCOURAGE_OP_SUCCESS
- SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_PUBKEYTYPE
In previous versions, these flags had to be explicitly set when evaluating Taproot-related scripts.
v0.9.0 release
The following fixes and improvements are included in this release:
Bitcoin::PSBT
supports PSBT data read from file and write to file.Bitcoin::Taproot::SimpleBuilder
change following:- The interface that receives script and leaf version has been changed to an interface that receives
Bitcoin::Taproot::LeafNode
. Bitcoin::Taproot
provides some utility methods to help spending P2TR.
- The interface that receives script and leaf version has been changed to an interface that receives
For more detail about how to build and spend P2TR, see the Wiki page.