npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

singularity-torus

v12.1.0

Published

Handle communication with torus nodes

Downloads

4

Readme

Torus.js

npm version npm

Introduction

A JS utility library (w/ typescript bindings!) to make calls to the Torus network

The Torus network assumes that n/4 of nodes may be malicious, and n/2 + 1 of the nodes are required for key reconstruction. Given these threshold assumptions, all API calls to the Torus nodes need to be checked for consistency while still allowing for early exits in optimistic scenarios where the first n/2 + 1 responses are from honest nodes.

Also, in order to prevent front-running by nodes, a commit-reveal process is also necessary for share retrieval.

This library handles these checks and allows you to query the Torus network easily through these APIs:

  • retrieveShares
  • getPublicAddress

Features

  • Typescript compatible. Includes Type definitions
  • All API's return Promises

Installation

Bundling

This module is distributed in 4 formats

  • esm build dist/torusUtils.esm.js in es6 format
  • commonjs build dist/torusUtils.cjs.js in es5 format
  • umd build dist/torusUtils.umd.min.js in es5 format without polyfilling corejs minified

By default, the appropriate format is used for your specified usecase You can use a different format (if you know what you're doing eg. node) by referencing the correct file

The cjs build is not polyfilled with core-js. It is upto the user to polyfill based on the browserlist they target

Directly in Browser

CDN's serve the non-core-js polyfilled version by default. You can use a different

jsdeliver

<script src="https://cdn.jsdelivr.net/npm/@toruslabs/torus.js"></script>

unpkg

<script src="https://unpkg.com/@toruslabs/torus.js"></script>

Tips for NUXT

This is a plugin that works only on the client side. So please register it as a ssr-free plugin.

Usage

Add @toruslabs/torus.js to your project:

Needs to be used in conjuction with @toruslabs/fetch-node-details

import FetchNodeDetails from "@toruslabs/fetch-node-details";
import TorusUtils from "@toruslabs/torus.js";

const fetchNodeDetails = new FetchNodeDetails();
const torus = new TorusUtils({ network: "mainnet", clientId: "YOUR_CLIENT_ID" }); // get your Client ID from Web3Auth Dashboard
const verifier = "google";
const verifierId = "[email protected]";
const { torusNodeEndpoints, torusNodePub, torusIndexes } = await fetchNodeDetails.getNodeDetails();
const publicAddress = await torus.getPublicAddress(torusNodeEndpoints, torusNodePub, { verifier, verifierId });

const idToken = "YOUR_ID_TOKEN";
const keyData = await torus.retrieveShares(torusNodeEndpoints, torusIndexes, verifier, { verifier_id: verifierId }, idToken);
const FetchNodeDetails = require("@toruslabs/fetch-node-details").default;
const TorusUtils = require("@toruslabs/torus.js").default;

const fetchNodeDetails = new FetchNodeDetails();
const torus = new TorusUtils({ network: "mainnet", clientId: "YOUR_CLIENT_ID" }); // get your Client ID from Web3Auth Dashboard
const verifier = "google"; // any verifier
const verifierId = "[email protected]"; // any verifier id
fetchNodeDetails
  .getNodeDetails()
  .then(({ torusNodeEndpoints, torusNodePub }) => torus.getPublicAddress(torusNodeEndpoints, torusNodePub, { verifier, verifierId }))
  .then((publicAddress) => console.log(publicAddress));

const idToken = "YOUR_ID_TOKEN";
fetchNodeDetails
  .getNodeDetails()
  .then(({ torusNodeEndpoints, torusIndexes }) =>
    torus.retrieveShares(torusNodeEndpoints, torusIndexes, verifier, { verifier_id: verifierId }, idToken)
  )
  .then((keyData) => console.log(keyData));
// For Node.js
const FetchNodeDetails = require("@toruslabs/fetch-node-details/dist/fetchNodeDetails-node.js").default;
const TorusUtils = require("@toruslabs/torus.js/dist/torusUtils-node.js").default;

const fetchNodeDetails = new FetchNodeDetails();
const torus = new TorusUtils({ network: "mainnet" });
const verifier = "google"; // any verifier
const verifierId = "[email protected]"; // any verifier id
fetchNodeDetails
  .getNodeDetails()
  .then(({ torusNodeEndpoints, torusNodePub }) => torus.getPublicAddress(torusNodeEndpoints, torusNodePub, { verifier, verifierId }))
  .then((publicAddress) => console.log(publicAddress));

Requirements

  • This package requires a peer dependency of @babel/runtime
  • Node 16+