Skip to content

Commit 7667afb

Browse files
committed
invoice: error on conflicting chain assignment in builder
1 parent f6d6bca commit 7667afb

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

invoice/src/builder.rs

+14-3
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,20 @@ impl RgbInvoiceBuilder {
114114
self.set_amount(coins as u64, cents as u64, precision)
115115
}
116116

117-
pub fn set_chain(mut self, chain: impl Into<Chain>) -> Self {
118-
self.0.chain = Some(chain.into());
119-
self
117+
pub fn set_chain(mut self, chain: impl Into<Chain>) -> Result<Self, Self> {
118+
let chain = chain.into();
119+
match (self.0.beneficiary.chain_info(), chain) {
120+
(None, _) => {}
121+
(Some(chain1), chain2) if chain1 == chain2 => {}
122+
(Some(chain1), chain2)
123+
if chain1.is_testnet() &&
124+
chain2.is_testnet() &&
125+
chain1 != Chain::Regtest &&
126+
chain2 != Chain::Regtest => {}
127+
_ => return Err(self),
128+
}
129+
self.0.chain = Some(chain);
130+
Ok(self)
120131
}
121132

122133
pub fn set_expiry_timestamp(mut self, expiry: i64) -> Self {

0 commit comments

Comments
 (0)