Giter Site home page Giter Site logo

rtradeltd / rtns Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 1.0 456 KB

๐ŸŒŒ rtns is a IPNS publishing service for use with the krab keystore manager

License: Apache License 2.0

Go 96.95% Makefile 3.05%
ipns ipfs libp2p key-management temporal golang

rtns's Introduction

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 [email protected]: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 [email protected]:<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 [email protected]: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.

rtns's People

Contributors

arku avatar bonedaddy avatar daijiale avatar postables avatar raulk avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

arku

rtns's Issues

Abstract RTNS Construction

Assignee: @arku

Currently rtns does a bunch of work internally when creating the system. This involves things like creating the libp2p host, creating a krab gRPC keystore wrapper.

Instead, we should provide these various interface types, such as the libp2p host, the libp2p DHT, etc.. Additionally, we should not provide a specific keystore type (krab) but instead, provide the keystore.Keystore interface abstraction, allowing implementers of this package to choose a desired keystore.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.