diff --git a/Cargo.lock b/Cargo.lock
index e693930b78..4d600a1b5c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6074,6 +6074,7 @@ dependencies = [
"pallet-evm-precompile-bn128",
"pallet-evm-precompile-dapp-staking-v3",
"pallet-evm-precompile-dispatch",
+ "pallet-evm-precompile-dispatch-lockdrop",
"pallet-evm-precompile-ed25519",
"pallet-evm-precompile-modexp",
"pallet-evm-precompile-sha3fips",
@@ -8035,6 +8036,32 @@ dependencies = [
"pallet-evm",
]
+[[package]]
+name = "pallet-evm-precompile-dispatch-lockdrop"
+version = "0.1.0"
+dependencies = [
+ "astar-primitives",
+ "ethers",
+ "fp-evm",
+ "frame-support",
+ "frame-system",
+ "hex-literal",
+ "libsecp256k1",
+ "log",
+ "pallet-balances",
+ "pallet-evm",
+ "pallet-evm-precompile-dispatch",
+ "pallet-timestamp",
+ "pallet-utility",
+ "parity-scale-codec",
+ "precompile-utils",
+ "scale-info",
+ "sp-core",
+ "sp-io",
+ "sp-runtime",
+ "sp-std",
+]
+
[[package]]
name = "pallet-evm-precompile-ed25519"
version = "2.0.0-dev"
@@ -13242,6 +13269,7 @@ dependencies = [
"pallet-evm-precompile-bn128",
"pallet-evm-precompile-dapp-staking-v3",
"pallet-evm-precompile-dispatch",
+ "pallet-evm-precompile-dispatch-lockdrop",
"pallet-evm-precompile-ed25519",
"pallet-evm-precompile-modexp",
"pallet-evm-precompile-sha3fips",
diff --git a/Cargo.toml b/Cargo.toml
index 30f78873e0..bd32202d60 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -299,6 +299,7 @@ pallet-evm-precompile-xvm = { path = "./precompiles/xvm", default-features = fal
pallet-evm-precompile-dapps-staking = { path = "./precompiles/dapps-staking", default-features = false }
pallet-evm-precompile-dapp-staking-v3 = { path = "./precompiles/dapp-staking-v3", default-features = false }
pallet-evm-precompile-unified-accounts = { path = "./precompiles/unified-accounts", default-features = false }
+pallet-evm-precompile-dispatch-lockdrop = { path = "./precompiles/dispatch-lockdrop", default-features = false }
pallet-chain-extension-xvm = { path = "./chain-extensions/xvm", default-features = false }
pallet-chain-extension-assets = { path = "./chain-extensions/pallet-assets", default-features = false }
diff --git a/precompiles/dispatch-lockdrop/Cargo.toml b/precompiles/dispatch-lockdrop/Cargo.toml
new file mode 100644
index 0000000000..b2ca7f5e20
--- /dev/null
+++ b/precompiles/dispatch-lockdrop/Cargo.toml
@@ -0,0 +1,58 @@
+[package]
+name = "pallet-evm-precompile-dispatch-lockdrop"
+description = "Evm Precompile to dispatch calls for lockdrop accounts"
+version = "0.1.0"
+authors.workspace = true
+edition.workspace = true
+homepage.workspace = true
+repository.workspace = true
+
+[dependencies]
+fp-evm = { workspace = true }
+frame-support = { workspace = true }
+frame-system = { workspace = true }
+hex-literal = { workspace = true }
+libsecp256k1 = { workspace = true, features = ["hmac", "static-context"] }
+log = { workspace = true }
+pallet-evm = { workspace = true }
+pallet-evm-precompile-dispatch = { workspace = true }
+parity-scale-codec = { workspace = true }
+precompile-utils = { workspace = true }
+sp-core = { workspace = true }
+sp-io = { workspace = true }
+sp-runtime = { workspace = true }
+sp-std = { workspace = true }
+
+[dev-dependencies]
+astar-primitives = { workspace = true }
+ethers = { workspace = true }
+frame-system = { workspace = true }
+pallet-balances = { workspace = true }
+pallet-timestamp = { workspace = true }
+pallet-utility = { workspace = true }
+precompile-utils = { workspace = true, features = ["testing"] }
+scale-info = { workspace = true }
+sp-core = { workspace = true }
+sp-io = { workspace = true }
+sp-runtime = { workspace = true }
+sp-std = { workspace = true }
+
+[features]
+default = ["std"]
+std = [
+ "log/std",
+ "libsecp256k1/std",
+ "parity-scale-codec/std",
+ "scale-info/std",
+ "sp-std/std",
+ "sp-core/std",
+ "sp-io/std",
+ "sp-runtime/std",
+ "frame-support/std",
+ "frame-system/std",
+ "astar-primitives/std",
+ "precompile-utils/std",
+ "pallet-evm/std",
+ "pallet-balances/std",
+ "pallet-timestamp/std",
+]
diff --git a/precompiles/dispatch-lockdrop/DispatchLockdrop.sol b/precompiles/dispatch-lockdrop/DispatchLockdrop.sol
new file mode 100644
index 0000000000..f464b5c3da
--- /dev/null
+++ b/precompiles/dispatch-lockdrop/DispatchLockdrop.sol
@@ -0,0 +1,20 @@
+pragma solidity ^0.8.0;
+
+/**
+ * @title Dispatch Lockdrop calls interface.
+ */
+
+/// Interface to dispatch lockdrop calls precompiled contract
+/// Pre-deployed at the address 0x0000000000000000000000000000000000005007
+interface RescueLockdrop {
+ /**
+ * @dev Dispatch lockdrop call
+ * @param call - SCALE-encoded call arguments
+ * @param pubkey - full ECDSA pubkey 64 bytes
+ * @return boolean confirming whether the call got successfully dispatched
+ */
+ function dispatch_lockdrop_call(
+ bytes calldata call,
+ bytes calldata pubkey
+ ) external returns (bool);
+}
\ No newline at end of file
diff --git a/precompiles/dispatch-lockdrop/src/lib.rs b/precompiles/dispatch-lockdrop/src/lib.rs
new file mode 100644
index 0000000000..ee38bd0938
--- /dev/null
+++ b/precompiles/dispatch-lockdrop/src/lib.rs
@@ -0,0 +1,130 @@
+// This file is part of Astar.
+
+// Copyright (C) 2019-2023 Stake Technologies Pte.Ltd.
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+// Astar is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Astar is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Astar. If not, see .
+
+#![cfg_attr(not(feature = "std"), no_std)]
+
+extern crate alloc;
+
+use core::marker::PhantomData;
+use fp_evm::PrecompileHandle;
+use frame_support::pallet_prelude::IsType;
+use frame_support::weights::Weight;
+use frame_support::{codec::DecodeLimit as _, traits::Get};
+use frame_support::{
+ dispatch::{Dispatchable, GetDispatchInfo, PostDispatchInfo},
+ traits::ConstU32,
+};
+use frame_system::Config;
+use pallet_evm::GasWeightMapping;
+use pallet_evm_precompile_dispatch::DispatchValidateT;
+use precompile_utils::prelude::{revert, BoundedBytes, RuntimeHelper, UnboundedBytes};
+use precompile_utils::EvmResult;
+use sp_core::{crypto::AccountId32, H160, H256};
+use sp_io::hashing::keccak_256;
+use sp_std::vec::Vec;
+
+#[cfg(test)]
+mod mock;
+#[cfg(test)]
+mod tests;
+
+pub const LOG_TARGET: &str = "precompile::dispatch-lockdrop";
+
+// ECDSA PublicKey
+type ECDSAPublic = ConstU32<64>;
+
+// `DecodeLimit` specifies the max depth a call can use when decoding, as unbounded depth
+// can be used to overflow the stack.
+// Default value is 8, which is the same as in XCM call decoding.
+pub struct DispatchLockdrop>(
+ PhantomData<(Runtime, DispatchValidator, DecodeLimit)>,
+);
+
+#[precompile_utils::precompile]
+impl
+ DispatchLockdrop
+where
+ Runtime: pallet_evm::Config,
+ ::RuntimeOrigin: From