redis/README.md
2019-08-14 18:14:38 +03:00

52 lines
1.5 KiB
Markdown

# Redis
Redis fork ported to WebAssembly and adapted for the Fluence network. More info could be found [here](https://medium.com/fluence-network/porting-redis-to-webassembly-with-clang-wasi-af99b264ca8).
# How to build
This app could be built either with docker
```bash
docker-compose up
```
or by Makefile with [wasi-sdk](https://github.com/CraneStation/wasi-sdk) installed
```bash
make
```
## Prerequisites before deploying to Fluence
The built Redis would have four imports WASI syscalls and before deploying it to the Fluence network, it needs to get rid of them. The most simplest way is to use wasm2wat/wat2wasm utilities from [binaryen](https://github.com/WebAssembly/binaryen):
- translate obtained wasm file to the text representation
```bash
wasm2wat redis.wasm -o redis.wat
```
- replace the following strings
```wasm
(import "wasi_unstable" "fd_fdstat_get" (func $__wasi_fd_fdstat_get (type 1)))
(import "wasi_unstable" "fd_close" (func $__wasi_fd_close (type 5)))
(import "wasi_unstable" "fd_seek" (func $__wasi_fd_seek (type 9)))
(import "wasi_unstable" "fd_write" (func $__wasi_fd_write (type 6)))
```
with
```wasm
(func $__wasi_fd_close (type 5) (param i32)(result i32)
i32.const 0
)
(func $__wasi_fd_fdstat_get (type 1) (param i32 i32)(result i32)
i32.const 0
)
(func $__wasi_fd_seek (type 9) (param i32 i64 i32 i32)(result i32)
i32.const 0
)
(func $__wasi_fd_write (type 6) (param i32 i32 i32 i32)(result i32)
i32.const 0
)
```
- finally, translate it back to the Wasm:
```bash
wat2wasm redis.wat -o redis.wasm
```