Skip to content

Commit

Permalink
Improve not enough cardinal UTXOs error message (ordinals#675)
Browse files Browse the repository at this point in the history
  • Loading branch information
casey authored Oct 19, 2022
1 parent d5750c9 commit 6f431ff
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions src/subcommand/wallet/transaction_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,17 @@ use {
#[derive(Debug, PartialEq)]
pub(crate) enum Error {
NotInWallet(Ordinal),
InsufficientPadding,
NotEnoughCardinalUtxos,
}

impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Error::NotInWallet(ordinal) => write!(f, "Ordinal {ordinal} not in wallet"),
Error::InsufficientPadding => write!(f, "Wallet does not contain enough padding UTXOs"),
Error::NotEnoughCardinalUtxos => write!(
f,
"Wallet does not contain enough cardinal UTXOs. Please add additional funds to wallet."
),
}
}
}
Expand Down Expand Up @@ -155,7 +158,7 @@ impl TransactionBuilder {
if self.outputs[0].0 != self.recipient {
let dust_limit = self.recipient.script_pubkey().dust_value();
if self.outputs[0].1 < dust_limit {
let (utxo, size) = self.select_padding_utxo(dust_limit - self.outputs[0].1)?;
let (utxo, size) = self.select_cardinal_utxo(dust_limit - self.outputs[0].1)?;
self.inputs.insert(0, utxo);
self.outputs[0].1 += size;
}
Expand All @@ -170,7 +173,7 @@ impl TransactionBuilder {

if self.outputs.last().unwrap().1 < dust_limit + estimated_fee {
let (utxo, size) =
self.select_padding_utxo(dust_limit + estimated_fee - self.outputs.last().unwrap().1)?;
self.select_cardinal_utxo(dust_limit + estimated_fee - self.outputs.last().unwrap().1)?;
self.inputs.push(utxo);
self.outputs.last_mut().unwrap().1 += size;
}
Expand Down Expand Up @@ -406,7 +409,7 @@ impl TransactionBuilder {
panic!("Could not find ordinal in inputs");
}

fn select_padding_utxo(&mut self, minimum_amount: Amount) -> Result<(OutPoint, Amount)> {
fn select_cardinal_utxo(&mut self, minimum_amount: Amount) -> Result<(OutPoint, Amount)> {
let mut found = None;

for utxo in &self.utxos {
Expand All @@ -420,7 +423,7 @@ impl TransactionBuilder {
}
}

let (utxo, amount) = found.ok_or(Error::InsufficientPadding)?;
let (utxo, amount) = found.ok_or(Error::NotEnoughCardinalUtxos)?;

self.utxos.remove(&utxo);

Expand Down Expand Up @@ -813,7 +816,7 @@ mod tests {
.unwrap(),
],
),
Err(Error::InsufficientPadding),
Err(Error::NotEnoughCardinalUtxos),
)
}

Expand Down Expand Up @@ -850,7 +853,7 @@ mod tests {
.unwrap(),
],
),
Err(Error::InsufficientPadding),
Err(Error::NotEnoughCardinalUtxos),
)
}

Expand Down

0 comments on commit 6f431ff

Please sign in to comment.