rust-ethereum / ethabi

Encode and decode smart contract invocations
Apache License 2.0
516 stars 186 forks source link

Replace `pub type Int = ethereum_types::U256` with an `I256` #294

Open Autoparallel opened 1 year ago

Autoparallel commented 1 year ago

https://github.com/rust-ethereum/ethabi/blob/a148a4ae0625208946477522bac69eee51602208/ethabi/src/lib.rs#L94

Can this be replaced with something like an ethereum_types::I256?

It seems like that is valid. In ethers-rs there is a I256 type that this would be handy to interface with directly. Upon parsing some events in revm, the fact that Int is really a U256 under the hood is not optimal.

cliff0412 commented 1 year ago

you can use I256 and convert to bytes; then use U256::from(bytes). the raw slot is 256 bits, which can be represented by U256 actually; just ensure that the raw bytes are correct

Akagi201 commented 1 year ago

I found the solution: Token::Int(I256::from_dec_str(&a_string_type).unwrap().into_raw())