chore: use B160, B256 and U256 coming from revm and ruint (#676)

* use B256, B160 and U256 from revm

* fix U256 from_str

* use U256::ZERO

* use temporary commit for revm and interpreter

* more U256::ZERO

* more changes for revm/ruint types

* clippy

* change revm and revm-interpreter repo

* remove H160 wrap

* minor cleanup

* remove unused

* fix MIN_PROTOCOL_BASE_FEE
This commit is contained in:
joshieDo
2023-01-04 17:11:48 +08:00
committed by GitHub
parent 93b6ce597a
commit 6407b5087e
49 changed files with 472 additions and 277 deletions

View File

@ -17,6 +17,7 @@ no_codec = ["codecs-derive/no_codec"]
bytes = "1.2.1"
codecs-derive = { version = "0.1.0", path = "./derive", default-features = false }
ethers-core = { git = "https://github.com/gakonst/ethers-rs", default-features = false }
revm-interpreter = { git = "https://github.com/bluealloy/revm", rev = "3a13c9c8a0cda728941f1b26db0beb1025744ea9", features = ["with-serde"] }
[dev-dependencies]
serde = "1.0"

View File

@ -1,6 +1,7 @@
use bytes::{Buf, Bytes};
pub use codecs_derive::*;
use ethers_core::types::{Bloom, H160, H256, U256};
use ethers_core::types::Bloom;
use revm_interpreter::{B160 as H160, B256 as H256, U256};
/// Trait that implements the `Compact` codec.
///
@ -188,9 +189,8 @@ where
impl Compact for U256 {
fn to_compact(self, buf: &mut impl bytes::BufMut) -> usize {
let mut inner = vec![0; 32];
self.to_big_endian(&mut inner);
let size = 32 - (self.leading_zeros() / 8) as usize;
let inner: [u8; 32] = self.to_be_bytes();
let size = 32 - (self.leading_zeros() / 8);
buf.put_slice(&inner[32 - size..]);
size
}
@ -200,10 +200,10 @@ impl Compact for U256 {
let mut arr = [0; 32];
arr[(32 - len)..].copy_from_slice(&buf[..len]);
buf.advance(len);
return (U256::from_big_endian(&arr), buf)
return (U256::from_be_bytes(arr), buf)
}
(U256::zero(), buf)
(U256::ZERO, buf)
}
}
@ -281,7 +281,9 @@ impl Compact for bool {
#[cfg(test)]
mod tests {
use super::*;
use ethers_core::types::Address;
use revm_interpreter::B160;
pub type Address = B160;
#[test]
fn compact_bytes() {
@ -397,9 +399,9 @@ mod tests {
fn compact_u256() {
let mut buf = vec![];
assert_eq!(U256::zero().to_compact(&mut buf), 0);
assert_eq!(U256::ZERO.to_compact(&mut buf), 0);
assert!(buf.is_empty());
assert_eq!(U256::from_compact(&buf, 0), (U256::zero(), vec![].as_slice()));
assert_eq!(U256::from_compact(&buf, 0), (U256::ZERO, vec![].as_slice()));
assert_eq!(U256::from(2).to_compact(&mut buf), 1);
assert_eq!(buf, vec![2u8]);
@ -443,7 +445,7 @@ mod tests {
fn default() -> Self {
TestStruct {
f_u64: 1u64, // 4 bits | 1 byte
f_u256: 1u64.into(), // 6 bits | 1 byte
f_u256: U256::from(1u64), // 6 bits | 1 byte
f_bool_f: false, // 1 bit | 0 bytes
f_bool_t: true, // 1 bit | 0 bytes
f_option_none: None, // 1 bit | 0 bytes