All Projects → iotaledger → Goshimmer

iotaledger / Goshimmer

Licence: apache-2.0
GoShimmer implementation of Coordicide

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Goshimmer

Blue App Iota
IOTA wallet application for Ledger Blue and Nano S
Stars: ✭ 67 (-72.54%)
Mutual labels:  iota, hacktoberfest
Nothing
A simple platformer about nothing
Stars: ✭ 249 (+2.05%)
Mutual labels:  hacktoberfest
Interrogate
Explain yourself! Interrogate a codebase for docstring coverage.
Stars: ✭ 245 (+0.41%)
Mutual labels:  hacktoberfest
Inav Configurator
Stars: ✭ 243 (-0.41%)
Mutual labels:  hacktoberfest
Azurlshortener
An simple and easy Url Shortener
Stars: ✭ 247 (+1.23%)
Mutual labels:  hacktoberfest
Doctl
The official command line interface for the DigitalOcean API.
Stars: ✭ 2,856 (+1070.49%)
Mutual labels:  hacktoberfest
Stm32f1xx Hal
A Rust embedded-hal HAL impl for the STM32F1 family based on japarics stm32f103xx-hal
Stars: ✭ 245 (+0.41%)
Mutual labels:  hacktoberfest
Eslint Plugin Mocha
ESLint rules for mocha
Stars: ✭ 249 (+2.05%)
Mutual labels:  hacktoberfest
Testimo
Testimo is PowerShell module for running health checks for Active Directory (and later on any other server type) against a bunch of different tests
Stars: ✭ 249 (+2.05%)
Mutual labels:  hacktoberfest
Vue Firebase Auth Vuex
Vue Firebase🔥 Authentication with Vuex
Stars: ✭ 248 (+1.64%)
Mutual labels:  hacktoberfest
Hacktoberfest2020
List of beginner-friendly | first-timers-only | up-for-grabs issues (repositories) for Hacktoberfest 2020 | Submit 4 PRs to earn a T-shirt
Stars: ✭ 248 (+1.64%)
Mutual labels:  hacktoberfest
Cleanenv
✨Clean and minimalistic environment configuration reader for Golang
Stars: ✭ 245 (+0.41%)
Mutual labels:  hacktoberfest
Gnuradio
GNU Radio – the Free and Open Software Radio Ecosystem
Stars: ✭ 3,297 (+1251.23%)
Mutual labels:  hacktoberfest
Mm
Decompilation of The Legend of Zelda: Majora's Mask
Stars: ✭ 243 (-0.41%)
Mutual labels:  hacktoberfest
Naucse.python.cz
Website with learning materials / Stránka s učebními materiály
Stars: ✭ 248 (+1.64%)
Mutual labels:  hacktoberfest
Openmu
This project aims to create an easy to use, extendable and customizable server for a MMORPG called "MU Online".
Stars: ✭ 243 (-0.41%)
Mutual labels:  hacktoberfest
Mycroft Android
Android companion app, sends commands from your Android device to your Mycroft system and returns the output as speech or other medium to the Android device.
Stars: ✭ 247 (+1.23%)
Mutual labels:  hacktoberfest
Orange3
🍊 📊 💡 Orange: Interactive data analysis
Stars: ✭ 3,152 (+1191.8%)
Mutual labels:  hacktoberfest
Tools ui 1c
Универсальные инструменты 1С для управляемых форм
Stars: ✭ 250 (+2.46%)
Mutual labels:  hacktoberfest
Serverless React Boilerplate
A serverless react boilerplate for offline development
Stars: ✭ 250 (+2.46%)
Mutual labels:  hacktoberfest


Prototype node software for an IOTA network without the Coordinator

Developer documentation portal

Discord StackExchange Apache 2.0 license Go version Build status Latest release

AboutDesignImplemented Coordicide modulesWork-in-progress modulesGetting startedClient-Library and HTTP API referenceSupporting the projectJoining the discussion


About

This repository is where the IOTA Foundation's Research Department tests the Coordicide modules to study and evaluate their performance.

The aim of this open repository is to give the community the opportunity to follow developments, take part in testing, and learn more about Coordicide.

Note: You can find details about future development plans on our roadmap.

Design

The code in GoShimmer is modular, where each module represents either one of the Coordicide components or a basic node function such as the gossip, ledger state, API just to mention a few.

Layers

GoShimmer modularity is based on a combination of event-driven and layer-based approaches.

Each module is defined in the packages directory, with the exceptions for the dApps (e.g., value transfer, network delay and the faucet) that are under the dapps folder. Each module can be enabled using the plugins directory.

Note: See the main.go file to see which plugins are currently supported.

Implemented Coordicide modules

The master branch is the stable version of the GoShimmer software, which includes a minimal set of modules to allow you to send and gossip the following types of object:

  • Generic data object, and more in general, any non-value transfer can be supported with its own dApp/App.
  • Value objects to issue transactions.
  • Faucet funding request objects.

The master branch includes the following Coordicide modules:

Work-in-progress modules

Work-in-progress modules are typically kept on a different branch such as mana, and are not compatible with the master branch. Therefore, nodes that run these branches cannot join the current network because the code either is still too experimental or it includes breaking changes. The same goes for the develop branch.

The following Coordicide modules are a work in progress:

  • Mana: The mana branch contains a first implementation of the mana module in the packages directory.

  • Cellular Consensus: The ca branch contains a first implementation of the Cellular Consensus module in the packages directory.

  • Spam Protection: You can find the initial simulation source code of the rate control in this repository and the source code of the Adaptive Proof of Work simulator here.

Client-Library and HTTP API reference

You can use the Go client-library to interact with GoShimmer (located under github.com/iotaledger/goshimmer/client).

You can find more info about this on our client-lib wiki page.

Getting started

You can find tutorials on how to setup a GoShimmer node, writing a dApp, obtaining tokens from the faucet and more on our wiki.

Supporting the project

If you want to contribute to the code, consider posting a bug report, feature request or a pull request.

When creating a pull request, we recommend that you do the following:

  1. Clone the repository
  2. Create a new branch for your fix or feature. For example, git checkout -b fix/my-fix or git checkout -b feat/my-feature.
  3. Run the go fmt command to make sure your code is well formatted
  4. Document any exported packages
  5. Target your pull request to be merged with dev

Joining the discussion

If you want to get involved in the community, need help getting started, have any issues related to the repository or just want to discuss blockchain, distributed ledgers, and IoT with other people, feel free to join our Discord.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].