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

@indexas/key-did-provider-secp256k1-with-lit

v0.0.32

Published

secp256k1 key did provider

Downloads

6

Readme

secp256k1 key did provider with Lit Actions x PKP powered by Lit Protocol

This is a DID provider which integrated Lit Actions x PKP powered by Lit Protocol for did:key using secp256k1. It does not support encryption / JWE. It's a fork from symfoni/key-did-provider-secp256k1 and was designed to be used with Ceramic Network.

What it does?

  • Instead of manually providing a PUBLIC_KEY to get the DID (decentralised identifier), this SDK gets the PUBLIC_KEY from the PKP NFT

  • The DID that we got is then passed into a resolver, which would allow us to run methods such as did.authenticate().

  • To authenticate, instead of providing a PRIVATE_KEY to sign a message to verify the signature from the signed message matches the corresponding PUBLIC_KEY, we will ask the Lit nodes, who hold the PRIVATE_KEY collectively of the PKP NFT, to execute some static Javascript code that is hosted on IPFS and use the output signature to verify.

  • So now that PKP NFT owns the decentralised identifier DID, we can use this DID in Ceramic to read & write stream that only this PKP NFT owner can do.

Installation

yarn add @indexas/key-did-provider-secp256k1-with-lit

Usage

import {
  encodeDIDWithLit,
  Secp256k1ProviderWithLit,
} from "key-did-provider-secp256k1-with-lit";

import { CeramicClient } from "@ceramicnetwork/http-client";
import { TileDocument } from "@ceramicnetwork/stream-tile";
import { getResolver } from "key-did-resolver";
import { DID } from "dids";

const ceramic = new CeramicClient("https://ceramic-clay.3boxlabs.com");

const PKP_PUBLIC_KEY = "30eceb963993d467ca197f3fd9fe3073b8b224ac2c9068d9a9caafcd5e20cf983";

// -- get your encode did with your PKP public key
const encodedDID = await encodeDIDWithLit(PKP_PUBLIC_KEY);

// -- static lit action code hosted on https://ipfs.io/ipfs/QmYrfiMf6TDuU3NiTbZANiELNBCyn2f66Zok3gEuzRTYmL
const provider = new Secp256k1ProviderWithLit({
  did: encodedDID,
  ipfsId: "QmYrfiMf6TDuU3NiTbZANiELNBCyn2f66Zok3gEuzRTYmL",
});

const did = new DID({ provider, resolver: getResolver() });

// -- authenticate
await did.authenticate();
ceramic.did = did;
console.log("DID:", did);

// -- write to ceramic stream
const doc = await TileDocument.create(ceramic, "Hola hola ¿Cómo estás?");
console.log("Doc/StreamID:", doc.id.toString());

// -- read a ceramic stream
var loadDoc = await TileDocument.load(ceramic, doc.id.toString());
console.log("Specific doc:", loadDoc.content);

License

Apache-2.0 OR MIT