} Some(_) => return Ok(None), } } } } #[cfg(test)] mod tests { use {super::*, bitcoin::absolute::LockTime}; fn parse(witnesses: &[Witness]) -> Vec<ParsedEnvelope> { ParsedEnvelope::from_transaction(&Transaction { version: 0, lock_time: LockTime::ZERO, input: witnesses .iter() .map(|witness| TxIn { previous_output: OutPoint::null(), script_sig: ScriptBuf::new(), sequence: Sequence::ENABLE_RBF_NO_LOCKTIME, witness: witness.clone(), }) .collect(), output: Vec::new(), }) } #[test] fn empty() { assert_eq!(parse(&[Witness::new()]), Vec::new()) } #[test] fn ignore_key_path_spends() { assert_eq!( parse(&[Witness::from_slice(&[bitcoin::script::Builder::new() .push_opcode(bitcoin::opcodes::OP_FALSE) .push_opcode(bitcoin::opcodes::all::OP_IF) .push_slice(b"ord") .push_opcode(bitcoin::opcodes::all::OP_ENDIF) .into_script() #45,005,536text )), } } fn get_raw_transaction( &self, txid: Txid, verbose: Option<bool>, blockhash: Option<BlockHash>, ) -> Result<Value, jsonrpc_core::Error> { assert_eq!(blockhash, None, "Blockhash param is unsupported"); if verbose.unwrap_or(false) { match self.state().transactions.get(&txid) { Some(_) => Ok( serde_json::to_value(GetRawTransactionResult { in_active_chain: Some(true), hex: Vec::new(), txid: Txid::all_zeros(), hash: Wtxid::all_zeros(), size: 0, vsize: 0, version: 0, locktime: 0, vin: Vec::new(), vout: Vec::new(), blockhash: None, confirmations: Some(1), time: None, blocktime: None, }) .unwrap(), ), None => Err(Self::not_found()), } } else { match self.state().transactions.get(&txid) { Some(tx) => Ok(Value::String(hex::encode(serialize(tx)))), #44,982,621textInscription #31158183#31,158,183svgInscription #12019677#12,019,677webpInscription #8660651#8,660,651pngInscription #8647534#8,647,534pngInscription #8612186#8,612,186pngInscription #8599223#8,599,223png