# [](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. [](https://www.npmjs.com/package/bigchaindb-driver) [](https://github.com/ascribe/javascript) [](https://travis-ci.org/bigchaindb/js-bigchaindb-driver) [](https://greenkeeper.io/) ## Compatibility | BigchainDB Server | BigchainDB JavaScript Driver | | ----------------- |------------------------------| | `0.10` | `0.1.x` | ## 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