diff --git a/common/amount.c b/common/amount.c index fa1870700..e17a68044 100644 --- a/common/amount.c +++ b/common/amount.c @@ -18,6 +18,16 @@ bool amount_sat_to_msat(struct amount_msat *msat, return true; } +bool amount_msat_to_sat(struct amount_sat *sat, + struct amount_msat msat) +{ + if (msat.millisatoshis % MSAT_PER_SAT) + return false; + sat->satoshis = msat.millisatoshis / MSAT_PER_SAT; + return true; +} + + /* You can always truncate millisatoshis->satoshis. */ struct amount_sat amount_msat_to_sat_round_down(struct amount_msat msat) { diff --git a/common/amount.h b/common/amount.h index b7277d7ee..b16e92593 100644 --- a/common/amount.h +++ b/common/amount.h @@ -53,6 +53,10 @@ struct amount_sat amount_sat(u64 satoshis); WARN_UNUSED_RESULT bool amount_sat_to_msat(struct amount_msat *msat, struct amount_sat sat); +/* You may not always be able to convert millisatoshis->satoshis without rounding. */ +WARN_UNUSED_RESULT bool amount_msat_to_sat(struct amount_sat *sat, + struct amount_msat msat); + /* You can always truncate millisatoshis->satoshis. */ struct amount_sat amount_msat_to_sat_round_down(struct amount_msat msat);