Skip to content

bsv-ruby-sdk 0.24.0

Choose a tag to compare

@sgbett sgbett released this 11 Jun 03:15
· 56 commits to master since this release

Breaking Changes

  • BSV::Transaction::Transaction renamed to BSV::Transaction::Tx (#795). Class only; module BSV::Transaction and peer classes (TransactionInput, TransactionOutput, ChainTracker, Beef, etc.) unchanged. No compat alias — pre-1.0 clean break. Downstream consumers update with s/BSV::Transaction::Transaction/BSV::Transaction::Tx/g.
  • BSV::Wallet::WalletWireTransceiver pubkey results are now 66-char hex (#798), matching the BRC-100 PubKeyHex contract and ProtoWallet's direct-call shape. Affects get_public_key, reveal_counterparty_key_linkage, reveal_specific_key_linkage. Wire bytes remain 33-byte compressed binary; only the deserialised Ruby return shape changed. See ADR-001 for the rationale.
  • BSV::Identity::Client and BSV::Registry::Client raise BSV::Overlay::OverlayError subclasses on overlay broadcast failure (#802) — publicly_reveal_attributes, revoke_certificate_revelation, register_definition, sign_and_broadcast previously returned a result hash and required callers to inspect status themselves.

Added

  • BSV::Wallet::ProtoWallet::KeyDeriver#identity_key_bytes — binary accessor for the identity pubkey, alongside the hex identity_key. Mirrors the planned bsv-wallet KeyDeriver shape.
  • BSV::Overlay::OverlayBroadcastResult#success? and #raise_if_error! — let callers treat broadcast failure as an exception with the appropriate OverlayError subclass.
  • ADR-001 documenting the SDK's binary-internal rule and the public-key hex exception.

Fixed

  • BSV::Network::Util.resolve_tx_hex rejects empty input rather than silently producing an empty rawTx broadcast (#799).
  • BSV::Network::Protocol#default_call converts transport-level exceptions (SocketError, Errno::ECONNREFUSED, Net::OpenTimeout, OpenSSL::SSL::SSLError, etc.) into structured ProtocolResponse with http_success: false and descriptive error_message (#807).
  • BSV::Auth::AuthPayload.serialize_request raises ArgumentError for request_nonce that isn't exactly 32 bytes (#800).
  • BSV::MCP::Tools::BroadcastP2pkh rescues StandardError rather than just ArgumentError (#801).
  • BSV::Wallet::ProtoWallet#create_signature / #verify_signature and matching wire serialisers validate that hash_to_directly_sign / hash_to_directly_verify are exactly 32 bytes (#805).
  • BSV::Attest.verify asserts that the provider's fetch_transaction returns a Tx-like object before iterating (#803).

Changed

  • Bitcoin Core script-vectors spec now enforces a bidirectional regression gate: previously-failing vectors that now pass surface as failures so known_failures.json stays honest. Cleaned out 101 stale entries (#806).