• Stars
    star
    157
  • Rank 238,399 (Top 5 %)
  • Language
    Rust
  • License
    Mozilla Public Li...
  • Created almost 5 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The reference Dusk platform implementation and tools

Build Status codecov

Rusk

The official Dusk protocol node client and smart contract platform.

Unstable : No guarantees can be made regarding the API stability, the project is in development.

Prerequisites

  • Rust 1.71 nightly or higher
  • GCC 13 or higher
  • Clang 16 or higher

Specification Requirements

Minimum Specifications

CPU RAM Storage Network Connection
2 cores; 2 GHz 1 GB 60 GB 1 Mbps

Recommended Specifications

CPU RAM Storage Network Connection
4 cores; 2 GHz 4 GB 250 GB 10 Mbps

Build and Tests

To build rusk from source, Rust, GCC and Clang are required. Once the dependencies are installed, you can simply run the following command to compile everything:

make

To run tests:

make test

That will also compile all the genesis contracts and its associated circuits.

Use

Prerequisites:

# Generate the keys used by the circuits
make keys

# Compile all the genesis contracts
make wasm

# Copy example consensus.keys
mkdir -p ~/.dusk/rusk
cp examples/consensus.keys ~/.dusk/rusk/consensus.keys

Run a single-node cluster with example's data

# Generate genesis state
cargo r --release -p rusk -- recovery-state --init examples/genesis.toml -o /tmp/example.state

# Launch a local ephemeral node
DUSK_CONSENSUS_KEYS_PASS=password cargo r --release -p rusk -- -s /tmp/example.state

Contracts compilation

To just compile all the genesis contracts without running the server:

make contracts

To generate a specific genesis contract:

# generate the wasm for `transfer` contract
make wasm for=transfer

See also make help for all the available commands

Docker support

It's also possible to run a local ephemeral node with Docker.

To build the Docker image:

docker build -t rusk .

To run Rusk inside a Docker container:

docker run -p 9000:9000/udp -p 8080:8080/tcp rusk

Port 9000 is used for Kadcast, port 8080 for the HTTP and GraphQL APIs.

How to run a node

For more information on running a node, see our wiki:

License

The Rusk software is licensed under the Mozilla Public License Version 2.0.

More Repositories

1

plonk

Pure Rust implementation of the PLONK ZKProof System done by the Dusk team
Rust
543
star
2

Poseidon252

Reference implementation for the Poseidon Snark-friendly Hash algorithm.
Rust
209
star
3

dusk-blockchain

Reference implementation of the DUSK Network node, written in Golang
Go
102
star
4

rusk-vm

The Dusk Rust WASM VM implementation
Rust
54
star
5

dusk-zerocaf

Zerocaf: A library built for EC operations in Zero Knowledge.
Rust
53
star
6

kelvin

Merkle tree toolkit
Rust
46
star
7

wallet-cli

Dusk wallet CLI and library
Rust
24
star
8

piecrust

General purpose virtual machine for running WASM smart contracts
Rust
22
star
9

Hades252

Implementation of the Hades permutation algorithm used in Poseidon Hashes with ZKProof capabilities.
Rust
22
star
10

kadcast

Official rust implementation of the Kadcast P2P protocol for ultra-efficient message dissemination within Dusk Network
Rust
22
star
11

dusk-blindbid

Implementation of the blindbid logic within Zero Knowledge Proofs
Rust
21
star
12

node-installer

Easy to use tool to install a Dusk node with extra utilities
Shell
21
star
13

dusk-poseidon-merkle

Rust
20
star
14

phoenix

Privacy-preserving transaction model by Dusk
Rust
18
star
15

microkelvin

Rust
16
star
16

plonkup

Proof system with plonkup back-end proving arguments
Rust
14
star
17

plonk_gadgets

Container of general purpose gadgets used across Dusk Network's circuit implementations.
Rust
13
star
18

schnorr

Schnorr Signature algorithm usiing BLS12-381 Curve
Rust
13
star
19

dusk-crypto

Cryptographic primitives created for the Dusk Network ecosystem but widely applicable everywhere else
Go
12
star
20

canonical

A no_std, host-allocating serialization library
Rust
10
star
21

phoenix-archived

Rust
9
star
22

whitepaper

The Dusk Network enables fast, anonymous and secure bi-directional transmission of data and streaming among peers, paid for by a decentralized digital currency named DUSK
TeX
8
star
23

citadel

Implementation of Citadel, a self-sovereign identity system integrated in Dusk.
Rust
8
star
24

dusk-kelvin-map

