Skip to content

Commit d25da84

Browse files
committed
use little-endian representaion
1 parent 6723646 commit d25da84

File tree

1 file changed

+23
-50
lines changed
  • crates/starknet-types-core/src/felt

1 file changed

+23
-50
lines changed

crates/starknet-types-core/src/felt/mod.rs

+23-50
Original file line numberDiff line numberDiff line change
@@ -922,7 +922,7 @@ mod serde_impl {
922922
serializer.serialize_str(&format!("{:#x}", self))
923923
} else {
924924
let mut seq = serializer.serialize_seq(Some(32))?;
925-
for b in self.to_bytes_be() {
925+
for b in self.to_bytes_le() {
926926
seq.serialize_element(&b)?;
927927
}
928928
seq.end()
@@ -970,19 +970,21 @@ mod serde_impl {
970970
A: de::SeqAccess<'de>,
971971
{
972972
let mut bytes = [0u8; 32];
973-
for (i, byte) in bytes.iter_mut().enumerate() {
974-
*byte = seq
975-
.next_element()?
976-
.ok_or_else(|| de::Error::invalid_length(i, &"32 bytes"))?;
973+
for byte in bytes.iter_mut() {
974+
if let Some(b) = seq.next_element()? {
975+
*byte = b;
976+
} else {
977+
break;
978+
}
977979
}
978980
if seq.next_element::<u8>()?.is_some() {
979981
let mut count = 33;
980982
while seq.next_element::<u8>()?.is_some() {
981983
count += 1;
982984
}
983-
return Err(de::Error::invalid_length(count, &"32 bytes"));
985+
return Err(de::Error::invalid_length(count, &"32 bytes max"));
984986
}
985-
Ok(Felt::from_bytes_be(&bytes))
987+
Ok(Felt::from_bytes_le(&bytes))
986988
}
987989
}
988990
}
@@ -1701,6 +1703,7 @@ mod test {
17011703
&Felt::TWO.compact(),
17021704
&[
17031705
Token::Seq { len: Some(32) },
1706+
Token::U8(2),
17041707
Token::U8(0),
17051708
Token::U8(0),
17061709
Token::U8(0),
@@ -1732,14 +1735,14 @@ mod test {
17321735
Token::U8(0),
17331736
Token::U8(0),
17341737
Token::U8(0),
1735-
Token::U8(2),
17361738
Token::SeqEnd,
17371739
],
17381740
);
17391741
assert_de_tokens(
17401742
&Felt::THREE.compact(),
17411743
&[
17421744
Token::Seq { len: Some(32) },
1745+
Token::U8(3),
17431746
Token::U8(0),
17441747
Token::U8(0),
17451748
Token::U8(0),
@@ -1771,22 +1774,21 @@ mod test {
17711774
Token::U8(0),
17721775
Token::U8(0),
17731776
Token::U8(0),
1774-
Token::U8(3),
17751777
Token::SeqEnd,
17761778
],
17771779
);
17781780
assert_de_tokens(
1779-
&Felt::MAX.compact(),
1781+
&Felt::ONE.compact(),
17801782
&[
17811783
Token::Seq { len: Some(32) },
1782-
Token::U8(8),
1784+
Token::U8(1),
1785+
Token::U8(0),
17831786
Token::U8(0),
17841787
Token::U8(0),
17851788
Token::U8(0),
17861789
Token::U8(0),
17871790
Token::U8(0),
17881791
Token::U8(0),
1789-
Token::U8(17),
17901792
Token::U8(0),
17911793
Token::U8(0),
17921794
Token::U8(0),
@@ -1814,43 +1816,14 @@ mod test {
18141816
Token::SeqEnd,
18151817
],
18161818
);
1817-
assert_de_tokens_error::<Compact<Felt>>(
1819+
assert_de_tokens(
1820+
&Felt::ONE.compact(),
18181821
&[
1819-
Token::Seq { len: Some(31) },
1820-
Token::U8(0),
1821-
Token::U8(0),
1822-
Token::U8(0),
1823-
Token::U8(0),
1824-
Token::U8(0),
1825-
Token::U8(0),
1826-
Token::U8(0),
1827-
Token::U8(0),
1828-
Token::U8(0),
1829-
Token::U8(0),
1830-
Token::U8(0),
1831-
Token::U8(0),
1832-
Token::U8(0),
1833-
Token::U8(0),
1834-
Token::U8(0),
1835-
Token::U8(0),
1836-
Token::U8(0),
1837-
Token::U8(0),
1838-
Token::U8(0),
1839-
Token::U8(0),
1840-
Token::U8(0),
1841-
Token::U8(0),
1842-
Token::U8(0),
1843-
Token::U8(0),
1844-
Token::U8(0),
1845-
Token::U8(0),
1846-
Token::U8(0),
1847-
Token::U8(0),
1848-
Token::U8(0),
1849-
Token::U8(0),
1822+
Token::Seq { len: Some(2) },
1823+
Token::U8(1),
18501824
Token::U8(0),
18511825
Token::SeqEnd,
18521826
],
1853-
"invalid length 31, expected 32 bytes",
18541827
);
18551828
assert_de_tokens_error::<Compact<Felt>>(
18561829
&[
@@ -1890,7 +1863,7 @@ mod test {
18901863
Token::U8(0),
18911864
Token::SeqEnd,
18921865
],
1893-
"invalid length 33, expected 32 bytes",
1866+
"invalid length 33, expected 32 bytes max",
18941867
);
18951868
}
18961869

@@ -1950,6 +1923,7 @@ mod test {
19501923
&Felt::TWO.compact(),
19511924
&[
19521925
Token::Seq { len: Some(32) },
1926+
Token::U8(2),
19531927
Token::U8(0),
19541928
Token::U8(0),
19551929
Token::U8(0),
@@ -1981,14 +1955,14 @@ mod test {
19811955
Token::U8(0),
19821956
Token::U8(0),
19831957
Token::U8(0),
1984-
Token::U8(2),
19851958
Token::SeqEnd,
19861959
],
19871960
);
19881961
assert_ser_tokens(
19891962
&Felt::THREE.compact(),
19901963
&[
19911964
Token::Seq { len: Some(32) },
1965+
Token::U8(3),
19921966
Token::U8(0),
19931967
Token::U8(0),
19941968
Token::U8(0),
@@ -2020,22 +1994,19 @@ mod test {
20201994
Token::U8(0),
20211995
Token::U8(0),
20221996
Token::U8(0),
2023-
Token::U8(3),
20241997
Token::SeqEnd,
20251998
],
20261999
);
20272000
assert_ser_tokens(
20282001
&Felt::MAX.compact(),
20292002
&[
20302003
Token::Seq { len: Some(32) },
2031-
Token::U8(8),
20322004
Token::U8(0),
20332005
Token::U8(0),
20342006
Token::U8(0),
20352007
Token::U8(0),
20362008
Token::U8(0),
20372009
Token::U8(0),
2038-
Token::U8(17),
20392010
Token::U8(0),
20402011
Token::U8(0),
20412012
Token::U8(0),
@@ -2054,12 +2025,14 @@ mod test {
20542025
Token::U8(0),
20552026
Token::U8(0),
20562027
Token::U8(0),
2028+
Token::U8(17),
20572029
Token::U8(0),
20582030
Token::U8(0),
20592031
Token::U8(0),
20602032
Token::U8(0),
20612033
Token::U8(0),
20622034
Token::U8(0),
2035+
Token::U8(8),
20632036
Token::SeqEnd,
20642037
],
20652038
);

0 commit comments

Comments
 (0)