About ◈ Design ◈ Getting started ◈ Client-Library and HTTP API reference ◈ Supporting the project ◈ Joining the discussion
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.
For a documentation, including tutorials and resources, we refer to the Documentation (Github link).
Note: You can find details about future development plans on our roadmap.
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.
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.
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 and Web API GitHub page.
You can find tutorials on how to setup a GoShimmer node, writing a dApp, obtaining tokens from the faucet and more on our GitHub Page.
We always recommend to run your node via Docker. However, you can also compile the source and run the node from the compiled binary. GoShimmer uses RocksDB as its underlying db engine. That requires a few dependencies before building the project:
- librocksdb
- libsnappy
- libz
- liblz4
- libzstd
Please follow this guide: https://github.com/facebook/rocksdb/blob/master/INSTALL.md to build above libs.
Finally, when compiling GoShimmer, just run the build script:
./scripts/build.sh
If you also want to link the libraries statically (only on Linux) run this instead:
./scripts/build_goshimmer_rocksdb_builtin.sh
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:
- Clone the repository
- Create a new branch for your fix or feature. For example,
git checkout -b fix/my-fix
orgit checkout -b feat/my-feature
. - Run the
go fmt
command to make sure your code is well formatted - Document any exported packages
- Target your pull request to be merged with
dev
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.