A standalone Aleo prover build upon snarkOS and snarkVM, with multi-threading optimization

Overview

Aleo Light Prover

Introduction

A standalone Aleo prover build upon snarkOS and snarkVM, with multi-threading optimization.

It's called "light" because it won't spin up a full node, but instead will only run the prover part.

This prover only supports operators using my modified code as it relies on the custom messaging protocol to work properly.

Building

Install the dependencies:

rust (>= 1.56)
clang
libssl-dev
pkg-config

Run cargo build --release to build the binary.

Usage

Please refer to the usage help (target/release/aleo-prover --help):

prover 0.2.6
Standalone prover.

USAGE:
    aleo-prover [FLAGS] [OPTIONS] --address 
--pool FLAGS: -d, --debug Enable debug logging -h, --help Prints help information --new-address Generate a new address -V, --version Prints version information OPTIONS: -a, --address
Prover address (aleo1...) -g, --cuda ... Indexes of GPUs to use (starts from 0) Specify multiple times to use multiple GPUs Example: -g 0 -g 1 -g 2 Note: Pure CPU proving will be disabled as each GPU job requires one CPU thread as well -j, --cuda-jobs Parallel jobs per GPU, defaults to 1 Example: -g 0 -g 1 -j 4 The above example will result in 8 jobs in total -o, --log Output log to file -p, --pool Pool address:port -t, --threads Number of threads

Use your own address as the prover address, not the pool's address.

Optimizations

You can specify the number of threads to use by --threads option. The prover will use all available threads by default, but it won't use 100% of them all the time. You can try adjusting the number to see if using more threads gives better proof rate.

You can enable debug logging by --debug option.

When starting the prover, there will be a line of log showing the structure of the thread pools.

About the thread pool configuration

The prover will check if the number of threads can be divided by 12, 10 or 8. It will then create multiple thread pools with that number of threads per pool. Otherwise, the prover will create thread pools with 6 threads per pool, using as many threads as possible up to the specified number.

It's recommended to enable debug logging to observe the time needed for each proof.

Before 0.2.3 the prover could use 4 threads per pool in worse case scenario which might make one proof take longer than 10 seconds to generate. This might make the prover completely miss some short-interval blocks, so in 0.2.3 it's been changed to 6 threads per pool.

GPU support?

GPU support is added in version 0.2.0.

To enable GPU support, use cargo build --release --features enable-cuda when building the binary. Obviously you will need to install the CUDA runtime.

Use -g option to enable GPU support. To use multiple GPUs, use -g multiple times with different GPU indexes.

Use -j option to specify the number of jobs per GPU. The default is 1.

Every GPU job will use a CPU thread as well, so it's really a "GPU accelerated prover" instead of a "GPU prover", as only the scalar multiplication on BLS12-377 curve is GPU accelerated.

snarkVM would load programs to all GPUs in the system but the prover will only use the specified GPUs. It wastes some GPU memory, unfortunately.

Changelog

0.2.7

GPU proving should be slightly faster (~20%).

0.2.6

You can now generate new Aleo addresses by using --new-address option. You can use domain names when specifying the pool address.

0.2.5

Stopped the prover from sending stale shares to pool. Note that you might see the speed reported by the prover to drop a little. However, the actual valid shares are not affected.

0.2.4

GPU proving should be slightly faster (~5-10%).

0.2.3

Changed the thread pool configuration for CPU proving.
Promoted the thread pool configuration log to info level.

0.2.2

Added log file support.
Added extra check for -g option.

0.2.1

Removed OpenCL dependency.

0.2.0

Added GPU support.

0.1.0

Initial release.

License

GPL-3.0-or-later

