-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathAbstractTransactionBuilder.java
More file actions
69 lines (54 loc) · 1.98 KB
/
AbstractTransactionBuilder.java
File metadata and controls
69 lines (54 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package org.arkecosystem.crypto.transactions.builder;
import org.arkecosystem.crypto.configuration.Network;
import org.arkecosystem.crypto.transactions.types.AbstractTransaction;
public abstract class AbstractTransactionBuilder<
TBuilder extends AbstractTransactionBuilder<TBuilder>> {
public final AbstractTransaction transaction;
public AbstractTransactionBuilder() {
this.transaction = getTransactionInstance();
initializeTransactionDefaults();
}
private void initializeTransactionDefaults() {
this.transaction.value = "0";
this.transaction.senderPublicKey = "";
this.transaction.fee = '5';
this.transaction.nonce = 1;
this.transaction.network = Network.get().version();
this.transaction.gasLimit = 1_000_000;
// Set the default data for the transaction
this.transaction.refreshPayloadData();
}
public TBuilder gasLimit(long gasLimit) {
this.transaction.gasLimit = gasLimit;
return this.instance();
}
public TBuilder recipientAddress(String recipientAddressId) {
this.transaction.recipientAddress = recipientAddressId;
return this.instance();
}
public TBuilder gasPrice(long gasPrice) {
this.transaction.gasPrice = gasPrice;
return this.instance();
}
public TBuilder nonce(long nonce) {
this.transaction.nonce = nonce;
return this.instance();
}
public TBuilder network(int network) {
this.transaction.network = network;
return this.instance();
}
public TBuilder sign(String passphrase) {
this.transaction.sign(passphrase);
this.transaction.computeId();
return this.instance();
}
public boolean verify() {
return this.transaction.verify();
}
public String toJson() {
return this.transaction.toJson();
}
protected abstract AbstractTransaction getTransactionInstance();
protected abstract TBuilder instance();
}