1
0
mirror of https://github.com/bigchaindb/js-bigchaindb-driver.git synced 2024-11-25 03:20:12 +01:00
Official BigchainDB JavaScript driver for Node.js and the browser
Go to file
Troy McConaghy 5a966f6ab2 Update "release" command. Document release process
Signed-off-by: Troy McConaghy <troy@bigchaindb.com>
2019-05-23 09:18:59 +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 Change Travis CI URLs to use .com 2018-12-11 20:25:16 +01:00
examples string fixes 2018-11-06 11:46:24 +01: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 Should not use deprecated constructor. Use Buffer.from. 2018-11-06 11:00:35 +01:00
test Merge branch 'master' into remove-votes-api 2018-08-31 14:56:14 +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 Point Code of Contuct page to main BDB repo 2018-12-11 20:26:57 +01:00
CONTRIBUTING.rst Add SPDX license info strings to all source files 2018-08-10 12:49:26 +02:00
docker-compose.yml update tendermint version && dependencies to latest version 2019-04-27 18:14:57 +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 Update "release" command. Document release process 2019-05-23 09:18:59 +02:00
README.md Update "release" command. Document release process 2019-05-23 09:18:59 +02:00
RELEASE_PROCESS.md Update "release" command. Document release process 2019-05-23 09:18:59 +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://example.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://example.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

Release Process

See the file named RELEASE_PROCESS.md.

Authors

Licenses

See LICENSE and LICENSE-docs.