Rust
8
star
25

dusk-hamt

HAMT datastructure
Rust
7
star
26

exu

A library to run WebAssembly code as parallel, isolated and abortable functions in JS engine
JavaScript
7
star
27

dusk-pki

Dusk Public Key Infrastructure
Rust
7
star
28

nstack

Stack data structure
Rust
6
star
29

dusk-protobuf

Makefile
6
star
30

wallet-core

The library responsible for the core functionality of a wallet
Rust
6
star
31

jubjub-schnorr

Rust implementation of the Schnorr signature scheme for the JubJub elliptic curve group, using the Poseidon hash function.
Rust
6
star
32

dusk-bytes

Rust
5
star
33

bulletproofs_gadgets

A container to test bulletproofs gadgets implementations
Rust
5
star
34

dusk-go-poseidon

Go
5
star
35

bls12_381-sign

Implementation of BLS signatures on the BLS12-381 curve in Rust.
Rust
5
star
36

consensus

Pure Rust implementation of the Proof-of-Stake-based consensus mechanism done by the Dusk-Network team.
5
star
37

dusk-wallet-cli

Command line application for managing a DUSK wallet and a full/light node, by communicating over JSON-RPC.
Go
4
star
38

merkle-benchmarks

Benchmarking Merkle tree structures
Rust
4
star
39

ElGamal

Implementation of the ElGamal encryption scheme
Rust
4
star
40

trusted-setup

Powers of tau MPC ceremony coordinated by Dusk.
Rust
4
star
41

dusk-blindbidproof

Implementation of Dusk Network privacy-oriented PoS protocol, aka Proof of Blind Bid
Rust
4
star
42

bls12_381-bls

Implementation of BLS signatures using the BLS12-381 curve
Rust
4
star
43

merkle

A sparsely populated Merkle tree, parametrized over its height and arity.
Rust
3
star
44

cake-rusk

Writing a Smart Contract is a piece of `cake!`
Rust
3
star
45

eslint-config

βš™οΈ Dusk ESLint configuration
JavaScript
3
star
46

dusk-example-contract

Rust
3
star
47

EdDSA

Implementation of the EdDSA for JubJub curve group using Poseidon as the hash function
Rust
3
star
48

prestaking-contract

This repository contains the Solidity code, test cases and documentation, regarding the DUSK pre-staking Ethereum smart contract.
JavaScript
3
star
49

dusk-abi

Dusk ABI for Rusk VM
Rust
3
star
50

avltree

An AVL tree data structure, implemented on the Kelvin library in Rust.
Rust
3
star
51

cargo-bake

A cargo extension which bake your Rusk Smart Contracts made with love & cake!
Rust
3
star
52

rusk-mirror

[MIRROR] Dusk's Smart Contract Platform
Rust
3
star
53

rusk-contract

Set of macros to help building contracts for Rusk VM
Rust
3
star
54

cargo-dusk-analyzer

Cargo subcommand to analyzing and doing some reaility check on our rust repos
Rust
3
star
55

rusk-schema

Schema definition for all of the Rusk GRPC services
2
star
56

go-analyzer

A modular, extensible linting tool, which is used to enforce custom checks on Go repos in the Dusk organization.
Go
2
star
57

poseidon252-hash

Rust
2
star
58

phoenix-abi

FFI for Phoenix host functions, used by rusk-vm.
Rust
2
star
59

transparent-token

A transparent token on Dusk
Rust
2
star
60

audits

This GitHub repository hosts comprehensive audit reports for Dusk, ensuring transparency and security for its users and stakeholders
2
star
61

docs-public

Astro
1
star
62

vm-proto

Rust
1
star
63

dusk-ipc

Inter-Process Communication framework for composing applications as discrete modules connected by an event bus
Makefile
1
star
64

plang

A compiler for a language representing plonk circuits
Rust
1
star
65

dusk-deploy-cli

Tool for smart contracts' deployment to Dusk blockchain.
Rust
1
star
66

dusk-varint

no_std varint encoding
Rust
1
star
67

docker-elk

Shell
1
star
68

.github

Community Health File repo
1
star
69

dusk-tlv

Rust
1
star
70

bls12_381-sign-go

Wrapper library for CGo calls to the dusk-bls12_381-sign crate.
1
star
71

prestaking-provisioner

Ethereum smart contract, test cases and documentation for the Provisioner Prestaking campaign.
Solidity
1
star
72

dusk-wallet-dat

The wallet.dat file format parser and generator
Rust
1
star
73

safe

Sponge API for Field Elements
Rust
1
star