Go-nym - toolset for GoLang

Go-nym - toolset for GoLang
none 5.0 1

The thread for updates go-nym library.

This is a toolset for interacting with the Nym ecosystem on GoLang.

You can find out the source code on Github: https://github.com/craftdome/go-nym.

5 Likes

Update from March 15, 2025

  • Adapted project structure for monorepo.
  • Able to import submodule directly:
import (
    "github.com/craftdome/go-nym/contracts/mixnet" // blockchain queries
    "github.com/craftdome/go-nym/clients/wsc" // websocket client for nym-client
)
  • Separate versioning for submodules. Downloading exact submodule and version by:
go get github.com/craftdome/go-nym/contracts@1.5.1-rc1
go get github.com/craftdome/go-nym/clients@1.0.2
  • Added submodule for mixnet contract (read-only yet).
    Usage example:
package main

import (
	"context"
	"github.com/craftdome/go-nym/contracts/mixnet"
	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials/insecure"
	"log"
	"time"
)

func main() {
	grpcAddr := "nym-grpc.polkachu.com:15390" // list of endpoints: https://cosmos.directory/nyx/nodes
	contract := "n17srjznxl9dvzdkpwpw24gg668wc73val88a6m5ajg6ankwvz9wtst0cznr"

	// Init the grpc connection
	conn, err := grpc.NewClient(grpcAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
	if err != nil {
		log.Fatal(err)
	}

	// Creating contract client
	client := mixnet.NewQueryClient(conn, contract)

	ctx := context.Background()

	// Getting contract version
	contractVersion, err := client.Contract.GetVersion(ctx)
	if err != nil {
		log.Fatal(err)
	}

	log.Printf("Contract Version: %s", contractVersion.BuildVersion)

	// Getting contract state params
	stateParams, err := client.Contract.GetStateParams(ctx)
	if err != nil {
		log.Fatal(err)
	}

	log.Printf("%+v", stateParams)

	// Getting current interval status of the mixnet
	status, err := client.Contract.GetIntervalStatus(ctx)
	if err != nil {
		log.Fatal(err)
	}

	log.Printf("Epoch started at: %s", status.Interval.CurrentEpochStart.Format(time.DateTime))
}
2 Likes

Update from March 21, 2025

  • Added nym-node rest support
  • Added minimized nym-api rest support (a necessary part for nymesis)
  • Restructured whole project
  • Defined tag naming for imports

Ways to import modules:

go get github.com/craftdome/go-nym/wsc@v1.0.2
go get github.com/craftdome/go-nym/nymnode@v1.7.0-rc5
go get github.com/craftdome/go-nym/nymapi@v1.1.54-rc5
go get github.com/craftdome/go-nym/mixnet@v1.5.1-rc5
2 Likes

Update from March 24, 2025

  • [mixnet|nymnode|nymapi] Removed types: big.Decimal and Uint128 (in all places where these types are used, they are unnecessary and redundant). Native types only.

Ways to import modules:

go get github.com/craftdome/go-nym/wsc@v1.0.2
go get github.com/craftdome/go-nym/nymnode@v1.7.0-rc8
go get github.com/craftdome/go-nym/nymapi@v1.1.54-rc8
go get github.com/craftdome/go-nym/mixnet@v1.5.1-rc12
4 Likes

Hey, cool work!

I’m assuming this is a lib for interacting with the cosmos side of NYM rather than the actual mixnet, right ?
Good stuff but I’d call it something else, like go-nyx (is that still a thing? Nyx ? )

Hey, man! Thank you

Not only the cosmos side. The lib includes a several api implementations: nym-node, nym-api (small part), mixnet-contract, nym-client (websocket client).

1 Like

Update from April 19, 2025

  • [nymnode] add GetLoad method with version constraint: available since 1.5.0 09fa5b9
  • [nymnode] add ErrForbiddenNodeMethod error
  • [nymnode|nymapi] delete GetBuildInformation instead of BuildInformation field which initialized on New() 6af5902
  • [mixnet] temporary fix misspell start_after and limit at GetAllUnbonded and GetUnbondedByOperator methods
  • another small fixes

Ways to import modules:

go get github.com/craftdome/go-nym/wsc@v1.0.2
go get github.com/craftdome/go-nym/nymnode@v1.9.0-r05
go get github.com/craftdome/go-nym/nymapi@v1.1.55-r02
go get github.com/craftdome/go-nym/mixnet@v1.5.1-r01
2 Likes