Skip to content

Commit

Permalink
feat(rpc/v06): adjust return type serialization for `starknet_estimat…
Browse files Browse the repository at this point in the history
…eFee`
  • Loading branch information
t00ts committed Jan 31, 2025
1 parent 1ea51d3 commit bd53fba
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
41 changes: 39 additions & 2 deletions crates/rpc/src/dto/fee.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,18 @@ impl crate::dto::SerializeForVersion for pathfinder_executor::types::FeeEstimate
serializer.serialize_field("l2_gas_price", &U256Hex(self.l2_gas_price))?;
serializer.serialize_field("overall_fee", &U256Hex(self.overall_fee))?;
serializer.serialize_field("unit", &self.unit)?;
} else {
} else if serializer.version >= crate::dto::RpcVersion::V07 {
serializer.serialize_field("gas_price", &U256Hex(self.l1_gas_price))?;
serializer.serialize_field("gas_consumed", &U256Hex(self.l1_gas_consumed))?;
serializer.serialize_field("data_gas_consumed", &U256Hex(self.l1_data_gas_consumed))?;
serializer.serialize_field("data_gas_price", &U256Hex(self.l1_data_gas_price))?;
serializer.serialize_field("overall_fee", &U256Hex(self.overall_fee))?;
serializer.serialize_field("unit", &self.unit)?;
} else {
serializer.serialize_field("gas_price", &U256Hex(self.l1_gas_price))?;
serializer.serialize_field("gas_consumed", &U256Hex(self.l1_gas_consumed))?;
serializer.serialize_field("overall_fee", &U256Hex(self.overall_fee))?;
}

serializer.end()
}
}
Expand All @@ -41,3 +44,37 @@ impl crate::dto::SerializeForVersion for pathfinder_executor::types::PriceUnit {
})
}
}

#[cfg(test)]
mod tests {
use pathfinder_executor::types::{FeeEstimate, PriceUnit};
use primitive_types::U256;

use super::*;
use crate::dto::SerializeForVersion;

#[test]
fn fee_estimate_v06_serialization() {
let fee = FeeEstimate {
l1_gas_consumed: U256::from(100),
l1_gas_price: U256::from(50),
l1_data_gas_consumed: U256::from(200),
l1_data_gas_price: U256::from(25),
l2_gas_consumed: U256::from(300),
l2_gas_price: U256::from(10),
overall_fee: U256::from(1000),
unit: PriceUnit::Wei,
};

let serializer = crate::dto::Serializer::new(crate::dto::RpcVersion::V06);
let result = serde_json::to_value(fee.serialize(serializer).unwrap()).unwrap();

let expected = serde_json::json!({
"gas_consumed": "0x64", // 100
"gas_price": "0x32", // 50
"overall_fee": "0x3e8" // 1000
});

assert_eq!(result, expected);
}
}
1 change: 1 addition & 0 deletions crates/rpc/src/v06.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ pub fn register_routes() -> RpcRouterBuilder {
.register("starknet_getNonce", crate::method::get_nonce)
.register("starknet_getStorageAt", crate::method::get_storage_at)
.register("starknet_call", crate::method::call)
.register("starknet_getEstimateFee", crate::method::estimate_fee)
}

0 comments on commit bd53fba

Please sign in to comment.