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

burrow-db

v0.18.1

Published

Javascript library that calls a Hyperledger Burrow server over rpc.

Downloads

14

Readme

@monax/legacy-db.js (Alpha)

This is a JavaScript API for communicating with a Hyperledger Burrow server.

New Name

This library used to be named eris-db.js. It is now @monax/legacy-db.js as part of the company-wide renaming to Monax and also to distinguish it from the upcoming new client API. Although it is a legacy API it will continue to be supported.

To use new versions of the library in existing code, change the line in your package.json which looks like this:

"eris-db": "0.15.12",

to make it look like this:

"@monax/legacy-db": "0.16.0",

and run npm install.

Installation

Prerequisites

You can check the installed version of Node.js with the command:

$ node --version

If your distribution of Linux has a version older than 6 then you can update it using NodeSource's distribution.

To Install

$ npm install @monax/legacy-db

Usage

If you created a Burrow server using the Monax CLI tool, you can find out its IP address using the following command:

$ monax chains ip <name of Burrow server>

The main class is Burrow. A standard Burrow instance is created like this:

var burrowFactory = require('@monax/legacy-db');

var burrow = burrowFactory.createInstance("http://<IP address>:1337/rpc");

The parameters for createInstance is the server URL as a string. The client-type is chosen based on the URL scheme. As of now, the supported schemes are: http and ws (websockets). No additional configuration is needed.

API Reference

There are bindings for all the RPC methods. All functions are on the form function(param1, param2, ... , callback), where the callback is a function on the form function(error,data) (it is documented under the name methodCallback). The data object is the same as you would get by calling the corresponding RPC method directly.

This is the over-all structure of the library. The unsafe flag means a private key is either sent or received, so should be used with care (dev only).

NOTE: There will be links to the proper jsdoc and integration with Monax.io. For now, the components point to the actual code files and methods points to the web-API method in question.

Burrow

| Component Name | Accessor | | :------------- | :------- | | Accounts | Burrow.accounts() | | Blockchain | Burrow.blockchain() | | Consensus | Burrow.consensus() | | Events | Burrow.events() | | NameReg | Burrow.namereg() | | Network | Burrow.network() | | Transactions | Burrow.txs() |

Components

Accounts

The accounts object has methods for getting account and account-storage data.

| Method | RPC method | Notes | | :----- | :--------- | :---- | | Accounts.getAccounts | Burrow.getAccounts | | | Accounts.getAccount | Burrow.getAccount | | | Accounts.getStorage | Burrow.getStorage | | | Accounts.getStorageAt | Burrow.getStorageAt | | | Accounts.genPrivAccount | Burrow.genPrivAccount | unsafe |

BlockChain

The accounts object has methods for getting blockchain-related data, such as a list of blocks, or individual blocks, or the hash of the genesis block.

| Method | RPC method | Notes | | :----- | :--------- | :---- | | BlockChain.getInfo | Burrow.getBlockchainInfo | | | BlockChain.getChainId | Burrow.getChainId | | | BlockChain.getGenesisHash | Burrow.getGenesisHash | | | BlockChain.getLatestBlockHeight | Burrow.getLatestBlockHeight | | | BlockChain.getLatestBlock | Burrow.getLatestBlock | | | BlockChain.getBlocks | Burrow.getBlocks | | | BlockChain.getBlock | Burrow.getBlock | |

Consensus

The consensus object has methods for getting consensus-related data.

| Method | RPC method | Notes | | :----- | :--------- | :---- | | Consensus.getState | Burrow.getConsensusState | | | Consensus.getValidators | Burrow.getValidators | |

Events

The tendermint client will generate and fire off events when important things happen, like when a new block has been committed, or someone is transacting to an account. It is possible to subscribe to these events. These are the methods for subscribing, un-subscribing and polling.

| Method | RPC method | Notes | | :----- | :--------- | :---- | | Events.subscribe | Burrow.eventSubscribe | | | Events.unsubscribe | Burrow.eventUnsubscribe | | | Events.poll | Burrow.eventPoll | |

Helpers

