diff --git a/.github/workflows/book.yml b/.github/workflows/book.yml index fcddcc651..ca73dd434 100644 --- a/.github/workflows/book.yml +++ b/.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" diff --git a/README.md b/README.md index 83f4be599..1ccd6324a 100644 --- a/README.md +++ b/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` diff --git a/contrib/dependency_setup.sh b/contrib/dependency_setup.sh index 26572d9dd..830e14b52 100644 --- a/contrib/dependency_setup.sh +++ b/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 } diff --git a/contrib/docker/Dockerfile.debian b/contrib/docker/Dockerfile.debian index 82a00109f..457cf1471 100644 --- a/contrib/docker/Dockerfile.debian +++ b/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}" diff --git a/contrib/docker/Dockerfile.fedora b/contrib/docker/Dockerfile.fedora index 1e486d830..b0c3d5f27 100644 --- a/contrib/docker/Dockerfile.fedora +++ b/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}" diff --git a/contrib/docker/Dockerfile.ubuntu b/contrib/docker/Dockerfile.ubuntu index 55053b0bd..9de0a605b 100644 --- a/contrib/docker/Dockerfile.ubuntu +++ b/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}" diff --git a/contrib/docker/riscv.Dockerfile b/contrib/docker/riscv.Dockerfile index 16fcde362..a0700174e 100644 --- a/contrib/docker/riscv.Dockerfile +++ b/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 && \ diff --git a/src/contract/dao/Makefile b/src/contract/dao/Makefile index 29af4d3bd..f62ad2d56 100644 --- a/src/contract/dao/Makefile +++ b/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) \ diff --git a/src/contract/deployooor/Makefile b/src/contract/deployooor/Makefile index f7a4bf424..9bab67717 100644 --- a/src/contract/deployooor/Makefile +++ b/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) \ diff --git a/src/contract/money/Makefile b/src/contract/money/Makefile index 3ca939570..0d75ca9c5 100644 --- a/src/contract/money/Makefile +++ b/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) \ diff --git a/src/runtime/vm_runtime.rs b/src/runtime/vm_runtime.rs index baa4cee80..ce75f5238 100644 --- a/src/runtime/vm_runtime.rs +++ b/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,