Code Monkey home page Code Monkey logo

diamond_drops's Introduction

Diamond Drops

Twitter TravisCI License: Unlicense Average time to resolve an issue Percentage of issues still open Built with cargo-make

Get in touch with us on Gitter: Gitter: DropsOfDiamond/Lobby Gitter: DropsOfDiamond/Development

Gitter room for discussion on sharding, e.g. the latest developments in research and implementations.

What are we building?

We are working on a sharding implementation in Rust. The below information may be outdated. For the latest information, please ask on Gitter, while additional information on plans and work tasks is in the issues.

We're implementing sharding according to collaboration with Ethereum research at https://ethresear.ch and other teams which includes tasks outlined in issue #13 as well as:

  • Developing a CLI interface for a Sharding Client in Rust for Proposers and Notaries to use
  • Developing Sharding Manager Contract (SMC) in the Vyper language, which is a smart contract that will be deployed on the Ethereum Mainnet for the Sharding Clients to interact with.
  • Researching how to implement a Sharding P2P Network Protocol.
  • Implementing further planned additions in the sharding roadmap, which is available in the above issue.

For further information please refer to our wiki.

Help support us!

Send a donation to our multi-sig wallet at 0x6D446f9545dBC380A6BBDde8A285A7A8030D4381.

We're looking for more developers!

See here for information. There is a lot of work to do in the sharding roadmap.

Setup guide

Show help menus

  • Command help
cargo run -- --help
  • Sub-command "mode" help
cargo run -- mode --help

Install dependencies

  • Install Rust

  • Update Rust

    rustup update
  • Install Rust Formatter

    rustup component add rustfmt-preview
  • Install Cargo-make Task runner and build tool

    cargo install --force cargo-make
  • Execute specific task runner flow. Default is Makefile.toml

    cargo make --makefile tasks.toml <TASK_NAME>

Clone a fork of the repository

  • Fork the repository https://github.com/Drops-of-Diamond/diamond_drops

  • Clone your fork of the repository (replace below with your Github username):

    git clone https://github.com/<USERNAME>/Diamond-drops;
    cd Diamond-drops
  • Add the "upstream" repository to your remotes and show your list of remotes verbosely

    git remote add upstream https://github.com/Drops-of-Diamond/diamond_drops;
    git remote --verbose
  • Change from the "master" branch to the "develop" branch to see the latest features that are being integrated but are not officially ready for production

Build, Run the code

  • Proposer Mode

    cargo make p
  • Notary Mode

    cargo make n
  • Both Proposer and Notary Modes

    cargo make b
  • All above

    cargo make all

Unit and Integration Tests

  • Run all tests (unit and integration tests for main package and libraries)

    cargo make test-all
  • Watch all tests (polls continuously for code changes during development, automatically running tests, and reports issues)

    cargo make build;
    cargo install cargo-watch;
    cargo make watch;

Show Rust Docs

cargo make docs

View UML Diagram

  • View UML with Google Chrome, Mozilla Firefox, or Brave browser

    cargo make uml-chrome;
    cargo make uml-firefox;
    cargo make uml-brave;
  • Custom

    • Choose an application on your computer to open the SVG (i.e. ls /Applications)
    • Run open -a "<APPLICATION>" "./diagrams/ml.svg"
    • Optionally create a Pull Request to update Makefile.toml

Contibuting guidelines

See this wiki article here.

Introduction

For an introduction to Ethereum, see https://ethereum.org/ or https://github.com/ethereum/wiki/wiki/Ethereum-introduction. For information on sharding and implementations, refer to here.

Why Rust?

After comparing Rust, C++, Go, Javascript and Python, as well as corresponding implementations (Parity, cppethereum, Go-ethereum, ethereumJS and Py-EVM), Rust is most preferable, while I haven't tried being a user of other implementations, so I can't comment on a comparison. Rust has advantages such as safety, concurrency, practicality, better memory safety, zero-cost abstractions, and support for functional and imperative-procedural paradigms.

Further information

This repo and the Drops of Diamond project it belongs to is not a part of or owned by the Ethereum Foundation, nor is it endorsed by the Foundation. A different project name and logo may be used (the logo could use a more modern design rather than just using a photo in the public domain), and alternative proposals are welcome. The Drops of Diamond project is not legally incorporated as of yet, so legally it is not an organisation. That should be done, but probably only as needed once the project is more well-developed.

diamond_drops's People

Contributors

jamesray1 avatar ltfschoen avatar

Watchers

James Cloos avatar ChosunOne avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.