Selaa lähdekoodia

runtime: Increase default WASM VM stack size and remove wasm-strip dependency

parazyd 1 vuosi sitten
vanhempi
sitoutus
a7d3fbdb71

+ 1 - 1
.github/workflows/book.yml

@@ -40,7 +40,7 @@ jobs:
               run: |
                 pip install ghp-import
                 pip install prettytable
-                sudo apt -y install make wget libasound2-dev libfontconfig1-dev wabt
+                sudo apt -y install make wget libasound2-dev libfontconfig1-dev
                 wget "https://github.com/badboy/mdbook-toc/releases/download/0.14.1/mdbook-toc-0.14.1-x86_64-unknown-linux-gnu.tar.gz"
                 wget "https://github.com/lzanini/mdbook-katex/releases/download/v0.5.7/mdbook-katex-v0.5.7-x86_64-unknown-linux-gnu.tar.gz"
                 wget "https://github.com/badboy/mdbook-mermaid/releases/download/v0.12.6/mdbook-mermaid-v0.12.6-x86_64-unknown-linux-gnu.tar.gz"

+ 1 - 2
README.md

@@ -98,14 +98,13 @@ The following dependencies are also required:
 | openssl        | libssl-dev         |
 | sqlcipher      | libsqlcipher-dev   |
 | sqlite3        | libsqlite3-dev     |
-| wabt           | wabt               |
 
 Users of Debian-based systems (e.g. Ubuntu) can simply run the
 following to install the required dependencies:
 
 ```shell
 # apt-get update
-# apt-get install -y git cmake make gcc g++ pkg-config libasound2-dev libclang-dev libfontconfig1-dev liblzma-dev libssl-dev libsqlcipher-dev libsqlite3-dev wabt
+# apt-get install -y git cmake make gcc g++ pkg-config libasound2-dev libclang-dev libfontconfig1-dev liblzma-dev libssl-dev libsqlcipher-dev libsqlite3-dev
 ```
 
 Alternatively, users can try using the automated script under `contrib`

+ 5 - 5
contrib/dependency_setup.sh

@@ -29,22 +29,22 @@ setup_mac() {
 }
 
 setup_apt() {
-	apt_deps="git cmake make gcc g++ pkg-config libasound2-dev libclang-dev libfontconfig1-dev liblzma-dev libssl-dev libsqlcipher-dev libsqlite3-dev wabt"
+	apt_deps="git cmake make gcc g++ pkg-config libasound2-dev libclang-dev libfontconfig1-dev liblzma-dev libssl-dev libsqlcipher-dev libsqlite3-dev"
 	$1 install $apt_deps || return 1
 }
 
 setup_pacman() {
-	pacman_deps="git cmake make gcc pkgconf alsa-lib openssl sqlcipher wabt"
+	pacman_deps="git cmake make gcc pkgconf alsa-lib openssl sqlcipher"
 	$1 -Sy $pacman_deps || return 1
 }
 
 setup_xbps() {
-	xbps_deps="git make gcc pkg-config alsa-lib-devel openssl-devel sqlcipher-devel wabt"
+	xbps_deps="git make gcc pkg-config alsa-lib-devel openssl-devel sqlcipher-devel"
 	$1 -S $xbps_deps || return 1
 }
 
 setup_dnf() {
-	dnf_deps="git make gcc pkg-config findutils lato-fonts fontconfig-devel perl-FindBin perl-File-Compare alsa-lib-devel python3-devel alsa-lib-devel openssl-devel sqlcipher-devel libsq3-devel wabt"
+	dnf_deps="git make gcc pkg-config findutils lato-fonts fontconfig-devel perl-FindBin perl-File-Compare alsa-lib-devel python3-devel alsa-lib-devel openssl-devel sqlcipher-devel libsq3-devel"
 	$1 install -y $dnf_deps || return 1
 }
 
@@ -64,7 +64,7 @@ setup_emerge() {
 }
 
 setup_pkg() {
-	pkg_deps="git bash gcc findutils cantarell-fonts gmake devel/automake rust wabt llvm cmake sqlcipher pkgconf python python3"
+	pkg_deps="git bash gcc findutils cantarell-fonts gmake devel/automake rust llvm cmake sqlcipher pkgconf python python3"
 	$1 install -y $pkg_deps || return 1
 }
 

+ 1 - 1
contrib/docker/Dockerfile.debian

@@ -11,7 +11,7 @@ ARG RUST_VER
 RUN apt-get update && apt-get install -y build-essential cmake jq wget \
   pkg-config clang libclang-dev llvm-dev libudev-dev libfreetype6-dev libasound2-dev \
   libexpat1-dev curl gcc make libssl-dev fonts-lato libfontconfig-dev python3-dev libsqlite3-dev \
-  libsqlcipher-dev wabt
+  libsqlcipher-dev
 
 RUN curl https://sh.rustup.rs -sSf | bash -s -- -y --default-toolchain "${RUST_VER}"
 