Comments
  • How can I make it use multiple GPUs ?

    How can I make it use multiple GPUs ?

    2022-12-06T10:09:02.616521Z INFO aleo_prover::prover: Received new work: epoch 617 2022-12-06T10:09:02.616541Z WARN aleo_prover::prover: This version of the prover is only using the first GPU

    I am on tetsnet3-direct-cuda branch and even after passing -g 0 -g 1 it's giving me the above log message, is there any other version of prover which utilizes all gpus ?

    Also its only using 3% of my gpu memory from what I can see.

    opened by aditya-manit 5
  • CUDA build failed

    CUDA build failed

    using CUDA 11.2 on Ubuntu 18.04

    error: linking with `cc` failed: exit status: 1
      |
      = note: "cc" "-m64" "/tmp/rustc34h9Yw/symbols.o" "/root/aleo-prover/target/release/deps/aleo_prover-18d199d49d2a8ded.aleo_prover.1d97f3f0-cgu.0.rcgu.o" "-Wl,--as-needed" "-L" "/root/aleo-prover/target/release/deps" "-L" "/root/aleo-prover/target/release/build/snarkvm-cuda-ecfceb3bcf9c7dd3/out" "-L" "/root/aleo-prover/target/release/build/blst-a1efdb917a5ef45b/out" "-L" "/root/aleo-prover/target/release/build/curl-sys-57f21fcae3bbf520/out/build" "-L" "/root/aleo-prover/target/release/build/libz-sys-299ca258f4d02532/out/lib" "-L" "/root/aleo-prover/target/release/build/libz-sys-299ca258f4d02532/out/lib" "-L" "/root/aleo-prover/target/release/build/ring-e88af84875cf3f54/out" "-L" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/tmp/rustc34h9Yw/libring-c300d20d950cad5b.rlib" "/tmp/rustc34h9Yw/libsnarkvm_cuda-abdc56e5a0f6a673.rlib" "/tmp/rustc34h9Yw/libblst-da5eb185f18af887.rlib" "/tmp/rustc34h9Yw/libcurl_sys-3bf80d05cdb1333e.rlib" "/tmp/rustc34h9Yw/liblibz_sys-97c515cd179fdaae.rlib" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-272ca28f0b8538d5.rlib" "-Wl,-Bdynamic" "-lssl" "-lcrypto" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/root/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/root/aleo-prover/target/release/deps/aleo_prover-18d199d49d2a8ded" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-Wl,-O1" "-nodefaultlibs"
      = note: /root/aleo-prover/target/release/deps/aleo_prover-18d199d49d2a8ded.aleo_prover.1d97f3f0-cgu.0.rcgu.o: In function `rayon_core::thread_pool::ThreadPool::install::{{closure}}':
              aleo_prover.1d97f3f0-cgu.0:(.text._ZN10rayon_core11thread_pool10ThreadPool7install28_$u7b$$u7b$closure$u7d$$u7d$17h2a6910cc806e82e5E+0x192): undefined reference to `snarkvm_ntt'
              /root/aleo-prover/target/release/deps/aleo_prover-18d199d49d2a8ded.aleo_prover.1d97f3f0-cgu.0.rcgu.o: In function `snarkvm_algorithms::msm::variable_base::VariableBase::msm':
              aleo_prover.1d97f3f0-cgu.0:(.text._ZN18snarkvm_algorithms3msm13variable_base12VariableBase3msm17hd2f277f0ea0033ebE+0x53): undefined reference to `snarkvm_msm'
              collect2: error: ld returned 1 exit status
    
      = help: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
      = note: use the `-l` flag to specify native libraries to link
      = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)
    
    opened by emkman 4
  • Disconnected from beacon,how can i do it

    Disconnected from beacon,how can i do it

    there is some time error: Disconnected from beacon 2022-12-02T01:17:04.989108Z ERROR aleo_prover::client_direct: Disconnected from beacon 2022-12-02T01:17:09.893921Z INFO aleo_prover::prover: Total solutions: 97142 (1m: 42.67 c/s, 5m: 42.68 c/s, 15m: 42.67 c/s, 30m: 42.65 c/s, 60m: --- c/s) 2022-12-02T01:17:09.990959Z INFO aleo_prover::client_direct: Connecting to server... 2022-12-02T01:17:10.145969Z INFO aleo_prover::client_direct: Connected to 138.197.190.94:4133 2022-12-02T01:17:11.009864Z INFO aleo_prover::prover: New proof target: 718072 2022-12-02T01:17:30.274085Z INFO aleo_prover::prover: New proof target: 721351 2022-12-02T01:17:43.953187Z INFO aleo_prover::client_direct: New connection from: 223.80.76.219:22316 2022-12-02T01:17:46.370615Z INFO aleo_prover::client_direct: New connection from: 23.226.73.106:33464 2022-12-02T01:17:55.231205Z INFO aleo_prover::prover: New proof target: 722914 2022-12-02T01:18:09.894895Z INFO aleo_prover::prover: Total solutions: 99704 (1m: 42.70 c/s, 5m: 42.68 c/s, 15m: 42.67 c/s, 30m: 42.65 c/s, 60m: --- c/s) 2022-12-02T01:18:20.256575Z INFO aleo_prover::prover: New proof target: 725741 2022-12-02T01:18:45.259039Z INFO aleo_prover::prover: New proof target: 724960 2022-12-02T01:18:51.212294Z INFO aleo_prover::client_direct: New connection from: 121.182.54.20:44864 2022-12-02T01:19:08.580370Z INFO aleo_prover::client_direct: New connection from: 59.23.202.8:32992 2022-12-02T01:19:09.895382Z INFO aleo_prover::prover: Total solutions: 102264 (1m: 42.67 c/s, 5m: 42.69 c/s, 15m: 42.67 c/s, 30m: 42.65 c/s, 60m: --- c/s) 2022-12-02T01:19:10.246396Z INFO aleo_prover::prover: New proof target: 726376 2022-12-02T01:19:15.835127Z INFO aleo_prover::client_direct: New connection from: 43.155.159.190:57192 2022-12-02T01:19:35.245042Z INFO aleo_prover::prover: New proof target: 725121 2022-12-02T01:19:38.269948Z INFO aleo_prover::client_direct: New connection from: 43.130.196.163:56886 2022-12-02T01:20:00.149194Z ERROR aleo_prover::client_direct: Disconnected from beacon 2022-12-02T01:20:05.150707Z INFO aleo_prover::client_direct: Connecting to server... 2022-12-02T01:20:05.309388Z INFO aleo_prover::client_direct: Connected to 46.101.114.158:4133 2022-12-02T01:20:06.210966Z INFO aleo_prover::prover: New proof target: 726692 2022-12-02T01:20:09.896378Z INFO aleo_prover::prover: Total solutions: 104825 (1m: 42.68 c/s, 5m: 42.69 c/s, 15m: 42.67 c/s, 30m: 42.66 c/s, 60m: --- c/s) 2022-12-02T01:20:25.252812Z INFO aleo_prover::prover: New proof target: 727002 2022-12-02T01:20:33.919791Z INFO aleo_prover::client_direct: New connection from: 5.75.225.60:39456 2022-12-02T01:20:50.273738Z INFO aleo_prover::prover: New proof target: 728744 2022-12-02T01:20:58.218131Z INFO aleo_prover::client_direct: New connection from: 101.71.224.248:36714 2022-12-02T01:21:09.897904Z INFO aleo_prover::prover: Total solutions: 107387 (1m: 42.70 c/s, 5m: 42.68 c/s, 15m: 42.67 c/s, 30m: 42.66 c/s, 60m: --- c/s) 2022-12-02T01:21:15.224064Z INFO aleo_prover::prover: New proof target: 734295 2022-12-02T01:21:40.227738Z INFO aleo_prover::prover: New proof target: 735886 2022-12-02T01:21:43.174365Z INFO aleo_prover::client_direct: New connection from: 59.23.202.115:51318 2022-12-02T01:21:45.979206Z INFO aleo_prover::client_direct: New connection from: 49.51.99.244:41746

    opened by xuxiepeng 4
  • CUDA  failed

    CUDA failed

    Error loading cuda program: IO(Os { code: 2, kind: NotFound, message: "No such file or directory" }) CUDA failed, moving to the next MSM method CUDA failed, moving to the next MSM method CUDA failed, moving to the next MSM method

    opened by kubowoo 2
  • error: no matching package named `snarkos-node-messages` found

    error: no matching package named `snarkos-node-messages` found

    when i join node aleo to pool it show like that, pls support me fix cargo build --release error: no matching package named snarkos-node-messages found location searched: https://github.com/AleoHQ/snarkOS.git?rev=8f7f6d9#8f7f6d99 required by package aleo-prover v0.5.1 (/root/aleo-prover)

    opened by thuandm1 1
  • Warnings

    Warnings

    Are its okay? Ubuntu 20

    2022-12-06T22:47:50.851172Z  INFO aleo_prover::prover: New proof target: 40254385
    2022-12-06T22:47:50.851198Z  INFO aleo_prover::prover: Received new work: epoch 630
    2022-12-06T22:47:50.851222Z  WARN aleo_prover::prover: This version of the prover is only using the first GPU
    
    Running command: "nvcc" "/root/.aleo/resources/cuda/asm_cuda.cu" "/root/.aleo/resources/cuda/blst_377_ops.cu" "/root/.aleo/resources/cuda/msm.cu" "--generate-code=arch=compute_60,code=sm_60" "--generate-code=arch=compute_70,code=sm_70" "--generate-code=arch=compute_75,code=sm_75" "--generate-code=arch=compute_80,code=sm_80" "--generate-code=arch=compute_86,code=sm_86" "-fatbin" "-dlink" "-o" "/root/.aleo/resources/cuda/msm.fatbin"
    /root/.aleo/resources/cuda/asm_cuda.cu(599): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/asm_cuda.cu(702): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/asm_cuda.cu(599): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/asm_cuda.cu(702): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/asm_cuda.cu(599): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/asm_cuda.cu(702): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/asm_cuda.cu(599): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/asm_cuda.cu(702): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/asm_cuda.cu(599): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/asm_cuda.cu(702): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/asm_cuda.cu(599): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/asm_cuda.cu(702): warning #549-D: variable "r" is used before its value is set
    
    /root/.aleo/resources/cuda/blst_377_ops.cu(63): warning #174-D: expression has no effect
    
    /root/.aleo/resources/cuda/blst_377_ops.cu(63): warning #174-D: expression has no effect
    
    /root/.aleo/resources/cuda/blst_377_ops.cu(63): warning #174-D: expression has no effect
    
    /root/.aleo/resources/cuda/blst_377_ops.cu(63): warning #174-D: expression has no effect
    
    /root/.aleo/resources/cuda/blst_377_ops.cu(63): warning #174-D: expression has no effect
    
    2022-12-06T22:48:04.209325Z  INFO aleo_prover::prover: New proof target: 40176294
    /root/.aleo/resources/cuda/blst_377_ops.cu(63): warning #174-D: expression has no effect
    
    
    Using 'Tesla V100-SXM2-16GB' as CUDA device with 16945709056 bytes of memory
    2022-12-06T22:48:29.220636Z  INFO aleo_prover::prover: New proof target: 40211739
    2022-12-06T22:48:39.140920Z  INFO aleo_prover::prover: Total solutions: 970 (1m: --- c/s, 5m: --- c/s, 15m: --- c/s, 30m: --- c/s, 60m: --- c/s)
    2022-12-06T22:48:54.225033Z  INFO aleo_prover::prover: New proof target: 40150609
    2022-12-06T22:49:19.214605Z  INFO aleo_prover::prover: New proof target: 40316194
    2022-12-06T22:49:39.142668Z  INFO aleo_prover::prover: Total solutions: 2948 (1m: 32.97 c/s, 5m: --- c/s, 15m: --- c/s, 30m: --- c/s, 60m: --- c/s)
    
    opened by mazepas 1
  • Getting sppark error

    Getting sppark error

    I am trying to run it with cuda feature but getting the below stack trace

    Branch: testnet3-direct-cuda

    error: failed to run custom build command for `sppark v0.1.2 ([https://github.com/supranational/sppark?rev=48f6ac6#48f6ac60)`](https://github.com/supranational/sppark?rev=48f6ac6#48f6ac60))
    
    Caused by:
      process didn't exit successfully: `/home/aditya/aleo-prover/target/release/build/sppark-329937d95720d5f1/build-script-build` (exit status: 1)
      --- stdout
      cargo:rerun-if-changed=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/ec
      cargo:rerun-if-changed=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/ff
      cargo:rerun-if-changed=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/ntt
      cargo:rerun-if-changed=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/msm
      cargo:rerun-if-changed=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/util
      cargo:ROOT=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6
      TARGET = Some("x86_64-unknown-linux-gnu")
      OPT_LEVEL = Some("3")
      HOST = Some("x86_64-unknown-linux-gnu")
      cargo:rerun-if-env-changed=CXX_x86_64-unknown-linux-gnu
      CXX_x86_64-unknown-linux-gnu = None
      cargo:rerun-if-env-changed=CXX_x86_64_unknown_linux_gnu
      CXX_x86_64_unknown_linux_gnu = None
      cargo:rerun-if-env-changed=HOST_CXX
      HOST_CXX = None
      cargo:rerun-if-env-changed=CXX
      CXX = None
      cargo:rerun-if-env-changed=NVCC_x86_64-unknown-linux-gnu
      NVCC_x86_64-unknown-linux-gnu = None
      cargo:rerun-if-env-changed=NVCC_x86_64_unknown_linux_gnu
      NVCC_x86_64_unknown_linux_gnu = None
      cargo:rerun-if-env-changed=HOST_NVCC
      HOST_NVCC = None
      cargo:rerun-if-env-changed=NVCC
      NVCC = None
      cargo:rerun-if-env-changed=CXXFLAGS_x86_64-unknown-linux-gnu
      CXXFLAGS_x86_64-unknown-linux-gnu = None
      cargo:rerun-if-env-changed=CXXFLAGS_x86_64_unknown_linux_gnu
      CXXFLAGS_x86_64_unknown_linux_gnu = None
      cargo:rerun-if-env-changed=HOST_CXXFLAGS
      HOST_CXXFLAGS = None
      cargo:rerun-if-env-changed=CXXFLAGS
      CXXFLAGS = None
      cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
      CRATE_CC_NO_DEFAULTS = None
      DEBUG = Some("false")
      CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
      running: "nvcc" "-ccbin=c++" "-Xcompiler" "-O3" "-Xcompiler" "-ffunction-sections" "-Xcompiler" "-fdata-sections" "-Xcompiler" "-fPIC" "-m64" "-I" "/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6" "-Xcompiler" "-Wall" "-Xcompiler" "-Wextra" "-o" "/home/aditya/aleo-prover/target/release/build/sppark-ce7f4abd18d08224/out/src/lib.o" "-c" "--device-c" "src/lib.cpp"
      cargo:warning=In file included from /home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/util/gpu_t.cuh:9,
      cargo:warning=                 from src/lib.cpp:2:
      cargo:warning=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/util/gpu_t.cuh: In member function ‘void* stream_t::Dmalloc(size_t) const’:
      cargo:warning=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/util/gpu_t.cuh:29:17: error: ‘cudaMallocAsync’ was not declared in this scope; did you mean ‘cudaMallocArray’?
      cargo:warning=   29 |         CUDA_OK(cudaMallocAsync(&d_ptr, sz, stream));
      cargo:warning=      |                 ^~~~~~~~~~~~~~~
      cargo:warning=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/util/exception.cuh:32:24: note: in definition of macro ‘CUDA_OK’
      cargo:warning=   32 |     cudaError_t code = expr;                                \
      cargo:warning=      |                        ^~~~
      cargo:warning=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/util/gpu_t.cuh: In member function ‘void stream_t::Dfree(void*) const’:
      cargo:warning=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/util/gpu_t.cuh:33:17: error: ‘cudaFreeAsync’ was not declared in this scope; did you mean ‘cudaFreeArray’?
      cargo:warning=   33 |     {   CUDA_OK(cudaFreeAsync(d_ptr, stream));   }
      cargo:warning=      |                 ^~~~~~~~~~~~~
      cargo:warning=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/util/exception.cuh:32:24: note: in definition of macro ‘CUDA_OK’
      cargo:warning=   32 |     cudaError_t code = expr;                                \
      cargo:warning=      |                        ^~~~
      cargo:warning=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/util/gpu_t.cuh: In constructor ‘pin_t<T>::pin_t(const T*, size_t)’:
      cargo:warning=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/util/gpu_t.cuh:230:59: error: ‘cudaHostRegisterReadOnly’ was not declared in this scope; did you mean ‘cudaHostRegisterDefault’?
      cargo:warning=  230 |                                  cudaHostRegisterPortable|cudaHostRegisterReadOnly));
      cargo:warning=      |                                                           ^~~~~~~~~~~~~~~~~~~~~~~~
      cargo:warning=/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6/util/exception.cuh:32:24: note: in definition of macro ‘CUDA_OK’
      cargo:warning=   32 |     cudaError_t code = expr;                                \
      cargo:warning=      |                        ^~~~
      exit status: 1
    
      --- stderr
    
    
      error occurred: Command "nvcc" "-ccbin=c++" "-Xcompiler" "-O3" "-Xcompiler" "-ffunction-sections" "-Xcompiler" "-fdata-sections" "-Xcompiler" "-fPIC" "-m64" "-I" "/home/aditya/.cargo/git/checkouts/sppark-766e0a6fee265121/48f6ac6" "-Xcompiler" "-Wall" "-Xcompiler" "-Wextra" "-o" "/home/aditya/aleo-prover/target/release/build/sppark-ce7f4abd18d08224/out/src/lib.o" "-c" "--device-c" "src/lib.cpp" with args "nvcc" did not execute successfully (status code exit status: 1).
    
    
    warning: build failed, waiting for other jobs to finish...
    
    opened by aditya-manit 1
