Skip to main content


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

You can also join our Discord server and ping us in #smartcontracts-dev.

Creating a Pull Request

Please base your work on the develop branch.

Before creating the Pull Request ensure that:

  • all the tests pass:

    go test -tags rocksdb,builtin_static ./...


    make test

    If the changes are major, please run even the heavy tests:

    make test-full

    Note, that these tests might take longer to run (they timeout after 60 minutes). Also note that TestSpamOffledger should only be run with database.inMemory set to false. See tools/cluster/tests/spam_test.go for details.

  • there are no linting violations (instructions on how to setup linting below):

    golangci-lint run


    make lint

    Note, that linter is run each time you run


Lint Setup

  1. Install golintci:

  2. Dev setup:


    // required:
    "go.lintTool": "golangci-lint",
    // recommended:
    "go.lintOnSave": "package"
    "go.lintFlags": ["--fix"],
    "editor.formatOnSave": true,


    • Install golintci plugin

      Install golintci plugin

    • Configure path for golangci

      Configure path for golangci

    • Add a golangci file watcher with custom command (I recommend using --fix)

      Add a golangci file watcher with custom command

    Other editors: please look into the golangci official documentation.

  3. Ignoring false positives:


    for specific rules: