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:
@@ -179,7 +179,7 @@ message EntryPointParams {
|
|||||||
// RPC tracing strategy with its data
|
// RPC tracing strategy with its data
|
||||||
message RPCTraceData {
|
message RPCTraceData {
|
||||||
// [optional] The caller to be used for the trace. If none is provided a chain default will be used.
|
// [optional] The caller to be used for the trace. If none is provided a chain default will be used.
|
||||||
bytes caller = 1;
|
optional bytes caller = 1;
|
||||||
// The calldata to be used for the trace
|
// The calldata to be used for the trace
|
||||||
bytes calldata = 2;
|
bytes calldata = 2;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
use serde_json::Value;
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use substreams::prelude::BigInt;
|
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.
|
/// Encodes a list of BigInt values into json.
|
||||||
///
|
///
|
||||||
/// Converts each integer to a 0x prefixed hex string and then serializes
|
/// Converts each integer to a 0x prefixed hex string and then serializes
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ use crate::{
|
|||||||
/// ## Warning
|
/// ## Warning
|
||||||
/// ⚠️ This function *only* works if the **extended block model** is available,
|
/// ⚠️ This function *only* works if the **extended block model** is available,
|
||||||
/// more [here](https://streamingfastio.medium.com/new-block-model-to-accelerate-chain-integration-9f65126e5425)
|
/// more [here](https://streamingfastio.medium.com/new-block-model-to-accelerate-chain-integration-9f65126e5425)
|
||||||
fn get_block_storage_changes(block: ð::v2::Block) -> Vec<TransactionStorageChanges> {
|
pub fn get_block_storage_changes(block: ð::v2::Block) -> Vec<TransactionStorageChanges> {
|
||||||
if block.detail_level != Into::<i32>::into(DetailLevel::DetaillevelExtended) {
|
if block.detail_level != Into::<i32>::into(DetailLevel::DetaillevelExtended) {
|
||||||
panic!("Only extended blocks are supported");
|
panic!("Only extended blocks are supported");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -226,8 +226,8 @@ pub mod entry_point_params {
|
|||||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||||
pub struct RpcTraceData {
|
pub struct RpcTraceData {
|
||||||
/// \[optional\] The caller to be used for the trace. If none is provided a chain default will be used.
|
/// \[optional\] The caller to be used for the trace. If none is provided a chain default will be used.
|
||||||
#[prost(bytes="vec", tag="1")]
|
#[prost(bytes="vec", optional, tag="1")]
|
||||||
pub caller: ::prost::alloc::vec::Vec<u8>,
|
pub caller: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
|
||||||
/// The calldata to be used for the trace
|
/// The calldata to be used for the trace
|
||||||
#[prost(bytes="vec", tag="2")]
|
#[prost(bytes="vec", tag="2")]
|
||||||
pub calldata: ::prost::alloc::vec::Vec<u8>,
|
pub calldata: ::prost::alloc::vec::Vec<u8>,
|
||||||
|
|||||||
Reference in New Issue
Block a user