diff --git a/rust-libs/modules/gva/dbs-reader/src/current_frame.rs b/rust-libs/modules/gva/dbs-reader/src/current_frame.rs
index 70106c0dbc5af31a25bbc015fe26fd540c659793..79b739478cf7853ce31682c23ea8b5cedd3d33f8 100644
--- a/rust-libs/modules/gva/dbs-reader/src/current_frame.rs
+++ b/rust-libs/modules/gva/dbs-reader/src/current_frame.rs
@@ -23,9 +23,9 @@ impl DbsReader {
         bc_db: &BcDb,
         cm_db: &CmDb,
     ) -> anyhow::Result<Vec<BlockMetaV2>> {
-        if let Some(current_block) = self.get_current_block(cm_db)? {
-            let issuers_frame = current_block.issuers_frame;
-            let start = U32BE(current_block.number + 1 - issuers_frame as u32);
+        if let Some(current_block_meta) = self.get_current_block_meta(cm_db)? {
+            let issuers_frame = current_block_meta.issuers_frame;
+            let start = U32BE(current_block_meta.number + 1 - issuers_frame as u32);
             bc_db
                 .blocks_meta()
                 .iter_rev(start.., |it| it.values().collect::<KvResult<_>>())
diff --git a/rust-libs/modules/gva/dbs-reader/src/lib.rs b/rust-libs/modules/gva/dbs-reader/src/lib.rs
index af3f9b5bc4771716429c9876008c76612e7e2731..10d743aff99ac06a386a29aed32ed05c871dd29d 100644
--- a/rust-libs/modules/gva/dbs-reader/src/lib.rs
+++ b/rust-libs/modules/gva/dbs-reader/src/lib.rs
@@ -32,9 +32,9 @@ pub mod utxos;
 pub use crate::pagination::{PageInfo, PagedData};
 
 use crate::pagination::{has_next_page, has_previous_page};
-use dubp::common::crypto::hashs::Hash;
 use dubp::common::crypto::keys::ed25519::PublicKey;
 use dubp::documents::transaction::TransactionDocumentV10;
+use dubp::{block::DubpBlockV10, common::crypto::hashs::Hash};
 use dubp::{common::prelude::BlockNumber, wallet::prelude::*};
 use duniter_dbs::FileBackend;
 use duniter_dbs::{
@@ -82,6 +82,13 @@ impl DbsReader {
     pub fn get_current_block<CmDb: CmV1DbReadable>(
         &self,
         cm_db: &CmDb,
+    ) -> KvResult<Option<DubpBlockV10>> {
+        Ok(cm_db.current_block().get(&())?.map(|db_block| db_block.0))
+    }
+
+    pub fn get_current_block_meta<CmDb: CmV1DbReadable>(
+        &self,
+        cm_db: &CmDb,
     ) -> KvResult<Option<BlockMetaV2>> {
         cm_db.current_block_meta().get(&())
     }
diff --git a/rust-libs/modules/gva/gql/src/entities/block_gva.rs b/rust-libs/modules/gva/gql/src/entities/block_gva.rs
index 414471e20a2a763ed0c6d2bfc90ffcb042e50b6a..c5be43c5dba1620fbd40eaaf860d6dbc742b5988 100644
--- a/rust-libs/modules/gva/gql/src/entities/block_gva.rs
+++ b/rust-libs/modules/gva/gql/src/entities/block_gva.rs
@@ -89,6 +89,20 @@ pub(crate) struct Block {
     pub unit_base: u32,
     pub dividend: Option<u32>,
     // Payload
+    /// Identities
+    pub identities: Vec<String>,
+    /// joiners
+    pub joiners: Vec<String>,
+    /// Actives (=renewals)
+    pub actives: Vec<String>,
+    /// Leavers
+    pub leavers: Vec<String>,
+    /// Revokeds
+    pub revoked: Vec<String>,
+    /// Excludeds
+    pub excluded: Vec<String>,
+    /// Certifications
+    pub certifications: Vec<String>,
     pub transactions: Vec<TxGva>,
 }
 
@@ -96,6 +110,7 @@ impl From<&DubpBlockV10> for Block {
     fn from(block: &DubpBlockV10) -> Self {
         let block = block.to_string_object();
         Block {
+            // Meta
             version: block.version,
             number: block.number as u32,
             hash: block.hash.unwrap_or_default(),
@@ -113,7 +128,49 @@ impl From<&DubpBlockV10> for Block {
             monetary_mass: block.monetary_mass,
             unit_base: block.unit_base as u32,
             dividend: block.dividend.map(|amount| amount as u32),
+            // Payload
+            identities: block.identities,
+            joiners: block.joiners,
+            actives: block.actives,
+            leavers: block.leavers,
+            revoked: block.revoked,
+            excluded: block.excluded,
+            certifications: block.certifications,
             transactions: block.transactions.into_iter().map(Into::into).collect(),
         }
     }
 }
+
+impl From<&BlockMetaV2> for Block {
+    fn from(block: &BlockMetaV2) -> Self {
+        Block {
+            // Meta
+            version: block.version,
+            number: block.number,
+            hash: block.hash.to_string(),
+            signature: block.signature.to_string(),
+            inner_hash: block.inner_hash.to_string(),
+            previous_hash: Some(block.previous_hash.to_string()),
+            issuer: block.issuer.to_string(),
+            time: block.time,
+            pow_min: block.pow_min,
+            members_count: block.members_count,
+            issuers_count: block.issuers_count,
+            issuers_frame: block.issuers_frame,
+            median_time: block.median_time,
+            nonce: block.nonce,
+            monetary_mass: block.monetary_mass,
+            unit_base: block.unit_base,
+            dividend: block.dividend.map(|sa| sa.amount() as u32),
+            // Payload
+            identities: vec![],
+            joiners: vec![],
+            actives: vec![],
+            leavers: vec![],
+            revoked: vec![],
+            excluded: vec![],
+            certifications: vec![],
+            transactions: vec![],
+        }
+    }
+}
diff --git a/rust-libs/modules/gva/gql/src/lib.rs b/rust-libs/modules/gva/gql/src/lib.rs
index 7822db758dd251b7fbeda56de770e943517dcfcf..b405760862033ef7a4a7ecf200eafd503d330fae 100644
--- a/rust-libs/modules/gva/gql/src/lib.rs
+++ b/rust-libs/modules/gva/gql/src/lib.rs
@@ -75,7 +75,7 @@ pub struct ServerMetaData {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use dubp::documents::transaction::TransactionInputV10;
+    use dubp::{block::DubpBlockV10, documents::transaction::TransactionInputV10};
     use duniter_dbs::{
         databases::{bc_v2::*, cm_v1::CmV1DbReadable},
         BlockMetaV2, SourceAmountValV2,
@@ -118,6 +118,10 @@ mod tests {
             fn get_current_block<CmDb: 'static + CmV1DbReadable>(
                 &self,
                 cm_db: &CmDb,
+            ) -> KvResult<Option<DubpBlockV10>>;
+            fn get_current_block_meta<CmDb: 'static + CmV1DbReadable>(
+                &self,
+                cm_db: &CmDb,
             ) -> KvResult<Option<BlockMetaV2>>;
             fn get_current_frame<BcDb: 'static + BcV2DbReadable, CmDb: 'static + CmV1DbReadable>(
                 &self,
diff --git a/rust-libs/modules/gva/gql/src/queries/current_block.rs b/rust-libs/modules/gva/gql/src/queries/current_block.rs
index 4151a817df8e0dd18fe010ae14b1cac169e4771f..a6d9ff13ba86ce57e1526895ea866f480f8c5ec0 100644
--- a/rust-libs/modules/gva/gql/src/queries/current_block.rs
+++ b/rust-libs/modules/gva/gql/src/queries/current_block.rs
@@ -23,20 +23,19 @@ impl CurrentBlockQuery {
     async fn current_block(
         &self,
         ctx: &async_graphql::Context<'_>,
-    ) -> async_graphql::Result<BlockMeta> {
+    ) -> async_graphql::Result<Block> {
         let data = ctx.data::<GvaSchemaData>()?;
         let dbs_reader = data.dbs_reader();
 
-        if let Some(current_block_meta) = data
-            .dbs_pool
-            .execute(move |dbs| dbs_reader.get_current_block(&dbs.cm_db))
-            .await??
-            .map(Into::into)
-        {
-            Ok(current_block_meta)
-        } else {
-            Err(async_graphql::Error::new("no blockchain"))
-        }
+        data.dbs_pool
+            .execute(move |dbs| {
+                if let Some(current_block) = dbs_reader.get_current_block(&dbs.cm_db)? {
+                    Ok(Block::from(&current_block))
+                } else {
+                    Err(async_graphql::Error::new("no blockchain"))
+                }
+            })
+            .await?
     }
 }
 
@@ -44,20 +43,16 @@ impl CurrentBlockQuery {
 mod tests {
     use super::*;
     use crate::tests::*;
+    use dubp::block::DubpBlockV10;
     use duniter_dbs::databases::cm_v1::CmV1Db;
-    use duniter_dbs::BlockMetaV2;
 
     #[tokio::test]
-    async fn query_current_frame() -> anyhow::Result<()> {
+    async fn query_current_block() -> anyhow::Result<()> {
         let mut dbs_reader = MockDbsReader::new();
         dbs_reader
             .expect_get_current_block::<CmV1Db<MemSingleton>>()
             .times(1)
-            .returning(|_| {
-                Ok(Some(BlockMetaV2 {
-                    ..Default::default()
-                }))
-            });
+            .returning(|_| Ok(Some(DubpBlockV10::default())));
         let schema = create_schema(dbs_reader)?;
         assert_eq!(
             exec_graphql_request(&schema, r#"{ currentBlock {nonce} }"#).await?,