# bytom-java-sdk
**Repository Path**: dreamy_kevin/bytom-java-sdk
## Basic Information
- **Project Name**: bytom-java-sdk
- **Description**: 比原链(Bytom)的 Java 开发包,比原链是一种多样性比特资产的区块链交互协议
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 10
- **Created**: 2019-01-17
- **Last Updated**: 2025-02-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Bytom java-sdk
This page will document the API classes and ways to properly use the API.
Subsequent new releases also maintain backward compatibility with this class
approach. For more information, please see Bytom API reference documentation
at [Bytom wiki](https://github.com/Bytom/bytom/wiki/API-Reference)
## Installation
There are various ways to install and use this sdk. We'll provide three ways to get it. Note that the bytom-sdk requires JAVA 7 or newer.
### Apache Maven
```xml
io.bytom
bytom-sdk
1.0.0
```
### Gradle/Grails
```xml
compile 'io.bytom:bytom-sdk:1.0.0'
```
### Building from source code
To clone, compile, and install in your local maven repository (or copy the artifacts from the target/ directory to wherever you need them):
```shell
git clone https://github.com/Bytom/bytom-java-sdk.git
cd java-sdk
mvn package -Dmaven.test.skip=true
mvn install
```
## Basic Usage
```java
public static Client generateClient() throws BytomException {
String coreURL = Configuration.getValue("bytom.api.url");
String accessToken = Configuration.getValue("client.access.token");
if (coreURL == null || coreURL.isEmpty()) {
coreURL = "http://127.0.0.1:9888/";
}
return new Client(coreURL, accessToken);
}
Client client = Client.generateClient();
```
> Note: you can touch a file named ```config.properties``` in resources folder to config ```bytom.api.url``` and ```client.access.token``` by custom.
## Usage
* [`Step 1: Create a key`](#create-a-key)
* [`Step 2: Create an account`](#create-an-account)
* [`Step 3: Create an receiver`](#create-an-receiver)
* [`Step 4: Create an asset`](#create-an-asset)
* [`Step 5: Issue asset`](#issue-asset)
* [`Firstly build the transaction`](#firstly-build-the-transaction)
* [`Secondly sign the transaction`](#secondly-sign-the-transaction)
* [`Finally submit the transaction`](#finally-submit-the-transaction)
> For more details, see [API methods](https://github.com/Bytom/java-sdk/blob/master/doc/index.md#api-methods)
### Create a key
```java
String alias = "test";
String password = "123456";
Key.Builder builder = new Key.Builder().setAlias(alias).setPassword(password);
Key key = Key.create(client, builder);
```
### Create an account
```java
String alias = "sender-account";
Integer quorum = 1;
List root_xpubs = new ArrayList();
root_xpubs.add(senderKey.xpub);
Account.Builder builder = new Account.Builder().setAlias(alias).setQuorum(quorum).setRootXpub(root_xpubs);
Account account = Account.create(client, builder);
```
### Create an receiver
```java
String alias = receiverAccount.alias;
String id = receiverAccount.id;
Account.ReceiverBuilder receiverBuilder = new Account.ReceiverBuilder().setAccountAlias(alias).setAccountId(id);
Receiver receiver = receiverBuilder.create(client);
```
### Create an asset
```java
String alias = "receiver-asset";
List xpubs = receiverAccount.xpubs;
Asset.Builder builder = new Asset.Builder()
.setAlias(alias)
.setQuorum(1)
.setRootXpubs(xpubs);
receiverAsset = builder.create(client);
```
### Issue asset
For more transaction details, see [transactions](https://github.com/Bytom/java-sdk/blob/master/doc/transactions.md)
#### Firstly build the transaction
```java
Transaction.Template controlAddress = new Transaction.Builder()
.addAction(
new Transaction.Action.SpendFromAccount()
.setAccountId(senderAccount.id)
.setAssetId(senderAsset.id)
.setAmount(300000000)
)
.addAction(
new Transaction.Action.ControlWithAddress()
.setAddress(receiverAddress.address)
.setAssetId(senderAsset.id)
.setAmount(200000000)
).build(client);
```
#### Secondly sign the transaction
```java
Transaction.Template singer = new Transaction.SignerBuilder().sign(client,
controlAddress, "123456");
```
#### Finally submit the transaction
```java
Transaction.SubmitResponse txs = Transaction.submit(client, singer);
```
### All usage examples
For more details you can see [doc](https://github.com/Bytom/bytom-java-sdk/blob/master/doc/index.md#api-methods). And you can find Test Cases at [Junit Test Cases](https://github.com/Bytom/bytom-java-sdk/tree/master/src/test/java/io/bytom/integration)
## Support and Feedback
If you find a bug, please submit the issue in Github directly by using [Issues](https://github.com/Bytom/bytom-java-sdk/issues)
## License
Bytom JAVA SDK is based on the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) protocol.