planetmint is a blockchain built using Cosmos SDK and CometBFT written in Go and created with Ignite CLI.
ignite chain serve
serve
command installs dependencies, builds, initializes, and starts your blockchain in development.
Your blockchain in development can be configured with config.yml
. To learn more, see the Ignite CLI docs.
To install the latest version of this blockchain node's binary, execute the following command on your machine:
git clone https://github.com/planetmint/planetmint-go.git
ignite chain build
- .github/ ... github workflows
- app/ ... app wiring and tx ante handlers
- clients/ ... clients for interactions with external services
- cmd/ ... entry point, sdk config and top level commands
- config/ ... custom planetmint config
- docs/ ... openapi docs
- errormsg/ ... custom error messages
- lib/ ... tools for interacting with planetmint and trust wallet
- monitor/ ... MQTT monitor
- proto/ ... message and type definitions
- tests/ ... e2e test suites
- testutil/
- tools/ ... sdk tools
- util/
- x/ ... custom planetmint modules
Follow this guide for general testing guidelines.
The E2E-tests found in the tests/
folder setup a test network of n-Nodes and running transactions on said network. Tools to mock interactions with external services for these tests can be found in testutil/network/
.
For Tests that involve multiple keepers mocks can be found in x/<module>/testutil/expected_keepers_mocks.go
. These are manipulated in testutil/keepers/
.
For contributions refer to the RDDL enhancement proposals repository here
Use the ignite scaffold
command to easily add modules and messages to the existing project. A more manual approach is to add to the proto/
folder to setup messages and the corresponding message servers and running the ignite generate proto-go
command.
Module migrations must be registered in each respective module in the AppModule.RegisterServices(cfg module.Configurator)
function. For each module that is to be upgraded in a migration the ConsensusVersion must be updated. In addition an UpgradeHandler
needs to be added to the App.setupUpgradeHandlers()
. Upgrade handlers have a name that needs to be added to an upgrade proposal which needs to be voted on by participating validators.
For more info see here.