diff --git a/mm2src/coins/utxo/utxo_common.rs b/mm2src/coins/utxo/utxo_common.rs index 70c8522b58..5c3fba317a 100644 --- a/mm2src/coins/utxo/utxo_common.rs +++ b/mm2src/coins/utxo/utxo_common.rs @@ -3335,7 +3335,6 @@ where match coin.tx_details_by_hash(&txid.0, &mut input_transactions).await { Ok(mut tx_details) => { mm_counter!(ctx.metrics, "tx.history.response.count", 1, "coin" => coin.as_ref().conf.ticker.clone(), "method" => "tx_detail_by_hash"); - if tx_details.block_height == 0 && height > 0 { tx_details.block_height = height; } @@ -3628,6 +3627,7 @@ pub async fn tx_details_by_hash( let fee = verbose_tx.vin.iter().fold(0., |cur, input| { let fee = match input { TransactionInputEnum::Lelantus(lelantus) => lelantus.n_fees, + TransactionInputEnum::Spark(spark) => spark.n_fees, _ => 0., }; cur + fee diff --git a/mm2src/coins/utxo/utxo_common/utxo_tx_history_v2_common.rs b/mm2src/coins/utxo/utxo_common/utxo_tx_history_v2_common.rs index 32577de810..a3eec618b6 100644 --- a/mm2src/coins/utxo/utxo_common/utxo_tx_history_v2_common.rs +++ b/mm2src/coins/utxo/utxo_common/utxo_tx_history_v2_common.rs @@ -199,6 +199,7 @@ where let fee = verbose_tx.vin.iter().fold(0., |cur, input| { let fee = match input { TransactionInputEnum::Lelantus(lelantus) => lelantus.n_fees, + TransactionInputEnum::Spark(spark) => spark.n_fees, _ => 0., }; cur + fee diff --git a/mm2src/mm2_bitcoin/rpc/src/v1/types/script.rs b/mm2src/mm2_bitcoin/rpc/src/v1/types/script.rs index 0be24b7214..851744d667 100644 --- a/mm2src/mm2_bitcoin/rpc/src/v1/types/script.rs +++ b/mm2src/mm2_bitcoin/rpc/src/v1/types/script.rs @@ -19,6 +19,7 @@ pub enum ScriptType { Call, Create, LelantusMint, + SparkMint, ColdStaking, // Komodo smart chains specific CryptoCondition, @@ -64,6 +65,7 @@ impl Serialize for ScriptType { ScriptType::Call => "call".serialize(serializer), ScriptType::Create => "create".serialize(serializer), ScriptType::LelantusMint => "lelantusmint".serialize(serializer), + ScriptType::SparkMint => "sparksmint".serialize(serializer), ScriptType::ColdStaking => "cold_staking".serialize(serializer), ScriptType::CryptoCondition => "cryptocondition".serialize(serializer), } @@ -102,6 +104,7 @@ impl<'a> Deserialize<'a> for ScriptType { "call" => Ok(ScriptType::Call), "create" => Ok(ScriptType::Create), "lelantusmint" => Ok(ScriptType::LelantusMint), + "sparksmint" => Ok(ScriptType::SparkMint), "cold_staking" => Ok(ScriptType::ColdStaking), "cryptocondition" => Ok(ScriptType::CryptoCondition), _ => Err(E::invalid_value(Unexpected::Str(value), &self)), diff --git a/mm2src/mm2_bitcoin/rpc/src/v1/types/transaction.rs b/mm2src/mm2_bitcoin/rpc/src/v1/types/transaction.rs index 29f04ef99c..958042e375 100644 --- a/mm2src/mm2_bitcoin/rpc/src/v1/types/transaction.rs +++ b/mm2src/mm2_bitcoin/rpc/src/v1/types/transaction.rs @@ -75,6 +75,8 @@ pub enum TransactionInputEnum { Sigma(SigmaInput), /// FIRO specific Lelantus(LelantusInput), + /// FIRO specific + Spark(SparkInput), } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] @@ -99,6 +101,16 @@ pub struct LelantusInput { sequence: u32, } +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +pub struct SparkInput { + #[serde(rename = "scriptSig")] + pub script_sig: TransactionInputScript, + #[serde(rename = "nFees")] + pub n_fees: f64, + lTags: Vec, + sequence: u32, +} + impl TransactionInputEnum { pub fn is_coinbase(&self) -> bool { matches!(self, TransactionInputEnum::Coinbase(_)) } }