decentstack

0.8.0 • Public • Published

Build Status

Decentstack

1.0 Announcement

Welcome!

Decentstack is a framework for building decentralized applications

(primarily those that utilize kappa-architecture )

If you're brave enough, there are some pre-release docs available:

Documentation (Still being written & revised)

The quickstart instructions are not available yet, but I would recommend you to start with the excellent kappa-workshop. It's a great introduction to building decentralized applications and a "must read" prequel to the issues which Decentstack attempts to address.

Overview

Overview Image

Usage

const RAM = require('random-access-memory')
const multifeed = require('multifeed')
const kappa = require('kappa-core')
const { Decentstack } = require('decentstack')
 
class MyApplication {
  mounted (stack) {
    this.storage = multifeed(RAM, stack.key)
 
    // TODO: get rid of this workaround
    this.kappa = kappa(null, { multifeed: this.storage })
 
    stack.use(this.storage)
  }
 
  // Expose feed lengths
  async describe ({ resolve }, next) {
    try {
      const feed = await resolve()
      next(null, { seq: feed.length })
    } catch(err) {
      next(err)
    }
  }
 
  // prevent zero-length feeds from being shared
  hold ({ meta }, next) {
    next(null, !!meta.seq)
  }
 
  // prevent zero-length feeds from being accepted
  reject ({ meta }, next) {
    next(null, !!meta.seq)
  }
}
 
// Setup an exchange-key
const exchangeKey = Buffer.alloc(32)
exchangeKey.write('communication-encryption-key')
 
// Create stack and register our application
const stack = new Decentstack(exchangeKey, { live: true })
stack.use(new MyApplication())
 
// Replicate as usual
const stream = stack.replicate(true)
stream.pipe(remoteStream).pipe(stream)
 

License

This project is licensed under GNU AGPLv3

If you have any concerns or conflicts with this license, then please open an issue and state your case.

/decentstack/

    Package Sidebar

    Install

    npm i decentstack

    Weekly Downloads

    29

    Version

    0.8.0

    License

    AGPL-3.0-or-later

    Unpacked Size

    278 kB

    Total Files

    40

    Last publish

    Collaborators

    • telamon