bitcoindevkit/bdk_wallet

Add spent trait to improve sent_and_received()

Open

#31 opened on Jan 30, 2025

View on GitHub
 (12 comments) (0 reactions) (1 assignee)Rust (94 forks)auto 404
good first issue

Repository metrics

Stars
 (54 stars)
PR merge metrics
 (PR metrics pending)

Description

Describe the enhancement Add a TxAmountSpent trait to improve how transaction spending amounts are calculated. The trait will add a .spent() method to tuples returned by sent_and_received(), calculating total amount spent including fees.

Use case

// Current: Manual calculation needed
let (sent, received) = wallet.sent_and_received(&tx);
let fee = wallet.calculate_fee(&tx)?;
let total = sent - received + fee; // Error-prone 

// Proposed: Clean trait implementation
let (sent, received) = wallet.sent_and_received(&tx);
let total = (sent, received, fee).spent(); // Clear and consistent

Additional context

  • Non-breaking change that extends existing functionality
  • Makes transaction cost calculations more intuitive
  • Helps prevent calculation errors
  • Small, focused improvement suitable for a first-time contributor

Contributor guide