Fixes a parsing issue of EIP712 chain_id (chain_id = 80001 parsed as chain_id = 0x80001) (#892)

* Parsing U256 from base10_parse::<u64>() instead of directly to U256

This fixes a bug for chain_ids that are > 10, base10_parse::<U256>() was
somehow parsing into hex.

When using the derive macro, chain_id = 10 was parsed as chain_id = 0x10 = 16,
causing an issue for some chains like Polygon.

* chore: fmt

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
This commit is contained in:
Alexis Robert 2022-02-10 19:03:46 +01:00 committed by GitHub
parent 331caf9418
commit b07b302410
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 10 deletions

View File

@ -267,16 +267,17 @@ impl TryFrom<&syn::DeriveInput> for EIP712Domain {
.to_compile_error())
}
domain.chain_id = lit_int
.base10_digits()
.parse()
.map_err(|_| {
Error::new(
meta.path.span(),
"failed to parse chain id",
)
.to_compile_error()
})?;
domain.chain_id = U256::from(
lit_int.base10_parse::<u64>().map_err(
|_| {
Error::new(
meta.path.span(),
"failed to parse chain id",
)
.to_compile_error()
},
)?,
);
}
_ => {
return Err(Error::new(