Skip to content

Releases: rustaceanrob/kyoto

v0.7.0

07 Jan 19:34
9049c2e
Compare
Choose a tag to compare

Added

  • Request a block using the Client
  • Add broadcast_random convenience method on Client
  • Request a Range of block headers from Client

Changed

  • Separate logs from events into different event channels
    • The Log channel is bounded in size and contains informational, but non-critical information
    • The Event channel is unbounded and contains data that must be handled, like IndexedBlock
  • Switch to corepc-node instead of unmaintained bitcoincore-rpc
  • Load block headers with RangeBounds

Fixes

  • Remove unnecessary unwrap when managing filter headers
  • Clamp connections to a defined range

v0.6.0

04 Dec 23:37
185b787
Compare
Choose a tag to compare

v0.6.0

Added

  • Pass FeeFilter to client
  • Add Signet and Bitcoin checkpoints

Changed

  • Upgrade bip324 to 0.6.0
  • Switch to corepc-node to start bitcoind in CI
  • Use into_payload in bitcoin 0.32.5

Fixes

  • Add check to bits before adjustment
  • Remove explicit serde feature
  • Use BLOB type for peer service flags

v0.5.0

07 Nov 00:29
44223ee
Compare
Choose a tag to compare

Added

  • Client may fetch a Header at a particular height
  • Support for Testnet4 with new example

Changed

  • HeaderStore has additional header_at method
  • Removed unused IndexedTransaction variant on NodeMessage
  • New Progress variant on NodeMessage

Fixes

  • Use inline docs for rustdoc
  • Check the CompactTarget of the block headers received with far stricter requirements with respect to the difficulty adjustment
  • Bump bip324 to 0.5.0 and bitcoin to 0.32.4

v0.4.0

28 Oct 14:42
761666c
Compare
Choose a tag to compare

Added

  • New HeaderCheckpoint constructor from height
  • shutdown, add_scripts, broadcast_transaction methods have blocking APIs
  • Add a TrustedPeer while the node is running
  • Add change the peer timeout while the node is running

Changed

  • Use impl Into whenever possible on NodeBuilder and Client APIs
  • Remove the misleading wait_for_broadcast method on Client

Fixes

  • Remove Option from Whitelist as it is already a Vec
  • Limit the amount of ADDR messages a single peer can send

Full Changelog: v0.3.0...v0.4.0

v0.3.0

01 Oct 22:49
fa86f57
Compare
Choose a tag to compare

Added

  • Type alias for Node in builder with default generics

Changed

  • HeaderStore and PeerStore traits now have an associated error type
  • Node is now generic over H: HeaderStore and P: PeerStore
  • Move NodeError subvariants into core

Full Changelog: v0.2.0...v0.3.0

v0.2.0

23 Sep 17:20
877fadf
Compare
Choose a tag to compare

Added

  • just and justfile for local development
  • Additional SQL tests with tempfile
  • Additional context to database read and write errors
  • Support for a new silent payments feature-flag:
    • Receive block filters directly
    • Request blocks directly
    • Pause the node state before downloading filters

Changed

  • Disconnect peers if no block is found after 30 minutes
  • Find new peers after 3 hour connections
  • Node::run is an immutable method
  • Check block merkle root
  • Download blocks in parallel with filters
  • Single ScriptBuf may be added at a time
  • Client and ClientSender share methods

Fixes

  • Only request headers for inv the node does not have
  • Max v2 handshake buffer size increased
  • Changes to BlockQueue to not spam peers with requests
  • Internal module renames

Full Changelog: v0.1.0...v0.2.0

v0.1.0

26 Aug 18:36
89f3f94
Compare
Choose a tag to compare

What's Changed

  • NodeBuilder offers configuration options to build a compact block filters Node and Client
  • Client is further split into ClientSender and Receiver<NodeMessage>
  • ClientSender may: add scripts, broadcast transactions, rescan block filters, stop the node
  • Node may run and send NodeMessage, Warning while running
  • Connections to peers are encrypted if ServiceFlags::P2P_V2 is signaled
  • Connections are terminated if peers do not respond within a custom Duration
  • Peers are selected at random with a target preference of 50% new and 50% tried
  • Connections are terminated after long duration times to find new reliable peers
  • Blocks are considered "stale" if there has not been a new inv message after 30 minutes. Block headers are requested again to ensure no inv were missed.
  • Transactions are broadcast according to a configurable policy, either to all connections for higher reliability, or to a random peer for better privacy
  • Default implementers of PeerStore and HeaderStore are SqlitePeerDb and SqliteHeaderDb
  • Nodes will no peers will bootstrap with DNS
  • Experimental support for connections routed over Tor

New Contributors

Full Changelog: https://github.com/rustaceanrob/kyoto/commits/v0.1.0