# [![js-bigchaindb-driver](media/repo-banner@2x.png)](https://www.bigchaindb.com) > Official JavaScript driver for [BigchainDB](https://github.com/bigchaindb/bigchaindb) with some naive helpers to get you on your way making transactions in Node.js and the browser. [![npm](https://img.shields.io/npm/v/bigchaindb-driver.svg)](https://www.npmjs.com/package/bigchaindb-driver) [![codecov](https://codecov.io/gh/bigchaindb/js-bigchaindb-driver/branch/master/graph/badge.svg)](https://codecov.io/gh/bigchaindb/js-bigchaindb-driver) [![js ascribe](https://img.shields.io/badge/js-ascribe-39BA91.svg)](https://github.com/ascribe/javascript) [![Build Status](https://travis-ci.org/bigchaindb/js-bigchaindb-driver.svg?branch=master)](https://travis-ci.org/bigchaindb/js-bigchaindb-driver) [![Greenkeeper badge](https://badges.greenkeeper.io/bigchaindb/js-bigchaindb-driver.svg)](https://greenkeeper.io/) ## Compatibility | BigchainDB Server | BigchainDB JavaScript Driver | | ----------------- |------------------------------| | `0.10` | `0.1.0` | ## Contents * [Node.js Installation and Usage](#node.js-installation-and-usage) * [Example: Create a transaction](#example-create-a-transaction) * [Browser Installation and Usage](#browser-installation-and-usage) * [Documentation](#bigchaindb-documentation) * [Authors](#authors) * [License](#license) ## Node.js Installation and Usage ```bash npm install bigchaindb-driver ``` ### Example: Create a transaction ```js import * as driver from 'bigchaindb-driver' // BigchainDB server instance or IPDB (e.g. https://test.ipdb.io/api/v1/) const API_PATH = 'http://localhost:9984/api/v1/' // Create a new user with a public-private key pair // (or a whole bunch of them, nobody's counting) const alice = new driver.Ed25519Keypair() // Construct a transaction payload // `driver.Transaction.makeCreateTransaction()`: create a new asset // `driver.Transaction.makeTransferTransaction()`: transfer an existing asset const tx = driver.Transaction.makeCreateTransaction( { assetMessage: 'My very own asset...' }, { metaDataMessage: 'wrapped in a transaction' }, // A transaction needs an output // `driver.Transaction.makeOutput()`: requires a crypto-condition // `driver.Transaction.makeEd25519Condition()`: simple public key output [ driver.Transaction.makeOutput( driver.Transaction.makeEd25519Condition(alice.publicKey)) ], alice.publicKey ) // Optional: You've got everything you need, except for an asset // and metadata. Maybe define them here, any JSON-serializable object // will do // Ok, now that you have a transaction, you need to *sign* it // cause, you know... cryptography and ¯\_(ツ)_/¯ // Sign/fulfill the transaction with private keys const txSigned = driver.Transaction.signTransaction(tx, alice.privateKey) // Send the transaction off to BigchainDB let conn = new driver.Connection(API_PATH, { 'Content-Type': 'application/json' }) conn.postTransaction(txSigned) .then(() => conn.getStatus(txSigned.id)) .then((res) => console.log('Transaction status:', res.status)) ``` ## Browser Installation and Usage ```html