Releases(v0.5.1)
Owner
Haruka Ma
Add a bio
Haruka Ma
Scalable layer-2 registry and prover for subspaces

Subspacer Note: this does not fully implement the functionality described in the Spaces protocol yet and should be considered a proof of concept. Scal

Spaces Protocol 5 Feb 22, 2024
An experimental rust zksnarks compiler with embeeded bellman-bn128 prover

Za! An experimental port of the circom zk-SNARK compiler in Rust with embedded bellman-bn128 prover. I created it as a PoC port of the existing JavaSc

adria0.eth 39 Aug 26, 2022
STARK Cairo prover using lambdaworks

STARK Cairo prover using lambdaworks. Cairo (CPU Algebraic Intermediate Representation) is a programming language for writing provable programs, where one party can prove to another that a certain computation was executed correctly. Cairo and similar proof systems can be used to provide scalability to blockchains.

Lambdaclass 18 Jun 13, 2023
Create a Stark prover & verifier from zero

stark-from-zero Create a Stark prover and verifier from zero, with Rust. Hopefully without external libraries. The point is to create a minimal versio

Lauri Peltonen 7 May 7, 2024
Linearly Constrained Separable Optimization

LCSO (Linearly Constrained Separable Optimization) Authors The original algorithms here were developed by Nicholas Moehle, and this project was author

