Skip to main content

Build JMES Core

JMES Core is the official Golang reference implementation of the JMES node software. Use this guide to install JMES Core and jmesd, the command-line interface and daemon that connects to JMES and enables you to interact with the JMES blockchain.

Get the JMES Core source code

  1. Use git to retrieve JMES Core, and check out the feat/winning_grants branch, which contains the latest stable release. You can find the latest tag on the tags page or via autocomplete in your terminal: type git checkout v and press <TAB>.


    _1
    git clone -b feat/winning_grants https://github.com/jmesworld/core

  2. Use git to retrieve the jmesworld version of Cosmos SDK, and check out the v0.0.99-alpha.3 tag, which contains the latest stable release. Also, find the path to this folder for use in step 4.


    _1
    git clone https://github.com/jmesworld/cosmos-sdk.git


    _2
    # Switch to your cosmos-sdk folder
    _2
    cd cosmos-sdk


    _2
    # Checkout the latest tagged version to a local branch
    _2
    git checkout tags/v0.0.99-alpha.3 -b latest


    _3
    # Note the path to the folder and return to the home directory
    _3
    pwd # e.g. /root/cosmos-sdk
    _3
    cd ..

  3. Similarly, use git to retrieve the jmesworld version of Tendermint, and check out the v0.99.0-alpha.1 tag, which contains the latest stable release. Also, find the path to this folder for use in step 4.


    _1
    git clone https://github.com/jmesworld/tendermint.git


    _2
    # Switch to your tendermint folder
    _2
    cd tendermint


    _2
    # Checkout the latest tagged version to a local branch
    _2
    git checkout tags/v0.99.0-alpha.3 -b latest


    _3
    # Note the path to the folder and return to the home directory
    _3
    pwd # e.g. /root/tendermint
    _3
    cd ..

  4. Replace cosmos-sdk and tendermint dependencies in the replace section of the go.mod file. Ensure you replace <PATH TO YOUR local folder> with those nnoted in Steps 2 & 3 above.


    _5
    cd core
    _5
    _5
    sed -i 's|github.com/cosmos/cosmos-sdk => github.com/jmesworld/cosmos-sdk v0.46.0-jmes.1| github.com/cosmos/cosmos-sdk => <PATH TO YOUR cosmos-sdk folder>|g' go.mod
    _5
    _5
    #Example: sed -i 's|github.com/cosmos/cosmos-sdk => github.com/jmesworld/cosmos-sdk v0.46.0-jmes.1|github.com/cosmos/cosmos-sdk => /root/cosmos-sdk|g' go.mod


    _3
    sed -i 's|github.com/tendermint/tendermint => github.com/jmesworld/tendermint v0.34.21-jmes.1| github.com/tendermint/tendermint => <PATH TO YOUR tendermint folder>|g' go.mod
    _3
    _3
    #sed -i 's|github.com/tendermint/tendermint => github.com/jmesworld/tendermint v0.34.21-jmes.1| github.com/tendermint/tendermint => /root/tendermint|g' go.mod

  5. Build JMES Core. This will install the JMESd executable to your GOPATH environment variable.


    _1
    make install

  6. Verify that JMES Core is installed correctly.


    _1
    jmesd version --long

    Example:


    _7
    name: jmes
    _7
    server_name: jmesd
    _7
    version: feat/winning_grants-8d8a9c26047d9b834ada5c3c7c6880857b3ee4e1
    _7
    commit: 8d8a9c26047d9b834ada5c3c7c6880857b3ee4e1
    _7
    build_tags: netgo ledger,
    _7
    go: go version go1.20.4 linux/amd64
    _7
    # ...followed by a lot of dependenecies

💡tip

If the jmesd: command not found error message is returned, confirm that the Go binary path is correctly configured by running the following command:


_1
export PATH=$PATH:$(go env GOPATH)/bin