https://github.com/dineshpinto/gossip-protocol-rs

Simulating a gossip protocol with Byzantine nodes in Rust with PyO3 Python bindings

https://github.com/dineshpinto/gossip-protocol-rs

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (6.1%) to scientific vocabulary

Keywords

blockchain gossip-protocol maturin pyo3 rust
Last synced: 4 months ago · JSON representation

Repository

Simulating a gossip protocol with Byzantine nodes in Rust with PyO3 Python bindings

Basic Info
  • Host: GitHub
  • Owner: dineshpinto
  • License: mit
  • Language: Rust
  • Default Branch: main
  • Homepage:
  • Size: 1.97 MB
Statistics
  • Stars: 2
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
blockchain gossip-protocol maturin pyo3 rust
Created over 2 years ago · Last pushed over 2 years ago
Metadata Files
Readme License

README.md

test codecov

gossip-protocol-rs

A blazingly-fast implementation of a synchronous gossip protocol in Rust with PyO3 Python bindings.

Build Rust library

bash cargo build --release cargo run --release

Build Python bindings (optional, for data analytics)

Add crate-type = ["cdylib"] under [lib] to Cargo.toml, then:

bash poetry install --no-root poetry run maturin build --release poetry add target/wheels/*.whl

Call the Rust functions from Python

```ipython

from gossipprotocolrs import pyrungossipprotocol res = pyrungossipprotocol(numhonestsample=3000, numadversarialsample=2000, numnonsample=100000, num_peers=8, cycles=50) ```

Simulation

Results Results

See dineshpinto/synchronous-gossip-protocol for a pure Python implementation, along with additional theoretical details.

Benchmark

Uses criterion to benchmark the library.

bash cargo bench

| Param | Value | |-----------------|-------| | numnonsample | 1000 | | numhonest | 6 | | numadversarial | 4 | | num_peers | 6 | | cycles | 200 |

create_nodes_pdf connect_nodes_to_random_peers_pdf evolve_state_pdf

Owner

  • Name: Dinesh Pinto
  • Login: dineshpinto
  • Kind: user
  • Location: Switzerland/Germany

quantum info PhD student @ EPFL, pythonista & rustacean

GitHub Events

Total
Last Year

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Dependencies

.github/workflows/rust.yml actions
  • Gr1N/setup-poetry v8 composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
Cargo.lock cargo
  • 101 dependencies
Cargo.toml cargo
  • criterion 0.5.1 development
  • counter 0.5.7
  • pyo3 0.19.2
  • rand 0.8.5
poetry.lock pypi
  • 107 dependencies
pyproject.toml pypi
  • maturin ^1.2.3
  • python ^3.11