Skip to content
(ALPHA) A wasm-based TypeScript sdk that does not require the RPC server.
TypeScript JavaScript Shell Dockerfile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows github publish npm auth fix Nov 14, 2019
builddocker
docs
etc comments and public API Oct 11, 2019
examples fix package-lock of set-and-get-data example Sep 26, 2019
scripts
src
tupelo-go-sdk @ 1efa18a upgrade to master Oct 11, 2019
wasmtupelo Merge pull request #17 from quorumcontrol/feature/2communities Oct 11, 2019
.gitattributes comments and api-extractor config Aug 12, 2019
.gitignore build.sh: Build Wasm target also Aug 14, 2019
.gitmodules initial checkin Jul 23, 2019
.npmignore
README.md readme update Oct 9, 2019
api-extractor.json
build-docs.sh separate docs and build command Aug 12, 2019
build.sh fix build order Aug 16, 2019
package-lock.json Bump version to v0.5.0 Nov 14, 2019
package.json Bump version to v0.5.0 Nov 14, 2019
tsconfig.json initial checkin Jul 23, 2019

README.md

Tupelo Wasm SDK

V2 of the tupelo-js-sdk is a standalone SDK that works with wasm to talk directly to the Tupelo network and does not require a rpc server.

Note: in the words of IPFS: this project is still in Alpha, lots of development is happening, API might change, beware of the Dragons 🐉.

See https://docs.quorumcontrol.com/ for an overview of Tupelo, the whitepaper, other SDKs, etc. For a high-level walkthrough see this video: https://youtu.be/4Oz03l9IQPc which uses the Tupelo ChainTree Explorer described below.

Examples

We have a comprehensive collection of examples in the examples/ directory, which should help you get up to speed quickly on various aspects of the SDK.

Tupelo ChainTree Explorer

We have made a main demo app based on the SDK, the Tupelo ChainTree Explorer. This lets you explore ChainTrees in the Tupelo testnet, and should be a great reference for learning how to use the Tupelo Wasm SDK in depth!

API

See: https://quorumcontrol.github.io/tupelo-wasm-sdk/docs/tupelo-wasm-sdk.html

Getting Started

The following snippet of code is all you need to send a transaction to our Testnet

const sdk = require('tupelo-wasm-sdk')

// setup a connection to the default community and Tupelo TestNet
const community = await sdk.Community.getDefault() 

// Generate a new public/private keypair
const key = await sdk.EcdsaKey.generate() 

// Create a new empty tree with the new keypair
const tree = await sdk.ChainTree.newEmptyTree(community.blockservice, key) 

// Play a transaction on the TestNet
let resp = await community.playTransactions(tree, [sdk.setDataTransaction("path", true)])

// Congrats on making a DLT transaction

You can also find ChainTrees by their DID and resolve data on them, easily:

const sdk = require('tupelo-wasm-sdk')

// setup a connection to the default community and Tupelo TestNet
const community = await sdk.Community.getDefault() 

const tip = await community.getTip("did:tupelo:0x5bD5b0Ad2d9e73a07E410f32F5C865B231cce62F")

const tree = new sdk.ChainTree({
   store: community.blockservice,
   tip: tip,
})

const {remaining,value} = await tree.resolve("tree/data/path")

// remaining = []
// value = true

Path to Wasm

By default the wasm is loaded from the tupelo.wasm included in the npm package of this repo (src/js/go/tupelo.wasm) for node and from /tupelo.wasm (from the root of the server) in the browser. This is customizable by calling Go.setWasmPath() with wherever is better for your app.

Building

In order to build this project, you first of all need to get the Git submodules:

$ git submodule update --init --recursive

Then install the dependencies and use the NPM 'build' script:

$ npm install
$ npm run build

Running the tests

In order for the tests to run, you need to have a tupelo network running. In the directory ./wasmtupelo there is a docker-compose which will enable the tests.

$ cd wasmtupelo && docker-compose up

Then npm test should be green.

You can’t perform that action at this time.