diff --git a/Cargo.lock b/Cargo.lock
index 8a433e2fb51..32864e27810 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -364,6 +364,12 @@ version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e"
 
+[[package]]
+name = "ahash"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e"
+
 [[package]]
 name = "aho-corasick"
 version = "0.7.15"
@@ -669,25 +675,57 @@ version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "30f3fd65922359a7c6e791bc9b2bba1b977ea0c0b96a528ac48007f535fb4184"
 dependencies = [
- "borsh-derive",
+ "borsh-derive 0.7.2",
+]
+
+[[package]]
+name = "borsh"
+version = "0.8.1"
+source = "git+https://github.com/near/borsh-rs?rev=c62cdfbd10d4a17fc877809eba4ccb65e866d5f8#c62cdfbd10d4a17fc877809eba4ccb65e866d5f8"
+dependencies = [
+ "borsh-derive 0.8.1",
+ "hashbrown 0.9.1",
 ]
 
 [[package]]
 name = "borsh-derive"
-version = "0.7.1"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2d74755d937d261d5e9bdef87e0addfbc1ace0214f7776f21532d6e97325356"
+checksum = "e6aaa45f8eec26e4bf71e7e5492cf53a91591af8f871f422d550e7cc43f6b927"
+dependencies = [
+ "borsh-derive-internal 0.7.2",
+ "borsh-schema-derive-internal 0.7.2",
+ "proc-macro2 1.0.24",
+ "syn 1.0.57",
+]
+
+[[package]]
+name = "borsh-derive"
+version = "0.8.1"
+source = "git+https://github.com/near/borsh-rs?rev=c62cdfbd10d4a17fc877809eba4ccb65e866d5f8#c62cdfbd10d4a17fc877809eba4ccb65e866d5f8"
 dependencies = [
- "borsh-derive-internal",
- "borsh-schema-derive-internal",
+ "borsh-derive-internal 0.8.1",
+ "borsh-schema-derive-internal 0.8.1",
+ "proc-macro-crate",
+ "proc-macro2 1.0.24",
  "syn 1.0.57",
 ]
 
 [[package]]
 name = "borsh-derive-internal"