The helper functions makes it easier to manage subscriptions. Normally you'd be using these functions rather then managing the subscriptions yourself.

Helper functions always contain two callback functions - a createCallback(error, data) and an eventCallback(error, data).

The createCallback data is an EventSub object, that can be used to do things like getting the event ID, the subscriber ID, and to stop the subscription.

The eventCallback data is the event object. This object is different depending on the event type. In the case of NewBlock it will be a block, the consensus events is a transaction object, etc. More info can be found in the api doc.

| Method | Arguments | | :----- | :-------- | | Events.subAccountInput | account address <string> | | Events.subAccountOutput | account address <string> | | Events.subAccountReceive | account address <string> | | Events.subLogEvent | account address <string> | | Events.subSolidityEvent | account address <string> | | Events.subNewBlocks | - | | Events.subForks | - | | Events.subBonds | - | | Events.subUnbonds | - | | Events.subRebonds | - | | Events.subDupeouts | - |

subSolidityEvent and subLogEvent are two different names for the same type of subscription (log events).

NameReg

The NameReg object has methods for accessing the name registry.

| Method | RPC method | Notes | | :----- | :--------- | :---- | | NameReg.getEntry | Burrow.getNameRegEntry | | | NameReg.getEntries | Burrow.getNameRegEntries | |

Network

The accounts object has methods for getting network-related data, such as a list of all peers. It could also have been named "node".

Client Version may be a bit misplaced

| Method | RPC method | Notes | | :----- | :--------- | :---- | | Network.getInfo | Burrow.getNetworkInfo | | | Network.getClientVersion | Burrow.getClientVersion | | | Network.getMoniker | Burrow.getMoniker | | | Network.isListening | Burrow.isListening | | | Network.getListeners | Burrow.getListeners | | | Network.getPeers | Burrow.getPeers | | | Network.getPeer | Burrow.getPeer | |

Transactions

A transaction is the equivalence of a database write operation. They can be done in two ways. There's the "dev" way, which is to call transact and pass along the target address (if any), data, gas, and a private key used for signing. It is very similar to the old Ethereum way of transacting, except Tendermint does not keep accounts in the client, so a private key needs to be sent along. This means the server should either run on the same machine as the tendermint client, or in the same, private network.

Transacting via broadcastTx will be the standard way of doing things if you want the key to remain on the users machine. This requires a browser plugin for doing the actual signing, which we will add later. For now, you should stick to the transact method.

To get a private key for testing/developing, you can run tendermint gen_account if you have it installed. You can also run tools/pa_generator.js if you have a local node running. It will take the url as command line argument at some point...

Calls

Calls provide read-only access to the smart contracts. It is used mostly to get data out of a contract-accounts storage by using the contracts accessor methods, but can be used to call any method that does not change any data in any account. A trivial example would be a contract function that takes two numbers as input, adds them, and then simply returns the sum.

There are two types of calls. Call takes a data string and an account address and calls the code in that account (if any) using the provided data as input. This is the standard method for read-only operations.

CallCode works the same except you don't provide an account address but the actual compiled code instead. It's a dev tool for accessing the VM directly. "Code-execution as a service".

| Method | RPC method | Notes | | :----- | :--------- | :---- | | Transactions.broadcastTx | Burrow.broadcastTx | see below | | Transactions.getUnconfirmedTxs | Burrow.getUnconfirmedTxs | | | Transactions.call | Burrow.call | | | Transactions.callCode | Burrow.callCode | | | Transactions.transact | Burrow.transact | unsafe | | Transactions.transactAndHold | Burrow.transactAndHold | unsafe | | Transactions.transactNameReg | Burrow.transactNameReg | unsafe |

broadcastTx is useless until we add a client-side signing solution.

Documentation

Generate documentation using the command npm run doc.

Testing

To test the library against pre-recorded vectors:

npm test

To test the library against Burrow while recording vectors:

TEST=record npm test

To test Burrow against pre-recorded vectors without exercising the library:

TEST=server npm test

Debugging

Debugging information will display on stderr if the library is run with NODE_DEBUG=monax in the environment.

Copyright

Copyright 2015 Monax

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.