ASURA implementation in Rust. A better alternative of consistent-hashing.

Related tags

Cryptography ASURA
Overview

ASURA (阿修羅)

Crates.io documentation

ASURA implementation in Rust. A better alternative of consistent-hashing.

What is ASURA?

ASURA, like best-known consistent-hashing, is an algorithm to compute the placement node from a key. ASURA is a abbreviation of Advanced Scalable and Uniform storage by Random number Algorithm.

The basic: ASURA is a class of Monte Carlo method because it uses random number to choose the placement node. Nodes are mapped to segments (non-overlapping but allowing gaps) and it generates random numbers until hit one.

The core of the ASURA is ASURA random number generator. Because of the property, we can add or remove a node without changing most of the previous placements just like consistent-hashing.

For more detail, you can read the paper here: https://arxiv.org/ftp/arxiv/papers/1309/1309.7720.pdf.

Author

Akira Hayakawa ([email protected])

You might also like...
Proof-of-concept Typst webapp alternative

Proof-of-Concept Typst Webapp Alternative With the following features: Collaborative editing (using operational-transform and referenced from ekzhang/

Marvin-Blockchain-Rust: A Rust-based blockchain implementation, part of the Marvin blockchain project.

Marvin Blockchain - Rust Implementation Welcome to the Rust implementation of the Marvin Blockchain. This project is part of a comparative study on bu

IBC modules and relayer - Formal specifications and Rust implementation

ibc-rs Rust implementation of the Inter-Blockchain Communication (IBC) protocol. This project comprises primarily four crates: The ibc crate defines t

A Rust implementation of BIP-0039

bip39-rs A Rust implementation of BIP0039 Changes See the changelog file, or the Github releases for specific tags. Documentation Add bip39 to your Ca

Official Rust implementation of the Nimiq protocol
Official Rust implementation of the Nimiq protocol

Nimiq Core implementation in Rust (core-rs) Rust implementation of the Nimiq Blockchain Core Nimiq is a frictionless payment protocol for the web. Thi

Rust implementation of Zcash protocol

The Parity Zcash client. Gitter Blog: Parity teams up with Zcash Foundation for Parity Zcash client Installing from source Installing the snap Running

A (mostly) pure-Rust implementation of various cryptographic algorithms.

Rust-Crypto A (mostly) pure-Rust implementation of various common cryptographic algorithms. Rust-Crypto seeks to create practical, auditable, pure-Rus

A pure-Rust implementation of group operations on Ristretto and Curve25519
A pure-Rust implementation of group operations on Ristretto and Curve25519

curve25519-dalek A pure-Rust implementation of group operations on Ristretto and Curve25519. curve25519-dalek is a library providing group operations

[INACTIVE] TLS 1.2 implementation in Rust

suruga is Rust implementation of TLS 1.2. It currently implements some core parts of TLS 1.2, NIST P-256 ECDHE and chacha20-poly1305. Usage extern cra

Comments
  • bench: search multiple candidates

    bench: search multiple candidates

    Let

    • n: number of nodes
    • k: choose k nodes

    and assume each node has the same cap.

    The number of searching segment table will be

    sum (n/(n-i)) for i = [0,k)

    for example, if n=10 and k=3 it will be 1+10/9+10/8 ~ 3

    Write benchmark to check if the actual execution time can be explained by the math.

    opened by akiradeveloper 1
  • Implement serializer/deserializer

    Implement serializer/deserializer

    The minimum information to reconstruct the Cluster is h: HashMap<u64, Segment>.

    Implement Cluster::serialize(Cluster, serializer) -> Vec<u8> and Cluster::deserialize(&[u8], deserializer) -> Cluster. The requirement for the serializer is only capability to serialize the HashMap to Vec<u8>.

    opened by akiradeveloper 0
  • Add distribution comparison

    Add distribution comparison

    Add a program to compare the distribution between ASURA, consistent_hash and rendezvous_hash.

    The condition:

    1. n nodes. all nodes has the equal capacity.
    2. consistent_hash varies the # of virtual nodes.
    3. place k keys and see how they distribute (compared by variance)
    opened by akiradeveloper 0
Owner
Akira Hayakawa
I am just a very good Rust programmer.
Akira Hayakawa
A fast, non-cryptographic, minimally DoS-resistant hashing algorithm for Rust.

Foldhash This repository contains foldhash, a fast, non-cryptographic, minimally DoS-resistant hashing algorithm implemented in Rust designed for comp

Orson Peters 155 Oct 23, 2024
Password hashing functions / KDFs

RustCrypto: Password Hashes Collection of password hashing algorithms, otherwise known as password-based key derivation functions, written in pure Rus

Rust Crypto 387 Dec 28, 2022
Incremental hashing based on curve25519-dalek

A toy project on building an incremental hash function using the Ristretto elliptic curve for me to learn Rust. Example code from examples/main.rs: us

Alin Tomescu 2 Apr 1, 2022
Expose various non-cryptographic hashing functions with Digest traits

noncrypto-digests Expose various non-cryptographic hashing functions with Digest traits. This allows users to use any hashing function with the same t

Yuri Astrakhan 3 Dec 9, 2023
kloak-rs: alternative implementation of kloak

An anti keystroke deanonymization tool that introduces random delays between key presses and releases to deter adversaries that use keystroke timing for identification.

Cliff Maceyak 4 Aug 22, 2022
QuickDash A modern alternative to QuickSFV using Rust.

QuickDash A modern alternative to QuickSFV using Rust. It's supports BLAKE3 and BLAKE2 hashes, CRC32, MD5, SHA1, SHA2, SHA3, xxHash The docs for user

null 11 Nov 9, 2022
Alternative Mizar proof checker written in Rust

Mizar proof checker This is a (still experimental) proof checker for the Mizar language. To compile the project, get Rust 1.67 or later (https://rustu

Mario Carneiro 16 Apr 13, 2023
a simple rust service for Scheduling commands execution on time basis, an easy alternative to cron

Tasker A Simple crate which provides a service and a configuration API for genrating commands based tasks ,on time basis. Installation build from sour

Daniel Madmon 5 Jun 1, 2023
Alternative Free Identity System

Alfis Alternative Free Identity System This project represents a minimal blockchain without cryptocurrency, capable of sustaining any number of domain

Revertron 207 Jan 5, 2023
Alternative client for Substrate-based chains.

Lightweight Substrate and Polkadot client. Introduction smoldot is an alternative client of Substrate-based chains, including Polkadot. There exists t

null 14 Feb 16, 2023