BlackRock 28 Oct 1, 2022
A blazingly fast compiling & optimization tool for CosmWasm smart contracts.

cw-optimizoor A blazingly fast alternative to CosmWasm/rust-optimizer for compiling & optimizing CW smart contracts. It's primarily meant to speed up

Sebastian Mandrean 37 Apr 15, 2023
A fast and secure multi protocol honeypot.

Medusa A fast and secure multi protocol honeypot that can mimic realistic devices running ssh, telnet, http, https or any other tcp and udp servers. W

Simone Margaritelli 268 Dec 26, 2022
Two-party and multi-party ECDSA protocols based on class group with Rust

CG-MPC-ECDSA This project aims to implement two-party and multi-party ECDSA protocols based on class group with Rust. It currently includes schemes de

LatticeX Foundation 16 Mar 17, 2022
Single and multi-threaded custom ingestion crate for Stellar Futurenet, written in Rust.

rs-ingest Ingestion library written in rust for Futurenet rs-ingest Ingestion library written in rust for Futurenet Features Running offline Single-th

Xycloo Labs 3 Aug 14, 2023
Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world.

Note to readers: On December 1, 2020, the Libra Association was renamed to Diem Association. The project repos are in the process of being migrated. A

Diem 16.7k Jan 8, 2023
Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world.

