diff --git a/node/src/node.rs b/node/src/node.rs
index fd3e7fcf77..409292cd91 100644
--- a/node/src/node.rs
+++ b/node/src/node.rs
@@ -308,6 +308,7 @@ impl NodeService {
let start_time = SystemTime::now();
storage_instance.check_upgrade()?;
storage_instance.barnard_hard_fork(config.clone())?;
+ storage_instance.dragon_hard_fork(config.clone())?;
let upgrade_time = SystemTime::now().duration_since(start_time)?;
let storage = Arc::new(Storage::new(storage_instance)?);
registry.put_shared(storage.clone()).await?;
diff --git a/storage/src/chain_info/mod.rs b/storage/src/chain_info/mod.rs
index 3f193be3f0..b29012a898 100644
--- a/storage/src/chain_info/mod.rs
+++ b/storage/src/chain_info/mod.rs
@@ -5,7 +5,7 @@ use crate::storage::{ColumnFamily, InnerStorage, KVStore};
use crate::{StorageVersion, CHAIN_INFO_PREFIX_NAME};
use anyhow::Result;
use starcoin_crypto::HashValue;
-use starcoin_types::startup_info::{BarnardHardFork, SnapshotRange, StartupInfo};
+use starcoin_types::startup_info::{BarnardHardFork, DragonHardFork, SnapshotRange, StartupInfo};
use std::convert::{TryFrom, TryInto};
#[derive(Clone)]
@@ -28,6 +28,7 @@ impl ChainInfoStorage {
const STORAGE_VERSION_KEY: &'static str = "storage_version";
const SNAPSHOT_RANGE_KEY: &'static str = "snapshot_height";
const BARNARD_HARD_FORK: &'static str = "barnard_hard_fork";
+ const DRAGON_HARD_FORK: &'static str = "dragon_hard_fork";
pub fn get_startup_info(&self) -> Result