/rtns

🌌 rtns is a IPNS publishing service for use with the krab keystore manager

Primary LanguageGoApache License 2.0Apache-2.0

RTNS

GoDoc codecov Build Status GitHub release

RTNS (RTrade Name Service) is a stand-alone IPNS record management service, designed to facilitate secure publishing of IPNS records, leveraging an encrypted keystore known as kaas. Internally it facilitates scheduled republishing of all published records.

It is essentially a modified and condensed version of go-ipfs/namesys with minor optimizations.

Multi-Language

jaywcjlove/sb

Usage

To import this library:

import "github.com/RTradeLtd/rtns"

You'll need to create a libp2p host, and a dht providing them as constructor arguments, and a valid keystore. This package contains a helper tool to wrab a KaaS client as a valid keystore interface type.

Development

Using $GOPATH

Ref: https://splice.com/blog/contributing-open-source-git-repositories-go/

  1. Fork the repository
  2. Clone the repository by running git clone git@github.com:RTradeLtd/rtns.git $GOPATH/src/github.com/RTradeLtd/rtns
  3. Run cd $GOPATH/src/github.com/RTradeLtd/rtns
  4. Set up remotes.
git remote rename origin upstream
git remote add origin git@github.com:<your-github-username>/rtns.git
  1. Add export GO111MODULE=on to .bashrc or .bash_profile (if you're on a Mac) or .zshrc (if you're using zsh). Make sure to reload the rc file of your choice by running source <rc-file>
  2. Run go mod download to download the dependencies
  3. To run the tests, use go test ./...

Outside $GOPATH

  1. Fork and clone the repository to any location on your machine
  2. Run cd rtns
  3. Set up a remote for the upstream repository
git remote add upstream git@github.com:RTradeLtd/rtns.git
  1. Run go mod download to download the dependencies
  2. To run the tests, use go test ./...

Limitations

  • When used within Temporal, any keys derived from the fail-over KaaS host are not eligible for automated republishing.

Future Improvements

  • DNSLink support
  • Act as a gateway implementation to TNS (Temporal Name Server)
  • Enable HA Kaas Backend
    • This will involve repeatedly iterating through all available KaaS hosts attempting to retrieve the private key, until we either find the key or we iterate through all available KaaS hosts without finding one, triggering an error
  • Enable automatic topic subscription for IPNS pubsub
    • This would involve using rtfs to call an IPFS node, establishing a subscription for a given topic.