🚀 Launch Week Day 5:Introducing Immutable Scans.Learn More →
Socket
Book a DemoInstallSign in
Socket

@hyperswarm/kat

Package Overview
Dependencies
Maintainers
3
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hyperswarm/kat

Key Address Translation for Hyperswarm

latest
npmnpm
Version
0.0.7
Version published
Maintainers
3
Created
Source

@hyperswarm/kat

Key Address Translation - for Hyperswarm.

The Hyperswarm KAT protocol translates Noise public keys into network IPs and also provides modern STUN approaches to penetrating most network firewalls.

Note, that the API is still under development so subject to changes.

The protocol consists of primary abstractions, Gateways and Clients.

Gateways

A Gateway is a simple UDP server, running on a public network.

The purpose of a Gateway in the KAT protocol is to act as a way for clients, identified by a Noise keypair, behind commodity firewalls, to receive the first part of a Noise handshake, from other peers also behind commodity firewalls.

After relaying the initial exchange, a Gateway can also help provide some simple network diagnostics, that can help each peer choose what kind of network holepunching technique to use.

Normally a client would use a series of Gateways to announce itself. This helps provide better security and redundancy.

Clients

Clients interact with a gateway using a UDP-based protocol.

A Client can choose to announce a Noise keypair to a Gateway, by proving to a gateway that it owns a specific keypair using a Noise handshake. After announcing a Gateway will relay introductions to other Clients that wish to connect.

API

Note that the API is still experimental and subject to change.

const { Client } = require('hyperpunch')

const c = new Client([
  'bootstrap1.hyperdht.org',
  'bootstrap2.hyperdht.org'
])

// to join the swarm and accept connections on a public key:
await c.join(keyPair)

c.on('connection', function (noiseStream) {
  // emitted when a new connection is accepted
  // noiseStream is a NoiseSecretStream instance
})

// to connect to a public key to
const noiseStream = c.connect(publicKey, localKeyPair)

noiseStream.on('open', function () {
  console.log('stream is fully open')
})

noiseStream.write(Buffer.from('hello world'))

FAQs

Package last updated on 22 Apr 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts