Git Product home page Git Product logo

nostr-js's Introduction

nostr

nostr nodejs library

Example

const {RelayPool} = require('nostr')

const jb55 = "32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245"
const damus = "wss://relay.damus.io"
const scsi = "wss://nostr-pub.wellorder.net"
const relays = [damus, scsi]

const pool = RelayPool(relays)

pool.on('open', relay => {
	relay.subscribe("subid", {limit: 2, kinds:[1], authors: [jb55]})
});

pool.on('eose', relay => {
	relay.close()
});

pool.on('event', (relay, sub_id, ev) => {
	console.log(ev)
});

API

RelayPool(urls, options)

Connect to a pool of relays. You should use this instead of Relay directly.

options: {reconnect: true|false}, defaults to {reconnect: true}

const relays = [`wss://relay1.com`, `wss://relay2.com`]
const pool = RelayPool(relays, {reconnect: false})

Relay(url, options)

Connect to a relay

options: {reconnect: true|false}, defaults to {reconnect: true}

const relay = Relay(`wss://relay.damus.io`, {reconnect: false})

async calculateId(event)

Calculate an id from an event

async signId(privkey, id)

Create a signature for an id

async verifyEvent(event)

Verify an event

Returns: true if valid signature, false otherwise

decryptDm(privkey, event)

Decrypt a direct message

Returns: decrypted content

encryptDM(privkey, pubkey, msg)

Encrypt a direct message

Returns: encrypted content

getPublicKey(privkey)

Get a public key from a privkey

async createDelegation(privkey, publisherPubkey, conditions)

Create a delegation. This gives publisherPubkey permission to create events on the privkeys behalf subject to conditions

privkey: authorizer private key

publisherKey: delegate/publisher pubkey

conditions: & separated set of event creation permissions that the delegate is required to adhere to when creating events

eg: created_at>1669303873&created_at<1674574279&kind=1,7

Returns:

{pubkey, publisherPubkey, conditions, token}

Where token is the delegation token, which is a signature from the authorizer of the delegation nostr:delegation:publisher_key:.

async createDelegationEvent(publisherPrivkey, event, delegation)

Create a delegated event from a delegation. This is an event posted on behalf of delegation.pubkey subject to delegation.conditions.

delegation: a delegation in the form returned by createDelegation

publisherPrivkey: the private key of the delegate, the entity posting on behalf of delegation.pubkey

event: The event to post as a delegate. The event pubkey will be overridden by the publisherPubkey. The delegation tag will be upserted into the tag list.

async signDelegationToken(privkey, unsignedToken)

Sign a delegation string in the form nostr:delegation:....

Returns: a signature string called the delegation token.

nostr-js's People

Contributors

dskvr avatar jb55 avatar melvincarvalho avatar mutatrum avatar pablof7z avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nostr-js's Issues

Add verify method

For implementing NIP-57 in Ligess, I need to verify the zap request signature (Dolu89/ligess#8). For this, the verify method needs to be exposed.

i have an Idea for a nostr client

sorry this might be out of the context here

but i have a Nostr client web idea, which i will like to build ,

Creating and designing the client is not a problem, but my problem is how do i communicate with the Nostr Protocol to create and get Notes to/on the relay.

You response wilkl be highly appreciated

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.