-version = "0.7.1"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c9f966cb7a42c8ed83546ef481bc1d1dec888fe5f84a4737d5c2094a483e41e"
+checksum = "61621b9d3cca65cc54e2583db84ef912d59ae60d2f04ba61bc0d7fc57556bda2"
+dependencies = [
+ "proc-macro2 1.0.24",
+ "quote 1.0.7",
+ "syn 1.0.57",
+]
+
+[[package]]
+name = "borsh-derive-internal"
+version = "0.8.1"
+source = "git+https://github.com/near/borsh-rs?rev=c62cdfbd10d4a17fc877809eba4ccb65e866d5f8#c62cdfbd10d4a17fc877809eba4ccb65e866d5f8"
 dependencies = [
  "proc-macro2 1.0.24",
  "quote 1.0.7",
@@ -696,9 +734,19 @@ dependencies = [
 
 [[package]]
 name = "borsh-schema-derive-internal"
-version = "0.7.1"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5df2543b56ebc2b4493e70d024ebde2cbb48d97bf7b1a16318eff30bd02669b8"
+checksum = "85b38abfda570837b0949c2c7ebd31417e15607861c23eacb2f668c69f6f3bf7"
+dependencies = [
+ "proc-macro2 1.0.24",
+ "quote 1.0.7",
+ "syn 1.0.57",
+]
+
+[[package]]
+name = "borsh-schema-derive-internal"
+version = "0.8.1"
+source = "git+https://github.com/near/borsh-rs?rev=c62cdfbd10d4a17fc877809eba4ccb65e866d5f8#c62cdfbd10d4a17fc877809eba4ccb65e866d5f8"
 dependencies = [
  "proc-macro2 1.0.24",
  "quote 1.0.7",
@@ -1953,7 +2001,7 @@ dependencies = [
 name = "genesis-populate"
 version = "0.1.0"
 dependencies = [
- "borsh",
+ "borsh 0.7.1",
  "byteorder",
  "clap 2.33.3",
  "indicatif 0.13.0",
@@ -2089,6 +2137,9 @@ name = "hashbrown"
 version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04"
+dependencies = [
+ "ahash",
+]
 
 [[package]]
 name = "heapsize"
@@ -2672,7 +2723,7 @@ checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a"
 name = "loadtester"
 version = "0.1.0"
 dependencies = [
- "borsh",
+ "borsh 0.7.1",
  "byteorder",
  "clap 2.33.3",
  "env_logger",
@@ -2989,7 +3040,7 @@ dependencies = [
 name = "near-chain"
 version = "0.1.0"
 dependencies = [
- "borsh",
+ "borsh 0.7.1",
  "cached",
  "chrono",
  "delay-detector",
@@ -3036,7 +3087,7 @@ name = "near-chunks"
 version = "0.1.0"
 dependencies = [
  "actix",
- "borsh",
+ "borsh 0.7.1",
  "cached",
  "chrono",
  "futures",
@@ -3059,7 +3110,7 @@ version = "0.1.0"
 dependencies = [
  "actix",
  "ansi_term 0.11.0",
- "borsh",
+ "borsh 0.7.1",
  "cached",
  "chrono",
  "delay-detector",
@@ -3098,7 +3149,7 @@ version = "0.1.0"
 dependencies = [
  "arrayref",
  "blake2",
- "borsh",
+ "borsh 0.7.1",
  "bs58",
  "c2-chacha",
  "curve25519-dalek",
@@ -3121,7 +3172,7 @@ dependencies = [
 name = "near-epoch-manager"
 version = "0.0.1"
 dependencies = [
- "borsh",
+ "borsh 0.7.1",
  "cached",
  "chrono",
  "log",
@@ -3143,7 +3194,7 @@ name = "near-evm-runner"
 version = "2.3.0"
 dependencies = [
  "bn",
- "borsh",
+ "borsh 0.7.1",
  "byteorder",
  "criterion",
  "derivative",
@@ -3200,7 +3251,7 @@ dependencies = [
  "actix",
  "actix-cors",
  "actix-web",
- "borsh",
+ "borsh 0.7.1",
  "futures",
  "lazy_static",
  "near-chain-configs",
@@ -3269,7 +3320,7 @@ version = "0.1.0"
 dependencies = [
  "actix",
  "bencher",
- "borsh",
+ "borsh 0.7.1",
  "byteorder",
  "bytes",
  "cached",
@@ -3323,7 +3374,7 @@ dependencies = [
 name = "near-pool"
 version = "0.1.0"
 dependencies = [
- "borsh",
+ "borsh 0.7.1",
  "near-crypto",
  "near-primitives",
  "rand 0.7.3",
@@ -3335,7 +3386,7 @@ version = "0.1.0"
 dependencies = [
  "base64 0.11.0",
  "bencher",
- "borsh",
+ "borsh 0.7.1",
  "bs58",
  "byteorder",
  "chrono",
@@ -3440,7 +3491,7 @@ name = "near-store"
 version = "2.2.0"
 dependencies = [
  "bencher",
- "borsh",
+ "borsh 0.7.1",
  "byteorder",
  "cached",
  "derive_more",
@@ -3477,7 +3528,7 @@ dependencies = [
 name = "near-vm-errors"
 version = "2.3.0"
 dependencies = [
- "borsh",
+ "borsh 0.7.1",
  "ethereum-types",
  "hex",
  "near-rpc-error-macro",
@@ -3489,7 +3540,7 @@ name = "near-vm-logic"
 version = "2.3.0"
 dependencies = [
  "base64 0.11.0",
- "borsh",
+ "borsh 0.7.1",
  "bs58",
  "byteorder",
  "near-runtime-fees",
@@ -3509,7 +3560,8 @@ dependencies = [
  "anyhow",
  "assert_matches",
  "bencher",
- "borsh",
+ "borsh 0.7.1",
+ "delay-detector",
  "log",
  "near-evm-runner",
  "near-primitives",
@@ -3519,8 +3571,8 @@ dependencies = [
  "parity-wasm",
  "pwasm-utils",
  "wabt",
- "wasmer-runtime-core-near",
- "wasmer-runtime-near",
+ "wasmer-runtime",
+ "wasmer-runtime-core",
  "wasmtime",
 ]
 
@@ -3572,7 +3624,7 @@ version = "1.2.0"
 dependencies = [
  "actix",
  "actix-web",
- "borsh",
+ "borsh 0.7.1",
  "byteorder",
  "chrono",
  "clap 2.33.3",
@@ -3644,7 +3696,7 @@ version = "2.3.0"
 dependencies = [
  "assert_matches",
  "base64 0.11.0",
- "borsh",
+ "borsh 0.7.1",
  "byteorder",
  "ethereum-types",
  "hex",
@@ -4230,6 +4282,15 @@ dependencies = [
  "uint",
 ]
 
+[[package]]
+name = "proc-macro-crate"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
+dependencies = [
+ "toml",
+]
+
 [[package]]
 name = "proc-macro-error"
 version = "1.0.4"
@@ -4745,7 +4806,7 @@ dependencies = [
 name = "runtime-params-estimator"
 version = "2.3.0"
 dependencies = [
- "borsh",
+ "borsh 0.7.1",
  "clap 2.33.3",
  "csv",
  "ethabi",
@@ -5176,7 +5237,7 @@ name = "state-viewer"
 version = "0.1.0"
 dependencies = [
  "ansi_term 0.11.0",
- "borsh",
+ "borsh 0.7.1",
  "clap 2.33.3",
  "near-chain",
  "near-chain-configs",
@@ -5382,7 +5443,7 @@ version = "0.1.0"
 dependencies = [
  "actix",
  "assert_matches",
- "borsh",
+ "borsh 0.7.1",
  "byteorder",
  "clap 2.33.3",
  "ethabi",
@@ -5610,6 +5671,15 @@ dependencies = [
  "tokio",
 ]
 
+[[package]]
+name = "toml"
+version = "0.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
+dependencies = [
+ "serde",
+]
+
 [[package]]
 name = "toolshed"
 version = "0.6.3"
@@ -6148,13 +6218,26 @@ dependencies = [
 ]
 
 [[package]]
-name = "wasmer-runtime-core-near"
+name = "wasmer-runtime"
 version = "0.17.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2390b0b8cf58615c2f8b454d9535e1aed1d14c510cc1ce1af806a1992ad53300"
+source = "git+https://github.com/near/wasmer.git?rev=25d52e0ab20e21f7b2f78643e8d5b111f02f56c5#25d52e0ab20e21f7b2f78643e8d5b111f02f56c5"
+dependencies = [
+ "lazy_static",
+ "memmap",
+ "serde",
+ "serde_derive",
+ "wasmer-runtime-core",
+ "wasmer-singlepass-backend",
+]
+
+[[package]]
+name = "wasmer-runtime-core"
+version = "0.17.1"
+source = "git+https://github.com/near/wasmer.git?rev=25d52e0ab20e21f7b2f78643e8d5b111f02f56c5#25d52e0ab20e21f7b2f78643e8d5b111f02f56c5"
 dependencies = [
  "bincode",
  "blake3",
+ "borsh 0.8.1",
  "cc",
  "digest 0.8.1",
  "errno",
@@ -6177,26 +6260,12 @@ dependencies = [
 ]
 
 [[package]]
-name = "wasmer-runtime-near"
+name = "wasmer-singlepass-backend"
 version = "0.17.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6660e86bc7697fa29bab902214d5b33d394a990826c401b10816bcd285f938f"
-dependencies = [
- "lazy_static",
- "memmap",
- "serde",
- "serde_derive",
- "wasmer-runtime-core-near",
- "wasmer-singlepass-backend-near",
-]
-
-[[package]]
-name = "wasmer-singlepass-backend-near"
-version = "0.17.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3f23543ef8f59667be4945c22eb4b1a50a79ff340555f6f23354223d2695541"
+source = "git+https://github.com/near/wasmer.git?rev=25d52e0ab20e21f7b2f78643e8d5b111f02f56c5#25d52e0ab20e21f7b2f78643e8d5b111f02f56c5"
 dependencies = [
  "bincode",
+ "borsh 0.8.1",
  "byteorder",
  "dynasm 1.0.0",
  "dynasmrt 1.0.0",
@@ -6206,7 +6275,7 @@ dependencies = [
  "serde",
  "serde_derive",
  "smallvec 1.5.1",
- "wasmer-runtime-core-near",
+ "wasmer-runtime-core",
 ]
 
 [[package]]
diff --git a/runtime/near-vm-runner/Cargo.toml b/runtime/near-vm-runner/Cargo.toml
index eb65c7aaa0d..8bff606a518 100644
--- a/runtime/near-vm-runner/Cargo.toml
+++ b/runtime/near-vm-runner/Cargo.toml
@@ -14,8 +14,8 @@ This crate implements the specification of the interface that Near blockchain ex
 
 [dependencies]
 borsh = "0.7.1"
-wasmer-runtime = { version="0.17.1", features = ["default-backend-singlepass"], default-features = false, package = "wasmer-runtime-near" }
-wasmer-runtime-core = {version = "0.17.1", package = "wasmer-runtime-core-near" }
+wasmer-runtime = { git="https://github.com/near/wasmer.git", rev = "25d52e0ab20e21f7b2f78643e8d5b111f02f56c5", features = ["default-backend-singlepass"], default-features = false }
+wasmer-runtime-core = {git = "https://github.com/near/wasmer.git", rev = "25d52e0ab20e21f7b2f78643e8d5b111f02f56c5" }
 pwasm-utils = "0.12"
 parity-wasm = "0.41"
 wasmtime = { version = "0.20.0", default-features = false, optional = true }
@@ -26,6 +26,7 @@ near-vm-errors = { path = "../near-vm-errors", version = "2.3.0" }
 near-primitives = { path = "../../core/primitives" }
 log = "0.4"
 near-evm-runner = { path = "../near-evm-runner", version = "2.3.0", optional = true}
+delay-detector = { path = "../../tools/delay_detector"}
 
 [dev-dependencies]
 assert_matches = "1.3"
diff --git a/runtime/near-vm-runner/src/wasmer_runner.rs b/runtime/near-vm-runner/src/wasmer_runner.rs
index b17a1ad4d99..a4c6e84af7f 100644
--- a/runtime/near-vm-runner/src/wasmer_runner.rs
+++ b/runtime/near-vm-runner/src/wasmer_runner.rs
@@ -12,7 +12,7 @@ use wasmer_runtime::Module;
 fn check_method(module: &Module, method_name: &str) -> Result<(), VMError> {
     let info = module.info();
     use wasmer_runtime_core::module::ExportIndex::Func;
-    if let Some(Func(index)) = info.exports.get(method_name) {
+    if let Some(Func(index)) = info.exports.map.get(method_name) {
         let func = info.func_assoc.get(index.clone()).unwrap();
         let sig = info.signatures.get(func.clone()).unwrap();
         if sig.params().is_empty() && sig.returns().is_empty() {