Note to readers: On December 1, 2020, the Libra Association was renamed to Diem Association. The project repos are in the process of being migrated. A

Diem 16.7k Jan 9, 2023
multi-market crank for serum-dex

A performance and cost optimized serum-dex crank that allows combining multiple market cranking instructions into a single transaction, while concurrently generating the crank instructions allowing for increased throughput.

SolFarm 33 Nov 23, 2022
An encrypted multi client messaging system written in pure Rust

?? Preamble This is a pure Rust multi-client encrypted messaging system, also known as Edode's Secured Messaging System. It is an end-to-end(s) commun

Edode 3 Sep 16, 2022
Eternally liquid. Forward compatible. Nested, conditional, & Multi-resourced NFTs.

RMRK Substrate Rust Setup First, complete the basic Rust setup instructions. Run Use Rust's native cargo command to build and launch the template node

RMRK Team 67 Dec 25, 2022
Multi Party Key Management System (KMS) for Secp256k1 Elliptic curve based digital signatures.

Key Management System (KMS) for curve Secp256k1 Multi Party Key Management System (KMS) for Secp256k1 Elliptic curve based digital signatures. Introdu

[ZenGo X] 61 Dec 28, 2022
Rust implementation of multi-party Schnorr signatures over elliptic curves.

Multi Party Schnorr Signatures This library contains several Rust implementations of multi-signature Schnorr schemes. Generally speaking, these scheme

[ZenGo X] 148 Dec 15, 2022
Cryptle: a secure multi-party Wordle clone with Enarx

Cryptle: a secure multi-party Wordle clone with Enarx Wordle is a popular web-based game, where a single player has to guess a five-letter word in six

Nick Vidal 2 May 9, 2022
User-friendly secure computation engine based on secure multi-party computation

CipherCore If you have any questions, or, more generally, would like to discuss CipherCore, please join the Slack community. See a vastly extended ver

CipherMode Labs 356 Jan 5, 2023
Ethereum JSON-RPC multi-transport client. Rust implementation of web3 library

Ethereum JSON-RPC multi-transport client. Rust implementation of web3 library. ENS address: rust-web3.eth

Tomasz Drwięga 1.2k Jan 8, 2023