@@ -478,6 +478,9 @@ pub(crate) const MIN_AFFORDABLE_HTLC_COUNT: usize = 4;
478478/// * `EXPIRE_PREV_CONFIG_TICKS` = convergence_delay / tick_interval
479479pub ( crate ) const EXPIRE_PREV_CONFIG_TICKS : usize = 5 ;
480480
481+ /// Number of blocks needed for an output from a coinbase transaction to be spendable.
482+ const COINBASE_MATURITY : u32 = 100 ;
483+
481484// TODO: We should refactor this to be an Inbound/OutboundChannel until initial setup handshaking
482485// has been completed, and then turn into a Channel to get compiler-time enforcement of things like
483486// calling channel_id() before we're set up or things like get_outbound_funding_signed on an
@@ -4964,6 +4967,14 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
49644967 self . funding_tx_confirmation_height = 0 ;
49654968 }
49664969
4970+ // If funding transaction is coinbase, we need to wait for 100 blocks before
4971+ // it is spendable. However, we can ignore this rule if the channel is 0-conf.
4972+ if self . funding_transaction . as_ref ( ) . map ( |t| t. is_coin_base ( ) ) . unwrap_or ( false ) &&
4973+ funding_tx_confirmations <= COINBASE_MATURITY as i64 &&
4974+ self . minimum_depth . unwrap_or ( 0 ) > 0 {
4975+ return None ;
4976+ }
4977+
49674978 if funding_tx_confirmations < self . minimum_depth . unwrap_or ( 0 ) as i64 {
49684979 return None ;
49694980 }
@@ -5375,6 +5386,14 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
53755386 self . channel_id = funding_txo. to_channel_id ( ) ;
53765387 self . funding_transaction = Some ( funding_transaction) ;
53775388
5389+ // If the funding transaction is a coinbase transaction, we need to set the minimum depth to 100
5390+ // We can skip this if it is a zero-conf channel.
5391+ if funding_transaction. is_coin_base ( ) &&
5392+ self . minimum_depth . unwrap_or ( 0 ) > 0 &&
5393+ self . minimum_depth . unwrap_or ( 0 ) < COINBASE_MATURITY {
5394+ self . minimum_depth = Some ( COINBASE_MATURITY ) ;
5395+ }
5396+
53785397 Ok ( msgs:: FundingCreated {
53795398 temporary_channel_id,
53805399 funding_txid : funding_txo. txid ,
0 commit comments