1
0
mirror of https://github.com/bigchaindb/js-bigchaindb-driver.git synced 2024-12-27 07:07:50 +01:00
Official BigchainDB JavaScript driver for Node.js and the browser
Go to file
2018-08-10 14:50:09 +02:00
.ci Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
compose merge 2018-03-29 19:02:46 +02:00
docs Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
examples Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
media Tried to change permissions of all files to 664 2017-09-22 10:15:02 +02:00
plugins Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
src Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
test Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
.babelrc Fix connection test 2018-07-19 20:23:12 +05:30
.eslintignore Tried to change permissions of all files to 664 2017-09-22 10:15:02 +02:00
.eslintrc.json Tried to change permissions of all files to 664 2017-09-22 10:15:02 +02:00
.gitignore ignore vscode settings 2018-05-14 13:05:45 +02:00
.npmignore ignore vscode settings 2018-05-14 13:05:45 +02:00
.travis.yml Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
API.md Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
CODE_OF_CONDUCT.md Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
CONTRIBUTING.rst Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
docker-compose.yml Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
LICENSE Tried to change permissions of all files to 664 2017-09-22 10:15:02 +02:00
LICENSE-docs Reformat LICENSE-docs for readability 2018-08-10 14:50:09 +02:00
package.json fix(package): update js-sha3 to version 0.8.0 2018-08-05 07:37:40 +00:00
README.md Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
webpack.common.js Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
webpack.config.js Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
webpack.development.js Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
webpack.parts.js Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
webpack.production.js Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00

js-bigchaindb-driver

Official JavaScript driver for BigchainDB to create transactions in Node.js and the browser.

Join the chat at https://gitter.im/bigchaindb/js-bigchaindb-driver npm codecov js ascribe Build Status Greenkeeper badge

Compatibility

BigchainDB Server BigchainDB JavaScript Driver
0.10 0.1.x
1.0.0 0.3.x
1.3.x 3.x.x
>= 2.0.0 4.x.x

Breaking changes

  • Version 4.0 of BigchainDB JavaScript Driver makes the driver compatible with BigchainDB 2.0. There are new functions for sending off transactions along with other changes. Check older versions
  • Version 3.2 of BigchainDB JavaScript Driver introduces a new way of creating transfer transactions. Check older versions

Table of Contents


Installation and Usage

npm install bigchaindb-driver
const driver = require('bigchaindb-driver')
// or ES6+
import driver from 'bigchaindb-driver'

Example: Create a transaction

const driver = require('bigchaindb-driver')

// BigchainDB server instance (e.g. https://test.bigchaindb.com/api/v1/)
const API_PATH = 'http://localhost:9984/api/v1/'

// Create a new keypair.
const alice = new driver.Ed25519Keypair()

// Construct a transaction payload
const tx = driver.Transaction.makeCreateTransaction(
    // Define the asset to store, in this example it is the current temperature
    // (in Celsius) for the city of Berlin.
    { city: 'Berlin, DE', temperature: 22, datetime: new Date().toString() },

    // Metadata contains information about the transaction itself
    // (can be `null` if not needed)
    { what: 'My first BigchainDB transaction' },

    // A transaction needs an output
    [ driver.Transaction.makeOutput(
            driver.Transaction.makeEd25519Condition(alice.publicKey))
    ],
    alice.publicKey
)

// Sign the transaction with private keys
const txSigned = driver.Transaction.signTransaction(tx, alice.privateKey)

// Send the transaction off to BigchainDB
const conn = new driver.Connection(API_PATH)

conn.postTransactionCommit(txSigned)
    .then(retrievedTx => console.log('Transaction', retrievedTx.id, 'successfully posted.'))

Browser usage

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>BigchainDB boilerplate</title>
        <!-- Adjust version to your needs -->
        <script src="https://unpkg.com/bigchaindb-driver@4.0.0/dist/browser/bigchaindb-driver.window.min.js"></script>

        <script>
            // BigchainDB server instance (e.g. https://test.bigchaindb.com/api/v1/)
            const API_PATH = 'http://localhost:9984/api/v1/'

            // Create a new keypair.
            const alice = new BigchainDB.Ed25519Keypair()

            // Construct a transaction payload
            const tx = BigchainDB.Transaction.makeCreateTransaction(
                // Define the asset to store, in this example it is the current temperature
                // (in Celsius) for the city of Berlin.
                { city: 'Berlin, DE', temperature: 22, datetime: new Date().toString() },

                // Metadata contains information about the transaction itself
                // (can be `null` if not needed)
                { what: 'My first BigchainDB transaction' },

                // A transaction needs an output
                [ BigchainDB.Transaction.makeOutput(
                        BigchainDB.Transaction.makeEd25519Condition(alice.publicKey))
                ],
                alice.publicKey
            )

            // Sign the transaction with private keys
            const txSigned = BigchainDB.Transaction.signTransaction(tx, alice.privateKey)

            // Send the transaction off to BigchainDB
            let conn = new BigchainDB.Connection(API_PATH)

            conn.postTransactionCommit(txSigned)
                .then(res => {
                    const elem = document.getElementById('lastTransaction')
                    elem.href = API_PATH + 'transactions/' + txSigned.id
                    elem.innerText = txSigned.id
                    console.log('Transaction', txSigned.id, 'accepted')
                })
            // Check console for the transaction's status
        </script>
    </head>
    <body id="home">
        <h1>Hello BigchainDB</h1>
        <p>Your transaction id is: <a id="lastTransaction" target="_blank"><em>processing</em></a></p>
    </body>
</html>

BigchainDB Documentation

Speed Optimizations

This implementation plays "safe" by using JS-native (or downgradable) libraries for its crypto-related functions to keep compatibilities with the browser. If you do want some more speed, feel free to explore the following:

Development

git clone git@github.com:bigchaindb/js-bigchaindb-driver.git
cd js-bigchaindb-driver/

npm i
npm run dev

After updating source files in src/, make sure to update the API documentation. The following command will scan all source files and create the Markdown output into ./API.md:

npm run doc

Authors

Licenses

See LICENSE and LICENSE-docs.