From 69a0db02ea11010d3ca748b173dc0c2179a1c8ef Mon Sep 17 00:00:00 2001 From: Sasa Prsic Date: Thu, 7 Mar 2024 16:16:21 +0100 Subject: [PATCH 1/2] Update key for pallet name. --- src/main.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index be08867..b70bed2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -390,7 +390,7 @@ async fn get_beacon_slot( /// get_eth_head returns Ethereum head with the latest slot/block that is stored and a time. #[inline(always)] async fn get_eth_head(State(state): State>) -> impl IntoResponse { - let pallet = "Succinct"; + let pallet = "Vector"; let head = "Head"; let timestamp = "Timestamps"; @@ -399,7 +399,6 @@ async fn get_eth_head(State(state): State>) -> impl IntoResponse { hex::encode(twox_128(pallet.as_bytes())), hex::encode(twox_128(head.as_bytes())) ); - let head_response: Result = state .avail_client .request("state_getStorage", rpc_params![head_key]) From 7853e495bdf762b22fbb68ec1b3240349cbfc2c6 Mon Sep 17 00:00:00 2001 From: Sasa Prsic Date: Fri, 15 Mar 2024 14:35:20 +0100 Subject: [PATCH 2/2] Make compatible with the latest node. --- .env.example | 0 .github/workflows/release.yml | 0 .github/workflows/rust.yml | 0 .gitignore | 0 Cargo.lock | 29 ++++++++++++++------- Cargo.toml | 3 +-- Dockerfile | 0 LICENSE | 0 README.md | 0 src/main.rs | 47 +++++++++++++++++++++-------------- 10 files changed, 49 insertions(+), 30 deletions(-) mode change 100644 => 100755 .env.example mode change 100644 => 100755 .github/workflows/release.yml mode change 100644 => 100755 .github/workflows/rust.yml mode change 100644 => 100755 .gitignore mode change 100644 => 100755 Cargo.lock mode change 100644 => 100755 Cargo.toml mode change 100644 => 100755 Dockerfile mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 src/main.rs diff --git a/.env.example b/.env.example old mode 100644 new mode 100755 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml old mode 100644 new mode 100755 diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/Cargo.lock b/Cargo.lock old mode 100644 new mode 100755 index c8da6a5..69c6a41 --- a/Cargo.lock +++ b/Cargo.lock @@ -593,12 +593,13 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "avail-core" -version = "0.5.1" -source = "git+https://github.com/availproject/avail-core?branch=main#861f35a79a6c278bfe68b34d1a1d2794f7734f47" +version = "0.6.0" +source = "git+https://github.com/availproject/avail-core?branch=main#4b9888bd46bef404fe9b256c00811fcfcbf6d787" dependencies = [ "binary-merkle-tree", + "bounded-collections", "derive_more", - "ethabi", + "ethabi-decode", "frame-support", "hash256-std-hasher", "hex", @@ -1547,14 +1548,23 @@ dependencies = [ ] [[package]] -name = "ethabi" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +name = "ethabi-decode" +version = "1.0.0" +source = "git+https://github.com/Snowfork/ethabi-decode.git?branch=master#5c01c8a0f2d0e4eccf600507cd573b27555b1d9d" dependencies = [ "ethereum-types", - "hex", - "sha3", + "tiny-keccak", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "tiny-keccak", ] [[package]] @@ -1563,6 +1573,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" dependencies = [ + "ethbloom", "fixed-hash", "primitive-types", "uint", diff --git a/Cargo.toml b/Cargo.toml old mode 100644 new mode 100755 index 8ead94f..1f59b58 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,8 +25,7 @@ tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } sp-io = "32.0.0" sp-core = "30.0.0" chrono = "0.4.34" -avail-core = { version = "0.5", git = "https://github.com/availproject/avail-core", branch = "main" } - +avail-core = { git = "https://github.com/availproject/avail-core", branch = "main" } [target.'cfg(not(target_env = "msvc"))'.dependencies] diff --git a/Dockerfile b/Dockerfile old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/src/main.rs b/src/main.rs old mode 100644 new mode 100755 index b70bed2..b849b88 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ use alloy_primitives::{hex, B256, U256}; -use avail_core::data_proof_v2::Message; +use avail_core::data_proof::AddressedMessage; use axum::{ extract::{Json, Path, Query, State}, http::StatusCode, @@ -49,24 +49,30 @@ struct IndexStruct { index: u32, } -#[derive(Deserialize)] +#[derive(Deserialize, Serialize, Debug)] #[serde(rename_all = "camelCase")] -struct KateQueryDataProofV2Response { +struct KateQueryDataProofResponse { data_proof: DataProof, - message: Option, + message: Option, } -#[derive(Deserialize)] +#[derive(Deserialize, Serialize, Debug)] #[serde(rename_all = "camelCase")] struct DataProof { - data_root: B256, - blob_root: B256, - bridge_root: B256, + roots: Roots, proof: Vec, leaf_index: u32, leaf: B256, } +#[derive(Deserialize, Serialize, Debug)] +#[serde(rename_all = "camelCase")] +struct Roots { + data_root: B256, + blob_root: B256, + bridge_root: B256, +} + #[derive(Deserialize)] #[serde(rename_all = "camelCase")] struct AccountStorageProofResponse { @@ -132,7 +138,7 @@ struct AggregatedResponse { bridge_root: B256, data_root_commitment: B256, block_hash: B256, - message: Option, + message: Option, } #[derive(Serialize)] @@ -178,7 +184,7 @@ async fn get_eth_proof( cloned_state .avail_client .request( - "kate_queryDataProofV2", + "kate_queryDataProof", rpc_params![index_struct.index, &block_hash], ) .await @@ -200,11 +206,11 @@ async fn get_eth_proof( } }); let (data_proof, succinct_response) = join!(data_proof_response_fut, succinct_response_fut); - let data_proof_res: KateQueryDataProofV2Response = match data_proof { + let data_proof_res: KateQueryDataProofResponse = match data_proof { Ok(resp) => match resp { Ok(data) => data, Err(err) => { - tracing::error!("❌ {:?}", err); + tracing::error!("❌ Cannot get kate data proof response: {:?}", err); return ( StatusCode::BAD_REQUEST, [("Cache-Control", "max-age=300, must-revalidate")], @@ -275,9 +281,9 @@ async fn get_eth_proof( data_root_index: succinct_data.index, leaf: data_proof_res.data_proof.leaf, leaf_index: data_proof_res.data_proof.leaf_index, - data_root: data_proof_res.data_proof.data_root, - blob_root: data_proof_res.data_proof.blob_root, - bridge_root: data_proof_res.data_proof.bridge_root, + data_root: data_proof_res.data_proof.roots.data_root, + blob_root: data_proof_res.data_proof.roots.blob_root, + bridge_root: data_proof_res.data_proof.roots.bridge_root, data_root_commitment: succinct_data.data_commitment, block_hash: block_hash, message: data_proof_res.message @@ -321,7 +327,7 @@ async fn get_avl_proof( })), ), Err(err) => { - tracing::error!("❌ {:?}", err); + tracing::error!("❌ Cannot get account and storage proofs: {:?}", err); ( StatusCode::INTERNAL_SERVER_ERROR, [("Cache-Control", "max-age=300, must-revalidate")], @@ -358,7 +364,10 @@ async fn get_beacon_slot( })), ) } else { - tracing::error!("❌ {:?}", rsp_data.status); + tracing::error!( + "❌ Beacon API returned unsuccessfully: {:?}", + rsp_data.status + ); ( StatusCode::INTERNAL_SERVER_ERROR, [("Cache-Control", "max-age=300, must-revalidate")], @@ -367,7 +376,7 @@ async fn get_beacon_slot( } } Err(err) => { - tracing::error!("❌ {:?}", err); + tracing::error!("❌ Cannot get beacon API response data: {:?}", err); ( StatusCode::INTERNAL_SERVER_ERROR, [("Cache-Control", "max-age=300, must-revalidate")], @@ -377,7 +386,7 @@ async fn get_beacon_slot( } } Err(err) => { - tracing::error!("❌ {:?}", err); + tracing::error!("❌ Cannot get beacon API data: {:?}", err); ( StatusCode::INTERNAL_SERVER_ERROR, [("Cache-Control", "max-age=300, must-revalidate")],