fix: Make get_block_storage_changes public (#214)
* fix: Make get_block_storage_changes public * Make RpcTraceData caller optional * feat: Create function to decode list of addresses
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
use serde_json::Value;
|
||||
use std::fmt::Debug;
|
||||
use substreams::prelude::BigInt;
|
||||
|
||||
@@ -29,6 +30,26 @@ pub fn json_serialize_address_list(addresses: &[Vec<u8>]) -> Vec<u8> {
|
||||
)
|
||||
}
|
||||
|
||||
/// Decodes a JSON-encoded list of 0x-prefixed hex strings into a list of addresses (in byte
|
||||
/// representation). This function is the inverse of `json_serialize_address_list`.
|
||||
///
|
||||
/// ## Panics
|
||||
/// Panics if the input is not valid JSON, not an array, or contains invalid hex strings.
|
||||
pub fn json_deserialize_address_list(json_bytes: &[u8]) -> Vec<Vec<u8>> {
|
||||
let value: Value =
|
||||
serde_json::from_slice(json_bytes).expect("Failed to parse JSON for address list");
|
||||
value
|
||||
.as_array()
|
||||
.expect("Expected a JSON array")
|
||||
.iter()
|
||||
.map(|v| {
|
||||
let s = v.as_str().expect("Expected a string");
|
||||
let s = s.strip_prefix("0x").unwrap_or(s);
|
||||
hex::decode(s).expect("Invalid hex in address list")
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
/// Encodes a list of BigInt values into json.
|
||||
///
|
||||
/// Converts each integer to a 0x prefixed hex string and then serializes
|
||||
|
||||
Reference in New Issue
Block a user