+ 1 - 1
contrib/docker/Dockerfile.fedora

@@ -13,7 +13,7 @@ RUN dnf -y install gcc gcc-c++ kernel-headers cmake jq wget \
   openssl-devel findutils fontconfig-devel \
   lato-fonts alsa-lib-devel python3-devel \
   perl-FindBin perl-File-Compare perl-lib sqlite-devel \
-  perl-interpreter sqlcipher-devel wabt
+  perl-interpreter sqlcipher-devel
 
 RUN curl https://sh.rustup.rs -sSf | bash -s -- -y --default-toolchain "${RUST_VER}"
 

+ 1 - 1
contrib/docker/Dockerfile.ubuntu

@@ -12,7 +12,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get install
   build-essential cmake jq wget curl \
   pkg-config clang libclang-dev llvm-dev libudev-dev libfreetype6-dev \
   libexpat1-dev curl gcc make libssl-dev fonts-lato libfontconfig-dev \
-  libasound2-dev python3-dev libsqlite3-dev libsqlcipher-dev wabt
+  libasound2-dev python3-dev libsqlite3-dev libsqlcipher-dev
 
 RUN curl https://sh.rustup.rs -sSf | bash -s -- -y --default-toolchain "${RUST_VER}"
 

+ 1 - 1
contrib/docker/riscv.Dockerfile

@@ -24,7 +24,7 @@ ARG BINS
 RUN apt-get update
 RUN apt-get install -y git cmake make gcc g++ pkg-config \
     libasound2-dev libclang-dev libssl-dev libsqlcipher-dev \
-    libsqlite3-dev wabt wget
+    libsqlite3-dev wget
 
 ## Rust installation
 RUN wget -O install-rustup.sh https://sh.rustup.rs && \

+ 0 - 1
src/contract/dao/Makefile

@@ -42,7 +42,6 @@ $(WASM_BIN): $(WASM_SRC) $(PROOFS_BIN)
 	RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) build --target=$(WASM_TARGET) \
 		--release --package $(PKGNAME)
 	cp -f ../../../target/$(WASM_TARGET)/release/$@ $@
-	wasm-strip $@
 
 test-integration: all
 	RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) test --target=$(RUST_TARGET) \

+ 0 - 1
src/contract/deployooor/Makefile

@@ -32,7 +32,6 @@ $(WASM_BIN): $(WASM_SRC)
 	RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) build --target=$(WASM_TARGET) \
 		--release --package $(PKGNAME)
 	cp -f ../../../target/$(WASM_TARGET)/release/$@ $@
-	wasm-strip $@
 
 test-integration: all
 	RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) test --target=$(RUST_TARGET) \

+ 0 - 1
src/contract/money/Makefile

@@ -42,7 +42,6 @@ $(WASM_BIN): $(WASM_SRC) $(PROOFS_BIN)
 	RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) build --target=$(WASM_TARGET) \
 		--release --package $(PKGNAME)
 	cp -f ../../../target/$(WASM_TARGET)/release/$@ $@
-	wasm-strip $@
 
 test-integration: all
 	RUSTFLAGS="$(RUSTFLAGS)" $(CARGO) test --target=$(RUST_TARGET) \

+ 13 - 2
src/runtime/vm_runtime.rs

@@ -32,7 +32,8 @@ use darkfi_serial::serialize;
 use tracing::{debug, error, info};
 use wasmer::{
     imports, sys::CompilerConfig, wasmparser::Operator, AsStoreMut, AsStoreRef, Function,
-    FunctionEnv, Instance, Memory, MemoryView, Module, Pages, Store, Value, WASM_PAGE_SIZE,
+    FunctionEnv, Instance, Memory, MemoryType, MemoryView, Module, Pages, Store, Value,
+    WASM_PAGE_SIZE,
 };
 use wasmer_compiler_singlepass::Singlepass;
 use wasmer_middlewares::{
@@ -183,6 +184,14 @@ impl Runtime {
         compiler_config.push_middleware(metering);
         let mut store = Store::new(compiler_config);
 
+        // Create a larger Memory for the instance
+        let memory_type = MemoryType::new(
+            Pages(256),        // init: 16 MB (256 * 64KB)
+            Some(Pages(4096)), // max: 256 MB
+            false,
+        );
+        let memory = Memory::new(&mut store, memory_type)?;
+
         debug!(target: "runtime::vm_runtime", "Compiling module");
         let module = Module::new(&store, wasm_bytes)?;
 
@@ -202,7 +211,7 @@ impl Runtime {
                 contract_section: ContractSection::Null,
                 contract_return_data: Cell::new(None),
                 logs,
-                memory: None,
+                memory: Some(memory.clone()),
                 objects: RefCell::new(vec![]),
                 verifying_block_height,
                 block_target,
@@ -214,6 +223,8 @@ impl Runtime {
 
         let imports = imports! {
             "env" => {
+                "memory" => memory,
+
                 "drk_log_" => Function::new_typed_with_env(
                     &mut store,
                     &ctx,