Official Java driver for BigchainDB created by bigchaindb.
Please note: This driver is compatible with android API 23 and later well.
Compatibility
BigchainDB Server | BigchainDB Java Driver |
---|---|
2.x |
1.x |
Contents
Installation
The build system supports both maven and gradle -
Maven users
- In your
pom.xml
add java-driver as dependency
<dependency>
<groupId>com.bigchaindb</groupId>
<artifactId>bigchaindb-driver</artifactId>
<version>1.0</version>
</dependency>
then
mvn clean install
Gradle users
- In your
build.gradle
add java-driver as compiling dependency
dependencies {
compile 'com.bigchaindb.bigchaindb-driver:1.0'
}
then
./gradlew install
Usage
Set up your configuration
- If you don't have app-id and app-key, you can register one at https://testnet.bigchaindb.com/
BigchainDbConfigBuilder
.baseUrl("https://test.bigchaindb.com/")
.addToken("app_id", <your-app-id>)
.addToken("app_key", <your-app-key>).setup();
Example: Prepare keys, assets and metadata
// prepare your keys
net.i2p.crypto.eddsa.KeyPairGenerator edDsaKpg = new net.i2p.crypto.eddsa.KeyPairGenerator();
KeyPair keyPair = edDsaKpg.generateKeyPair();
// New asset
Map<String, String> assetData = new TreeMap<String, String>() {{
put("city", "Berlin, DE");
put("temperature", "22");
put("datetime", new Date().toString());
}};
// New metadata
MetaData metaData = new MetaData();
metaData.setMetaData("what", "My first BigchainDB transaction");
Example: Create a Transaction
// Set up your transaction
Transaction transaction = BigchainDbTransactionBuilder
.init()
.addAssets(assetData, TreeMap.class)
.addMetaData(metaData)
.operation(Operations.CREATE)
.buildOnly((EdDSAPublicKey) keyPair.getPublic());
Example: Create and Sign Transaction
// Set up your transaction
Transaction transaction = BigchainDbTransactionBuilder
.init()
.addAssets(assetData, TreeMap.class)
.addMetaData(metaData)
.operation(Operations.CREATE)
.buildAndSignOnly((EdDSAPublicKey) keyPair.getPublic(), (EdDSAPrivateKey) keyPair.getPrivate());
Example: Create, Sign and Send a Transaction
// Set up your transaction
Transaction transaction = BigchainDbTransactionBuilder
.init()
.addAssets(assetData, TreeMap.class)
.addMetaData(metaData)
.operation(Operations.CREATE)
.buildAndSign((EdDSAPublicKey) keyPair.getPublic(), (EdDSAPrivateKey) keyPair.getPrivate())
.sendTransaction();
Example: Setup Config with Websocket Listener
public class MyCustomMonitor implements MessageHandler {
@Override
public void handleMessage(String message) {
ValidTransaction validTransaction = JsonUtils.fromJson(message, ValidTransaction.class);
}
}
// config
BigchainDbConfigBuilder
.baseUrl("https://test.ipdb.io")
.addToken("app_id", "2bbaf3ff")
.addToken("app_key", "c929b708177dcc8b9d58180082029b8d")
.webSocketMonitor(new MyCustomMonitor())
.setup();
Api Wrappers
Transactions
Send a Transaction
TransactionsApi.sendTransaction(Transaction transaction) throws IOException
Send a Transaction with Callback
TransactionsApi.sendTransaction(Transaction transaction, final GenericCallback callback)
Get Transaction given a Transaction Id
Transaction TransactionsApi.getTransactionById(String id) throws IOException
Get Transaction given an Asset Id
Transactions TransactionsApi.getTransactionsByAssetId(String assetId, Operations operation)
Outputs
Get Outputs given a public key
Outputs getOutputs(String publicKey) throws IOException
Get Spent Outputs given a public key
Outputs getSpentOutputs(String publicKey) throws IOException
Get Unspent Outputs given a public key
Outputs getUnspentOutputs(String publicKey) throws IOException
Assets
Get Assets given search key
Assets getAssets(String searchKey) throws IOException
Get Assets given search key and limit
Assets getAssetsWithLimit(String searchKey, String limit) throws IOException
Blocks
Get Blocks given block id
Block getBlock(String blockId) throws IOException
Get Blocks given transaction id
List<String> getBlocksByTransactionId(String transactionId) throws IOException
MetaData
Get MetaData given search key
MetaDatas getMetaData(String searchKey) throws IOException
Get MetaData given search key and limit
MetaDatas getMetaDataWithLimit(String searchKey, String limit) throws IOException
Validators
Gets the the local validators set of a given node
Validators getValidators() throws IOException
BigchainDB Documentation
- HTTP API Reference
- The Transaction Model
- Inputs and Outputs
- Asset Transfer
- All BigchainDB Documentation
Authors
-
inspired by http://github.com/authenteq/java-bigchaindb-driver.
-
The bigchaindb team and others including -
- @bodia
- @alvin-reyes
- @agwego
- @nf-PostQuantum
- @Rokko11
- @tzclucian
- @kremalicious
- @avanaur
- @GerardoGa
- @bakaoh
- @innoprenuer
Licenses
See LICENSE and LICENSE-docs.
Exception: src/main/java/com/bigchaindb/util/Base58.java
has a different license; see the comments at the top of that file for more information.