Gradle root build.gradle
allprojects {
repositories {
// ... some repos
maven { url "https://minter.jfrog.io/artifactory/android/" }
}
}
project build.gradle
ext {
minterBlockchainSDK = "2.0.0"
}
dependencies {
// for testnet use suffix "-testnet"
implementation "network.minter.android:minter-android-blockchain-testnet:${minterBlockchainSDK}"
// for main net
implementation "network.minter.android:minter-android-blockchain:${minterBlockchainSDK}"
}
Use our nodes
MinterBlockChainSDK.initialize();
Or it's HIGHLY RECOMMENDED to use you own node instead of Minter's.
MinterBlockChainSDK.initialize("https://your-node.local");
Transactions API uses Builder pattern, so it so easy to handle it.
import io.reactivex.Scheduler;
import io.reactivex.schedulers.Schedulers;
import network.minter.blockchain.MinterBlockChainSDK;
import network.minter.blockchain.repo.NodeTransactionRepository;
class MyClass {
void myMethod() {
Transaction tx = new Transaction.Builder(new BigInteger("1"))
.setBlockchainId(BlockchainID.MainNet)
.setGasCoinId(DEFAULT_COIN_ID)
.sendCoin()
.setCoinId(DEFAULT_COIN_ID)
.setValue("0.012345")
.setTo(toAddress)
.build();
TransactionSign sign = tx.signSingle(privateKey);
NodeTransactionRepository txRepo = MinterBlockChainSDK.getInstance().transactions();
txRepo.sendTransaction(sign)
.observeOn(Schedulers.io())
.subscribeOn(Scheduler.io())
.subscribe(sendResult -> {
System.out.println(sendResult.txHash.toString());
}, throwable -> {
// handle error
});
}
}
Calculate nonce (see above)
// Calculated nonce
BigInteger nonce = ...
Create your private key to sign tx with it:
PrivateKey privateKey = new PrivateKey("4c9a495b52aeaa839e53c3eb2f2d6650d892277bde58a24bb6a396f2bb31aa37");
or if you know only mnemonic phrase, you can do this:
final PrivateKey privateKey = PrivateKey.fromMnemonic("your phrase must contains twenty words et cetera ...");
Create transaction builder and build transaction:
Transaction tx = new Transaction.Builder(nonce)
// by default it depends on what sdk build type you used: with or without suffix "-testnet"
.setBlockchainId(BlockchainID.MainNet)
// optional: available for all transactions, but not useful for some transactions
.setGasCoinId(DEFAULT_COIN_ID)
// here you should select what transaction you are trying to create, builder will select exact type
.sendCoin()
// required: coin to send represented by it's ID
.setCoinId(DEFAULT_COIN_ID)
// value to send
.setValue("0.012345")
// required: recipient address
.setTo(toAddress)
// finally, build object
.build();
Sign transaction using your private key
TransactionSign sign = tx.sign(privateKey);
For more transaction types see OperationType
and class Transaction.Builder
Now we'll send transaction to blockchain.
To send transaction to blockchain, we need to get NodeTransactionRepository
from MinterBlockChainSDK
NodeTransactionRepository accountRepo = MinterBlockChainSDK.getInstance().transactions();
To send transaction, you just need to call http request
TransactionSign sign = ...
NodeTransactionRepository txRepo = MinterBlockChainSDK.getInstance().transactions();
txRepo.sendTransaction(sign)
.observeOn(Schedulers.io())
.subscribeOn(Scheduler.io())
.subscribe(sendResult -> {
System.out.println(sendResult.txHash.toString());
}, throwable -> {
// handle error
});
That's all!
Javadoc available in code and in *.jar file at the bintray
To create local artifacts that you can find in your home ~/.m2
directory, just run:
bash project_root/publish_local.sh
To run unit tests, you must build bip39 and secp256k1 with host target See: bip39 and secp256k1-java
All these test can be runned only with testnet configuration, don't use gradlew test
directly
cd project_root
./gradlew testNetTestDebugUnitTest -PnativeLibPath=/path/to/native/libs
See Release notes
This software is released under the MIT License.
© 2018 MinterTeam [email protected], All rights reserved.