Official JavaScript driver for BigchainDB to create transactions in Node.js and the browser.
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')
import driver from 'bigchaindb-driver'
Example: Create a transaction
const driver = require('bigchaindb-driver')
const API_PATH = 'http://localhost:9984/api/v1/'
const alice = new driver.Ed25519Keypair()
const tx = driver.Transaction.makeCreateTransaction(
{ city: 'Berlin, DE', temperature: 22, datetime: new Date().toString() },
{ what: 'My first BigchainDB transaction' },
[ driver.Transaction.makeOutput(
driver.Transaction.makeEd25519Condition(alice.publicKey))
],
alice.publicKey
)
const txSigned = driver.Transaction.signTransaction(tx, alice.privateKey)
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>
<script src="https://unpkg.com/bigchaindb-driver@4.0.0/dist/browser/bigchaindb-driver.window.min.js"></script>
<script>
const API_PATH = 'http://localhost:9984/api/v1/'
const alice = new BigchainDB.Ed25519Keypair()
const tx = BigchainDB.Transaction.makeCreateTransaction(
{ city: 'Berlin, DE', temperature: 22, datetime: new Date().toString() },
{ what: 'My first BigchainDB transaction' },
[ BigchainDB.Transaction.makeOutput(
BigchainDB.Transaction.makeEd25519Condition(alice.publicKey))
],
alice.publicKey
)
const txSigned = BigchainDB.Transaction.signTransaction(tx, alice.privateKey)
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')
})
</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.