A Java library for interacting with the Waves blockchain
Switch branches/tags
Nothing to show
Clone or download
Latest commit 93605bb Dec 14, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples examples module fix Aug 22, 2018
src fix tx ids Dec 14, 2018
CHANGELOG.md Update CHANGELOG.md Sep 4, 2018
LICENSE Update to MIT License Aug 10, 2018
README.md Update README.md Sep 4, 2018
pom.xml Merge pull request #19 from wavesplatform/waves-fix4 Dec 14, 2018



A Java library for interacting with the Waves blockchain.

Supports node interaction, offline transaction signing, Matcher orders, and creating addresses and keys.

Using WavesJ in your project

Use the codes below to add WavesJ as a dependency for your project.

compile group: 'com.wavesplatform', name: 'wavesj', version: '0.10'
libraryDependencies += "com.wavesplatform" % "wavesj" % "0.10"

This library's page at Maven Central

Basic Usage

Create an account from a private key ('T' for testnet):

String seed = "health lazy lens fix dwarf salad breeze myself silly december endless rent faculty report beyond";
PrivateKeyAccount account = PrivateKeyAccount.fromSeed(seed, 0, Account.TESTNET);
byte[] publicKey = account.getPublicKey();
String address = account.getAddress();

Create a Node and learn a few things about blockchain:

Node node = new Node("https://testnode2.wavesnodes.com/", Account.TESTNET);
System.out.println("Current height is " + node.getHeight());
System.out.println("My balance is " + node.getBalance(address));
System.out.println("With 100 confirmations: " + node.getBalance(address, 100));

Send some money to a buddy:

String buddy = "3N9gDFq8tKFhBDBTQxR3zqvtpXjw5wW3syA";
String txId = node.transfer(account, buddy, 1_00000000, 100_000, "Here's for you");

Set a script on an account. Be careful with the script you pass here, as it may lock the account forever!

String setScriptTxId = node.setScript(alice, "tx.type == 13 && height > " + height, Account.TESTNET, SCRIPT_FEE);

Sign a transaction offline:

Transaction tx = Transaction.makeTransferTx(account, buddy, 1_00000000, Asset.WAVES, 100_000, Asset.WAVES, "");
System.out.println("JSON encoded data: " + tx.getJson());
System.out.println("Server endpoint to send this JSON to: " + tx.getEndpoint());

Now send it from an online machine:


Create a DEX order:

Node matcher = new Node("https://testnode2.wavesnodes.com", Account.TESTNET);
String matcherKey = matcher.getMatcherKey();
String wbtcId = "Fmg13HEHJHuZYbtJq8Da8wifJENq8uBxDuWoP9pVe2Qe";
Order order = matcher.createOrder(alice, matcherKey,
                new AssetPair(Asset.WAVES, wbtcId),
                // buy 10 WAVES at 0.00090000 WBTC each
                Order.Type.BUY, 90_000, 10 * Asset.TOKEN,
                // make order valid for 1 hour
                System.currentTimeMillis() + 3_600_000, MATCHER_FEE);
System.out.printf("Filed order " + order.id);

There are some examples under src/examples/java.

Building the library

To build from scratch, run

mvn clean package

The outputs are placed under the target directory.